| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> Rainbow Bridge:trustless bridge between NEAR and Ethereum -> 正文阅读 |
|
[区块链]Rainbow Bridge:trustless bridge between NEAR and Ethereum |
1. 引言NEAR团队开发的Rainbow Bridge,无需信任bridge本身,仅需要信任所连接的NEAR链和以太坊链。除了以太坊链的矿工和NEAR链的validators,无任何authority。 相关代码实现见:
Bridge跨链方案,可支持利用 A链的性能 + B链的社区和生态。 为了信任Rainbow Bridge,需:
由于Rainbow Bridge用户除了信任链本身之外,无需信任任何其它东西,因此可称Rainbow Bridge为trustless的。这种trustless存在延迟:
与其他一些需要7天waiting time的扩容方案相比,Rainbow Bridge可认为是rapid的。当前Rainbow Bridge的速度仅受限于 缺少EIP665 和 以太坊区块的确认数,任何基于以太坊的项目都有相同的限制。 Rainbow Bridge为去中心化的,无需经过其他人(甚至是NEAR基金会)的同意,任何人都可:
Rainbow Bridge为generic的,任何NEAR链上可cryptographically provable的信息 可用于以太坊合约中,反之亦然。两条链上的可cryptographically provable信息有:
这些cryptographically-provable信息可用于多种场景:
尽管有以上应用场景,目前Rainbow Bridge仅用于支持以太坊和NEAR之间的ERC20 token转移。 2. Rainbow Bridge的设计理念Rainbow Bridge的核心思想为其事项了2个light clients:
light client的关键在于可track and verify the state with a small amount of computation。light client所需的计算量需足够小,以支持在合约中运行。 以太坊light client所需的资源更多,因为其需要跟踪每个区块头,并仅需Ethash验证。 详细的NEAR light client设计可参看:NEAR Light Client 3. Rainbow Bridge中的Light clientsRainbow Bridge上的light client流程为:
对于一组 EthOnNearClient/NearOnEthClient 合约,可存在多组 Eth2NearRelay/Near2EthRealy 服务。每个Rainbow Bridge 维护者都可运行一组Eth2NearRelay/Near2EthRealy 服务。这些服务可相互竞争,如:
3.1 NEAR链上的EthOnNearClient合约EthOnNearClient 为在NEAR链上以Rust语言实现的以太坊light client。其会接收以太坊区块头,并维护the canonical chain,其假设某区块一旦有 在NEAR链上,要求合约owner锁定一定的数量的token来使用state,具体见NEAR Storage staking。若将每个以太坊区块头都存储在EthOnNearClient中,将需要大量持续增加的locked tokens。因此,在EthOnNearClient中仅存储有限数量的hashes of Ethereum headers。造成的影响为,Rainbow bridge仅可用于证明在该time horizon期间发生的events。即,你若通过以太坊向NEAR转移ERC20 token,若在转移过程中有中断,请确保在7天内完成所有操作。 EthOnNearClient另一个重要特征在于如何验证以太坊区块头:
Rainbow Bridge借鉴并复用了 Kyber network的EOS Bridge 中的部分代码。以太坊区块 头的验证仅需要1/3 of the max transaction gas limit and 1/10 of the block gas limit。 3.2 以太坊上的NearOnEthClient合约NearOnEthClient 为在以太坊上以Solidity语言实现的NEAR light client。 不同于EthOnNearClient,NearOnEthClient无需验证每个NEAR区块头,可以跳过大多数的区块头,仅需要在每个NEAR epoch中验证至少一个区块头。NEAR每个epoch对应有43k个区块,大约为半天。 因此,NearOnEthClient可memorize hashes of all submitted NEAR headers in history。因此,当你由NEAR向以太坊转移资产过程中若有终端,可不必担心,可在任何时候恢复,即使是数月之后也可以。 NEAR light client中具有如下有用的属性:
但是,NEAR中的validators采用Ed25519来进行消息签名,Ed25519目前在EVM预编译合约中不支持,使得在以太坊合约中验证区块头中所有签名的费用很高。技术上来说,无法verify one NEAR header within one contract call to NearOnEthClient。因此,Rainbow Bridge中采用Optimistic Contracts方案,即NearOnEthClient验证NEAR区块头中除签名之外的所有内容。然后,任何人可challenge a signature in a submitted header within a 4-hour challenge window。该challenge中验证一个Ed25519签名需要约500k gas费(尽管很贵,但可能可以实现)。向NearOnEthClient提交NEAR区块头的用户需post a bond in Ethereum tokens,一旦challenge成功了,将burn half of the bond and return the other half to the challenger。bond的数额因足够大,足以覆盖即使指数增长持续4小时后的gas费。如,20 ETH bond将覆盖20000Gwei的gas费。 Optimistic Contracts方案需要由一个watchdog服务来监控提交的NEAR区块头,并challenge any headers with invalid signatures。为了增加安全性,不同的用户可运行不同的watchdog服务。 一旦以太坊接受了EIP665,使得可在EVM预编译中支持Ed25519签名,则不再需要有watchdog服务以及4-hour challenge window。 当前,Rainbow Bridge中至少包含了:
4. Rainbow Bridge中的Provers为了证明something happened on a specific blockchain:
在EthOnNearClient/NearOnEthClient 之外 单独实现 NearOnEthProver/EthOnNearProver 合约,主要基于以下考虑:
当前,Rainbow Bridge中仅验证Ethereum events和NEAR contract execution results,就足以moving tokens between NEAR and Ethereum。 5. ERC20用例基于Rainbow Bridge的provers,可构建支持asset transfer或cross-chain communication的一系列合约。但是,基于不同的场景,具体的实现会有所不同。如,ERC20需要an entirely separate set of contracts from ERC721 or native token transfer。 当前Rainbow Bridge支持开箱即用的generic ERC20 token transfer。 以以太坊上的ERC20 token DAI为例,通过Rainbow bridge进行转移,需要额外部署2个合约:
当用户想要将 X X X个DAI由以太坊转移到NEAR时:
当用户想要将 Y Y Y个nearDAI由NEAR转移到以太坊时:
6. Rainbow Bridge使用流程用户可通过RainbowCLI,或任何集成了RainbowLib的app(如NEAR wallet),也可以直接调用相应的合约来使用Rainbow Bridge。
7. Rainbow Bridge如何应对硬分叉希望Rainbow Bridge不会中断,当遇到如下场景时:
希望在不影响Rainbow Bridge trustless和去中心化特性的情况下,引入一种中心化的升级方案。 以太坊社区中开发了大量的proxy patterns来进行合约升级,但是我们认为,最安全的升级模式 是将是否升级的决策交由用户自己来决定。 一种由用户控制的升级方案为:
但是,以上方案存在如下缺陷:
为此,我们定的升级策略为:
8. Rainbow Bridge中激励模型当前Rainbow Bridge并未对支付gas费进行header relay的维护者进行激励。 参考资料[1] ETH-NEAR Rainbow Bridge |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:53:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |