Layer2 和零知识证明(ZK)正成为区块链发展的核心方向。
随着主网 Gas 居高不下、TPS 无法满足需求,越来越多的项目和开发者开始部署在 Layer2 Rollup 上(如 zkSync、StarkNet、Arbitrum、Optimism)。
本章将从开发者视角,讲清楚:
Layer2 是什么?Rollup 怎么工作的?
zkSync 和 Optimistic Rollup 有啥区别?
Solidity 如何部署到 Layer2?
zk 应用怎么写?ZK DSL(如 Noir)怎么用?
跨链桥、L1-L2 通信怎么做?
Layer2 项目适配与优化策略
Layer2 基础概念
zkRollup vs Optimistic Rollup 原理与对比
zkSync Era 合约部署实战
Layer2 网络配置与开发适配
跨链桥通信流程(L1↔L2)
零知识证明项目设计入门(zkApp)
Noir 语言介绍与示例
Layer2 上的安全性、经济模型与部署策略
Layer2 是构建在 Layer1(主链)之上的扩展解决方案,核心目标是:
提高吞吐量(TPS)
降低交易成本
提升用户体验
类别 | 技术类型 | 项目代表 |
---|---|---|
Optimistic Rollup | 乐观验证、可挑战 | Arbitrum、Optimism |
zkRollup | 零知识证明、即时确认 | zkSync Era、StarkNet、Scroll |
问题(Layer1) | Layer2 解决方案 |
---|---|
交易拥堵 | 批量打包、Rollup 提高吞吐量 |
Gas 太贵 | 平均可降 95% 交易成本 |
用户体验差 | 快速确认、低门槛 |
特点 | Optimistic Rollup | zkRollup |
---|---|---|
验证方式 | 默认为真,挑战再证明 | 所有交易均生成零知识证明 |
安全性 | 依赖欺诈证明和挑战者 | 密码学强保证 |
成交时间 | 数分钟-1小时(有挑战期) | 几秒内确认 |
适合场景 | 通用 EVM 应用 | 需要高性能、高安全的应用 |
✅ 开发者建议
通用 DApp 可优先适配 Arbitrum / zkSync Era
如果重隐私/金融/高速处理 → 推荐 zkRollup 系列
你可以直接将 Solidity 合约迁移部署,无需大改!
npm install zksync-ethers ethers hardhat --save-dev
hardhat.config.ts
(示例)
import { HardhatUserConfig } from "hardhat/config";
import "@matterlabs/hardhat-zksync-deploy";
import "@matterlabs/hardhat-zksync-solc";
const config: HardhatUserConfig = {
zksolc: {
version: "1.3.10",
compilerSource: "binary",
settings: {},
},
networks: {
zkSyncEra: {
url: "https://mainnet.era.zksync.io",
ethNetwork: "mainnet",
zksync: true,
accounts: [process.env.PRIVATE_KEY!],
},
},
solidity: {
version: "0.8.19",
},
};
export default config;
import { Wallet, Deployer } from "zksync-ethers";
import * as hre from "hardhat";
async function main() {
const wallet = new Wallet(process.env.PRIVATE_KEY!);
const deployer = new Deployer(hre, wallet);
const artifact = await deployer.loadArtifact("MyToken");
const contract = await deployer.deploy(artifact, ["MyToken", "MTK", 10000]);
console.log("合约已部署至 zkSync:", contract.address);
}
main();
虽然 Layer2 Gas 低,但写法仍应保持节省思维
不写冗余事件、不频繁修改 storage、不使用大数组
Layer2 上调用主网合约必须注意 gas compatibility 和签名机制差异
Token 资产 L1↔L2 通信需接入桥协议(如 zkSync bridge、StarkGate)
协议 | 支持链 |
---|---|
zkSync bridge | zkSync Era ↔ Ethereum |
StarkGate | StarkNet ↔ Ethereum |
LayerZero | 任意链间消息传递 |
Axelar | 多链资产 + 函数调用 |
资产跨链: token.lock() → bridge 合约 → mint 到目标链
消息跨链: calldata + relayer → 目标链执行 callback
用户从 L1 转账 ETH 到 zkSync:
npx zksync-cli deposit --token ETH --amount 0.1 --to YOUR_L2_ADDRESS
用户数据不暴露
只提交 ZK 证明,证明结果合法即可
使用 Noir / Circom 等 DSL 编写电路逻辑
zkSync 团队开发的 zk 电路语言
语法类似 Rust
支持开发 zkVoting、匿名支付等隐私合约
fn main(a: Field, b: Field) -> Field {
a + b
}
编译 + 导出证明 → 再用 Solidity 合约验证。
场景 | 示例 |
---|---|
ZK 投票 | 匿名投票,不暴露投票选项 |
ZK 身份验证 | 验证地址是否白名单,不泄露身份 |
ZK 社交图谱 | 验证好友关系,不公开社交图谱 |
ZK 财务报告 | 验证报表合规,不披露原始数据 |
zkSync / StarkNet 上建议部署合约使用 Gnosis Safe
合约升级需权限保护(UUPS proxy)
zkSync Era 合约、事件、交易可接入 Dune
可视化 DApp 活跃度、Gas 使用、用户增长
zkSync Portal:所有生态项目
L2Beat:技术评估、TVL 排行榜
zk.money:ZK 匿名支付协议
这一章,我们全面进入 Layer2 + ZK 的高阶领域:
✔️ Layer2 技术结构与选型
✔️ zkSync Era 开发部署实战
✔️ 跨链通信流程与桥接原理
✔️ ZK DSL(Noir)开发
✔️ 零知识项目应用场景
✔️ 多链部署、升级、安全策略
将你的项目部署至 zkSync Era 测试网
用 zkSync bridge 将主网 ETH 转入 Layer2
搭建 Dune 看板,统计 Layer2 项目活跃度
编写一个 Noir 电路(如“密码验证器”)并生成证明
学会使用 zkApp SDK,开发一个“匿名白名单验证”功能
最新 EIP 提案 + Solidity 版本迭代追踪
Solidity 0.9.x 展望(如支持 inline assembly v2)
Web3 开发者的职业路径 + 面试准备 + 接项目建议
公链对比:Solidity 在 Ethereum、BNB、Avalanche、Base 的表现差异