链中继技术:实现跨链交易的实用方案

July 29, 2017 Medium DotCom 0

一起中继吧! KyberNetwork的长期愿景是支持不同加密数字货币之间的交易,比如BTC和ETH,或者ETC,以及其它任意以太坊上的代币。为了实现这一目标,我们需要依靠允许这些加密数字货币网络之间相互通信的技术和协议。我们很高兴地看到许多资质优秀的团队 — — 比如,Polkadot和Cosmos — — 正在着手解决这一问题。遗憾的是,这些项目现今仍处于紧张的开发阶段 — — 有的要么尚未公布具体的发布日期(例如Polkadot),要么仅仅适用于基于权益证明(PoS)机制的区块链(例如Cosmos)。因此,现有区块链间的跨链通信的实际解决方案依然有待探索。本文讨论了一个在很大程度上被忽视了的实用解决方案,即链中继技术。我们也会阐述KyberNetwork将如何在我们的应用场景中使用并维护链中继技术。 什么是链中继技术? 用于区块链X的链中继技术,简称X-Relay,是在以太坊智能合约中实施和维护区块链X轻客户端的一种方式。合约主要存储所有的区块头数据,这些区块头数据的大小比起区块链状态信息乃至整条区块链的完整数据信息都要小得多,故名轻客户端。只要拥有区块头数据,节点便能够验证交易是否已被打包,甚至 — — 在区块头存储数据支持的前提下 — — 验证区块链的状态。因此,X-Relay允许以太坊上的任意合约来验证交易,有时甚至可以通过使用轻客户端来验证区块链上的账户状态。 为什么链中继技术如此强大? 将加密数字货币X的轻客户端在以太坊上运行会使以太坊与所述加密货币间产生强大的互操作性。例如,某人可以通过创建智能合约并将合约中的地址修改为收款人的地址来接收加密货币X的付款。智能合约会通过X-Relay来验证每一笔交易,并查看一定数量的代币是否已经发送到了指定的地址。链中继技术简单地打破了不同加密数字货币/区块链间的界限,并且,更重要的是,不需要任何信任假设。 现有链中继技术的发展状况如何? 第一个基于以太坊的链中继技术是Joseph Chow开发的BTCRelay。你可以在这里观看他在Devcon 1的演讲。BTCRelay虽然旨在实现一些很有趣的应用,但目前这种方案尚未得到广泛的采用。在撰写本文时,最近一个被中继到合约的BTC区块已经是18天前的区块了。BTCRelay采用率低的一部分原因在于,这个中继是单向的,也就是说,我们没有办法把以太坊上的交易中继回比特币区块链。 最近,我参与开发了PeaceRelay。这个中继技术可以允许不同的基于以太坊的区块链(例如,以太坊和以太经典)进行跨链通信。目前,PeaceRelay已经发布了功能原型,该原型可实现ETC与以太坊区块链间进行交互。尽管高昂的gas成本使得维护PeaceRelay的费用十分昂贵,但现在PeaceRelay已经准备好投入实际应用了。 目前已经有团队着手在以太坊区块链上建立ZCash的ZECRelay。例如,BLAKE2哈希函数正被考虑应用在“大都市”(以太坊新版本Metropolis,编者注)硬分叉中。如果在“大都市”版本发布之前BLAKE2的EIP获得批准,鉴于zkSNARK已经被包含在该版本中,那么我们就可以在以太坊上高效构建ZECRelay。 相比之下,在以太坊上为诸如莱特币(LiteCoin)和狗狗币(DogeCoin)这类使用Scrypt工作量证明的加密数字货币搭建中继链的做法要复杂得多,因为验证/计算Scrypt哈希需要消耗大量的gas。有人提供1500ETH奖励金(以前是6000ETH)用于构建狗狗币-以太坊中继技术,但目前还没有人宣布构建成功。这类Scrypt-PoW加密数字货币的实际中继技术的可行性仍然是未知的。 链中继技术对于像KyberNetwork这样的去中心化交易所有什么意义? 通过简单的铸币过程,我们可以很容易地创造一种新的由加密货币X支撑的ERC-20代币(为了区分,我们称之为X-token)。具体而言,如果有人在区块链X上创建了一个把X代币存储到某个预定义地址的交易,那么ERC-20合约就会铸造新的X-token。由于ERC-20合约可以通过X-relay来验证交易的有效性,只要X区块链不易遭受51% 攻击(如果X区块链易受攻击,那么X代币就没有任何价值了),那么就可以保证已经存入了相应的X币来铸造特定数量的新代币。通过这种方式,任何人都可以在以太坊上进行X代币(例如比特币,ZCash,ETC)与以太坊上的任意ERC-20代币间的兑换。 到目前为止,一切都进展的很顺利。我们已经能够通过诸如KyberNetwork这样的链上交易所存储X代币,铸造相应的符合ERC-20标准的X-token,并在无须信任的前提下与其它ERC-20代币进行交易。但是,这里面还缺少一些东西。比如,我们怎么样把X-token转换回X代币?这是整个问题最棘手也最有趣的地方。一个很好的解决方案是在X链上部署ETH-Relay,从而在以太坊和X链间形成一个双向的中继通道。现在人们可以在以太坊上销毁X-token,并将证据提交给X链,以索取存入的X代币。这种方案的一个例子是以太坊和以太经典之间的双向中继,如下图所示。双向中继使得ETH和ETC之间的交易能够以无须信任的方式进行 — — 即不需要可信的中介来撮合交易。 通过使用以太坊和以太经典之间的双向中继,实现ETC在以太坊区块链上无须信任的相互交易。铸币过程分为三个步骤(1,2和3),包括:1,将ETC锁定在ETC合约中;2,通过向运行在以太坊上的代币合约发送锁定的交易及其证明来铸造ETC-token;3,代币合约在铸造相应数量的ETC-token之前先通过ETC-Relay来验证锁定的交易。同理,通过三个类似的步骤(4,5和6),用户可以把ETC从相应的ETC-token中赎回。 通过使用以太坊和以太经典之间的双向中继,实现ETC在以太坊区块链上无须信任的相互交易。铸币过程分为三个步骤(1,2和3),包括:1,将ETC锁定在ETC合约中;2,通过向运行在以太坊上的代币合约发送锁定的交易及其证明来铸造ETC-token;3,代币合约在铸造相应数量的ETC-token之前先通过ETC-Relay来验证锁定的交易。同理,通过三个类似的步骤(4,5和6),用户可以把ETC从相应的ETC-token中赎回。 […]