L2 必读 | 走进 AnyTrust 技术底层,数据可用性和最小信任假设如何实现
原文作者:Arbitrum
原文链接:https://github.com/OffchainLabs/nitro/blob/master/docs/inside_anytrust.md
翻译校对:TinTinLand
AnyTrust 是 Arbitrum Nitro 的技术变式,它通过最小信任假设来降低交易成本。
Arbitrum 协议要求所有 Arbitrum 节点,包括验证器(验证链的正确性,并准备质押正确结果的节点)都可以访问 Arbitrum 收件箱中 L2 交易数据。Arbitrum Rollup 通过在 L1 以太坊上发布数据(批量处理或压缩的形式)作为 calldata 以提供数据访问。支付这笔以太坊 Gas 费用是使用 Arbitrum 网络最大的成本。
相反,AnyTrust 依靠外部数据可用性委员会(以下简称“委员会”)来存储数据并按需提供。该委员会有 N 名成员,AnyTrust 只需要确保至少有 2 名成员是诚实的。这是因为,如果 N-1 名委员会成员需要承诺提供对某些数据的访问,承诺方只需要有一名诚实成员即可,同时为了避免该诚实成员在 N-1 之外,因此,总共需要至少 2 名成员为诚实节点。这样,即可保证 rollup 协议正常运行。
Keysets
一组 Keyset 明确了该委员会成员的公钥和数据可用性证书有效所需的签名数。Keysets 使委员会成员可以发生变化,并使委员会成员能够更改其密钥。Keyset 包含:
委员会成员人数
对于每个委员会成员,有一个 BLS 公钥
所需的委员会签名数。
Keysets 由其哈希值标识。L1 KeysetManager 合约维护当前有效的 Keysets 列表。L2 链的管理者可以在此列表中添加或删除 Keysets。
当 Keyset 变得有效时,KeysetManager 合约会发出一个包含 Keyset 哈希和完整合约的 L1 以太坊事件。在这之后,只要给定 Keyset 哈希,将允许任何人恢复合约内容。.虽然 API 不限制可以同时有效的 Keysets 的数量,但通常只有一个 Keyset 有效。
数据可用性证明
AnyTrust 中的一个核心概念是数据可用性证明(以下简称“DACert”)。DACert 包含:
数据块的哈希值
有效期
证明 N-1 委员会成员已签署(哈希,有效期)
用于签名的 Keyset 哈希
说明哪些委员会成员已签署的位图
BLS 汇总签名(在 BLS12-381 曲线上),证明已签名方
由于 2-of-N 信任假设,DACert 证明在有效期结束之前,用户至少可以从一名诚实的委员会成员可以获得证明块的数据(即 DACert 中哈希的前映像)。
在普通(非 AnyTrust)Nitro 中,Arbitrum 定序器将数据块作为调用数据发布在 L1 链上。数据块的哈希值由 L1 收件箱协定提交,允许 L2 代码安全可靠地读取数据。
AnyTrust 为定序器提供了两种在 L1 上发布数据块的方法:它可以如上所述发布完整数据,也可以发布 DACert 证明数据的可用性。L1 收件箱协定将拒绝任何使用无效 Keyset 的 DACert;DACert 其他方面的有效性将由 L2 代码检查。
从收件箱读取数据的 L2 代码将像在 Nitro 中一样读取完整数据块。如果它看到 DACert,它将参考 DACert 指定的 Keyset (已知该 Keyset 有效,因为 L1 收件箱已验证)来检查 DACert 的有效性。
L2 代码验证:
签名者的数量至少是 Keyset 所需的数量
总计的签名对已声明的签名者有效
有效期至少比当前 L2 时间戳晚两周。
如果 DACert 无效,则 L2 代码将丢弃 DACert 并转到下一个数据块。如果 DACert 有效,则 L2 代码将读取数据块,该数据块保证可用,因为 DACert 有效。
数据可用性服务器
委员会成员运行数据可用性服务器 (DAS) 软件。DAS 公开了两个 API:
Sequencer API 只能由 Arbitrum 链的 Sequencer 调用,它是一个 JSON-RPC 接口,允许 Sequencer 将数据块提交给 DAS 进行存储。部署通常会阻止排序器以外的调用方访问此 API。
REST API 旨在向全世界开放,是一种基于 RESTful HTTP(S)的协议,允许通过哈希获取数据块。此 API 是完全可缓存的,部署可以使用缓存代理或 CDN 来增加规模并防止 DoS 攻击。
只有委员会成员有理由支持 Sequencer API。我们希望其他人运行 REST API,这很有帮助。下面将对此进行详细介绍。
DAS 软件基于配置选项,可以将其数据存储在本地文件、Badger 数据库、Amazon S3 上,或者冗余地跨多个备份存储。该软件还支持在内存(使用 Bigcache)或 Redis 实例中进行可选缓存。
定序器交互委员会
当 Arbitrum 定序器生成一个数据批次,并希望使用委员会发布时,它会通过 RPC 将该批次的数据以及有效期(通常在未来三周)一并发送给所有委员会成员。
每个委员会成员都将数据存储在其后备存储中,并按数据的哈希值编制索引。然后,成员使用其 BLS 密钥对(哈希、有效期)进行签名,并将带有成功指示器的签名返回给定序器。
一旦定序器收集了足够的签名,它就可以聚合签名,并为(哈希、有效期)创建有效的 DACert。然后,定序器将该 DACert 发布到 L1 收件箱合约,使其开放于 L2 上的 AnyTrust 软件应用。
如果定序器未能在几分钟内收集到足够的签名,它将放弃使用委员会的尝试,并将通过将完整数据直接发布到 L1 链来“回退到 Rollup ”,就像在非 AnyTrust 链中所做的那样。
L2 能够运行两种数据发布格式,即通过 DACert 或完整发布数据,并将正确处理每种格式。
了解更多:
Arbitrum 中文推特号:
https://twitter.com/arbitrum_cn
Arbitrum 小助手:Arbitrum_assistant
Arbitrum Discord:discord.gg/arbitrum
关于我们
ABOUT US
TinTinLand 是赋能下一代开发者的技术社区,通过聚集、培育、输送开发者到各开放网络,共同定义并构建未来。
Discord: https://discord.gg/kmPnTDSFu8
Twitter: https://twitter.com/Tintinland2021
Bilibili: https://space.bilibili.com/1152852334
Medium: https://medium.com/@tintin.land2021
YouTube:https://www.youtube.com/channel/UCfHiMcFt-4btbC75FsReQhQ
评论