如何在eth1跨链和eth2跨链之间建立双向桥梁
扫描二维码
随时随地手机看文章
编者按
之前社区内有讨论, 有没有可能在 ETH2 中自己实现一个跨链, 首先和 ETH1 跨链, 然后再和其他链跨?有点天方夜谭哈, 不过也是一个设想, 目前看没有这种可能性。不过 V 神最新的帖子里(10月11日)却在另一个层面提到了双向桥梁的概念, 即升级过程用双向桥梁以实现一定的互操作性, 主要目的是为了彼此提供信息给对方, 以保证一致性。
概要
这篇文章的目的是说明在eth1和eth2之间建立双向桥梁的一些挑战(例如,支持ETH的双向转换),以及如何实现它。
问题和方案
作为eth2提案的一部分,已经存在一个eth1 -》 eth2 链路,这是允许存款发生的必要条件。这个链接是使用eth1data投票机制3实现的。注意,该机制假设PoS验证器是可靠的大多数,并且PoW链不会受到攻击(具体来说,它的恢复时间不会超过5小时); 如果任何一个假设失败了,那么这两个链将不再一致。至少在开始时就有一个隐含的“社会契约”,如果发生任何一种情况都可以纠正,很可能是通过PoS链的软分叉的方式进行纠正 (如果PoW链确实确实恢复了5个小时以上,那么很有可能达成社区协议,认为攻击链是非法的)。 注意,在这两种情况中,PoS 链的失败都不会导致 PoW 链的软分叉。
如果我们希望eth1链了解eth2状态(允许ETH从eth2返回到eth1的前提),有两种方法可以做到这一点。一种是使PoW链包含PoS链的轻客户端, 另一个是要使PoS 的敲定里包含PoW 的敲定(finality)。后者可以通过添加一种机制来实现,在这种机制中,如果 PoS 块 BS 通过 eth1数据投票包含对 PoW 块 BW 的引用,并且 BS 最终完成,那么 BW 也被视为最终完成。但是,这意味着PoW矿工(和客户端)还需要运行eth2实现,以便他们了解 eth2 链的敲定情况。
前者需要在eth1内部实现的eth2客户端, 这将需要Webassembly或BLS-12-381验证的本机支持,目前预计不会很快发生。另外,它仅提供轻客户端级别的安全性。
后者更有趣,因为它为eth1提供了一种本地形式的反转限制(通常称为finality gadget建议)。注意,这个建议与第一个不同,因为它虽然让eth1 fork选项知道eth2,但并没有立即让eth1知道eth2的状态。例如,请注意,两个相互竞争的eth2链在理论上有可能完成相同的eth1块(这意味着eth2已经破坏,但在理论上仍然有可能)。
更常见的情况是,可能有两个eth2 最终区块,其中一个是另一个的子代,两者都支持相同的eth1块,并且一些矿工可能知道这两个eth2块中的较新者,而另一些矿工则不知道。对于“ eth2作为敲定性小工具”来说,这不是问题,但这确实意味着我们需要更多基础设施,以允许eth1明确了解eth2 区块状态,以便允许从存款合约中提取款项。
一种可能是在eth1内部简单地创建一个eth2_data投票机制;本质上,复制一份让eth2了解eth1的机制。这可以与上述内容结合起来,以确保一致性, eth1 旷工仅在下述两种情况下会为为 eth2 数据区块投票:eth1 旷工正在构建的eth1数据块(i)已经完成,并且(ii)在它们的eth1数据块中引用了它们的eth1数据块(它们是旷工正在构建的eth1数据块的祖先)
挑战
这两项提议都需要对eth1进行修改。目前,eth2路线图在the final transition 4
之前没有任何eth1方面的更改。这两项建议都要求在eth2侧发生损坏时,对eth1侧采取紧急补救行动。后一个建议要求所有的eth1 旷工也运行一个eth2节点。因此,虽然这两项建议都是绝对可行的,但不应迅速执行。
然而,当 eth2继续运行并证明了它的适应性,那么在某个时刻实现这样一个桥梁肯定是有意义的。为了降低风险,可以做以下几件事:
· 在eth1上运行eth2投票,投票期为一周,以便在出现问题时为人工干预留出时间
· Eth1链通过轻客户了解到 eth2定稿块,也可能由于类似原因推迟一个星期才退出
· 只有当抵押足够高时(例如大于500万)才打开桥梁
· 把投票的门槛设得高于50%(例如。80%);系统倾向于不包含任何eth2块,除非它们之间有很强的一致性。
来源: Ourea无涯社区