- A+
以太坊自 2015 年诞生以来,快速成长为最活跃、最繁忙的区块链,无论是从应用的丰富性、链上的资产规模还是从交易量、安全性等指标看,以太坊都是当前无可争议的公链之王。而随着以太坊生态的快速发展,特别是 DeFi 的彻底引爆,导致原本设计的吞吐量严重不足,根据 etherscan.io 的每日交易数据统计,当前以太坊 TPS 在 17 左右(合约操作占比较大降低了这一数值),动辄几十甚至上百美元的 Gas 费和超长的交易等待时间成为限制以太坊生态进一步蓬勃发展、进入主流世界的主因。
长期以来,整个以太坊社区都在为解决吞吐量和高昂手续费问题而努力,其中一个主要解决方案即以太坊 2.0,它将大幅增加每秒交易数量,并将最快于 2021 年底发布;而如 EIP-1559 提案,则希望对交易手续费计费方式进行调整,来变相达到降低 Gas 费用的目的。
与此同时,有一个声音出现了:真的有必要将所有交易都放在主链上计算处理么?
Layer2 简介
将本应在以太坊主链即 Layer 1 (L1)上处理的交易,转移到 Layer 2 (L2)上处理,随后再将结果从 L2 传回 L1 确认,我们将这种解决方案称为以太坊 Layer 2。L2 的理论 TPS 达到了 2000-4000,这已经超越了 Visa 的处理能力——每秒 1700 笔交易。因此,许多人认为 L2 方案是以太坊赢得主流用户的关键。
目前存在的 L2 方案,主要包括以下几个:
- Optimistic Rollups:数据上链、欺诈证明。应用团队包括 Optimism、Offchain Labs Arbitrum rollup、Fuel Network;
- ZK Rollups :数据上链、零知识证明。应用团队包括 Loopring、Starkware、Matter Labs zkSync、Aztec 2.0;
- Validium :数据链下保存、零知识证明。应用团队包括 Starkware、Matter Labs zkPorter;
- Plasma :数据链下保存、欺诈证明。应用团队包括 OMG Network、Matic Network、Gazelle、Leap DAO;
- State Channels: 应用团队包括 Connext、Raiden、Perun.
需要重点指出的是,侧链方案因为其共识安全性没有继承 L1,所以我们并不认为侧链属于 L2 方案。
在众多方案中,Rollups 正逐步取得市场的认可,成为以太坊最可靠的扩容解决方案,一方面该方案直接继承了 L1 的共识机制和安全特性,另一方面它也不会损害 L1 的安全性和主权。事实上,Vitalik 直言不讳的说过,Rollup 是以太坊长期扩容解决方案中可以最快被实现的一个。而 Rollups 的两种方案 Optimistic Rollups 和 ZK Rollups 最大的区别是它们分别使用了欺诈证明 (fraud proofs) 和有效性证明 (validity proofs) 来确保 batches 里的后状态根 (post-state root) 的正确性。
对于 Rollups 方案而言,如何将资产从 L1 存入 L2,再从 L2 提回 L1,更进一步的,如何从一个 L2 网络提取到另一个 L2 网络,是一个核心问题,我们将承担这一责任的基础设施称为桥(Bridge)。
原生桥实现
我们研究了当前主流的 Rollup 方案的原生桥实现原理,并从 Optimistic 和 zkSync 方案中各选取一个代表,进行对比。
Arbitrum
Arbitrum 协议利用其 L1、L2 之间的通信能力,理论上可以无须信任的将任意形式的以太坊资产(包括 Ether、ERC20、ERC721 等)在 L1、L2 之间转移。当将资产从 L1 转入 L2 时,资产被存入一个 L1 上的 Arbitrum 桥合约中,之后一笔相同数量的资产在 L2 上被铸造并存入指定地址;而将资产从 L2 转回 L1 时,资产将在 L2 上被销毁,随后等量的资产将在 L1 的桥合约中变为可用。此外,从 L2 赎回资产到 L1 时,有一个关键性的区别是,用户发送交易后,必须等待一个挑战期的结束,才能最终在 L1 上执行。这是由 Optimistic Rollup 安全模型决定的。
值得注意的是,官方建议使用「可重试票据 Retryable Tickets」机制进行 L1、L2 之间的通信。可重试票据的运作方式大致如下:L1 向 L2 发起的交易首先被存入 inbox 中,并附带 calldata、callvalue、gas info 等交易参数。当这笔交易首次执行失败后,它将被放入 L2 的「重试缓冲区(retry buffer)」中,这意味着在一段时间内(通常为一个挑战期,即大约一周),任何人都可以通过重新执行这笔交易来赎回票据。L2 至 L1 的重试交易没有时间限制,争议期结束后的任何时间点都可进行。
这种机制设计主要是为了应对这样的场景:当某个用户希望将某笔 token 从 L1 存入 L2,首先会将这些 token 存入 L1 的桥合约中,同时在 L2 上铸造等量的 token。假设 L1 上的交易已经完成,但是 L2 上的交易却因为手续费不足失败了,这会导致一个严重问题:用户在 L1 上的 token 已经转出,但是在 L2 上却没收到 token,实际上,这些 token 被锁在了 L1 的合约里。通过可重试票据机制,用户(或者其他任何人),可以在一周内,使用足够的手续费重新执行这笔交易,并最终在 L2 上获得 token。
以下是 Arbitrum 原生桥的基本步骤:
L1 ->L2
- 用户从 L1 发起 Deposit 交易
- 资产存入 L1 合约,交易被批量存入 Inbox 中
- 交易在 L2 被执行,铸造资产转入指定地址
- 如果交易失败,则交易被存入 L2 的重试缓冲区,用户可以在一个挑战期内发起重试
L2 -> L1
- 用户在 L2 发起 Withdraw 交易
- L2 链将在一定时间内收集到的交易打包,生成默克尔树,并将根节点作为 OutboxEntry 发布到 L1 的 Outbox 中
- 用户或者任何人可以对根节点和交易信息进行默克尔验证
- 挑战期结束后,用户即可在 L1 完成交易,如果交易失败,则用户可以发起重试
详情可参考 官方文档。
zkSync
在桥实现上,zkSync 和 Arbitrum 相比,主要的区别在于 Withdraw 时,对交易的验证采用了基于零知识证明的有效证明,而非欺诈证明,其基本步骤为:
L2—>L1
- 用户在 L2 发起 Withdraw 交易:将交易数据编码为字节串,并使用正确的 zkSync 私钥对该字节串进行签名,并为交易描述生成 Ethereum 签名或提供 EIP-1712 签名,通过相应 JSON RPC 方法发送交易
- 发送交易到 L1:交易进入 zkSync operator 创建的区块,并发布到 L1 上的 zkSync 智能合约中
- 对区块进行验证:若干分钟后,证明该区块正确性的 ZK proof 将生成,该 proof 会通过一个验证交易发布到 L1 上,直到这个验证交易完成,Withdraw 交易完成
详情可参考 官方文档。
可以发现,在退出时间上,zk Rollup 方案明显优于 Optimistic Rollup 方案,但由于 zk Rollup 要实现完全兼容 EVM 尚需时日,所以预计 Optimistic Rollup 仍然会成为前期主流 L2 方案。也正因此,利用第三方桥来解决 Optimistic Rollup 退出期太长的问题,来带给用户更好的使用体验,成为一些团队努力的目标。
DeGate Bridge 设计理念和实现原理
DeGate Bridge 的目标是在 Rollup 生态早期能够帮助以太坊资产迁移门槛最大程度的降低,服务基于以太坊 Rollup 的二层基础设施的应用大规模落地。我们认为在现阶段基础设施条件下,优秀且足够好的流动性解决方案需要具备 :
第一,能够通过市场方式对不同层的流动性分布进行自动调节。
第二,能够实现资金效率最大化的 0 资金冻结的非预付方案。
第三,最低的 Gas 消耗和最优的用户体验也至关重要。
DeGate Bridge 基于优化稳定币 AMM 曲线和交易市场的方式实现跨层资产转移的快速通道,受限于提供 L2 状态的预言机的咱不完善,首期的 DeGate Bridge 将通过中心化托管资产的方式实现,当以太坊 L2 上出现成熟的预言机服务后,DeGate Bridge 将转向以去中心化的方式实现资产的桥接。
DeGate Bridge 详细方案设计,可参考文章:基于低滑点 AMM 曲线的跨 Rollup 流动性方案
Bridge 方案对比
在这一小节中,我们将对已上线生产或者测试网的原生 Bridge 和 DeGate Bridge 进行实测,并主要考察以下几项指标:
- 上下桥 Gas 费用;
- 上下桥时效性;
- 操作复杂度;
我们在测试中统一使用 ERC20 代币而非 ETH (ETH 无须 Approve,且手续费更便宜),同时我们按 ETH 价格 $4000,Gas Price 为 100Gwei 对手续费进行拟合。
最终对比结果如下
Withdraw 手续费计算方式说明:
- Optimism(SNX):提币操作会聚合多笔交易,按总手续费除以交易笔数计算
- Arbitrum (Testnet):二层费用不计,只计算一层交易消耗 Gas 费
- zkSync:费用在二层以多种 token 支付,通过一层到账交易计算大概成本
- DeGate Bridge:费用在二层以多种 token 支付,通过一层到账交易计算大概成本
通过对比可见:
- 时效性:Optimistic Rollup (包括 Optimism 和 Arbitrum)的下桥时间普遍需要 2 天-1 周,表现较差,DeGate Bridge 的表现较好,接近即时;
- Gas 费用:Optimism 表现最差,Degate Bridge 的手续费消耗最少,特别是还节省了 Approve 的手续费;
- 操作复杂度:DeGate Bridge 可以在无需用户 Approve 的情况下直接交易,对用户体验更加友好;
展望
我们相信 Layer2 和以太坊 2.0 的相继落地,将有机会成为以太坊的二次增长曲线,使以太坊进化为承载数万亿美元规模的经济带宽。而 L2 Bridge 将作为区块链基础设施之一,在这一进程中发挥重要的作用。
pdf+视频Arbitrum链发币教程及多模式组合合约源代码下载:
Arbitrum链发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频Arbitrum链发币教程及多模式组合合约源代码下载地址:
本文是全系列中第62 / 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存储公链 —— 历时三年新加坡比特米基金会重金,火爆来袭
- 我的微信
- 这是我的微信扫一扫
-
- 我的电报
- 这是我的电报扫一扫
-