织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

技术详解 Rollup 扩容原理与挑战(5)

时间:2021-01-06 12:34来源:未知 作者:admin 点击:
可以保证如果某个 batch 不正确,但之前所有的 batches 都是正确的,那么就能够创建一个欺诈证明以表示该 batch 是不正确的。请注意对之前 batch 的声明:如

可以保证如果某个 batch 不正确,但之前所有的 batches 都是正确的,那么就能够创建一个欺诈证明以表示该 batch 是不正确的。请注意对之前 batch 的声明:如果有超过一个无效的 batch 被发布到 Rollup 中,那么最好尝试证明最早的无效 batch。也可以说,如果某个 batch 是正确的,那么永远都无法创建一个欺诈证明表示其无效。

如何进行压缩?

一笔简单的以太坊交易 (发送 ETH) 大小约为 110 字节。而在 Rollup 上进行 ETH 转账,大小仅为约 12 字节:

Vitalik Buterin:技术详解 Rollup 扩容原理与挑战

其中一部分只是简单的高级编码:以太坊的 RLP 编码方式在每个值上会浪费 1 字节。但是其中还包括一些机智的压缩技巧:

Nonce:这个参数的主要目的是预防重放攻击。如果帐户的当前随机数为 5,则该帐户的下一个交易记录必须包含随机数 5,但是交易一经处理,该帐户中的随机数将增加为 6,因此无法再次处理该交易。在 Rollup 中,我们可以完全省去随机数,因为我们可以直接从前状态中恢复随机数;如果有人尝试使用先前的随机数重放交易,签名将无法验证,因为会依据包含较高随机数的数据来对签名进行检查。

Gasprice:我们可以允许用户按固定 gas 价格范围进行支付,例如 2 的 16 次幂。或者我们可以在每个 batch 中收取固定的 gas 费用,甚至可以将 gas 费的支付完全移出 Rollup 协议,让交易者使用通道向 batch 创建者支付相应费用。

Gas:同样地,我们可以将总 gas 设定为 2 的多次幂形式。或者我们也将 gas 限制在 batch 的水平。

To:可以用 index 来替换 20 字节的地址 (例如,如果某地址是被添加到默克尔树中的第 4527 个地址,我们只需使用 index 4527 来表示即可。然后向状态添加一个「子树」 (subtree) 来存储 index 和地址本身的映射关系)。

Value:我们可以用科学记数法储存值。在大多数情况下,交易只需要 1-3 个有效位。

Signature:我们可以使用 BLS 聚合签名将大量签名聚合成一个约为 32-96 字节 (取决于协议) 的签名。该聚合签名可以依据消息集和 batch 的发送者集一次性进行检检查。表中的 「~0.5」 表示一个聚合签名中可以包含的签名数量是有限制的,因为需要能够在一个欺诈证明中对聚合签名进行验证。

ZK Rollups 特有的一个重要压缩技巧是:如果交易的一部分信息仅用于验证,并且不用于计算状态更新,那么该部分可以移至链下。Optimistic Rollup 无法做到这一点,因为该数据仍然需要存在链上,以备需要在欺诈证明中进行检查的不时之需。而在 ZK Rollup 中,SNARK 已经证明了 batch 的正确性,也就是说验证所需的数据已经齐全。 (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容