白话比原链跨链技术

本贴最后更新于 1652 天前,其中的信息可能已经水流花落

随着 Bystack 的主侧链架构的推出,主侧链之间的跨链问题也成为比原链团队的主要攻克工程难题,当前比原链已经推出了两种跨链的机制,各有不同的侧重点,可能因为本身的跨链技术比较晦涩,本篇想以较为通俗的方式向社区介绍比原链最新的跨链技术。

一些预备知识

跨链简单的来说就是解决如何让一条链上的 token 转移到另一条链上,本质是将一条链上的价值转移到另一条链,跨链需要保证以下几点:

1. 确保已跨链的资产的妥善保管,不能在原链上能够继续流通,要防止被窃取或者挪用;

2. 确保两条链上转移的资产是等同的,不能 A 链上减少了 100 价值的资产,而 B 链上只增加了 50 价值的资产;

3. 转移的资产能够安全的再转移回原链上,不能价值只是单向转移,或者转移过去无法转移回来;

基于这些要求,诞生出很多不同的跨链方案,主要是公证人机制,侧链/中继和哈希时间锁等方案,除此之外还有分布式私钥,和公证人机制 + 侧链混合技术。这里不对这些技术进行展开,如果有兴趣的朋友,可以推荐阅读 V 神给 R3 写的关于跨链的文章《Chain Interoperability》。

比原链的跨链选型

比原链的跨链模型也脱离不了上面叙述的跨链模型,当前主要使用的是公证人机制和哈希时间锁的模式。

因为侧链 Vapor 本身是没有资产的,所以我们使用公证人机制将主链的资产转移到侧链上(实际上是在主链锁定资产,在 Vapor 侧链创造资产),同时因为公证人机制需要一定的时间进行签名审核,所以我们再使用哈希时间锁的机制做补充,可以快速的交换主侧链之间的资产(但哈希时间锁机制不会创造资产,只是对现有的主侧链资产进行跨链互换)。

公证人(网关)机制

但凡是参与过比原侧链超级节点投票对于跨链转移 BTM 一定不会陌生,在 Bycoin 中通过切换到侧链钱包,可以实现一键跨链,如图所示:

通过一键跨链就可以将 BTM 或者其他资产跨到侧链上,从而在侧链上进行资产交换。那么公证人机制背后的原理是怎么样的呢?忽略其中的技术细节,核心就是价值生成和销毁,资产托管和主侧链的接口通信,如下图所示:

每当从主链转移到侧链,就需要在侧链上创造相应的资产,而如果要从侧链上转回主链,则需要销毁侧链上相应的资产,这就是价值的生成和销毁。当主链的资产跨链到侧链上,就需要对主链的资产进行托管,出于安全的考虑,一般都会采用多签的方式,还有对大额资产进行冷热分离。

先介绍几个概念:

1. 验证人:侧链的出块人,就是当前的正式出块的超级节点方(前十的超级节点)。

2. 收集人:监控主链锁定在联邦合约地址的交易,收集主链的交易并在侧链上创建等额的资产,监控侧链跨链请求,销毁侧链的资产并释放等额资产到主链上。验证人和收集人都是系统中的角色,并不是指代实际的人,但其中可能会需要人进行参与。

3. 联邦地址:由多名联邦成员公钥生成的多签地址。

当用户点击一键跨链之后,发生了什么事情?

如果是从主链到侧链:

1. 收集人监测到主链的联邦地址接受到了一笔转账;

2. 收集人等待主链打包,当到达一定确认数后这笔交易将不能被逆转;

3. 收集人在侧链上创建等额的资产,通过多签进行审核确认,并打入到用户的侧链地址;

4. 用户的侧链上获得可以流通的资产;

如果是从侧链到主链:

1. 收集人监测到一笔侧链销毁资产的交易(这里用户并不需要将自己的侧链资产打到联邦地址上,而是自己发起一笔销毁侧链资产的交易);

2. 收集人等待侧链打包,当到达一定确认数后这笔交易将不能被逆转;

3. 收集人将联邦地址中等额的资产,通过多签进行审核确认,并打入到用户的主链地址;

4. 用户在主链上获得可以流通的资产;

网关(公证人)机制则是一个被实际场景检验过的高效可实用机制,网关起到了建立跨链信任背书、统一跨链通信协议、协调主侧链交易确认的重要作用。但在实际场景里,跨链网关会面临中心化运营的弊端,导致跨链协作无法完全去信任,互操作性不高。后续的开放式联邦网关管理框架 OFMF 就是为了解决中心化的问题,这块后续会专门写文探讨,这里不做赘述。

同时因为需要人工多签的原因,跨链需要用户较长的等待时间,所以又推出了基于哈希时间锁的跨链资产原子互换机制,和公证人机制进行一个互补。

哈希时间锁跨链机制

哈希锁定模式是指用户在规定的时间段对于哈希值的原值进行猜测来支付的一种机制。简单讲,就是在智能合约的基础上,双方先锁定资产,如果都在有限的时间内输入正确哈希值的原值,即可完成交易。

通过公证人机制,可以将比原主链的资产迁移到侧链上去,那么通过哈希时间锁,则可以将比原主链和侧链的资产直接进行交换。

比如你在主链上有 BTC,我在侧链上有 ETH,如果使用公证人机制,我需要首先将 BTC 跨到侧链上去,或者将 ETH 跨到主链上来,这样才能进行互换;而有了哈希时间锁的机制,就可以直接把我主链上的资产打给你,而你将侧链上的资产打给我,并能保证整个过程的原子性和资产安全。

哈希时间锁的大概模式如下图所示:

这个图是简化的流程,为了保证主侧链资产交易的原子性,其中涉及比较多的流程,大致流程描述如下:

1. 用户 A 想用主链上的 BTC 换取用户 B 侧链上的 ETH;

2. A 开通一个主链上的智能合约,并设置一个能够解开该合约的谜语(哈希锁 H),设置一个可以猜谜的时间(时间锁 T),超过这个猜谜时间 A 可以拿回他自己的 BTC;

3. A 将谜面(哈希锁 H)给用户 B,用户 B 用同样的谜语(哈希)在侧链上开通一个智能合约,也设置一个猜谜时间(时间锁 t);

4. A,B 双方互相检查各自的合约(检查是否用统一的哈希锁,检查是否接收地址是对方的);

5. 确认智能合约无误后,A 在时间 t 内使用谜底(哈希原值)去解锁 B 的侧链智能合约,并获得侧链的 ETH;

6. 一旦 A 成功解锁 B 的智能合约,那么谜底(哈希原值)就会暴露,B 获得了谜底(哈希原值),在时间 T 内,去解锁 A 的主链上的智能合约,并获得主链上的 BTC;

7. 双方的资产互换完成;

哈希时间锁完全使用合约来进行跨链资产的交换,所以无需担心中心化的风险,但哈希时间锁机制只能互换主侧链已有的资产,而不能将资产价值转移到另一条链上。当前的比原的哈希时间锁机制并没有集成到界面上,所以普通用户使用还比较困难,需要产品的进一步提升。

跨链的展望

比原链 Bystack 的跨链技术正在如火如荼的完善中,通过跨链技术,我们可以很好的发挥侧链的高性能优势,让各类资产在侧链上流通起来并形成各种各样的应用。

除此之外,跨链技术的成熟,除了可以利用在我们自己的主侧链之外,我们还可以将这套技术用在比原链跟其他区块链的跨链上,将其他区块链资产都跨到比原链上来,从而实现比原链多样性资产的目标。

  • 比原链
    20 引用 • 2 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖 • 4 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
bytom
一种多样性比特资产的区块链交互协议 杭州

推荐标签 标签

  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 689 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    11 引用 • 5 回帖 • 553 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    185 引用 • 318 回帖 • 352 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 448 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    3 引用 • 74 回帖 • 2 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    198 引用 • 120 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    534 引用 • 671 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    139 引用 • 441 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    284 引用 • 4481 回帖 • 652 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 87 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖 • 3 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    108 引用 • 54 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    308 引用 • 1657 回帖 • 1 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    21 引用 • 22 回帖
  • gRpc
    10 引用 • 8 回帖 • 48 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    76 引用 • 37 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 232 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    189 引用 • 1056 回帖
  • Sillot

    Sillot (汐洛)孵化自思源笔记,致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点
    Github 地址:https://github.com/Hi-Windom/Sillot

    12 引用 • 26 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    393 引用 • 3380 回帖 • 1 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 6 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    60 引用 • 287 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 7 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    228 引用 • 1450 回帖
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 1 关注