但是,上述方法存在安全性问题。 如果 Layer 1 上发生 51% 攻击,将恶意默克尔根合法化,我们很难阻止。 由于 51% 攻击的执行成本随底层区块链的出块时间增加而增加,我们需要足够长的验证期限,才能有效提高 51% 攻击的难度。理想的验证期限是 7 天,因为 ORU 的退出期限也是 7 天,这可以根据挖矿成本和实际的攻击奖励计算得到。 在这种情况下,我们没有理由舍 ORU 而取上述方案。 二步:无需零知识证明验证的预共识承诺,通过递归零知识证明配对实现终局性我们可以通过以下方式解决上述安全性问题。 我们将这个没有经过零知识证明验证的承诺视为预共识。预共识会通过零知识证明验证限制终局性。
所有预共识承诺都会通过配对来限制共识。因此,Layer 2 用户可以享受安全的即时交易终局性。我们需要使用带有递归零知识证明的所有预共识承诺来验证共识承诺。这里有两个电路:预共识电路和递归电路。预共识电路包含采用 zkRollup 方案的 dApp 的逻辑。递归电路只需要从 Layer 1 中获取预共识数据作为公共输入。 递归零知识证明可以用来对一段时间内的预共识进行水平合并:与此同时,它也可以用来将大量交易垂直聚合到预共识承诺中。 如果说任何虚假的预共识承诺都会影响带有配对的共识验证,我们总是可以通过零知识证明配对其进行欺诈证明。一旦证明成功,聚合者就会使用零知识证明验证者函数将该承诺删除,然后重新开始进行交易聚合并创建预共识承诺。 如果急的话,资产持有者可以花 20 万 gas 通过预共识来达成共识,然后就可以立即退出。(当然,他们也可以等待聚合者来达成共识。)正如「第一步」中提到的那样,他们不需要任何特殊设置,即可实现共识终局性,因为所有输入都已聚合,而且可以通过链上事件搜索到。无论验证多少预共识承诺证明,递归验证的 gas 成本都不会增加,因为这些证明将被哈希到条目哈希中。 51% 攻击者无法敲定恶意默克尔根,因为每个根最终都会通过由 zk 电路实现的合约代码逻辑在链上进行验证。 总结这种带有欺诈证明的预共识协议及相关数据可访问性可以让 zkRollup 拥有较长的承诺间隔(如 6 小时)。这种方法可以大量节省验证计算所需的 gas 成本。 来源链接:ethresear.ch (责任编辑:admin) |