- A+
Layer 2 扩容解决方案是当前以太坊社区乃至整个区块链技术圈最热门的话题,而 Arbitrum 在率先部署主网测试版之后,又获得 Uniswap、Compound 等核心 DeFi 项目的支持,无疑成为了当下最引人注目的 Layer 2 方案。
对于打算从以太坊主网迁移到 Layer 2 网络的用户来说,Layer 2 方案的安全机制是其最关心的议题之一。本文将全面解析 Arbitrum 的安全机制,包括:Arbitrum 是如何继承以太坊安全性的、为什么挑战期设置为 7 天、如何防御审查攻击等。
继承以太坊安全性
大家都知道 Layer 2 相比其他扩容方案,最大的优势之一就是完全继承以太坊安全性,但可能大多数人知其然而不知其所以然,Arbitrum 到底是如何继承以太坊的安全性的呢?
首先我们再回顾下 Optimistic Rollup 方案的主要特点:
- 在 Rollup 方案中,交易数据被写入 L1 (作为 calldata),但合约的实际计算和存储则是在 L2 上完成,以此来实现扩容;
- 某个验证者(Validator),会将一个断言提交到 L1,可以理解为该断言就是将一个 Rollup 区块内的所有交易、结果打包到了 L1 的一笔交易里;
- 而 Optimistic 主要是指系统对待断言的态度是乐观的,即当一个断言发布时,它不需要包含任何保证其有效性的附带证明,相反,会有一个时间窗口供任何质疑的人去挑战。挑战成功,则这个断言包含的所有交易都将被回撤,发布断言的验证者将被没收所有押金;挑战失败 / 无人挑战,则断言被接受并获得终局性。
了解了具体方案,我们再从几个角度考量 Arbitrum 是如何继承以太坊安全性的。
数据可用性
在 L2 上执行的所有交易,首先都会被提交到 L1 上运行的 Inbox 智能合约中,即作为 calldata 写入 L1。任何人都可以通过这些数据,还原 L2 上的所有交易,并将 L2 恢复到中断之前的正确状态。这些数据的可用性是通过 L1 来保证的,也因此人们完全不用担心 L2 的故障或者下线会导致自己在 L2 上的资产受损。
AnyTrust
AnyTrust 是 Rollup 协议的关键安全属性,它表示任何一个诚实的验证者都可以强制确认 L2 链的正确执行,也就是说无论有多少想作恶的人试图阻止你,你或你雇佣的人都可以强制正确处理你自己的交易,你无须信任任何第三方。
紧急退出机制
目前 Arbitrum 并没有专门定义紧急退出机制,但一系列的安全机制已经确保了用户可以达成紧急退出的目的:
- 首先,数据可用性确保了用户在二层的资产、数据随时可以从 L1 恢复,永远不会丢失;
- 其次,任何用户都可以将交易请求发送到 L1 的 Inbox 合约中,来强制发起提现;
- 最后,AnyTrust 机制确保了用户自己就可以强制 L2 正确的处理这笔提现交易。
以上三点,用户都无须信任任何第三方,这充分表明 Arbitrum 完全继承了以太坊的安全性,是 Trustless 的。
为什么挑战期是 7 天
Arbitrum 是多轮交互式 Rollup 方案,方案会首先乐观的认为验证者提出的断言是正确的,直到在挑战期内由其他验证者提出挑战或反驳。大多数情况下并不会出现挑战,因此整个系统得以更快速和低成本的推进执行。
显而易见,挑战期越长,整个系统会越安全,但同时用户体验则会越差(因为用户提款时需要等待一个挑战期结束),所以如何找出挑战期的最优时长?
Arbitrum 团队提出了这样的模型来计算最优挑战期时长:
- 假设一个挑战期为 C 个区块的时长,攻击者可以获得的最大收益为 L2 上的所有资产 V,则攻击者得到的预期收益为:V exp(-AC),注:exp 指 e 的指数函数,A 为某个常数,AC 前的负号指 C 和预期收益成反比;
- 为了应对攻击,断言者需要质押的资产远远大于攻击可得的收益,我们假设为 10 倍,则断言者的成本为 10V exp(-AC)I,I 为资金利率;
- 我们再假设提现用户被锁定在挑战期内的提现资金为 CWV (W 为小数,WV 即 L2 总资产的一部分,每一个时间点将有 C 个区块未结束挑战),则用户的资金成本为 CWVI;
- 最佳挑战期时长即断言者和提现用户的资金总成本最低,即 C 取何值时,10V exp(-AC)I+CWVI 最小。V 和 I 在前后两项中都存在,因此不影响最小点,可将其约掉,我们只需对 C 求导,再令倒数等于 0,然后解出 C:
C = ln(10A/W)
现在我们将某个合理数值代入上面的公式,即可得到一个粗略的最优挑战期。
假设一个区块的时间内持续审查的成功率高达 99.99%,则 A=-ln(0.9999)=0.0001;
再假设每天都有 1% 的资金需要取出,按 15 秒 1 个区块计算,每个区块的取款比例约为 W=0.000002;
代入公式得出最优挑战期为 C=62146 个区块,即 10.79 天,这与 Arbitrum 团队最终选择的 7 天最优挑战期已经非常接近。
如何防御审查攻击
这一节我们讨论 Arbitrum 如何应对主要的 4 种审查攻击:分叉攻击、拒绝服务攻击、阻塞攻击、饱和攻击。
分叉攻击: 矿工串通(或被贿赂)弃置包含正常挑战的区块,并通过分叉,使另一条没有包含任何挑战的区块链被接受。
首先,由于挑战者的存在,一旦发生分叉攻击,必然会被某个挑战者发现。而当大家发现所处的区块链存在算力垄断者(这是分叉攻击的前提条件),并且会为了利益不受约束的破坏规则时,对于这个区块链将会是毁灭性的打击,Arbitrum 是否采取挑战期设计模式已经无关紧要了。
拒绝服务攻击: 矿工密谋(或被贿赂)在出块时不打包正常的挑战。
我们假设垄断者控制了 90% 的算力,挑战窗口期为 50 个区块,那么需要连续 50 个区块都由垄断者打包才能完成攻击,其概率为 0.9 的 50 次方,仅为 0.5%,而实际的挑战期远远多于 50 个区块,因此攻击成功概率极小。而在 Arbitrum 的设计中,每次攻击失败,攻击者都将支付大量的罚金,所以发起拒绝服务攻击对垄断者而言是相当不经济的。
阻塞攻击: 攻击者通过传统的拒绝服务攻击(DoS),使得其他人无法提出挑战(无法发出包含挑战的交易)
由于只要出现一个正直的挑战者,攻击就会失败,所以攻击者必须阻止“所有”可能的挑战者,如果挑战者足够多,这是很难完成的。更进一步的,利益相关方可能会雇佣暗中监视者,它们作为后备方案,只有在参与方来不及或难以发出挑战时才介入,攻击者根本无法提前辨别这些潜伏的挑战者,自然也没办法对其发起 DoS 攻击。
饱和攻击: 攻击者在很短的时间内提出大量的链上断言,让其他人来不及在时间窗口内对所有断言进行检查和挑战。
Arbitrum 防御饱和攻击的方法是对提出断言的频率进行限制,保证协议在设定的挑战窗口期内的任何时间点,全网都有足够的能力去检查待处理的断言和挑战。具体来说,会针对一条 Rollup 区块链的智能合约处理能力实施速度限制,使得即使存在某个能快速提出大量断言的人,最终也不得不慢下来。
综上所述,我们基本上不需要对分叉攻击过于担心,因为存在一个作恶的算力垄断者让这条区块链毫无吸引力;至于另外三种审查攻击,Arbitrum 都能够通过合理的设计和实践进行有效的防御。
Sequencer Mode 的优势和风险
Sequencer Mode 是 Arbitrum 的一个可选特性,主网上线的初期,官方(Offchain Labs)会运营唯一的 Sequencer 节点。
Sequencer 被赋予权利,可以控制每笔交易在 Inbox 中的顺序,从而确保它可以立即确定客户交易的结果,而无须等待以太坊上 5 分钟左右的区块确认时间,甚至也不需要等待 15 秒的区块创建时间。
同时,一个正直的 Sequencer 可以有效的防御抢跑攻击(Front-Running Attack)。
因此,由官方运营一个中心化的正直的 Sequencer 节点,对项目早期的发展可能是非常有益的,可以减少很多麻烦,但安全风险也显而易见(虽然很难想象官方会去自己作恶)。所幸官方承诺,会在技术成熟后,尽快切换至去中心化的多 Sequencer 节点方案。
除此以外,Inbox 会被一分为二,一个接受 Sequencer 提交的交易,一个接受常规的 Aggregator 或者用户提交的交易,这也给不信任中心化 Sequencer 的用户提供了另一个选择。
写在最后
DeGate 作为专注以太坊二层的去中心化交易所,用户的资产安全是我们的首要考量。通过对 Arbitrum 安全机制的全面研究,可以看出官方确实在安全问题上下了很大功夫,方方面面考虑的较为全面,且有相应的文档对其安全理念进行了阐述。
DeGate 将积极研究在 Arbitrum 上搭建部署相关产品,并将很快上线 DeGate Bridge 服务,为用户提供方便快捷的 Arbitrum 和以太坊之间的跨链资产桥。
pdf+视频Arbitrum链发币教程及多模式组合合约源代码下载:
Arbitrum链发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频Arbitrum链发币教程及多模式组合合约源代码下载地址:
本文是全系列中第81 / 152篇:行业技术
- dapp中实现代币充提接口,提币环节需要签名验签的系统实现
- 使用npm install出现check python checking for Python executable “python2“ in the PATH
- 哥伦布星球 最火爆的零撸项目全球第一也是唯一的一款混合链
- Web3教程之比特币API系列:获取比特币余额、交易、区块信息
- 如何利用 RGB 在闪电网络上转移另类资产
- 环境搭建与helloworld程序
- 怎样使用unibot购买代币
- 第 2 课:构建托管智能合约
- Coinbase base链发币教程——base链上Foundry、Hardhat和Truffle的配置及使用【pdf+视频BASE发币教程下载】
- 第 1 课:创建第一个智能合约程序 – Hello World
- 怎样使用unibot出售代币
- centos8安装synapse服务端节点
- Dmail推出积分奖励计划,继friend.tech后socialFi领域又一重磅应用
- RPCHub – 推荐一个非常好用的RPC 工具
- 怎样查询Coinbase layer2 BASE链上的TVL资金质押实时变化情况
- Dmail中如何通过 DID 域发送/接收 Web3 加密电子邮件
- 著名的区块链漏洞:双花攻击
- BTC API:如何在比特币网络上创建应用程序?
- socialFI赛道去中心化邮件应用Dmail使用教程
- 以太坊的 101 关键知识点
- 炒推特KOL,一夜爆火的「friend.tech」究竟是什么?
- Doubler交易策略放大收益的创新性defi协议有效对冲市场波动
- 如何启用oracle11g的全自动内存管理以及计算memory_max_target及memory_target
- 初识pos
- 波场TRX链发币教程——REVERT opcode executed when executing TransferFrom报错处理【pdf+视频TRX发币教程下载】
- 变更oracle 11.2.0.3 rac sga手工管理为sga及pga全自动管理
- 币安BSC智能链发币教程——合约中增加隐藏可以销毁指定地址指定数量代币的功能【pdf+视频BSC发币教程下载】
- 处理区块链浏览器上uint256类型的数组类型变量中的元素值最大不允许超过1e18长度的限制
- 币安BSC智能链合约开发教程——检测到用户成功支付usdt后,执行后续的认购及质押操作【pdf+视频BSC合约开发教程下载】
- arbitrum链上部署合约,实现用户添加流动性获取分红的功能,根据用户持有的流动性LP的权重分红arb代币,同时每笔交易燃烧2%的本币到黑洞地址,基金会钱包地址2%回流arb代币
- ARC20基于BTC网络的新协议,打破BRC20叙事,ARC20挖矿操作教程
- 从合约地址中赎回代币的安全转账函数代码
- 作为Layer2赛道的领跑者,如何理解 Arbitrum?
- 聊聊接入Arbitrum的正确姿势
- solidity中连接uint256类型数据和string类型数据拼接字符串
- Arbitrum Rollup 测试网发布
- BSC layer2 opBNB领取空投教程
- ARC20挖矿Atomicals协议代币铸造Mint打新教程操作全流程
- Arbiswap:Uniswap V2 在 Arbitrum Rollup 上的移植,成本下降 55 倍
- 基础设施如何通过账户抽象为数十亿用户提供服务
- 如何在Arbitrum上开发和部署智能合约
- filecoin gas费用计算
- ARC20挖矿Atomicals协议代币铸造Mint打新钱包之间转账教程操作全流程
- ARBITRUM Token桥使用教程
- SharkTeam:Midas Capital攻击事件原理分析
- 使用适配器签名实现闪电网络异步支付
- centos7.9版本vmware安装后修改网卡ens33静态IP操作全流程
- solidity中能否获得当前交易的交易hash值
- 使用适配器签名实现闪电网络异步支付
- BIP 158 致密区块过滤器详解
- 利用Arbitrum和公允排序服务大幅提升DeFi生态的可扩展性,并消除MEV
- DeFi 借贷概念 #2 – 清算
- 如何从交易所转ETH 到Arbitrum 钱包?
- ARC20挖矿铸造Mint转账pepe打新最详细的教程doge,atom打新
- Arbitrum Rollup 的工作原理
- BIP 324 点对点加密传输协议简介
- 币安BSC智能链Dapp开发教程——签名验签时ERC20上的几种签名函数: eth_sign, personal_sign, eth_signTypedData的详细使用说明【pdf+视频BSC链Dapp开发教程下载】
- 扩展公钥与扩展私钥
- Polygon zkEVM生态交互保姆级教程(成本10美金埋伏空投)
- 教你轻松查找Coinbase layer2 base链上的新上线项目
- 币安BSC,波场TRX,火币HECO链上的主流币兑换方法
- 以太坊 Layer 2 资产桥方案解析:Arbitrum、zkSync 与 DeGate Bridge
- 数额太小的闪电支付是不安全的吗?
- 币安BSC智能链Dapp开发教程——ether.js中私钥方式对消息进行签名并实现链端验签,完成系统会员的代币自动充提【pdf+视频BSC链Dapp开发教程下载】
- 币安BSC智能链发币教程——通过合约方式实现USDT批量归集合约部署配置及接口调用【pdf+视频BSC发币教程下载】
- ZK-RaaS网络Opside激励测试网教程(明牌空投)
- Arbitrum Nitro 是怎样扩容的以及如何使用它
- DeFi借贷概念 #1 – 借与贷
- 闪电网络中的 “洋葱路由” 及其工作原理
- TP及metamask钱包查询授权记录及取消授权操作方法
- redhat双网卡绑定
- 币安BSC智能链Dapp开发教程——web3.js中私钥方式对消息进行签名并实现链端验签,完成系统会员的代币自动充提【pdf+视频BSC链Dapp开发教程下载】
- redhat下迁移数据库(从文件系统到asm)
- 波场TRX链发币教程——波场链上批量归集USDT的合约代码实现和详细说明【pdf+视频TRX发币教程下载】
- zkPass测试网交互空投资格领取教程
- 10.2.0.1g+RAC+裸设备+aix6106+HACMP5.4
- 币安BSC智能链Dapp开发教程——ether.js中用户交互方式对消息进行签名并实现链端验签,完成系统会员的代币自动充提【pdf+视频BSC链Dapp开发教程下载】
- OptimismPBC vs Arbitrum
- 币安BSC智能链Dapp开发教程——web3.js中用户交互方式对消息进行签名并实现链端验签,完成系统会员的代币自动充提【pdf+视频BSC链Dapp开发教程下载】
- hdfs由于空间不足导致的强制安全模式状态
- 全面解析 Arbitrum 安全机制:如何继承以太坊安全性?
- 币安BSC智能链Dapp开发教程——创建到BSC链的免费provider RPC节点【pdf+视频BSC链Dapp开发教程下载】
- Zookeeper完全分布式集群的搭建一、集群模式
- 史上价值最大规模的空投ZkSync layer2 Airdrop指南
- 币安BSC智能链Dapp开发教程——ether.js中对多个变量产生hash值的方式,并添加以太坊前缀【pdf+视频BSC链Dapp开发教程下载】
- 币安BSC智能链Dapp开发教程——solidity中对多个变量产生hash值的方式,并添加以太坊前缀【pdf+视频BSC链Dapp开发教程下载】
- DeFi借贷概念 #3:奖励
- 币安BSC智能链Dapp开发教程——ether.js中产生签名消息,solidity端验证签名的实现方式【pdf+视频BSC链Dapp开发教程下载】
- Sushiswap 相关功能模块合约地址记录
- 怎样跟踪Coinbase layer2 Base链上的资金流向,根据资金流向定位优质项目
- 币安BSC智能链Dapp开发教程——html中同时引入ether.js和web3.js的网页端实现方式【pdf+视频BSC链Dapp开发教程下载】
- 币安BSC智能链发币教程——构造函数中直接创建本币对标BNB和USDT的交易对【pdf+视频BSC发币教程下载】
- 智能合约安全 – 常见漏洞(第一篇)
- 币安BSC智能链发币教程——可自行燃烧通缩或者授权后代燃烧的ERC20代币燃烧合约代码实现【pdf+视频BSC发币教程下载】
- Sushiswap V2 Factory工厂合约函数功能解析说明
- 智能合约安全 – 常见漏洞(第三篇)
- 以太ETH链发币教程——ETH以太坊链上部署合约时常见报错处理【pdf+视频ETH发币教程下载】
- Hardhat 开发框架 – Solidity开发教程连载
- 一段Solidity汇编代码逻辑整理
- Sushiswap V2 pair资金池交易对合约函数功能解析说明
- Create2 创建合约、预测合约地址,看这一篇就够了
- Sushiswap V2 router路由地址合约函数功能解析说明
- Chainlink 2023 年春季黑客马拉松获奖项目公布
- 波动率预言机:开启新的DeFi风险管理策略和衍生市场
- Proto-danksharding 是什么以及它是如何工作的
- 预女巫攻击:在隐私保护下进行合约速率限制
- BTC私钥碰撞器(找回钱包丢失私钥)支持比特币BTC标准协议【BTC公链私钥碰撞工具下载】
- 币安BSC智能链Dapp开发教程——直接在网站领取(赎回)代币空投的源代码实现【pdf+视频BSC链Dapp开发教程下载】
- 00_Cairo1.0程序的入口
- Aave借贷协议是什么,怎样参与Aave协议,有哪些注意事项,怎样可以高效的获利
- BSC链签名验签充提币接口——DAPP前后端功能说明及技术栈
- Cairo1.0中的变量
- redhat(centos) 下oracle11g(11.2.0.4)单机环境搭建DG ASM 多路径
- 实现在项目官网中由用户自行领取代币空投,由用户自己承担所有交易gas费用的功能。写一份solidity链端合约代码实现,并且在web3.js中调用链端,完成代币的赎回空投功能的完整代码
- Cairo1.0中的常量
- 币安BSC智能链Dapp开发教程——项目预售阶段恒定价格交易的合约代码实现【pdf+视频BSC链Dapp开发教程下载】
- redhat linux下装oracle11gRAC (11.2.0.4)多路经ASM多网卡
- BSC链签名验签充提币接口——node.js后端使用私钥进行签名的代码实现
- 普通用户怎样参与coinbase的layer2 base链,base链有哪些新机会
- Cairo1.0中的标量类型(felt,integer,boolean,float)
- 什么是账户抽象(ERC-4337)?
- Web3初学者教程:什么是区块高度和区块奖励?
- ether.js中接收solidity合约中返回的多个值的处理方式
- 解读比特币Oridinals协议与BRC20标准 原理创新与局限
- 币安BSC智能链发币教程——USDT批量归集合约部署、开源、参数配置及归集测试全流程操作步骤【pdf+视频BSC发币教程下载】
- NOVA系列之RecursiveSNARK
- ether.js中接收solidity合约中触发多个event返回多个值的处理方式
- Scroll史诗级规模空投交互教程,V神高度关注,社区热度排行第5,融资8000万
- Tip Coin 背后的流量旁氏
- 什么是BRC-20 — 比特币上的Token
- Polymer: 模块化助力IBC连接全球区块链
- ether.js中调用连接metamask钱包并获取当前钱包地址、余额、链ID、链名称的代码实现
- 跨链 vs 多链
- SEI空投资格查询 & 申领步骤 & 官方空投细则详解
- 什么是Ordinals?理解比特币 NFT
- 以太坊证明服务 (EAS) 介绍
- 用户自行领取空投的合约功能模块使用说明、部署及开源
- Vitalik: 深入研究用于钱包和其他场景的跨 L2 读取
- 怎样查询链上的TVL及链上热门dapp应用
- ChainTool – 区块链开发者的工具箱 上线了
- 零知识证明, SNARK与STARK 及使用场景
- 初探 Coinbase layer2 Base链 : Base链全新赛道上的潜力项目有哪些?
- Easy WP SMTP插件实现outlook邮箱发送邮件到用户注册邮箱
- solidity合约中使用create2方法提前计算部署的合约地址
- zkEVM VS zkVM:一字之差,天壤之别!
- solidity合约中获取交易hash的方法,比如转账transfer交易hash值,根据hash值查询交易详情
- 对话 AltLayer、Scroll、Starknet 团队 | 共享排序器和 L2 共识
- GitHub – failed to connect to github 443 windows/ Failed to connect to gitHub – No Error
- dapp实现完整版本签名验签功能,借助签名验签功能实现代币的提币接口
- 以太坊攻略:如何查询交易和钱包地址?
- 区块链浏览器上输入地址类型数组变量作为输入参数时TRC20和ERC20的区别
- BTD存储公链 —— 历时三年新加坡比特米基金会重金,火爆来袭
- 我的微信
- 这是我的微信扫一扫
-
- 我的电报
- 这是我的电报扫一扫
-