{"content":{"title":"一次对Arbitrum One的研究","body":"[L2 扩容](https://learnblockchain.cn/article/2234)，是指把Contract （包括transaction）的计算在offline chain（非以太网主网）进行， 把结果（transactions & state） 打包发到以太网主网。 以达到节省gas费用、提高交易吞吐的目的。 \r\n## L2 扩容方案，分为两大类： \r\n1.  Optimistic rollup： 乐观得认为L2网络的参与者是诚信的。 落到Ethereum上的数据和状态不能保证100%是正确的，通过challege机制，在一定的时间窗口内发现错误的L2区块，并通过仲裁机制剔除错误区块，惩罚和驱逐错误区块的提交者。 \r\n2. ZK (zero knowledge)  rollup： 区别在于， 落在Ethereum上的数据和状态一定是正确的，功夫都花在提交之前（还未研究）\r\nArbitrum 是一种Optimistic rollup 方案。 他和Optimism的核心区别在于冲突解决（resolve disputes ）的策略不同：\r\n1. Arbitrum 采用 interactive proving:   冲突的两方（validators）在 rollup protocal (on L1) 的协调下， 不断交互，找到产生冲突的最小指令，交给rollup protocal 判断哪方获胜。\r\n2. Optimism 采用 re-executing  proving:  可以简单理解为让rollup protocal重新执行争议block内所有的transaction。 \r\n\r\n\r\n## 两种resolve disputes方案的不同对L2扩容方案产生了不同影响：\r\n1. 在基于interactive proving的方案下： 冲突解决的成本较小，只需要链上验证一个指令的计算结果。 L2合约不需要存储在L1，  因此合约大小、以及合约运行（比如gas limit）的限制可以脱离L1。 但是需要解决“最小冲突指令发现”这个难题。 Arbitrum 实现了一个AVM， 在兼容EVM的同时，实现interactive proving。 \r\n2. 在基于re-executing proving的方案下： 冲突解决的成本很大，因为要re-exceute整个区块，技术难点也在这，毕竟EVM可没有replay transaction的功能。 现在， 合约必须同时部署在 L1和L2。 此方案的好处是， 其他方面的成本就很小了， 基本上就是把transaction 打包压缩放到L1上。\r\n\r\n## 接下来，在high level看一下Arbitrum网络的结构，分析下去中心化程度和经济模型。 \r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2022/08/D4mCbKvS630ec1e94af2b.png)\r\n\r\n我们可以把区块链做如此的抽象，上层表示transaciton序列， 下层是block chain。  一条block chain实际上维护的是一个数据库， block 是这个数据库不可更改的一个snapshot。 Transaciton 触发数据库的修改 和 block的生成，对于POW L1来说，这个过程靠node挖矿完成， 对于POS L1来说这个过程由validators 之间 propose & vote block完成。 \r\n从这个角度出发，有两个因素决定了区块链数据的一致性：\r\n1. Transaction 一致性： 它决定block的内容。\r\n-   transaction顺序： 相关联transaction之间顺序，  每个transaction相对block的顺序（后者说位置）。 \r\n-   transaction的正确性。\r\n2. Block的一致性：对数据库修改的正确性。\r\n\r\n我们先假设Transaction一致性是已经解决了的，我们看Arbitrum 是如何保证Block一致性的。 \r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2022/08/gtrUJbP5630ec2ca32da2.png)\r\n上图分为上下两部分，上半幅为L2， 下半幅为L1。\r\n在L1中 ， 左边绘制了一条链， block1 ~ block4。 右边Rollup Protocal 表示Arbitrum  用于冲突解决的合约。 block1 ~ block4 并不是以太坊的block, 而是Arbitrum的block,  他存储在以太坊合约的CallData中。 block 1 ~ block3  已经finalised,  并且没有纠纷。 Block 是L2 网络的validator写入的。 为了能约束validator的行为， validator 需要在L2质押ETH。  我们看发生在Block4上的分叉， validator A  propose了block 4A,  但是validator B 认为A是错误的，  所以B propose了区块4B， 并触发了Rollup Protocol, 进行仲裁。 接下来是仲裁的过程。 \r\n冲裁分为两个阶段：\r\n1. 第一个阶段： L2上的A和B需要找出存在歧义的计算机指令。 采用的方式是通过二分法（dissection Protocol) , B不断挑战 A的部分指令执行结果，直到找到存在歧义的计算机指令（one step proof）。 这里需要特殊虚拟机的支持。 \r\n2. 第二阶段： 在L1上， Rollup Protocol 验证第一阶段的one step proof。 判断A是错误的，则将4B选择为head block。 Vildator A 质押的ETH将充公。 Validator A 将不能继续propose new block。 \r\n\r\n思考上述过程，有几个有意思的点：\r\n1. 只要（至少）有一个诚实的Validator , L2区块链就能（才能） 正常运行\r\n2. Validator 的角色又有不同，这Arbitrum白皮书也解释了：区块生产者、监督挑战者、监听者。 Arbitrum 背后的组织OffchainLabs运营了区块生产者，我猜这是全网唯一的区块生产者，因为在白皮书中并没有看到对多个诚实的区块生产者并存的描述。 任意的Arbitrum的使用者，都可以作为挑战者或者监听者去运营自己的validator。 \r\n\r\n## 这是否是去中心化的？ 我觉得它在“有监督的中心化”和“完全去中心化”之间。 \r\n\r\n现在，回到transactions一致性的问题上。 仍用简图描述这件事：\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2022/08/MFtZq9ui630ec30766af4.png)\r\n同样，分为L1和L2两部分。\r\n在L1中，有两个“box”存放transactions。 所谓box, 实际为某个以太坊合约的callData存储区域。 \r\n1.  delay-inbox:   任何人都可以往delay-inbox提交transaction, 但是不能确定顺序，不能确定何时被执行。\r\n2. Inbox:   inbox中的transaction是有序的，即将被validator打包到block的。也就是说，当transaction进入到inbox后，可以认为一定被执行了， 基于inbox,  任何人能计算出L2  blcok chain 将会变成怎样的状态。 因此，提交到inbox的transaction应该被认为立即确认。 合约控制了delay-inbox到inbox的转移。\r\n\r\n再来看L2， FullNode 类似以太坊的fullNode。 他可将L2 transaction批量打包发到L1的box。  普通FullNode只能把tx发往delay-inbox。 如果允许的话，一条L2 Arbitrum链上可以有Sequencer FullNode, 他可以直接把tx batch发往inbox。 Sequencer 是特权节点。 \r\n\r\n在我看来，在tx发布这个问题上， Arbitrum就非常中心化了。 \r\n1. 如果链上没有Sequencer。  我们仍然要相信某一个Common FullNode不会作恶。 因为，我并没有看到有什么共识机制，保证了 FullNode往delay-inbox中提交的tx就是用户提交的tx。 当然，我们可以运维自己的fullNode解决这个问题。\r\n2. 如果链上有Sequencer。 用户需要抉择:    选择Sequncer,  交易立即确认，但是完全丧失去中心化； 选择自己更信任的common FullNode,   交易慢。 \r\n\r\n## 抛开去中心化的思考。来想想Arbitrum的经济模型。 在这个系统中，那些参与者是需要激励的？\r\n1. FullNode:   \r\n-   在L2，他要运行他收到的transaction\r\n-   往L1提交tx batch时，需要消耗L1 gas\r\n2. Validator: \r\n-   L2上，它要运行所有的transaction\r\n-   L1上，它要写入block\r\n3. Arbitrum 部署在L1 上的支撑起整个系统的合约。  这些合约在白皮书中统称为EthBridge。 \r\n\r\n\r\n因此，即使合约跑在L2上，也需要收取过路费，以养活这套系统。 同时，Arbitrum要让L2手续费相比直接使用L1足够低。通常来说，一个去中心化网络还要有足够吸引人的激励机制，来激励网络节点运营者，不过，由于当前Arbitrum有一些中心化的组件， 激励机制显得不重要。"},"author":{"user":"https://learnblockchain.cn/people/11291","address":null},"history":"QmPkQPuzdHF7TUqKRc4GJ7w1QDTkNF2RGbGS4AyKhjRPvs","timestamp":1668587725,"version":1}