type
status
date
slug
summary
tags
category
icon
password
TL;DR
本文是由 BuidlerDAO 主办,联合多家 DeFi 项目和投资机构设立的 DeFi 全赛道投研系列课的课程笔记。
由 Jason Wan 老师为我们讲述了 Arbitrum 的现状与发展,同时文中会附带一些自身的思考。
Agenda
- Arbitrum One and Nova
- Arbitrum Nitro
- Technical Overview
Arbitrum Chains
两者主要的区别在于 Arbitrum One 的 transaction 数据是直接上传到 L1 的,而 Arbitrum Nova 则是将 transaction 的数据传送给数据可用性委员会,再由委员会组织一个签名并颁发一个证书给到 sequencer,sequencer 在收到证书之后就会上传到 L1
同时两者的适用场景也有所不同,因为 Arbitrum One 的安全性是完全继承 L1 的,所以更适合需要承载资产价值的产品使用,而 Arbitrum Nova 因为其更低的 gas,所以会更适用于高 TPS 和高 transaction 消耗的用例如 Gaming 和 Social
Arbitrum ONE
Ecosystem
目前 Unique Address 的数量是数倍于 1.5M
DeFi Ecosystem
很多一些蓝筹的 L1 项目都在 Arbitrum 上部署
相对于其他 L2 来说,会更注重原生的项目出现如 GMX、Treasure DAO 等等
Chainlink 最近在 Arbitrum One 上做了新的一些测试,都是优先在 Arbitrum One 上测试,再到其他 L2 上测试
Nitro Upgrade
- Nitro upgrade to Arbitrum One went live Aug 2022
- Increased throughput, compared to pre-Nitro,7x highed
- Advanced calldata compression, reducing the amount of data posted to L1
- Ethereum L1 gas compatibility, bringing pricing and accounting for EVM operations in line with Ethereum
- Safer retryables, eliminating the failure mode where a retryable ticket fails to get created
- Geth tracing, for even broader debugging support
- And many more improvements
Rollups VS. Sidechains
与 Vitalik 在以 ROLLUP 为中心的以太坊路线图中的愿景一致,ROLLUPS 是以太坊未来的重要一步,并得到以太坊社区的广泛认可
- 数据可用性:Arbitrum 是可以在 L1 上验证 L2 的数据,而侧链因为只上传了区块头,故无法进行数据验证
- 桥接:Arbitrum 的桥接合约是植根于 L1 的,不像其他的桥接桥需要使用多签或者其他第三方基础设施的保证,因为 Arbitrum One 是以太坊的 L2,是原生继承于 L1 的,所以不需要任何预言机,也就不会引入第三方的安全隐患
- 安全机制:Arbitrum One 采用的是欺诈证明,是一个 1/N 的安全模型即假如有 N 个验证者则只需要有 1 个诚实的验证者就可以保证链的安全性,这个主要是因为安全的验证主要是在 L1 上进行的
- 当 51% 攻击发生时:因为是 1/N 的安全模型,所以可以抵御 99% 的攻击,侧链一般采用的是 BFT 模型,则只能抵御 34% 的攻击
Arbitrum NOVA
Who is Nova For?
Arbitrum NITRO
Overview
Sequencing & Execution
Transaction 在发送到 sequencer 之后,sequencer 会对其进行排序然后广播给网络中的其他全节点或验证者,再收到广播消息之后这些节点会对其进行 STF(State Transaction Function) 的计算,即将交易进行计算并得到一个新的状态之后再返回给 STF 中去
sequencer 不仅会对交易进行排序,还会将其打包发送到 L1 中去,因为 L1 上的合约也是需要这些数据的,L1 的合约是无法知道 L2 的状态,而如果想让 L1 的合约知道 L2 的状态则需要将 L2 的交易放上去,再计算状态之后将会有相应的证明
需要注意的是,STF 并不是由 sequencer 来做,sequencer 只会接受交易并打包发送交易,它不会对交易的任何状态进行一个保证,所以它无法做到窃取用户资产或改变交易状态的情况,它唯一能做到的就是在接受交易的时候审查用户的交易并不给他们打包导致某个用户的交易无法连接到 sequencer。因此在这种情况下,也有了一个新的机制来避免这种情况的发生,就是从 L1 中直接让用户的交易打包到 L1 中,因为在 sequencer 中也需要将交易打包发送给 L1,如果用户可以自己绕过 sequencer 直接打包发送给 L1 来应对审查攻击。所以中心化的 sequencer 对比其他的 L1 上中心化的节点,它的负面影响是更轻的
- 软确认性:如果用户相信 sequencer 的话,只要在将自己的交易发送给 sequencer 并接受到一个反馈之后就可以认为这笔交易已经被确认了
- 确认:在 sequencer 将用户的交易发送给 L1,然后通过调用 L1 的 RPC 去验证交易是否已经存在了 L1。这个过程大概需要 6.4 分钟,也就是 Ethereum 上 32 个区块确认的时间
在 10 分钟左右的话还有另外的一个时间节点,也就是 3 个 6.4 分钟即 19.2 分钟,当交易上传到 L1 之后,交易只是被 L1 确认了,它并不一定会被 L1 终结化,想要终结化则需要等待 2 个 epoch 即 2 个 6.4 分钟之后,因此 3 个 6.4 分钟是这么得来的即交易放在 L1 需要 1 个 6.4 分钟,交易最终的确认需要 2 个 6.4 分钟,此时 L2 的状态就完全被确定了,是永远不会被回滚的
即使在发生了欺诈证明之后,即使在欺诈证明成功之后也不会对 L2 的状态进行一个回滚,因为这个验证是在 L1 上验证的,此时 L2 的节点这一步就已经确定了,不确定的是在 L1 上的一个状态,因为 L1 是一个与世隔绝的状态,它不知道链外发生了什么,而我们会乐观地认为这个交易已经正确了(采用的是乐观的 rollup),最终这个状态的更改只是在 L1 上的状态更改,并不会影响 L2 的值
- 认证:只是为了让 L1 保存一个正确的状态来使得资产在退出的时候可以成功地验证状态
Geth at the core
在 Nitro 中状态转移函数(STF) 会在 Geth 和 ArbOS 中进行状态的转移,因为除了 gas 之外还需要 ArbOS 的一些调控,其会提供 Arbitrum 的一些最基本的信息如 L1 到 L2 的交易或 L2 到 L1 的交易
这是多于 L1 节点的功能,主要是增加了一些 L2 的功能
最上面的 Node Functionality 则是一些 RPC 或 GraphQL 之类的开发者工具
Proving
这是 Arbitrum 对于验证的分工
如果想要运行一个全节点的话,需要将这三个部分直接进行编译之后会得到一个全节点的二进制可执行文件
如果需要运行一个验证者节点的话,则需要将 STF 的两个部分直接编译为 WASM,那么这里就会有两个问题产生:
- 为什么是编译为 WASM而不是其他
主要是因为编译为 WASM 之后其执行会更快一些
- 为什么要执行更快一些
L2 是有两个执行点的,第一个执行点就是正常的全节点进行交易的速度,第二个执行点则是验证者在验证交易的速度,对于 ZK 的话则是一个 ZK 矿工或者是一个 ZK Proof 生成者来生成 Proof 的一个步骤,而这两点决定了 L2 最终的一个速度。我们把第一个节点称之为 A 点,把第二个节点称之为 B 点,如果系统想要正常运行的话那么 B 的速度一定是要大于等于 A 点的速度,如果 A 的速度更快的话会导致链的验证无法完成最新的状态验证,那么可能会发生其他节点来攻击这条链的情况。所以我们必须保证验证的速度大于交易的速度,故这也是为什么要编译为 WASM 的原因
Rollup Protocol
正常状态
这些步骤都是在 L1 上执行的。图中是一个正常状态即拥有初始状态和最终状态且最终状态没有人质疑,那么这个最终状态会在 7 天之后在 L1 上达到它的最终性
有节点质疑
假设出现了一个节点 Bob 得出的最终状态于原来的节点 Alice 得到的最终状态不同并提出质疑时,就会进行一个挑战
那么此时 Alice 会拿出自己中间的状态给到 Bob,Bob 在拿到这个中间状态之后就会对其进行一个验证
如果 Bob 认为这个中间状态是正确的话,就会继续对后半部分进行一个二分的拆解验证
如果 Bob 不同意的话则会在前半部分进行一个二分的拆解验证
如此循环,一直不断二分拆解验证来最终获得一个区块
这个区块在 L1 上就是一个 L2 上的一个消息,然后他们会对消息拆解成 N 个指令
这 N 个指令再由前面的步骤来继续进行拆解来最终获得它们之间状态发生不同的 1 个指令,即在这个指令之前它们的状态是相同的,在这个指令之后它们的状态是不同的
只有 1 个指令之后,那么将这个指令之前的状态放在 L1 上去计算就非常的容易,如果要把刚刚的整个指令都放到 L1 上去计算的话 gas 会很高,甚至有可能还计算不完因为 Ethereum 有 30M 的 gas 限制,如果超过这个限制的话就会直接 revert 而不会继续执行
如果 L1 计算出来的状态与 Bob 的一样则 Bob 胜利,反之则 Alice 胜利
Arbitrum AnyTrust (NOVA)
刚刚讲到的是 Nitro 的技术栈,而这个技术栈下又有一个小的技术栈叫 AnyTrust,是支撑 Nova 的一个技术栈
Motivation
- Predominate cost of Arbitrum transactions is L1 calldata
- AnyTrust chain: alternative model
- Different trade-off: new security assumption, lower fees
Nova transaction lifecycle
Introducing AnyTrust
这里与刚刚 Nitro 的一个不同点在于 sequencer 在将交易打包压缩之后不会直接发送到 L1 上,而是发送到 DAC(数据可用性委员会) 中,再由 DAC 将它的一个证书返回给 sequencer,最后再由 sequencer 将证书返回给 L1
当 AnyTrust 发现如果证书没有办法正确生成即 DAC 无法正确批准证书的话,那么 AnyTrust 将会回退到 Rollup 模式,就不会上传到 DAC 上,直接上传到 L1 上去
所以在正常的情况下,可以处理高频繁的交易,如果在有危险的情况下也可以回退到一个比较安全的状态
DAC 的签名门槛
- N 个委员会成员
- 证书需要包含 N-1 个正确的委员会成员签名
- 验证者和全节点可以使用 hash 获得相应的数据
- 如果两个以上的委员会成员诚实,则网络能保证安全
很多人会觉得这个是一个 N-1/N 的安全性,但其实不然。因为 N-1 个正确签名没有达成的话并不会导致链宕机而是直接回退到 Rollup 模式,所以只要有 2 个以上的委员诚实就能保证安全,因为如果在有 2 个以上诚实的委员会成员里面就能够保证证书不会被错误地生成,同时也能够保证这个证书的生成过程也能被取消然后回退到 L1 的一个 Rollup 模式,来重新获得一个安全的情况。所以这是一个 2/N 的安全性,虽然它的安全性会比 Rollup 模式多了一倍,但其实它也是一个非常安全的情况,相比其他侧链机制会更完善一些
So what‘s new?
这是 Off-Chain Labs 的一个技术设计,这里提及一下 Off-Chain Labs 和 Arbitrum Foundation 的一个区别,Off-Chain Labs 主要是对 Arbitrum 的技术进行维护并且升级比如刚刚提及的 Nitro 和 AnyTrust,Arbitrum Foundation 主要是管理 Arbitrum DAO 以及上面的一些提案来促进 Arbitrum 生态的发展
Information
About Arbitrum: https://developer.offchainlabs.com/inside-arbitrum-nitro
Developer Docs: https://developer.arbitrum.io/
Projects Portal: https://portal.arbitrum.one/
official Bridge: https://bridge.arbitrum.io/
Q&A
- DAC 是 Arbitrum 自己做的还是跟其他第三方合作
DAC 目前是有跟 Web2 Web3 一些比较大的机构如 Google Cloud 等合作,不只是 Off-Chain Labs 和 Arbitrum Foundation 自己在做
- 去中心化定序器目前有哪些实现方式
目前是在跟第三方进行合作,主要采用的是 BFT 的方式,通过其他人的加入来进行交易的确认
- 是否了解 Arbitrum怎么解决 participation dilemma 即参与者困境问题,举个例子,当 L2 的状态要回到 L1 的时候会有一个欺诈证明,那么这个欺诈证明需要有一个诚实的参与者去生成,那么这个过程当中会有一个激励的问题,比如说这个挑战者会构造多个女巫身份来去瓜分这个奖励
目前的方案是如果挑战成功会将作恶验证者一半的质押归属到一个挑战成功的节点,另一半质押则归属到 Arbitrum DAO 中去。同时还会邀请一些新的验证者加入到验证者集,如果它们能够证明自己在 Arbitrum 上是需要这个验证者的,比如 Lido 它们的 ETH 是需要在 L2 上部署的,如果 L2 上的状态错误的话,可能会影响它们 L1 的协议本身,所以像这些协议本身会部署一个验证者来实时监控 L2 的状态。不关是技术上的保障,也会存在一些社会共识上的保障
- Arbitrum One 是需要 7 天才能够确认的,这个 7 天的实现是怎么确定的
不只是 Arbitrum One,Arbitrum Nova 也会有这个 7 天的确认。主要是以太坊基金会给的一个时间
致谢
最后,非常感谢 BuidlerDAO 和 Jason Wan 老师的辛苦付出,给我们带来了很精彩的课程!
- 作者:Howe
- 链接:https://blog.0xhowe.top/article/Arbitrum_Overview
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。