在Starknet上验证更快的原因

第一次在mirror上写内容,在Layer2这个赛道上,StarkNet、ZkSync、Linea在资本、交互讨论的热度都很高,今天这一篇先介绍StarkNet在验证速度上对以太坊的补充说起。

先描述一个证明 StarkNet 状态有效性的检查点层次结构: 全节点检查每分钟一次,公共 L1 检查点每小时一次,这两类检查点都依赖于有效性证明。

这两种类型检查方式都同样安全:"分钟"检查点可以由任何 StarkNet 完整节点在 L1 上公开。 ”小时“检查点可以是递归有效性证明,证明其复合 "分钟"。

大区块和快速确定性是 ZK-Rollup 系统中两个理想的属性嘛?

大区块:对于 ZK-Rollups,特别是 StarkNet 的扩展,他们需要生成尽可能大的块。 验证 STARK 证明的成本是批次中交易数量的多对数,因此在链上执行此验证的成本不会随批次大小变化太大。 因此,一份证明中的交易越多,就越好。

快速确定性:如果 Alice 刚刚收到 Bob 的资金,她想知道操作已完成并且她的账户中有这些资金。

这两个所需的属性需要权衡:第一个需要大块以提高可扩展性,这会导致较长的延迟,而第二个需要较短的块间隔以获得更快的最终结果。 在这个提案中,我们提供了一种使用检查点来满足这两个属性的方法。

1、【相关工作】

我们的提案与之前发布的基于 SNARK 证明的 ZK-Rollups 相关提案具有相同的动机和总体思路,该提案称为 Leohio 在 zkRollup中确保即时最终性和长间隔的预共识机制。

Leohio 建议也使用检查点承诺。 在他的方案中,下一个状态连同 ZK 证明和其他需要的数据一起发送到 L1,以证明其完整性作为 calldata。 新状态和该数据的哈希值作为承诺存储在 L1 上。 任何人都可以使用 calldata 中的可用数据来验证承诺的有效性,或者发布欺诈证明来反驳它。 该解决方案适用于 ZK-SNARK,因为它们的证明尺寸很小。 不幸的是,它不适合 ZK-STARK,因为这些证明更大并且以多对数方式缩放。 因此,由于 STARK 证明的大小,将其包含在 L1 事件中的成本更高,因此无法使用此机制通过检查点实现快速最终确定。 我们在下面提出了一种不同的机制。

2、【StarkNet 的状态更新是如何工作的?

在 StarkNet 中,有一个 Sequencer 来决定下一个区块中将包含哪些交易序列。 排序器将块发送给证明者,证明者计算证明并将其提交给 L1 验证者合约。 一旦验证者验证了区块的证明,它就会在链上存储相关的事实——链下计算的结果。 这个事实证明了该块的有效性,以后任何人都可以查询。 在 L1 上注册 Fact 后,将调用状态更新 L1 事务,根据新生成的(现在也经过 STARK 证明和验证的)L2 事务块来更新 StarkNet 的全局状态。 重要的是:当且仅当链上存在相应的 Fact 时,才会执行 State-Update L1 操作。

3、【算法】

StarkNet 中有两种类型算法分别是:排序器和全节点。 排序器将交易聚合并排序到区块中,并提供区块的有效性证明。 完整节点存储网络的完整状态。 该算法假设每个 epoch/块高度只有一个 Sequencer,StarkNet 就是这种情况。

我们定义两种类型的检查点:“分钟”检查点和“小时”检查点。 检查点包括新状态和证明,证明自前一个检查点以来状态转换的有效性,以及其他支持数据(例如数据可用性)。 为了降低gas成本,对于“分钟”检查点,只有状态本身被提交到链上; 其余数据——有效性证明、数据可用性等——通过 StarkNet gossip 网络发送,并由 StarkNet 全节点存储和验证,而“小时”检查点在 L1 上公开验证。 两种类型的检查点具有相同的最终性:“小时”检查点在 L1 上验证,“分钟”检查点有效性证明由 StarkNet 全节点验证,并且可以由这些节点中的任何一个发布到 L1 上,从而给出“ 分钟”检查点 L1 终结性。 希望检查特定交易的最终性的完整节点可以通过检查以下条件来实现:

新状态的链上承诺已在 L1 上发布。 他们拥有该状态的有效有效性证明以及其他所需的有效性数据。 具体事务是新状态的一部分。 优化 递归证明:小区间有效性证明的生成需要网络的计算能力,但是,这种计算得到了很好的利用:为了生成大时间区间有效性证明,其所有小区间证明被聚合成递归 STARK 证明, 证明了大区间状态转换的有效性。 然后将递归证明提交给L1。

4、【总结

我们描述了一种在 StarkNet 上使用两层检查点系统的协议,以实现快速最终确定,同时仍然允许大块。在此协议中,StarkNet 全节点每“分钟”跟踪一次检查点(从而使它们能够更快地完成交易),而 L1 则维护“小时”检查点的记录。 两种类型的检查点同样安全:任何 StarkNet 全节点都可以在 L1 上公开“分钟”检查点。 可以使用递归证明来从其组成的“分钟”检查点构建“小时”检查点的有效性证明。