白话比原链跨链技术

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

随着 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 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 6 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 399 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 370 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    103 引用 • 294 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 319 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖 • 1 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    205 引用 • 357 回帖
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    27 引用 • 66 回帖
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 498 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 623 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 38 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 605 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 407 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖
  • 一些有用的避坑指南。

    69 引用 • 93 回帖 • 2 关注
  • 996
    13 引用 • 200 回帖
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    9 引用 • 32 回帖 • 166 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    69 引用 • 190 回帖 • 495 关注
  • Swagger

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

    26 引用 • 35 回帖 • 13 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖 • 1 关注