/ y! J; d1 V7 r7 O5 d7 W \+ | Zkopru 结合了 ZKP 和 Optimistic Rollup,将在未来几周公布公开测试网和主网计划。
- m4 k9 h! |4 t; e: i. s
引言
4 S; h, C9 b( j* o3 G 隐私性和可扩展性研究团队都在填补零知识证明的前沿研究和以太坊应用开发之间的空白。
7 V9 }" z- `( O! R 我们最近研究的一个重点领域是 zkopru (使用零知识证明的 optimistic rollup),这是一套为隐私交易节约 Gas 的新协议。我们已经在四月份完成了一场信任起步设置,自那时开始,我们就一直在埋头苦干。我们已经到了实现网页版钱包和压力测试的最终阶段。第二次审计也已在进行中。在本文中,我们想对 Zkopru 的特点作概要的说明,顺便预告下 Zkopru 在未来几周里有关公开测试网和主网的计划。
, T5 X, r( ?% r
本文预设了你已经大体了解以太坊、Layer2 和零知识证明的基础知识。
! `9 e' a1 W6 v" T 什么是 Zkopru?
# g% O* C% [( W1 v9 @ 3 ]: J. x9 T0 d* s1 o
' i" c t1 \: l+ ]4 ]0 ` 打开凤凰新闻,查看更多高清图片
p* a) a0 M6 T* o, [ $ p2 [$ J% j: y# K6 I& }
2 G/ P- ?1 U% Q4 B Zkopru 的名字来源于 zk (零知识证明)和 opru (optimistic rollup)。你可能听过零知识证明、zk rollup 和 optimisitc rollup。那到底什么是 zk-optimistic rollup?且听我仔细分解。
3 z' f( _/ O$ y3 v4 _ 什么是零知识证明?
0 w( W6 x4 t# h+ z# [; I 零知识证明方案(比如 zkSNARK)让验证者可以验证一个计算过程的正确性,且验证者无需自己重新执行这段计算、证明者也无需暴露计算的输入。因此,零知识证明可以用于实现可扩展性和隐私性。Zkopru 使用零知识证明来保证交易的隐私性。Zcash、AZTEK network 和 tornado.cash 都是在区块链上使用零知识证明来实现隐私性的例子。
: |7 V( a: B: K* B7 a7 e- b 什么是 optimistic rollup?
, Y/ J* H9 k- |1 v. f Optimistic rollup 是一种 Layer-2 技术方案,其内部运行是平行于以太坊主链的。optimistic rollup 可以带来可扩展性上的提升,因为它们默认不在主链上执行任何计算。相反,用户在 optimistic rollup 环境下发送交易后,它只会在主链上发布执行后的状态以及这些交易的数据,这一切都不会造成主链状态的增长,因此可以减少 gas 开销。在使用以太坊时,修改状态是开销繁重的事情,所以,optimistic rollup 可以提供高达 10~100 倍的吞吐量提升(视乎交易的类型而定)。这篇文章介绍了 optimistic rollup 的更多细节。Rollup 的运行需要一种称为「协调者」的角色,需要他们来计算新状态并在以太坊区块链上发送数据。
, h% D, L, b6 Q' b8 E, t& ? T
什么是 zk+opru
3 e$ h, J2 {' A' @, _. i% J4 g Zkopru 是一个基于 UTXO 的 optimistic rollup 项目。还有另一种类型的 rollup 叫做 zk-rollup,它使用零知识证明来验证 rollup 状态更新计算(即交易执行)的正确性 —— 但 Zkopru 不是 zk-rollup。因为 zk-rollup 仅使用零知识证明作为生成计算有效性证明的方法,但 Zkopru 使用零知识证明来保证每一笔转账都是隐私的。
" g2 z7 V# b3 p& J6 o 这个概念在 gas 消耗量上具有很大的优势。在以太坊主链上直接执行一笔零知识的交易,必须使用一个对 SNARK 友好的哈希函数来构建一棵默克尔树,这都是非常昂贵的(gas 消耗量非常大)。使用 optimistic rollup,我们可以在链下更新这棵默克尔树,成本低得多。结果是,我们这套协议,单次隐私转账在主链上只需使用 8800 gas (哪怕一笔普通的以太坊 ETH 转账,都要消耗 21000 gas)。
$ B0 X0 ]1 V6 j7 Z9 G. \
为什么我需要 Zkopru 呢?
5 Q7 D+ @# ]1 T
) B4 {. C/ l& k' ] b, Z$ ~9 I' H7 r 接下来,我们讲讲最重要的部分:Zkopru 面向用户的功能。用户可以通过一个网页端钱包跟这个系统交互,从充值、取款、转账到在 L2 上做币币互换,都可以。下面我们概要介绍下这几个功能的用户体验;更详尽的技术描述,请看我们的文档和 GitHub。
5 l8 X5 ?) ~2 f: l) `1 J
充值:用户可以把 ETH、ERC-20 代币和 NFT 存入 L1 (以太坊)上的 Zkopru 合约(可借助我们提供的用户接口)。在存入资金之后,用户就可以在 L2 上转移自己的资产,而这背后是一套基于 UTXO 的表示方法。
5 k0 [: _( k* D$ V* N: K! h @
转账:存入资产后,资产还是关联着用户的账户,但隐私交易功能可以打破这种关联。在转账时,发送者需要接收方的 Zkopru 地址,这个不是以太坊地址哈,但用户可以在 Zkopru 钱包中使用同一把私钥生成一个相应的地址。钱包软件会生成一个零知识证明,证明转账前后系统的完整性,而无需把交易提交给 Zkopru 的协调者,也无需公开任何细节。
2 v' e, W& f- [0 X y" D2 L7 O8 x 取款:用户希望从 L2 (Zkopru)撤出资金到 L1 (以太坊)的时候,可以直接使用钱包的取款功能。这个操作的交易细节就需要公开了,所以取款的地址和数量都不再是隐私的了。就像其它 optimistic rollup 方案一样,Zkopru 需要用户等待 7 天,取款才能完成。不想等待的用户可以使用即时取款机制。
# [: l0 J* }6 ^9 v. h( t
即时取款:如果用户想要即时取款,他们可以出价请求另一个用户预付资金。预付资金者可以拿到手续费,但要承担交易被欺诈证明无效化的风险。
8 `6 S* I% X, C; q% r( ~& q
原子化互换:Zkopru 支持原子化互换。两名用户可以请求协调者协助两者资产的互换,如果协调者拒绝协助,他们就会被惩罚。这项服务会有专门的一个网站。现在很难高效而隐私地找到相互匹配的订单。我们正在开发一个支持隐私订单匹配的解决方案。
# f- r' y1 N, W; Q" C 成本:用户可以存取 ETH、ERC-20 代币和 NFT。而且也有可能做到在一笔交易中同时存入 ETH、ERC-20 代币和 NFT。下图所示的 USD 价值基于 gas price 为 25 gwei 和 ETH 的价格为 2500 美元的假设。
( v6 j1 }& \) s& e ! a% H+ I* N# v D+ w/ [
对于 rollup 内的隐私转账,协调者会根据相关交易在 L1 (以太坊)上发生的成本收取一定的手续费。批量的交易会更便宜,而且要看 UTXO 的数量:
( o! `9 Q1 c, Q" h8 O0 S
+ o6 ~7 z/ z1 k; _
除了上面列出的成本,协调者还需要为每批交易支付一笔一次性费用 17 1954 Gas。
* u7 |# _( u4 B$ O4 K; ^
那什么时候能用上呢?
. ~: Q$ L4 b# g: o
A% v) C7 w* e7 j1 y 大约两周后,Zkopru 合约将部署在测试网上,钱包 UI 也会放出,我们也会放出更多文档来讲解用户如何上手。如果测试网上没有出现大的问题,那么再过约两周,我们会放出主网合约。预计第二次审计也会在这个时间出结果。
- f/ E+ \% Q* _, \
结论
* @$ ~3 }0 p$ x" q( x6 u 经过多年的努力,Zkopru 将很快进入生产环境,为以太坊提供便宜、隐私的交易。如果你想在测试网上使用 Zkopru,请关注我们的下一篇博客。
7 q0 I- h3 o- b