写点什么

L2 必读 | 走进 AnyTrust 技术底层,数据可用性和最小信任假设如何实现

作者:TinTinLand
  • 2022 年 8 月 11 日
    江苏
  • 本文字数:2239 字

    阅读完需:约 7 分钟

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

用户头像

TinTinLand

关注

还未添加个人签名 2022.01.14 加入

TinTin 是赋能下一代开发者的技术社区,通过聚集、培育、输送开发者到各开放网络,共同定义并构建未来。

评论

发布
暂无评论
L2必读 | 走进 AnyTrust 技术底层,数据可用性和最小信任假设如何实现_区块链_TinTinLand_InfoQ写作社区