2018-02-27 Cosmos 互联链 跨链关键技术—以太坊的挂钩分区介绍
跨链加密货币资产转移是开发团队在Cosmos中实现的核心功能。在Cosmos生态中,加密资产可以通过IBC协议进行转移。IBC协议是一种能够促进互操作能力的跨链通信协议(Inter-Blockchain Communication protocol)。值得一提的是,IBC协议只有在转出和转入区块链都具有实时最终性时才能使用。
但是,比特币和以太坊都不具有实时最终性;他们都是概率最终性。[注:直到不久的将来Casper the Friendly Finality Gadget (FFG)实现后,以太坊具有最终性。] 概率最终性意味着,随着某个区块后面的链的长度的增加,这条链也就更不容易被重新组织,也就更能让我们相信这个区块是“最终的”。但是因为概率最终性不能完全防止区块链的重新组织,所以通过IBC协议安全地跨链转移资产是不可行的。这就提出了一个问题:Cosmos分区是如何与已经存在的不具有最终性的区块链进行互操作的。
挂钩分区是Cosmos的解决方案。一个挂钩分区是一条基于账户的区块链,它将Cosmos中的分区与像Bitcoin、Ethereum这样的外部的区块链连接起来。它扮演了一个适配器分区的角色;或者是像在Casper演讲中说的那样,它是一个“最终性工具”。通过设定一个“最终性阈值”,当区块链中新增一定数量的区块后认为区块链具有了伪最终性。一般来说,这种“连接”分区设计可以被认为是一种两路挂钩(2WP)。
像Tendermint Core这样的共识引擎提供了实时最终性。如果想更好的了解它是如何工作的,请阅读关于Tendermint共识的更多内容
以太坊挂钩分区将是Cosmos中第一批实现的这种分区之一。它与基于EVM的Ethermint非常不同,Ethermint剥离了基于PoW的挖矿,然后在Tendermint共识机制和新的网络协议栈之上实现原有以太坊的功能。而以太坊挂钩分区会使得ERC20代币和以太币能够在原生的以太坊和Cosmos网络中连接的所有分区通过IBC转移。
挂钩分区的细则还在开发中,你可以关注它的Github代码库:Peggy,下面是仓库链接。
- Cosmos GitHub: Peggy:https://github.com/cosmos/peggy
在Cosmos中,因为我们可以使用IBC协议转移任何加密资产,所以容易进行互操作。然而,在Cosmos和以太坊之间转移加密货币在技术上是十分复杂的,这是因为IBC数据包不能以太坊中被高效的解码。这又是因为EVM没有被设计成与IBC兼容。这些问题只有Peggy才能解决。
Peggy有一个曲折的开端。
第一个尝试把Cosmos和以太坊连接起来的是一个叫ETGate的黑客马拉松项目。ETGate就像一个“油老虎”一样,需要大量的计算资源。ETGate是由 Joon设计的。他是第二届HackAtom的大奖获得者。他也加入了Cosmos开发Peggy。
ETGate最初尝试直接将Cosmos枢纽和以太坊连接起来的。它尝试扩展EVM本身的兼容性。就像这样:
[ 以太坊 ] <- ETGate -> [ Cosmos枢纽 ]
当面对Tendermint和以太坊使用不同的构件的问题时,这种设计是非常不实用的。Tendermint中使用的每一个基础构件都与以太坊中的基础构件不兼容。事实证明,尝试克服EVM中的兼容性问题,扩展区块构建流程的成本非常昂贵。
以下是模块分析:
- 序列化格式:Tendermint的序列化对象的编码方法是go-wire。以太坊用的是RLP (Recursive Length Prefix)。
- 签名方案:Tendermint使用的是ed25519,而以太坊用的是secp256k1。
- 数据结构:Tendermint把键值对存在IAVL+树中,而以太坊把它们存在Patricia树中。
ETGate的设计消耗大量计算资源,因为它在EVM中解码IBC数据包。IBC数据包中的内容是Tendermint头、交易、IAVL+树证明和ed25519签名。
在意识到我们可以通过把解析转换机制放在EVM之外,即定制的区块链中完成,此方式将节省大量gas,Peggy的设计思路就变得清晰了。
Peggy 的 5 个 组成部分
Peggy 的 5 个 组成部分- 以太坊智能合约:将会有一组以太坊智能合约扮演资产保管人的角色,它们能够保管以太坊中的代币和Cosmos中的代币。
- 见证人:见证人组件能够证明以太坊中发生的事件。它等待100个区块产生,在不具有实时最终性的区块链上实现最终性。它运行一个完全验证的以太坊节点,以便通过将WitnessTX提交到挂钩分区中来证明在以太坊内状态更改。我们在这里使用一个共享的安全模型,让一组Cosmos 枢纽验证人同时作为挂钩分区的见证人。
- 挂钩分区:挂钩分区是建立在Tendermint上的,用于连接不同类型区块链。它允许用户执行或者查询交易。这就是Cosmos如何与以太坊进行通信的。
- 签名者:签名者使用以太坊能够解析的secp256k1签名方案对信息进行签名,以便于签名能够高效的被智能合约验证。签名组件通过SignTx消息生成一个secp256k1签名并将其发布到挂钩分区中,以便在管道中的智能合约中转发事务进行验证。
- 中继器:中继器组件批量转发交易信息。这些交易由签名者模块进行签名后被转发到以太坊智能合约中。
总结
现实世界中的例子:把 Cosmos 中的代币转到以太坊中
例如,你想取出一些Cosmos的Photon代币并且把他们变成等值的以太币。该怎样利用Peggy完成的呢?
- 首先从Cosmos枢纽中开始。你先通过IBC协议把一些Photon转移到挂钩分区中。挂钩分区接收到传来的IBC数据包:一个包含发送Photon代币的消息。签名者监视着这个挂钩分区并且对这些IBC交易进行签名,高效的把这些签名转换为以太坊能解析的secp256k1格式的私钥。这样一来,你的交易就在挂钩分区上完成了签名。
- 关注这个挂钩分区的中继器等到他们看到超过2/3的签名者这个交易进行了签名,然后将你签署的交易批量处理为通过IBC发送的所有其他交易的清单。然后他们把附有签名的列表转发到以太坊智能合约运行的EVM上。
- 以太坊智能合约接下来检查交易列表是否有效。针对Photon智能合约会生成它的ERC20版本。智能合约产生ERC20 Photon之后,它将ERC20 Photon发送到你在以太坊主网中的地址上。
- 此时,你可以方便地通过例如0x protocol或是OmiseGO这样的ERC20 去中心化交易所(DEX)把ERC20 Photons 转换成ETH。
最后
我们正在进行Peggy的早期设计。相关以太坊智能合约已经编写完成并且正在进行测试。在许多方面上,Peggy甚至比Cosmos枢纽更加复杂。为了使其能正确的运行,Peggy将需要进行数次迭代。大家可以期待Peggy在今年下半年上线,也就是在Cosmos主网上线后。对于以太坊项目而言,很多问题都亟待解决:可扩展性解决方案的需求,吞吐量的增加以及降低运行成本。以上问题都十分重要。因此,Peggy的部署是重中之重,在开发其余生态系统项目的同时,Cosmos / Tendermint团队已经将其大部分资源用于Peggy的开发。
正在进行的工作
以太坊智能合约一旦部署之后就无法修改,因此非常难以更新。在智能合约更新管理方面还缺乏组织结构。Peggy的发展路线图迫使我们应对这种不确定性,但这是我们希望能够产生具体解决方案的一个研究领域。
网友评论