什么是跨链技术?
“如果说共识机制是区块链的灵魂核心,那么对于区块链特别是联盟链及私链来看,跨链技术就是实现价值网络的关键,它是把联盟链从分散单独的孤岛中拯救出来的良药,是区块链向外拓展和连接的桥梁。” ——《连接不同区块链的跨链技术介绍》
跨链与联盟链
联盟链中对跨链技术的需求可以归总为以下两点:
应用场景的需要
现有区块链技术在单链架构下存在性能、容量、隐私、隔离性、扩展上的瓶颈。
构建一个用户数以亿计的类VISA的支付应用,每秒交易请求高达几万笔,每日交易笔数高达几亿笔,用户交易达到秒级响应体验。在现有区块链技术下,数据存储采用链式本地存储导致无法平行扩展,共识机制采用同步式状态机模型导致无法高效处理交易,同时受限于网络中单节点的性能极限,因此单链架构无法满足应用的性能、容量、用户体验及其他要求。
另外区块链的互操作性本身就是一些应用的基础需求。想象一个理财应用,用户可以用某项资产交换不同机构的理财产品,不同的资产就需要在多条链上做转移、交换。还有一些ORACLE应用同样需要多链间的跨链喂入交互,譬如汇率牌价、天气、股价、特定指标等等。
因此联盟链的某些应用在单链上无法完整实现,需要在跨链技术带来的多链架构的可扩展性、隔离性、高性能、互操作等特性的帮助下实现。
组织治理、成员协同的需要
联盟链是个广泛的治理共同体。但依旧允许广泛共同体下存在多个不同的小集体,既是允许机构或行业做更深度的治理收敛,同时多个不同的小集体又共享联盟链的基础设施。如果实际操作中以一个治理收敛为一条链,那多链既是更符合实际的治理场景。例如下图所示:
前人的肩膀
在以太坊的Vitalik Buterin给R3的跨链报告中归纳了三种跨链技术实现模式,见证人模式、中继模式和哈希锁定模式,对三种模式的实现做了简要分析,同时也对不同模式支持的功能集合和实现难度做了总结。也指出了联盟链和公有链在治理模型和失败模型上的不同,联盟链相对公有链可以选择更强一致性的共识算法以提高跨链安全性,同时联盟链也拥有更高的可监管度,进一步增强了跨链安全性。同时也强调,跨链技术的研究实现需要根据落地的应用场景来开展,不建议盲目使用跨链技术。
现阶段主流的跨链技术主要有以下几种
1、公证人机制(Notary schemes);
2、侧链/中继(Sidechains/relays);
3、哈希锁定(Hash-locking);
4、分布式私钥控制(Distributed private key control)。
跨链技术 | 哈希锁定 | 公证人 | 侧链/中继 |
互操作性 | 只有交叉依赖 | 所有 | 所有(需要所有链上都有中继,否则值支持单项) |
信任模型 | 链不会失败或者51%攻击 | 多数公证人诚实 | 链不会失败或者51%攻击 |
适用跨链交换 | 支持 | 支持 | 支持 |
适用跨链资产转移 | 不支持 | 支持(需要共同的长期公证人信任) | 支持 |
适用跨链预言机(Oralces) | 不直接支持 | 支持 | 支持 |
适用跨链资产抵押 | 大多数支持但有难度 | 支持(需要长期公证人信任) | 支持 |
实现难度 | 容易 | 中等 | 难 |
下面主要介绍这几种跨链技术:
公证人机制:Interledger协议(ILP)
早在2012年,瑞波实验室提出 Interledger协议旨在连接不同账本并实现它们之间的协同。Interledger协议适用于所有记账系统、能够包容所有记账系统的差异性,该协议的目标是要打造全球统一支付标准,创建统一的网络金融传输的协议。
加密第三方
ILP创建了这样一个系统,在这个系统中,两个不同的账本系统可以通过第三方“连接器”来互相自由地转换货币。账本系统无需去信任“连接器”,因为该协议采用密码算法为这两个账本系统和连接器创建资金托管,当所有参与方对资金达成共识时,便可相互交易。ILP移除了交易参与者所需的信任,连接器不会丢失或窃取资金,这意味着,这种交易无需得到法律合同的保护和过多的审核,大大降低了门槛。
ILP协议的核心思想在于:“账本”提供的第三方,会向发送者保证,他们的资金只有在“账本”收到证明,且接收方已经收到支付时,才将资金转给连接者;第三方也同时也保证连接者,一旦他们完成了协议的最后部分,他们就会收到发送方的资金。
与此同时,只有参与其中的记账系统才可以跟踪交易,交易的详情可隐藏起来,“验证器”是通过加密算法来运行,因此不会直接看到交易的详情。理论上,该协议可以兼容任何在线记账系统,而银行现有的记账系统只需小小的改变就能使用该协议。从而使银行之间可以无需中央对手方或代理银行就可直接交易。
侧链技术:BTC Relay
侧链协议本质上是一种跨区块链解决方案。通过这种解决方案,可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。其中第一个区块链通常被称为主区块链或者主链,每二个区块链则被称为侧链。最初,主链通常指的是比特币区块链,而现在主链可以是任何区块链。侧链协议被设想为一种允许数字资产在主链与侧链之间进行转移的方式,这种技术为开发区块链技术的新型应用和实验打开了一扇大门。
实现方案
侧链实现的技术基础是双向锚定(Two-way Peg),通过双向锚定技术,可以实现暂时的将数字资产在主链中锁定,同时将等价的数字资产在侧链中释放,同样当等价的数字资产在侧链中被锁定的时候,主链的数字资产也可以被释放。双向锚定实现的最大难点是协议改造需兼容现有主链,也就是不能对现有主链的工作造成影响,其具体实现方式可以分为以下几类:
单一托管模式
最简单的实现主链与侧链双向锚定的方法就是通过将数字资产发送到一个主链单一托管方(类似于交易所),当单一托管方收到相关信息后,就在侧链上激活相应数字资产。这个解决方案的最大问题是过于中心化。图1给出了以比特币为主链的单一托管模式的工作原理示意图:
联盟模式
联盟模式是使用公证人联盟来取代单一的保管方,利用公证人联盟的多重签名对侧链的数字资产流动进行确认。在这种模式中,如果要想盗窃主链上冻结的数字资产就需要突破更多的机构,但是侧链安全仍然取决于公证人联盟的诚实度。图2给出了以比特币为主链的联盟模式的工作示意图:
单一托管模式与联盟模式的最大优点是它们不需要对现有的比特币协议进行任何的改变。
SPV模式
SPV(Simplified Payment Verification)模式是最初的侧链白皮书《Enabling Blockchain Innovations with Pegged Sidechains》中的去中心化双向锚定技术最初设想。SPV是一种用于证明交易存在的方法,通过少量数据就可以验证某个特定区块中交易是否存在。在SPV模式中,用户在主链上将数字资产发送到主链的一个特殊的地址,这样做会锁定主链的数字资产,该输出仍然会被锁定在可能的竞争期间内,以确认相应的交易已经完成,随后会创建一个SPV证明并发送到侧链上。此刻,一个对应的带有SPV证明的交易会出现在侧链上,同时验证主链上的数字资产已经被锁住,然后就可以在侧链上打开具有相同价值的另一种数字资产。这种数字资产的使用和改变在稍后会被送回主链。当这种数字资产返回到主链上时,该过程会进行重复。它们被发送到侧链上锁定的输出中,在一定的等待时间后,就可以创建一个SPV证明,来将其发送回主区块链上,以解锁主链上的数字资产。SPV模式存在的问题是需要对主链进行软分叉。图3给出了以比特币主链的SPV模式的工作流程示意图:
驱动链模式
驱动链概念是由Bitcoin Hivemind创始人Paul Sztorc提出的。在驱动链中,矿工作为‘算法代理监护人’,对侧链当前的状态进行检测。换句话说,矿工本质上就是资金托管方,驱动链将被锁定数字资产的监管权发放到数字资产矿工手上,并且允许矿工们投票何时解锁数字资产和将解锁的数字资产发送到何处。矿工观察侧链的状态,当他们收到来自侧链的要求时,他们会执行协调协议以确保他们对要求的真实性达成一致。诚实矿工在驱动链中的参与程度越高,整体系统安全性也就越大。如同SPV侧链一样,驱动链也需要对主链进行软分叉。图4给出了以比特币为主链的驱动链模式的工作流程示意图:
混合模式
上述所有的模式都是对称的,而混合模式则是将上述获得双向锚定的方法进行有效的结合的模式。由于主链与侧链在实现机制存在本质的不同,所以对称的双向锚定模型可能是不够完善的。混合模式是在主链和侧链使用不同的解锁方法,例如在侧链上使用SPV模式,而在主链网络上则使用驱动链模式。同样,混合模式也需要对主链进行软分叉。
中继技术:Polkadot和COSMOS
Cosmos 网络
自 2014 年 Tendermint 发布以来,Cosmos 团队一直致力于实现区块链互操作性。Tendermint 是一个拜占庭容错的共识引擎,并配备了点对点的 Gossip 协议。
Cosmos 团队正在构建基于 Tendermint 的 Cosmos 网络。Tendermint 和 Cosmos 都隶属于 InterChain 基金会。下面两张图将简单解释他们是如何设计网络的。
技术设计和协议
Tendermint (共识和网络)
Tendermint 是一种实用拜占庭容错(PBFT)状态机。它需要一组已知的验证人达成共识而出块。在 Cosmos 网络中,至少需要 2/3 的验证人达成共识。假设不到 1/3 的验证人是作恶者,则网络永远不会分叉,因为验证人不能在相同高度提交冲突块。这种策略正是根源于 Tendermint 中安全性优先于活跃度的原则。
应用区块链接口(ABCI)
ABCI 是定义了复制引擎(Tendermint)和状态机(区块链)两者边界的接口。ABCI 是区块链状态更新的唯一通道,而只有 Tendermint 才具有区块链状态更改功能。这种设计是一种非常棒的安全策略,因为改变状态只有一个接入通道。
下图解释了 Tendermint 的堆栈设计,展现了在点对点网络中节点的连接方式,以及每个节点的组件。
Cosmos 的交互性
链间通信(IBC)
Cosmos 网络可以基于 IBC 协议实现链链交互功能。以 Cosmos 网络为中心枢纽,网络中的链通过 IBC 进行通信。区块链以分支的形式连接到 Cosmos Hub,网络中的分支又被成为「Zone」,如下图所示。
IBC 的技术性术语又叫「Chain Relay」。Chain Relay 允许区块链读取和验证其他链上的事件。例如,A 链上的智能合约想知道 B 链上发生的事件,则 B 链上的智能合约需要采用 A 链的块头,并验证其是否达成共识以及最终性。
本质地说,Cosmos 正在构建一个网络体系,其中新区块链可以轻易创建,并从创立之初就可以通过 Chain Relay 进行交互。每条链都将在 Tendermint 上运行,如下图所示。
只要新链遵循 IBC 协议,就可以加入该网络,包括公链和私有链。
Peg Zones
Peg Zone 允许实时的区块链网络(如以太坊主网)连接到 Cosmos 网络中。能够连接到实时区块链是区块链可交互网络的主要要求。Peg Zone 很复杂,但我们可以试着用简单的术语来解释它的工作原理。
你必须有一个共享的安全模型,并且 Cosmos Peg Zone 的验证人也在运行以太坊主网节点。特殊验证人会批准两条链之间的交互。这是个复杂繁琐的基础架构,你还必须信任运行 Peg Zone 的团队。
实际的资产交易需要以太坊主网上的智能合约锁定相应的 ETH,同时在 Peg Zone 中创建代表「Cosmos-Ether」的新代币,,其可以通过 IBC 在 Cosmos 网络中发送。从 Cosmos 方面来看,验证人会锁定 Atom,同时在以太坊主网中创建可发送的 ERC-20 的 Atom 代币。这样一来,就实现了 Cosmos 和以太坊主网之间资产的完全交互性。
实现两条链之间的互操作
任何可交互的网络需要至少两条可以交换信息和产生交易的区块链。Ethermint 是 Cosmos 提出的第一个能与 Cosmos Hub 交互的解决方案。
Ethermint 是 Cosmos 团队计划在 Cosmos Hub 主网上线后推出的区块链。它预计将于 2018 年的 Q4 发布。一句话描述 Ethermint 就是:它是用 Tendermint 共识引擎代替了 PoW 证明的以太坊。这也就使得基于以太坊虚拟机的区块链可以轻松地通过 IBC 与 Cosmos 网络进行交互。
Ethermint 设计的天才之处在于团队计划实现的「hard spoon」。他们将在某个时间点对所有以太坊账户进行快照,并用该状态创建新的 Ethermint 分区。这将帮助他们引导现有的以太坊开发者网络,同时为每个人发放新的代币,并提供更快的交易速度。
选择 Ethermint 而不是 Peg Zone 来「映射」以太坊主网,是因为它在技术上更加容易实现。但是,对于区块链来说,Peg Zone 的存在至关重要。无论对于 Cosmos 还是 Pokaldot,比特币和以太坊背后有太多的动量,忽视它们都是极其冒险的。
Cosmos Hub
在 Cosmos 网络中,Cosmos Hub 是主链,充当其他所有区块链的中央连接点。它是 Tendermint 驱动的多资产证明的 PoS 区块链。Cosmos Hub 的主要代币是 Atom,其主要用于抵押和链的治理。Cosmos Hub 启动之初有 100 个验证人,并将逐年增加。
Atom 持有者既可以是验证人也可以是委托人。验证人需要设置一个完全节点,用于维护网络安全和处理交易。委托人则可以根据他们对验证人的信赖度和节点运行能力的判断,将代币委托给验证人。验证人会代理 Atom 资产,并从每个出块中获得 Atom 奖励。这些奖励会惠及委托人,只是其中一小部分将被扣留,以用于验证节点的日常运行。
为了保证验证人的诚实性,向区块链发布不正确数据的恶意验证人会失去他们的 Atom 代币作为经济处罚。这种机制称为「slashing」。这些游戏理论规则都是为了在 PoS 证明的区块链中激励良好行为。
代币也可用于治理。一个 Atom 就可以作为网络任何提案的一票,例如软件升级。Cosmos 的治理协议相当简单。委托人可以自己投票,也可以将他们的投票权转让给他们所委托的验证人。验证人必须给每个提案投票,否则他们会受到惩罚。
Polkadot
Polkadot 是另一个由强大的技术团队领衔,并致力于解决区块链间交互性的项目。Polkadot 由 Parity 开发,后者是 Web3 基金会的成员。他们因以太坊客户端 Parity (由 Rust 语言编写)而闻名遐迩。
技术设计与协议
共识
正如 Cosmos 所做的那样,Polkadot 将共识架构与状态程序分离开来。据其白皮书所述,Polkadot 的共识引擎实际上受到了 Tendermint 和 HoneyBadgerBFT 的启发。
然而,在最近的 Youtube 视频中,Polkadot 团队提到他们计划使用 Aurand 和 Tendermint for PBFT 的混合共识机制。Aurand 允许随机选择验证人出块,而不需要 2/3 成员的共识。混合共识引擎的设计使得共识形成更快,但是,如果验证人存在恶意行为,区块也有可能被回收。
Polkadot 的互操作性
Cosmos 和 Polkadot 实现交互的策略也十分相似。Polkadot 网络有个「Relay Chain」,是一个功能类似于 Cosmos Hub 的中心连接器。它也有连接到「Relay Chain」的区块链,这些区块链被称为 Parachain。Cosmos Zone 和 Parachain 的用途相同。Polkadot 还将配备连接实时区块链的 Bridge,其也跟 Cosmos Peg Zone 的作用类似。
Parachain
Parachain 和 Cosmos Zone 都使用链中继来实现区块链间的交互。但在具体实现上两者有所不同。最大的区别在于如何与链相连及实现安全共享。在 Polkadot 中,网络安全可以汇集和共享。这就意味着,单一的链可以利用集体安全性来增强自身的吸引力和信任度,而不需要从零开始。
这个方案是通过绑定 Dots 以创建新的 Parachain,或者取消 Dots 绑定以移除无用的 Parachain 来实现的。而 Cosmos 不要求绑定 Atom 来创建一条新链,他们用治理的方法决定中央的 Cosmos Hub 是否应该连接到 Cosmos Zone。
Bridges
Bridge 和 Peg Zone 在各自网络中的作用相同。它们都可以来连接到实时的区块链网络,例如以太坊主网。Cosmos 和 Polkadot 都希望在启动时能够快速地连接到以太坊主网。
实现两条链之间的互操作
如前所述,第一条与 Cosmos Hub 交互的链是 Ethermint。很有可能,Polkadot 也会创建一条类似 Ethermint 的链。对此,Polkadot 团队应该能够轻松应对,毕竟他们在以太坊 Parity 客户端上积累了相当多的经验。
Polkadot 网络
Polkadot 网络是 PoS 证明的区块链,其原生代币是「Dots」。Dots 可以提供治理,以及在理论规则上激励代币持有人诚实行事。网络的中心部分是「Relay Chain」,其作用类似于 Cosmos Hub 在 Cosmos 网络中的功能。Polkadot 网络拥有四种主要股权利益人:验证人,提名人,校对人和渔夫。Polkadot 也会通过「slashing」来惩罚作恶行为。
Polkadot 上的验证人和 Cosmos 中的验证人作用相同,提名人和 Cosmos 中的委托人类似。下面的图表来自 Polkadot 白皮书,显示了每个股权利益人之间如何相互关联。
验证人并不会维护所有 Parachain 上完全同步的数据库,因为存储的数据量过于庞大。因此,验证人把存储和验证新的 Parachain 区块的任务交给第三方,我们称之为「校对人」。校对人的主要任务是生成有效的 Parachain 区块。他们必须维护一个完整节点。校对人还需对未封装的块进行零知识证明,并将其提供给一个或多个负责向 Relay Chain 提交 Parachain 区块的验证人。校对人和验证人会从这些任务中收取一定的费用。
渔夫会像自由赏金猎人一样,寻求大笔的奖励。可以预料的是,仅仅他们的存在就能使作恶行为极少发生。因为验证人和校对人都知道,一旦他们作恶就会被渔夫抓到并接受惩罚。渔夫会在 Polkadot 网络上发送验证人或校对人的任何非法活动证据。
治理分为几个层次,主要是在网络上通过 Dots 投票。Polkadot 团队还计划设立一个 12-24 个账户组成的理事会,对没有得到股权利益人重视的提案进行投票。这是一个对低选民投票率提案的备用解决方案。他们还承诺加入自适应仲裁偏差,并为选票赋予不同的投票权重指标,例如为长期持有人或验证人,甚至是长期为网络做出贡献的 dApp 开发团队赋予更多的投票权重。但是,目前这些想法只停留在概念阶段。
哈希锁定技术:Lighting network
哈希时间锁定(HTLC)最早出现在比特币的闪电网络,跨链资产交换支持一定数量的A链资产和一定数量的B链资产进行原子交换。哈希时间锁定巧妙地采用了哈希锁和时间锁,迫使资产的接收方在deadline内确定收款并产生一种收款证明给打款人,否则资产会归还给打款人。收款证明能够被付款人用来获取接收人区块链上的等量价值的数量资产或触发其他事件。
如下图所示,我们用一个例子来阐述如何使用哈希时间锁定进行跨链的原子资产交换,假设Alice和Bob有资产交换的需求,Alice想用1个BTC和Bob换20个ETH. 那么首先需要在两条链上设置哈希时间锁定合约,然后执行如下步骤:
哈希锁定模式的设计是希望链A与链B之间尽可能少的了解彼此,并作为消除公证人信任的手段,该模式的基本流程如下图7所示。
图7 哈希锁定模式流程图
图7所示基本流程如下:
(1)A生成随机数S,并发送hash(S)给B。
(2)A在链LA上锁定币,并设定条件:如果在(当前时间+2X=TA)时间内链LA收到S,则转账给B,否则退回给A。
(3)B收到hash(S),并看见A的锁定和时间设定后,在链LB上锁定币,并设定条件:如果在TA-X时间内链LB收到S,则转账给A,否则退回给B。
(4)A看见B的锁定后,在TA-X时间内发送S给链LB,得到链LB的币。
(5)B收到S后,在TA时间内发送S到链LA,得到链LA的币
从上述的过程我们可以看出哈希时间锁定合约有一些约束条件:
- 进行跨链资产交换的双方必须能够解析双方的合约内部数据,例如s,例如锁定资产的证明等;
- 哈希锁定的超时时间设置时需要保证存在时间差,这样在单方面作弊时另一方可以及时撤回自己的资产。
哈希锁定的思想运用在支付领域较多,例如闪电网络、雷电网络以及跨链资产转移协议Interledger等。但是哈希锁定目前看只适合偏资产或者关键数据的交换。因此其试用场景受限。
分布式私钥控制技术:WanChain
WanChain万维链也支持主流公有链间的跨链交易,但首先需要完成在万维链上的注册,确保万维链能够对该链进行唯一识别。对于跨链交易,万维链利用多方计算和门限密钥共享方案。当一种未注册资产由原有链转移到万维链上时,万维链节点会使用一个基于协议的内置资产模板,根据跨链交易信息部署新的智能合约创建新的资产。当一种已注册资产由原有链转移到万维链上时,万维链节点会为用户在已有合约中发放相应等值代币,确保了原有链资产在万维链上仍然可以相互交易流通。
万维链通过分布式的方式完成不同区块链账本的连接及价值交换。它采用通用的跨链协议以及记录跨链交易、链内交易的分布式账本,公有链、私有链还是联盟链,均能接入万维链,实现不同区块链账本的连接及资产的跨账本转移。
但是,实现各种链映射到一条链上只是完成了第一步,如果上面的智能合约还是像现在的仅为交易触发,智能合约没办法实现分布式运算和多触发机制,那多币种智能合约能实现仍然是相当有限的功能。