
以太坊主网走过了“能跑”的阶段,卡在“跑得动”。区块空间有限,Gas 价格随需求剧烈波动,一笔简单转账在拥堵时可能超过几十美元。对于高频、小额、交互密集的应用(支付、游戏、社交、DeFi 清算),主网直接部署在经济上不可行。
Layer2 解决的不是“链本身更快”,而是把执行挪到链下、把安全和结算留在链上。它把“每秒能处理多少交易”从共识层的硬约束,变成执行层可扩展的工程问题。今天主流的 Rollup 方案,本质上是在以太坊之上再建一层执行环境:交易在 L2 执行,状态承诺和必要数据回到 L1,L1 只负责排序的最终性与争议裁决。
这个转变对开发者的影响是实质性的:你写的合约在 L2 上运行,但你的提款依赖 L1、你的费用模型跨两层、你的用户体验受排序器和桥的延迟影响。“在 L2 上写合约”和“做 Layer2 开发”是两件事——前者只是换了个部署目标,后者要理解跨层的完整链路。
把 Layer2 拆开,有五个必须理解的概念:
执行(Execution):交易在 L2 上被处理和状态更新。这是你写合约、跑逻辑的地方。
排序(Sequencing):决定交易顺序的角色。排序器(Sequencer)打包交易、给出即时确认。排序权是中心化还是去中心化,直接决定 L2 的信任假设。
数据可用性(Data Availability):交易数据必须能被任何人获取,否则无法重建状态、无法验证。Rollup 的核心就是把数据发布到 L1(calldata 或 blob)。
状态承诺与证明:L2 定期把状态根提交到 L1。Optimistic Rollup 用“挑战期 + 欺诈证明”,ZK Rollup 用“有效性证明”。前者假设诚实、事后纠错;后者数学保证、即时可信。
桥(Bridge):资产在 L1 与 L2 之间转移的通道。桥是 L2 最大的攻击面,也是最容易出事故的地方。
五个概念对应一条链路:执行 → 排序 → 数据发布 → 状态承诺 → 跨层结算。理解这条链路,就理解了 Layer2 开发的全貌。
协议层:L1 的合约(Rollup 合约、桥合约、验证合约)、L2 的创世配置、Gas 计量规则。这一层决定“L2 如何与 L1 交互”。
执行层:EVM 兼容性、预编译合约、L2 特有的 opcode 差异、费用模型(L2 执行费 + L1 数据费)。合约开发者主要在这一层工作。
基础设施层:排序器节点、RPC 服务、区块浏览器、索引服务、跨层消息传递。这一层决定“应用能否稳定运行”。
应用层:部署在 L2 的合约、前端、钱包集成、跨层交互逻辑。这一层是用户直接接触的。
运维与治理层:排序器运维、升级机制、桥的多签/治理、监控与应急。这一层决定“出事时能不能控制”。
分层的关键认知是:L2 应用开发者也要理解协议层与基础设施层。因为 L2 的失败模式跨层——一笔交易在 L2 成功,不代表在 L1 可验证;桥的提款延迟,可能让用户体验完全改变。
Optimistic Rollup(Arbitrum、Optimism):交易乐观执行,状态根提交后有一段挑战期(通常 7 天)。优点是 EVM 兼容性好、开发成本低;缺点是提款慢、依赖诚实验证者。
ZK Rollup(zkSync、StarkNet、Scroll):每批交易附带有效性证明,L1 验证后即时可信。优点是终局快、安全假设强;缺点是证明生成成本高、EVM 兼容性仍在追赶。
选择依据是业务需求:需要快速提款和高安全保证选 ZK;需要成熟工具链和低迁移成本选 Optimistic。多数应用两者都能跑,关键是理解各自的延迟与信任模型。
排序器决定交易的“即时确认”。中心化排序器响应快,但存在审查与单点故障风险;去中心化排序器更可信,但延迟与复杂度上升。
对应用的影响是:不要假设 L2 的“成功”等于“最终确定”。排序器确认只是软确认,真正的终局要看 L1 的状态承诺。涉及大额资产的操作,要区分这两个阶段。
L2 的费用由两部分构成:L2 执行费(便宜)+ L1 数据费(随主网波动)。EIP-4844 引入 blob 后,数据费显著下降,但仍然是费用模型的重要变量。
开发者要理解:L2 的 Gas 便宜不等于零成本。批量操作、存储写入、跨层消息,都会放大 L1 数据成本。优化策略包括:合并交易、减少 calldata、用事件替代存储。
L1↔L2 的消息传递有两种方向:L1→L2(通常较快,依赖排序器)和 L2→L1(受挑战期或证明时间约束)。
桥的设计要点:资产托管在 L1 合约,L2 铸造映射资产。桥的安全依赖验证机制(多签、轻客户端、证明)。历史上最大的几次 L2 相关损失都出在桥,而不是 Rollup 本身。
“EVM 等价”和“EVM 兼容”不是一回事。差异可能出现在:Gas 计量、预编译合约、block.number 语义、tx.origin、时间戳精度、opcode 支持。这些差异会导致“本地测试通过、L2 上失败”的问题。
开发时要做的:使用 L2 官方的开发节点(如 anvil --fork 或 L2 本地 devnet)做集成测试,而不是只靠主网分叉。
理论讲完,用一个精简示例展示 L2 开发的核心链路:L2 排序器把批次状态根提交到 L1,L1 合约记录并暴露给桥与验证逻辑。代码只保留结构:
contract BatchInbox {
struct Batch {
bytes32 stateRoot; // L2 状态根
bytes32 dataHash; // L2 交易数据的哈希(数据可用性锚点)
uint256 timestamp;
}
address public immutable sequencer;
Batch[] public batches;
event BatchSubmitted(uint256 indexed index, bytes32 stateRoot, bytes32 dataHash);
constructor(address _sequencer) {
sequencer = _sequencer;
}
function submitBatch(bytes32 stateRoot, bytes32 dataHash) external {
require(msg.sender == sequencer, "not sequencer"); // 权限
batches.push(Batch(stateRoot, dataHash, block.timestamp));
emit BatchSubmitted(batches.length - 1, stateRoot, dataHash); // 事件供索引
}
function latest() external view returns (bytes32) {
return batches[batches.length - 1].stateRoot;
}
}这段代码的价值不在实现,而在它显式化了 Layer2 的四个关键要素:状态承诺(stateRoot)、数据锚点(dataHash)、排序权限(sequencer)、事件可索引。真实的 Rollup 合约无非是在这个骨架上加挑战期、加证明验证、加提款逻辑、加升级机制。看懂这个骨架,再看 Arbitrum 或 Optimism 的合约架构,就能快速定位它在哪一层做了取舍。
Layer2 开发的工具链,和以太坊主网开发高度重叠,但有几个专属环节:
本地 L2 环境:用官方提供的 devnet 或 anvil 分叉 L2,能模拟排序器、跨层消息、费用模型。不要只依赖主网分叉。
跨层测试:L1→L2 和 L2→L1 的消息传递要在本地完整跑通,包括挑战期等待、证明生成(ZK)、失败回滚。
费用模拟:L2 的 Gas 估算要同时考虑执行费和数据费,测试时要覆盖主网拥堵场景。
桥的集成测试:资产跨层转移、提款延迟、失败恢复,都要有端到端用例。
L2 的测试比 L1 多两个维度:跨层和延迟。
单元测试:合约逻辑,和 L1 开发一致。
集成测试:L2 合约 + L1 合约 + 桥 + 消息传递,在本地 devnet 上跑完整链路。
延迟测试:模拟挑战期(Optimistic)或证明时间(ZK),验证提款、状态查询、用户提示是否正确。
费用测试:覆盖 L1 数据费波动的场景,验证费用估算与用户体验。
部署环节要区分:L2 合约部署(快、便宜)和 L1 相关配置(桥、验证合约、排序器权限)。L1 侧的部署往往涉及多签与治理流程,要提前规划,不要等到上线前才处理。
L2 应用的监控对象和 L1 不同:
这些指标要联动告警。L2 的故障往往是“某一层卡住、其他层看起来正常”,没有跨层观测就很难定位。
误区一:把 L2 当“更快的 L1”。 忽视跨层延迟、桥的信任模型、排序器的中心化风险。
误区二:假设 L2 成功等于最终确定。 排序器确认是软确认,大额操作要等 L1 终局。
误区三:忽视数据可用性成本。 L2 执行便宜,但 calldata 和存储仍然受 L1 数据费约束。
误区四:桥的安全当“别人的事”。 桥是最大攻击面,集成时要理解其验证机制与应急方案。
误区五:只测 L2、不测跨层。 本地单层测试通过,跨层消息一上就出问题。
误区六:忽视 EVM 兼容性差异。 Gas 计量、预编译、时间戳语义的差异会导致隐蔽 bug。
Layer2 开发的本质,是在“执行可扩展”与“结算可信”之间做工程权衡。它要求开发者不仅会写 L2 合约,还要理解排序、数据可用性、状态承诺、桥与跨层消息的完整链路。
一句话总结:好的 Layer2 开发,不是把合约从 L1 搬到 L2,而是理解“哪些逻辑放 L2 换性能、哪些保证留 L1 换信任”,并在跨层的延迟、费用与故障模式上,把用户体验设计清楚。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。