1. 引言
2020年6月18日,以太坊的研究团队Matter Labs宣布已将zkSync部署至以太坊主网。
所谓zkSync,是一种基于zkRollup构建的Layer 2 扩容工具。
自此,用户可在zySync上存取转账代币。
zkSync最主要的功能就是token transfer 代币交易:
用户可将其现有以太坊钱包连接至zkSync,提取、发送或接收代币至zkSync钱包。
zkSync目前还不支持智能合约部署。不过其基于Zinc和Solidity构建的高效、安全、图灵完备的多语言智能合约的版本正在开发中。
zkSync的主要目的是提升交易容量,并减轻以太坊的网络压力。
借助zkSync,可实现2000tps的吞吐量(接近于VISA的平均吞吐量),平均每个交易的费用接近0.01美金(大幅削减了交易费用)。
与此对比鲜明的是,以太坊区块链当前的平均吞吐量为15tps,且其平均gas费用由2020年1月的10Gwei 飞涨至 2020年6月时的40Gwei,这意味着,以2020年6月时的ETH价格为基准,每笔交易的费用在0.2美金。
1.1 以太坊现有Layer2 扩容方案对比
详细可参见Vitalik 2021年1月5日博客 An Incomplete Guide to Rollups。相应的中文翻译见 V神带你读懂以太坊扩展性解决方案 Rollup。
根据 以太坊路线图 EthHub 可知,目前以太坊的Layer2扩容方案主要有:
- 1)ZK-Rollups:如,现有已主网上线的zkSync。
- 2)Optimistic Rollups:
- 3)Plasma:
- 4)State channels:
- 5)Payment Channels:
- 6)ZK-STARKs:
- 7)Commit-Chains:
- 8)Sidechaines:
各种Layer 2 扩容方案对比为:
2. zkRollup
zkSync是基于zkRollup技术构建的。
zkRollup为一种Layer 2 扩容架构,由以太坊的研究员提出,其特点是:
- 所有计算过程由链下计算,链上存储;
- 参与计算的明文数据通过calldata的形式发送到链上合约;
- 可降低存储成本;
- 链下计算的正确性由零知识证明算法保证;
- 可大幅提高tps;
- 可降低单次交易的费用。
其将交易存储在sidechain中,而不是直接记录在以太坊层,从而可以节约以太坊层的网络空间。zkRollup会将一系列交易的状态打包进区块,然后发布到以太坊层。其中的“zk”是指zero-knowledge proofs,即zkRollup可在发布到以太坊层之前,证明区块中状态的有效性。
目前致力于zkRollup的初创公司主要有:
- Matter Labs
- Loopring (关注基于zkRollup的去中心化交易所方向)
- DeversiFi (来自于Starkware团队)
2.1 zkRollup 项目及相应生态产品
截止2021年初,基于zkRollup构建的相关项目及其生态产品主要有:
基于zkRollup的解决方案主要有:
- zkSync
- loopring
- starkware
- zkSwap
- aztec
- Hermez
2.1.1 zkSync相关生态产品
zkSync由Matter Labs负责发起,为a trustless,secure,user-centric protocol for scaling payments and smart contracts on Ethereum。
基于zkSync的产品有:zkWallet
基于zkSync的已发布的相关生态产品有:
- Numio:Numio致力于让所有人都更易于使用加密支付和加密存储应用。Numio app是世界上第一个在谷歌Play应用商店推出的非托管、支持zkRollup的以太坊移动钱包。
- Gitcoin:Gitcoin 是旨在开源的以太坊悬赏平台,区块链项目可以于此用一定的报酬找到需要的开发者。Gitcoin目前主要有六个产品:Bounties(悬赏)、Hackathons(黑客马拉松)、Grants(资助)、Kernel、Quests(任务)和Kudos。
- Golem:Golem是一个着眼于共享电脑闲置CPU和GPU资源的peer-to-peer 网络。
- StablePay:StablePay为去中心化的支付解决方案,使得用户可用代币在线支付以美元计价的产品和服务。
基于zkSync的开发中的相关生态产品有:
- Curve:为类似Uniswap的以太坊上的交易所流动性池,设计用于:1)提供极其高效的稳定币交易;2)为流动性供应商提供低风险补充费用收入,无机会成本。
- Balancer:Balancer池为一个自动做市商,具有某些关键属性,使其能够作为一个自平衡加权投资组合和价格传感器发挥作用。
- Argent:为简单安全的加密货币智能数字钱包。
- MYKEY:是基于KEYID协议开发的,在多个公链(EOS、以太坊和Tron等)上实现的自治身份管理的智能钱包。
2.1.2 LoopRing方案相关生态产品
LoopRing:为基于zkRollup的交易和支付协议。
LoopRing的代币为LRC。
LoopRing相关产品有:
Loopring交易所和手机钱包。
LoopRing相关生态产品有:
- Gitcoin:Gitcoin 是旨在开源的以太坊悬赏平台,区块链项目可以于此用一定的报酬找到需要的开发者。Gitcoin目前主要有六个产品:Bounties(悬赏)、Hackathons(黑客马拉松)、Grants(资助)、Kernel、Quests(任务)和Kudos。
- Rails:允许将ETH和任何与ERC20 兼容的token由钱包转移给Loopring L2的任何其他人。
- pNetwork:为pTokens系统的管理层。pTokens支持跨链交易。
2.1.3 StarkWare方案相关生态产品
StarkWare:使用STARK技术来提升区块链的可扩展性和隐私性。STARK技术可提供零知识、简洁、透明(无需trusted setup)以及后量子安全的密码学证明。
StarkWare 方案暂无相关代币。
StarkWare 相关生态产品有:【参见StarkWare官方博客 On the Road to StarkNet: A Permissionless STARK-Powered L2 ZK-Rollup】
- StarkNet:为以太坊构建的基于STARK构建的L2 zkRollup方案,具有分布式、非许可的、可抵制审查的特征。可采用图灵完备的 Cairo语言 来为general computation 编写相应的 provable programs。
2.1.4 zkSwap方案相关生态产品
zkSwap:为基于zkRollup+AMM的去中心化交易所,代币为ERC20 token ZKS。
zkSwap已于2021年2月14日在以太坊主网上线。
zkSwap相关产品有:zkSwap 钱包
2.1.5 Aztec方案相关生态产品
Aztec:Aztec协议旨在通过使用zk-SNARKs隐私算法来加密区块链数据,从而促进公有链上的隐私保护。
Aztec 方案暂无相关代币和生态产品。
2.1.6 Hermez方案相关生态产品
Hermez:为trustless ZK-Rollup,重点关注以太坊各种wings之间的可扩展支付和token交易。
Hermez 代币为 HEZ。
2.2 Why zkRollup?
Plasma为构建扩容性方案的统称,它以侧链的形式将第2层区块放置在以太坊区块链的顶部。
Plasma的具体实现为:
将数百个侧链的交易以离线的方式处理,只将侧链区块的单个hash值添加到以太坊区块链中。
由于以下缺陷的存在,使得Plasma无法满足进一步扩容要求:
- side chain中游戏用户的退出,需要用户保留足够大量的数据以满足验证需求;
- lengthy challenge 周期需要用户保持在线,否则会丢失奖励。
为了更友好的用户体验和更少的资源需求,需要更好的Layer 2扩容方案——zkRollup就是其中之一。
与Plasma为每个transfer创建一个transaction不同,zkRollup可将数百个transfer 卷为 一个单独的transaction。然后通过智能合约来析构和验证这个transaction中所有transfer的正确性。
2.3 What’s zkRollup?
zkRollup中包含两种类型的用户:
- transactors 交易员:创建transfer并将该transfer广播至网络。
- relayers 转播员:收集大量的transfer然后创建一个rollup。
transfer中包含的数据有:
- 以“to”和“from”索引的地址;(压缩版的地址表示仅需3个字节,可节约处理资源。)
- 交易的金额;(交易金额大于0表示存钱;交易金额小于0表示取钱。)
- 网络费用;
- nonce。
1)智能合约将以上transfer数据以两棵Merkle Tree方式存储:
- 将地址存储在一个Merkle Tree中。
- 将交易金额存储在另一个Merkle Tree中。
2)由relayer来创建SNARK proof。
SNARK proof为区块链状态增量的hash值。此处状态是指:“state of being”。
SNARK proof将 transfers发生之前区块链的快照 与 transfers发生之后的区块链快照进行对比,然后仅对二者之间的差量变化以verifiable hash的方式发送到主网中。
值得注意的是,只要在智能合约中抵押有符合要求的债券,任何人都可以称为relayer。这将激励relayer 既不篡改rollup,也不阻止rollup。
运行zkRollup的dapp用户将支付更少的交易费用。
创建零知识证明需要大量的算力,其implementation为“commit-verify”方法。区块的延迟确认情况将增多,因为SNARK proof将延迟多个区块。直到implementation完成,否则用户无法直到具体将延迟多少个区块。
2.4 zkRollup的优劣势
zkRollup的优势为:
- 降低了每笔用户交易的费用;
- 比 Optimistic Rollup和Plasma都快;
- 区块可以并行计算的模式计算,这将促进去中心化;
- 在每笔交易中包含的数据更少,将有利于增加Layer 2的吞吐量和可扩展性;
- 不需要像Optimistic Rollup那样的fraud game verification,Optimistic Rollup的提款到帐期长达两周。
zkRollup的劣势为:
- 计算零知识证明的难度较高,需要对其进行数据优化以进一步提升吞吐量;
- zkRollup的初始setup需要一种中心化的机制;
- zkRollup的安全机制具有一定程度的unverifiable trust;
- 量子计算可对zkRollup 区块链形成威胁。
3. 为何需要用zinc等专有语言来重写智能合约?
以太坊的智能合约已有Solidity和Vyper语言,为何在ZKSync 中,需要引入Zinc这种语言来重写智能合约?
- 现有的大多数ZKP框架,如Zokrates、Circom、SnarkJS、gNARK等,设计初衷都是用于创建circuits、quadratic arithmetic programs以及internal represetantions。
Zinc是一种新的尝试,它将智能合约引入ZKP框架,为safety和security提供了良好的保证。其设计初衷定位是:为ZKP电路优化的智能合约语言。
参考资料
[1] iden3 团队博客 zkRollup
[2] iden3 2019年12月12日博客 Istanbul, zkRollup, and Ethereum throughput limits: an analysis
[3] 以太坊路线图 EthHub Layer2 扩容方案 ZK-Rollups
[4] idex 2019年11月6日博客 Rollup Rundown
[5] matter labs 2019年11月4日博客 Optimistic vs. ZK Rollup: Deep Dive
[6] Joel Kite 2021年1月28日 medium博客 A Brief Guide to zkRollup Projects and Products — January 2021
[7] Loopring’s zkRollup AMM is Live
[8] matter labs zksync
[9] matter labs zinc
[10] PlasmNetwork ZKRollups
[11] zkRollup 入门培训
[12] 2020年2月12日 Episode 116 zkSync and Redshift: Matter Labs update
[13] 2020年7月15日 Episode 138 Validium with DeversiFi & Starkware
[14] 2020年9月2日 Episode 145 Circom & Hermez with Jordi Baylina
[15] 2020年10月14日 Episode 151 John Adler on Optimistic vs ZK Rollup and the data availability problem
[16] 2020年12月23日 Episode 161 Loopring with Matt & Brecht
[17] John Adler 2019年11月6日medium 博客 The “Why”s of Optimistic Rollup
[18] PANews官方 新闻 ZKSwap提出實用zkrollup協議ZKSpeed,可大幅提高TPS並降低Gas費用
[19] eth research 讨论 DoS attack against zkRollup proof generation?
[20] What is a ZKRollup? And how does it work in scaling a DAPP?
[21] IPFS 报告 Scaling blockchains zkRollup
[22] 新闻 Aztec 2.0:以隐私性为核心的zkRollup Layer 2方案
[23] Alex Gluchowski 2020年6月18日博客 zkSync is Live! Bringing Trustless, Scalable Payments to Ethereum
[24] AztecProtocol rollup 代码实现
[25] Vitalik 2021年1月5日博客 An Incomplete Guide to Rollups