拥有桥接器是否能成为 validium?
假设顶部链最初是作为一个独立链启动的,然后有人在以太坊上部署了一个桥接合约。桥接合约只是一个接受顶部链区块头(block headers)的合约,它会验证提交给它的任何区块头是否附带有效的证书,证明该区块头已被顶部链的共识接受,并将该区块头添加到列表中。
应用程序可以在此基础上构建功能,如代币的存款和提取。一旦这样的桥接建立起来,它是否提供了我们之前提到的任何资产安全保障呢?
到目前为止,还没有!有两个原因:
1. 我们正在验证区块的签名,但没有验证状态转换是否正确。因此,如果您将在以太坊上发行的资产存入顶部链,并且顶部链的验证器变得不诚实,他们可以签署一个无效的状态转换,从而窃取这些资产;
2. 顶部链仍然无法读取以太坊。因此,您无法将以太坊本地资产存入顶部链,除非依赖于其他(可能不安全)的第三方桥接。
现在,让我们将桥接器构建为验证型桥接器:它不仅验证共识,还验证了使用 ZK-SNARK 证明计算出的任何新区块的状态是否正确。
一旦完成这一步骤,顶部链的验证器将无法窃取您的资金。他们可以发布一个包含不可用数据的区块,阻止所有人提取资金,但他们无法窃取资金(除非试图通过向用户索要赎金来揭示允许其提取资金的数据)。这与 validium 具有相同的安全模型。
然而,我们仍然没有解决第二个问题:顶部链无法读取以太坊的数据。为了实现这一点,我们需要采取以下两种方式之一:
1. 在顶部链中放置一个验证已最终确定的以太坊区块的桥接合约;
2. 在顶部链的每个区块中包含一个最近以太坊区块的哈希,并采用分叉选择规则来强制进行哈希链接。也就是说,将链接到非主链上的以太坊区块的顶部链区块本身,就是非主链的。如果顶部链区块链接到的以太坊区块起初在主链上,但后来变为非主链,顶部链区块必须也成为非主链的。
这些紫色的链接可以是哈希链接,也可以是验证以太坊共识的桥接合约
这就够了吗?实际上,还不够,因为存在一些小的边缘情况:
1. 如果以太坊遭受了 51% 攻击,会发生什么?
2. 如何处理以太坊的硬分叉升级?
3. 如何处理您的链的硬分叉升级?
对以太坊的 51% 攻击会导致与顶部链的 51% 攻击类似的后果,但情况相反。以太坊的硬分叉可能会使顶部链内的以太坊桥接失效。一个社会承诺(social commitment),即如果以太坊还原了一个已最终确定的区块,就会还原,如果以太坊进行了硬分叉,就会进行硬分叉,是解决这个问题最干净的方式。
这样的承诺实际上可能永远不需要真正执行:如果顶部链的治理机构发现可能发生攻击或硬分叉的证据,可以激活治理机构,仅在治理机构失败时才对顶部链进行硬分叉。
对于第三个问题,唯一可行的答案是,在以太坊上设置某种形式的治理机构,使其能够让以太坊上的桥接合约意识到顶部链的硬分叉升级。
总结:双向验证桥接几乎足以使区块链成为 validium。主要剩下的要素是一种社会承诺,即如果以太坊发生异常情况导致桥接合约无法正常工作,另一条区块链将进行硬分叉作出回应。