在多个父链之间执行一致性的 Plasma 链

1,659 阅读4分钟

假设你希望拥有一个具有多个父链的Plasma链,其中Plasma链包含来自所有这些链的资产(这对于在这些资产之间运行去中心化的交易所非常有用,而不需要任何一个链包含另一方的轻客户端)。首先,这似乎很容易实现:只需在每个链上放置一个Plasma根合约,然后让每个合约只识别Plasma链上与该特定根链上的资产相对应的资产。

但这会导致一个问题:如何确保根链之间的一致性?例如,假设存在Plasma链,其中ETH和ETC链作为根,ETH和ETC作为两个资产。假设Plasma链的块X包含从A到B发送ETH并将ETC从B发送到A的事务(这是去中心化交易所的交换)。与B串通的恶意运算符可以通过创建块X进行攻击,然后将根发布到ETH链中但不发布到ETC链中(或将一些备用根X’发布到不包含该事务的ETC链中)。这导致ETH侧完成但不满足ETC侧。

我们可以通过Lamport的99%容错共识来解决这个问题。假设plasma链具有其自己原生代币,并且这种币的存款形成了股权系统的证明,具有绑定的验证器。我们添加以下规则:为了使其中一个根链接受区块的头,它必须由验证器签名;所使用的验证器的索引用作随机种子来挑选随机的其他40个验证器。包含事务还必须指定包含时间戳T,并且必须在时间T和时间T + D之间提交(例如,D = 1小时)。然后可以在同一时间窗口内将相同的包含事务发布到其他根链中,或者,如果来自随机子集的k个验证器共同签名,则可以在时间T + k * D之前将其发布到其他根链中。块被包含在一个根链中,任何诚实的验证器因此可以添加它们自己的签名并使其在D秒的附加时间窗口内被提交到其他根链中,其中它们的签名延长了截止期限。

这确实需要Plasma链的信任假设,但它是非常有限的,只需要约1-10%的验证器是诚实的,这取决于风险容忍度和验证器集大小(它可以小于或大于40根据需要)。

关于Plasma介绍:

Plasma是一个激励,和强制智能合约执行的框架。可以扩容达到每秒大量的状态更新(能达到每秒10亿级),在区块链上能支持全球范围内的大量的去中心化金融应用。这些智能合约通过网络交易手续费用于激励持续的自动化运作,最终依赖于底层的区块链(比如,以太坊)来强制交易状态的锁定。

我们提议的这种去中化的可扩展的自动运行应用,不仅可以用来处理金融行为,也可以通过构建面向全球的持久化数据服务的经济激励,来成为当前中心化云服务的一种备选方案。

Plasma由两个核心部分构成:重组所有区块链计算为一组MapReduce函数,和一个可选的方法,在现存的区块链上,以不鼓励区块扣留的Nakamoto共识原则,来实现一个Pos的代币押金机制。

这种构建通过在主链上编写智能合约,使用欺诈证明,可以在主链上强制状态的锁定。我们将区块链编组为一个树形的分层结构,将每一个区块链视为一个独立的分支,强制将整个区块链的历史,和可MapReduce的计算提交到Merkle证明。通过主链强制将某个链的帐本信息打包到子区块链中,这个链将通过最低的信任达到不可思议的扩容(假定根链的可用性和扩展性)。

围绕全局强制非全局数据的数据可用性,区块扣留攻击是是一个非常复杂的问题。Plasma通过对有问题链的退出机制来缓解了这个问题,同时也创建了一个激励和持续的强制的执行数据的正确性机制。

仅仅通过周期性的将正常状态的Merkle证明广播到主链(比如以太坊),这将允许不可思议的扩展性,降低交易成本和计算量。Plasma支持了大规模去中心化应用的持续运行。

本文为以太中文网独家翻译。点击查看原文