18.2. 什么是跨链
跨链(Cross-Chain),简单来说就是通过一定的技术措施实现相对独立的不同区块链系统之间数据和资产的链接互通。常见的跨链解决方案一般是针对资产类,实现不同链之间任意数据的跨链互通难度会更高
18.2.1. 常见的跨链互操作类型
18.2.1.1. 跨链资产互换
18.2.1.2. 跨链资产转移
18.2.1.3. 跨链任意数据
18.3. 主流跨链方案
18.3.1. 跨链技术的主要挑战
- 生效的原子性 对两个网络分别发起交易tx1、交易tx2,如何保证要么都不生效,要么都生效。可以通过经典的两阶段提交来完成, 两个交易互为锚点,锚点超过一段时间仍然无效,就可以发起对交易的回滚。
- 锚点有效性校验 所有节点对锚点的有效性达成没有分歧的判断,不能依赖远程访问证明,由于网络不稳定因素可能会造成验证难的问题。
- 合约验证的不确定性 一般的区块链系统,每个节点都会验证交易,以防止作恶。所以如果一个合约嵌入了外部链的合约调用,那么在验证阶段,如何确保各个节点验证的结果的一致性,是否会依赖外链的稳定性,这些问题都需要解决。
18.3.2. 主流的跨链方案
一般地通过哈希时间锁可以保证跨链交易的原子性。对于两个比较独立的区块链系统,一般的需要依赖一个第三方组件实现信息的交互。根据第三方组件是否执行验证可以分为两种模式,分为公证人模式、侧链/中继模式和哈希锁定模式。根据不同链的交易是异步生效还是同步生效,可以分为异步模式和同步模式。
18.3.2.1. 公证人模式
由一个或者一组节点作为公证人参与到两条链中,进行双方交易的收集和验证。其优点是简单,缺点是弱中心化,如下图所示:
18.3.2.2. 侧链/中继模式
侧链/中继链模式是2014年BlockStream提出的一种跨链方案。其与公证人模式最大的区别在于其验证是在目标链进行,通过双向锚定的方式实现资产在不同链之间的转移。目标链的验证方式各不相同,比如BTC-Relay使用的是SPV技术。
18.3.2.3. 异步模式
以太坊上很多预言机类的DApp的实现方式采用的是异步模式。简单来说,是指发起调用的是一个函数,处理调用结果的是另一个回调函数,如下图所示:
异步调用场景下,一个完整流程需要3笔交易:首先发送交易tx1到A链,A链代码执行到跨链调用会发出一个事件,并且声明了回调函数。
由一个中间件(单例)订阅到事件后,发起对B链调用的交易tx2,tx2上链成功后, 中间件在触发回调函数调用Tx3.
异步的缺点是业务逻辑被迫拆成很多碎片,交互次数多,编程不友好。
18.3.2.4. 同步模式
同步模式目前业界没有比较统一的方案,一般地区块链的上的合约在每个节点都会重复执行,如何保证重复执行的结果确定性,且具备幂等性、无副作用是一个难解决的问题。但是现在很多区块链系统采取的是预执行再提交的方式,比如 XuperChain 和Fabric,基于这种事务模式比较容易同步模式的跨链,下面是同步模式的示意图:
18. XuperChain 跨链技术 — xuperchain-doc 文档