zkSync概览

1. 引言

公有链的扩容方案,需考虑以下维度:

  • 高的交易吞吐量 (Bitcoin为7tps,以太坊为15tps,而VISA为2k+ tps)
  • 满足数百万用户需求的同时,不牺牲去中心性
  • 同时具有高速、低成本、流畅的用户体验和隐私性

之前由于缺少技术性突破,当前的扩容方案需在以上一个或多个维度进行妥协。而 零知识证明 技术的出现,使得同时满足以上要求成为可能。

Matter Labs提供的zkSync方案,为:
trustless scaling and privacy solution for Ethereum based on ZK Rollup

zkSync的设计目标是:

  • 为以太坊实现VISA 2k+ tps级别的交易吞吐量
  • 保证资金的安全性,安全级别与底层的L1安全性相当
  • 实现 high degree of censorship-resistance
  • 超低的延时,zkSync中的交易可实现即时economic finality

zkSync采用渐进式设计理念,逐步实现以下内容:

  • 基础设施层(安全性)
  • 基本扩展功能层(可交易性)
  • 智能合约层 (可编程性,如账号恢复、多重签名、花费限制等)
  • 隐私层(隐私性)

其中可编程性和隐私性是zkSync中最难的部分,需要一个合适的zero-knowledge proof system和smart contract可编程框架,并做相应的可靠设计和实现。

zkSync的主要特性为:

  • trustless
  • confidential
  • fast

zkSync的相关代码实现见:

  • https://github.com/matter-labs/zksync

2. zkSync的安全性——ZKRollup

zkSync的安全性依赖于ZKRollup。

zkRollup为L2扩容方案:

  • 所有的资金都由主网上的智能合约控制。
  • 计算和存储由链下进行。
  • 为每个Rollup 区块,生成一个state transition的零知识证明,该证明中包含单独每笔交易的validity proof,主网上的智能合约可验证该证明。
  • 每个区块中的public data update以便宜的cheap calldata的方式发送到主网上。

以上机制,可提供以下保护:

  • Rollup validator(s)既不能corrupt the state,也无法steal funds。(优于SideChains)
  • 即使validators(s)停止服务了,用户仍然可从Rollup中取回资金,因为数据是available的。(优于Plasma)
  • 借助validity proofs,不需要用户 或 任何可信第三方 保持在线来监督Rollup 区块以防止欺诈。(优于fraud-proof systems,如payment channels 或 optimistic rollups)。Validity proof 相比于 Fraud proof的优势,详细可参见博客 Validity Proofs vs. Fraud Proofs Strike Back。

换句话说,ZK Rollup严格继承底层L1的安全保证。基于此,再加上以太坊社区和现有基础设施的丰富性,是我们决定专注于L2解决方案而不是尝试构建自己的L1的决定性因素。

更多资料可参看:

  • 2019年4月 播客 zkSNARKs for Scale with Matter Labs
  • 2019年1月 博客 Introducing Matter Testnet —— SNARK-driven Plasma with up to 500 tx/sec goes live on testnet
  • 2019年11月 博客 Optimistic vs. ZK Rollup: Deep Dive
  • 2019年6月 视频 ZK Rollup: Ethereum Scalability with ZKPs - Alex Gluchowski
  • 2019年9月 视频 DAPPCON 2019: How Zero-Knowledge Proofs can Help your Dapp - Alex Glochowski (Matter Labs)

zkRollup的主要特性为:

  • Completely trustless
  • Same security gurantees as in undelying L1 (Ethereum)
  • Hard Ethereum-backed finality after the first confirmation

3. zkSync的可用性——实时交易

希望:

  • 对zkRoll区块生成证明的时间控制在1分钟之内。
  • 一旦区块证明被提交到主网上,并由Rollup智能合约验证通过后,该区块内的所有证明就被finalized 且 受L1 reorg-resistance保护。

而在零售和在线支付领域,即使以太坊15秒的数据块延迟也可能太长。我们怎样才能做得更好?

由此在zkSync中引入了 instant tx receipts。

  • 参与生成zkSync区块选举的validators 需向 主网上的zkSync智能合约 提交足够的安全保证金。
  • validators之间的共识可向用户提供subsecond confirmation,其交易将被包含在下一个zkSync区块中,且由(按股权加权的)绝大多数(2/3)的共识参与方签名。
  • 当有新的zkSync区块生成并提交到主网上,则无法reverted撤回。若该区块中不包含promised transaction,则将大幅削减 ”the intersection of the signers of the original receipt 和 the signers of the new blocks“ 的安全保证金。该intersection的保证金要求不低于1/3 of the stake,这就保证了至少1/3的安全保证金是可削减的,且只有恶意用户才会收到惩罚。
    削减的一部分资金可用于补偿the tx recipient,剩余的将销毁(burn)。
    削减动作可由用户自己触发,或者由共识中的参与签名该原始tx receipt的任何honest参与者触发。对于后者来说,其有动机来举报欺诈,因为若其参与后续的的区块生成,他们也会被削减保证金。因此,共识中至少有一个诚实的参与者就足以进行欺诈检测。

将zkSync区块中具有instant receipt的交易称为:

  • zero-confirmation tx

对zero-confirmation tx进行双花的时间窗口很短,只有几分钟,当区块证明发送到主网之后,就不再有双花问题。
同时除非zero-confiramtion tx 价值超过其安全保证金的1/6,恶意validators才有动机诱骗用户。

从买卖双方的角度来看,zero-confirmation tx的特性有:

  • Instant
  • Potentially reversible,but only within a few minutes【双花窗口期有几分钟
  • 只有同时攻击成千卖方时可reversible,而一对一攻击不可实现reversible。

相比于信用卡支付,zkSync在用户体验和安全性上做了大幅改进,主要体现在:

  • 具有实体商品的网店:可能会立即向用户确认购买,但不会受到攻击,因为他们会在发货前等待完全确认。
  • 实体店:在处理小额交易时几乎不会受到攻击。即使是向instant tx receipt售卖Macbook,除非 在同步的地点同时又输钱个协同的物理攻击者 与 大多数validators 合谋,才能让你赔钱。

为了量化风险,可将由 保证金提供的economic guarantee 与 由POW提供的settlement assurance 进行对比,具体见博客 It’s the settlement assurances, stupid 。
如,Coinbase要求35个tx confirmations来final a deposit on Ethereum。撤销该交易的代价为,从AWS租用GPU持续进行10分钟的51%攻击,相应的费用约为6万美金。假设在安全保证金中有数百万美金,则revert an instant zkSync receipt的代价更高。因此,instant receipts通常会更喜欢类似ETH这样的方案,其具有更好的economic finality 属性。

需要注意的是,instant tx receipts也可防止ETH区块reorgs,因为他们的有效性与以太坊无关。此外,以太坊的结算保证是与zkSync的结算保证相结合的。

zkSync的可用性——实时交易 的主要特征有:

  • 相比于以太坊,具有subsecond tx confirmations with economic finality。
  • Hard Ethereum-backed finality after a few minutes。

4. zkSync的liveness——抗cencorship和抗DoS

任何扩容方案的一个不可避免的特性是:

  • 大多数用户无法参与验证所有交易

这就导致在L2库容方案中需引入特定的角色(如Plasma或Rollup中的validators、Lightning中的hubs 等等)。这些新角色带来安全和性能提升的同时,也带来了集中化和审查的风险。
为此,zkSync中设计了2种不同的角色:

  • Validators
  • Guardians

zkSync的liveness主要特点有:

  • 具有Validators和Guardians两种角色,均受tx fees激励
  • Validators运行共识并生成proofs
  • Guardians监控cencorship with ordinary hardware

4.1 zkSync中的Validators

Validators主要负责:

  • 打包交易到区块
  • 为区块中的交易生成零知识证明
  • 参与共识,且必须为instant tx receipts提供一部分安全保证金
  • 其节点必须运行在安全环境且具有良好的网络带宽
  • 根据需要可选择在不安全的云上生成ZK proofs
  • 获得交易费用激励,这些费用在交易中以任意token支付(为最终用户提供最大便利)

为了保证zkSync共识的速度,任何时候仅允许有限数量的validators(在30~100之间,具体取决于profiling)。

注意,zkRollup validators是complettely trustless的,恶意的validators既不会危害系统的安全性,也不能欺骗诚实的validator使其陷入被削减惩罚状态。
但是,与optimistic rollup不同,Guardians可频繁地轮换一小部分validators,同时,只要有超过2/3的提名validators是honest和operational的,即可保证共识的活跃性。

4.2 zkSync中的Guardians

Guardians包含 持有zkSync token的 大多数,他们可以其持有的token质押来提名validators。

Guardians的主要目的是:

  • 监控p2p交易流量
  • 发现censorship行为
  • 确保审查中发现的validators不被提名。

Guardians的主要动机是通过确保zkSync是抗Dos和抗审查的,以保护其质押token的价值。

仅保持voting key 在线,Guardians永远不会面临被削减或被盗风险,其ownership keys可保存在冷介质中。

Guardians也可选择仅监控一小部分流量,因此,其节点可在普通笔记本电脑或云服务器上运行,即,不需要专门的validator services。

Guardians从提名的Validators中获取费用激励,费用以zkSync native token形式来支付。其收益和质押将被长期锁定,以激励长期zkSync token 价值 而不是短期回报。

5. zkSync的可编程性——RedShift (transparent universal SNARK)

实现ZK-based smart contracts(无论是transparent还是privacy-preserving),最大的障碍是:

  • 缺少efficient generic ZK proof systems with recursive composition

Groth16,作为当前效率最高的ZKNARK:

  • 需要application-specific trusted setup
  • 若实现recursion,将大幅降低其效率

而FRI-based STARKs:

  • 需要highly specialized skills来构建
  • 缺少efficient recursive composition of arbitrary generic circuits。

为此,提出了 RedShift :

  • 为 transparent的,无需trusted setup
  • 基于FRI-based polynomial commitment scheme构建的efficient and fully succinct SNARK
  • 为universal SNARK,可将任意program转为provable ZK circuits。(优于STARKs)
  • Heterogenous异构circuits(如,不同的智能合约)可recursively composed in one SNARK。
  • 基于battle-teste cryptography,不依赖于collision-restant hash函数,具有事实而非的post-quantum secure。

RedShift将作为zkSync的核心组成。

6. zkSync的可编程序——Zinc (framework for zero-knowledge smart contracts)

zkSync可编程性模型设计时,主要考虑以下几个目标:

  • 高扩展性
  • 同时支持公开智能合约和隐私智能合约
  • 最重要的是:平滑的学习曲线和易于部署

目前的零知识智能合约相关框架有:

  • ZkVM:为generic confidential smart contracts提供了虚拟机,但其基于bulletproofs,不支持succinct proof aggregation。
  • ZEXE:具有优秀的隐私保护设计,但其要求深入理解零知识ciruit specifics和trade-offs,学习门槛较高。

于是,设计了Zinc:

  • safe、simple and efficient programming framework
  • VM-based runtime-environment (即 Sandboxed VM for the delegated generation of zero-knowledge proofs)
  • 为ZKP-based smart contracts特别设计的

Zinc的关键设计在于:

  • 安全性
  • 开发者友好

为此Zinc中采用类似Rust的语法来定义智能合约,同时借鉴了Solidity和Libra的Move中的smar-contract programming elements。

Zinc不要求开发者了解ZKP领域知识,即可写出efficient and secure programs。

对于具有Rust、Solidity、C++或类似开发背景的开发者,可在1天内掌握Zinc。

以下为采用Rust编写的Bellman framework 与 Zinc的实现对比:
zkSync概览_第1张图片

参考资料

[1] 以太坊扩容方案之zkRollup
[2] zkSync Mainnet Block Explorer
[3] Introducing zkSync: the missing link to mass adoption of Ethereum
[4] zkSync project architecture
[5] Introduction to zkSync for Developers

你可能感兴趣的:(隐私应用)