通过zk-SNARK与OptimisticRollup技术的结合,Zkopru可实现ETH、ERC20s和ERC721s多种以太坊代币的快速、廉价和隐私的交易,并实现即时取款和隐私原子互换等功能。
撰文:殷耀平
以太坊Layer2隐私扩容新方案Zkopru问世
7月20日,Ethereum9?创始人WanseobLim在太坊技术论坛ethresear.ch上发布了一份新的以太坊扩容方案「Zkopru」的技术实现说明。
Ethereum9?是一种概念证明系统,使用Mimblewimble以及零知识证明等隐私技术来隐藏以太坊代币交易。
据WanseobLim介绍,这是一个结合了zk-SNARK和OptimisticRollup来实现隐私交易的Layer2扩容解决方案,该方案支持在二层网络中以低成本实现ETH,ERC20,ERC721之间的隐私转移和隐私原子交换,并实现了诸多其他亮点功能。
WanseobLim称,该方案是由他和化名为「barryWhiteHat」的以太坊开发者共同完成,他们从2019年11月开始构建此方案,目前Zkopru已发布测试网,代码已在github开源。
「barryWhiteHat」是以太坊社区最活跃的开发者和研究者之一,ZKRollup的扩容方案正是由barryWhiteHat在2018年下半年最先提出。
链闻查询该项目路线图发现,Zkopru计划分为Arcticroll、Burrito、Grilledburrito、Californiaroll、Dragonroll五个阶段进行迭代,github上的开发进度显示,目前第一阶段的开发工作已完成大部分。
Zkopru方案一经推出,便吸引了众多以太坊开发者的关注,*以太坊创始人*VitalikButerin第一时间表达了对该项目问世的祝贺,认为是一项「很棒」的工作,并在推特上转发了该项目的介绍文章。
彭博社高级商品策略师:以太坊可能与股票有更高的相关性:金色财经报道,据彭博社高级商品策略师Mike McGlone表示,彭博社分析师Mike McGlone称比特币(BTC)是一张“WildCard”,一旦传统股票最终触底,它的表现就“成熟”了。McGlone解释说,比特币是一张“WildCard”,在股票下跌时表现更成熟,但过渡到看起来更像黄金和债券。联邦基金指标转向紧缩通常是时间问题,一旦发生,比特币将成为主要受益者。
McGlone补充说,虽然比特币将遵循与政府债券和黄金类似的趋势,但以太坊“可能与股票有更高的相关性”。[2022/9/8 13:16:53]
下面我们一起了解一下Zkopru扩容方案的主要思路和设计亮点。
什么是Zkopru?
Zkopru的全称是zk-Optimistic-Rollup,是一个基于zk-SNARK和OptimisticRollup的以太坊二层隐私扩容解决方案。可支持第二层网络中ETH、ERC20、ERC721各类代币之间的隐私转账和隐私原子交换,并且费用很低。
「Zkopru」方案使用OptimisticRollup来管理区块,使用zk-SNARK来构建隐私交易。
了解过以太坊Layer2扩容现状的都知道,目前最当红的扩容主力便是基于Rollup技术系列扩容方案,最主流的是两个分支ZKRollup和OptimisticRollup。
简单理解,「ZKRollup」方案是利用Rollup技术进行交易压缩,并利用?zk-SNARK技术实现交易打包和验证,以实现在减少交易成本的同时确保安全性。
「OptimisticRollup」方案吸收了ZKRollup方案对于数据可用性的优势,但去除了零知识证明部分,而是沿用了Plasma的欺诈证明机制。所以在该方案中,不像ZKRollup方案通过SNARK处理后再将数据聚合到链上,而是默认「乐观」相信节点会将最新且准确的数据发布到链上,否则当「验证者」发现有问题时,节点会受到相应惩罚。
数据:以太坊链上比特币锚定币发行量达82960枚:DeBank数据显示,以太坊链上的比特币锚定币发行量持续上涨,目前达82960枚。纳入统计的包括WBTC、renBTC、sBTC、imBTC、HBTC、BTC++、pBTC以及tBTC。其中WBTC所占份额最高,当前发行量为 55498枚,占比66.90%,其次为renBTC ,发行量为18347枚 ,占比22.12% 。[2020/9/13]
了解更多关于Rollup的知识可以参考链闻文章「以太坊扩容最热门主力方案Rollup学习指南」。
而最新问世的「Zkopru」方案则是对zk-SNARK和OptimisticRollup的结合,相当于是在OptimisticRollup方案中,又加入了零知识证明的技术部分。
Zkopru扩容方案有何特点?
据WanseobLim介绍,Zkopru方案能将每笔zk交易的gas费控制在可承受范围,并实现交易性能提升,使得:
以太坊隐私交易平均成本为每笔交易8000gas。理论上最大TPS为105此外,Zkopru中,交易数据消耗大约534字节,由于证明数据有256字节,未来如果使用证明聚合,还可以将交易成本降低50%左右。
此外,Zkopru方案还能实现以下功能。
1)支持ETH、ERC20甚至是ERC721资产。2)支持隐私原子交换,可以与隐私订单撮合系统一起使用。3)运用SubtreeRollup将默克树的更新挑战成本缩减至原来的1/20。4)即时取款功能实现,在区块最终性达成前,用户可以即时取款。5)利用批量存储和批量转移,可以构建一个内部二层网络。
Zkopru方案实现:如何证明交易真实性?
我们可以简单了解一下Zkopru方案是如何利用zk-SNARK技术完成交易验证的。
加密社区就以太坊确切供应量问题引发争论:过去几天,关于以太坊的确切供应量问题在推特引发讨论,目前似乎仍没有达成共识。MakerDAO开发商Marc AndréDumas经过初步计算得出,以太坊供应量为1.1243亿,在报告脚本中存在错误后,他将数字更正为1.12093亿。随后Pierre Rochard对这个数字表示质疑。
对此,以太坊联合创始人Vitalik Buterin表示,这个数字是已知的,Pierre Rochard则要求ETH社区提供确切的数字及其计算证明。比特币安全专家Andreas Antonopoulos表示,“ETH供应”是一个愚蠢的陷阱,如果了解以太坊的工作原理,就没有多大意义了,因为其运作方式难以对“什么是ETH供应”给出具体答案。Morgan Creek Digital联合创始人Anthony Pompliano?则表示,以太坊社区无法弄清该资产总供应量是一个重大问题,因为“可证明的稀缺性”非常重要。(CryptoNews)[2020/8/11]
Zkopru方案认为,由于每个零知识证明事务都会接受若干个UTXOs作为其输入,并为其输出创建新的UTXO。因此,最重要的,就是验证输入和输出,从而完成对交易真实性的验证。
首先是输入验证
Zkopru使用Commitment-nullifier来实现隐私保护。在该方案中,每个zk事务会使用UTXO,但不会显示使用了哪个note,虽然会展示从UTXO派生出来的nullifier,但仅仅看到nullifier不可能与原始的UTXO建立起联系,从而可以实现隐私保护。
链闻注:在Zcash的隐私交易方案中。每笔转账都会用note来表示,内容包括转账的金额和一个随机数。note有两个外在的表现形式:一个是Commitment,一个是Nullifier。Commitment代表一次金额转入,Nullifier代表一次消费。对于每个note,Commitment和Nullifier都是唯一的。因为Commitment和Nullifier是通过不同的Hash函数生成的结果,即使这两个数据公开,其他人也无法推断出Commitment和Nullifier之间存在联系。也就是说,提供一个Commitment,能说明进行了一笔转账。能提供对应的Nullifier,就能消费。了解更多请参见链闻文章。
动态 | 以太坊30天ROI持续优于BTC 链上状态保持稳定:据 TokenGazer 数据分析显示,截止至 12?月?5日 11时,以太坊价格为$144.36,总市值为$15,719.28M,受行情波动影响,主流交易所24H以太坊交易量约为$75.49M,环比昨日有明显增长;以太坊对比特币汇率呈现一定波动下滑趋势,市值占比波动较小;基本面方面,以太坊链上交易量、算力平稳波动,但链上DApp交易量保持增长,新增地址增速进一步放缓;以太坊 30 天开发者指数约为 2.20;以太坊与 BTC 180 天关联度保持稳定,30 天 ROI 表现持续优于BTC;据TokenGazer官网六道数据显示,以太坊情绪指数移动平均线在40左右微幅波动,灰度以太坊信托溢价持续下滑;ERC20 代币总市值约为以太坊总市值的 65.04%,略有下滑。[2019/12/5]
要花费UTXOs时,必须满足以下条件:
UTXO成员证明:交易构建器提交每个UTXO的Merkle证明来证明其存在。为实现有效的SNARK计算,UTXO树使用Poseidon作为其哈希函数。
所有权证明:只有所有者才能花费UTXO,每个note都会有一个公钥字段,所有者通过使用配对的私钥创建EdDSA签名来证明其所有权。
承诺证明:整个环路需获取有关UTXOs输入的详细信息,从而计算输入量的总和。因此,所有者应该提供详细信息,其Poseidon哈希值应该等于Merkle证明和所有权证明的叶节点哈希值。
无效证明:给定的nullifiers应该从UTXOs输入中正确派生。
其次是输出验证
每个zk事务可创建三种类型的输出:UTXO、取款和转移。
如果zk事务创建UTXO输出,Zkopru会追加到UTXO树中。如果zk事务创建取款输出,Zkopru会追加到Withdrawal树中。最后,批量转移是由区块中的每个zk事务的转移输出所组成。
动态 | 过去12个月以太坊区块链上的开发活动是EOS的近4.5倍:星球日报讯 加密信息网站Santiment的研究显示,在过去12个月中,在以太坊区块链上构建的总开发活动是EOS上的近4.5倍。根据这项研究,在过去12个月里,这一直是一个持续的趋势。根据两个平台的开发活动图表,显然以太坊一直处于领先地位。
据CoinDesk此前报道,全球市值第七大区块链EOS的早期支持者正在离开。9月初,参与推出第一个EOS链的EOS Tribe宣布,将退出EOS BP(区块生产者)竞选,专注于其他区块链和EOSIO软件的其他实施。EOS Tribe的Eugene Luzgin表示,如果没有主要EOS巨鲸的支持,就不可能为维持区块链获取资金。这些EOS巨鲸绝大多数支持位于中国的BP。此外,绝大多数技术熟练程度较高的BP的奖励被降级为较低级别的奖励或根本没有奖励。Luzgin称,他们现在实际上有人才流失。(The Daily Hodl)[2019/9/22]
因此,UTXO的输出应满足以下条件:
当输出是UTXO类型时,输出的公共哈希值必须与SNARK环路中计算所得值相等。当输出是取款或转移类型时,应该显示详细信息,因为该输出需要将正确数量的资产转移至网络外部。
零和证明
最后,zk事务应该保证输入等于输出,包括费用在内。
Zkopru功能实现:原子交换Atomicswap功能
目前,Zkopru在以一种很简单的方式支持原子交换。
如果A和B想交换他们的资产,他们会为彼此创建notes,并在交易数据中公开所需的note。然后,协调器应该配对相反的事务,或者被惩罚。
例如,Alice想用她的50个ETH换Bob的1000个DAI。Alice花费自己的一个60ETH的note,为自己创建10ETH的note,同时为Bob创建50ETH的note。此外Alice计算出自己未来得到的1000DAI的note的哈希值,并将该哈希值在她的交易事务中通过swap字段公开。同样,Bob花费自己的一个3000DAI的note,为自己创建2000DAI的note,为Alice创建1000DAI的note。Bob也计算出他未来的50ETH的note的哈希值,并将该哈希值在他的交易事务中通过swap字段公开。一旦协调器在交易池中匹配了成对事务集,就会将该对事务打包到一个新区块中。如果一个区块中纳入了不成对的事务,协调器会被惩罚。
Zkopru功能实现:即时取款功能
Zkopru中,取款人可以请求即时取款,取款人可以为每个取款note设置一定的取款费用,然后,任何人都可以提前支付这笔尚未最终完成的取款并获得该取款费用。
具体而言,为请求即时取款,所有者需要为她的note生成一个ECDSA签名并进行广播。任何有足够资产支付的人都可以使用该签名提前支付这笔取款。一旦Zkopru成功打包了该交易,智能合约会将该取款note的所有权转移给预付款人。最后,预付款人可以在区块完成最终确定后取款。
通过该功能,Zkopru团队认为,可以为即时取款建立一个去中心化的公开市场。
Zkopru方案的Merkle树结构
Zkopru的当前版本中,UTXO树和withdrawal树的最长深度将为31,Zkopru团队表示下个版本中最长深度将变为64,并且只有一个UTXO树和一个withdrawal树。
Zkopru方案由UTXO树,nullifier树和withdrawal树所组成。
UTXO树会追加包含UTXOs的Merkle树,用户可以通过提交Merkle证明将UTXOs用作事务的输入,并将事务的输出结果追加至最新的UTXO树中。
同样,如果zk事务创建了withdrawal输出,Zkopru会将其追加到最新的withdrawaltree树中。一旦树根被标记为终结,所有者就可以来提取资产。
最后,通过commitment-nullifier隐私交易方案,已使用过的UTXO的nullifier会在nullifier树中被标记为「已使用」。
用过的UTXO的清零器被标记为在nullifier树中使用,nullifier树是唯一的稀疏Merkle树。如果有事务试图使用一个已被使用的nullifier,该事务会自动失效,并且区块提议者会被质询系统惩罚。
Zkopru方案中Merkle树的详细规格。
UTXO树
单个UTXO树是用于成员证明的稀疏Merkle树,它使用Poseidon哈希生成zkSNARK证明来隐藏花费哈希及其路径。
为了更新UTXO树,协调器需执行以下步骤。
1、准备好数组。2、协调器选择需要并入的MassDeposits,并将MassDeposits中每笔存款都追加到数组中。3、Layer2事务生成新的UTXOs,将新生成的UTXOs追加到数组中。4、将准备好的数组拆分成大小为32的块。5、构造子树并执行子树汇总。
假设UTXO树完被全填满了,系统会将填满的树归档并开始一个新树,已存档的树也可以作为交易的包含证明被引用。
Zkopru会乐观地更新树根,且只在发现挑战时进行验证。Zkopru会使用Subtreerollup的方法生成链上欺诈证明。Subtreerollup会追加固定大小的subtree,而非逐个追加交易项。与单纯的Rollup相比,SubtreeRollup显著降低了大约20倍的gas成本。
Nullifier树
每个转账、取款和转移事务都通过包含证明来花费UTXOs,并标记在nullifiers树上。所以nullifiers树是一个非常大的稀疏Merkle树,要记录稀疏Merkle树中每个已花费的UTXO。因此,Zkopru使用keccak256作为nullifier树的哈希函数。
为了更新nulleizer树,协调器需执行以下步骤。
1、选择事务,并从事务中收集所有nullifiers项。2、检查是否存在任何已经使用的nullifiers项。3、将每个nullifier项标记为已使用。更新过程中,如果有nullifier不更改nullizer树根,立刻丢弃该事务,因为它尝试进行双花。
就像UTXO树一样,Zkopru会乐观地更新nullifier树的根。若有任何问题,可以通过在链上生成欺诈证明来证明一个nullifier使用了不止一次。
Withdrawal树
Withdrawal树和UTXO树的唯一区别是,提取树使用keccak256作为哈希函数。原因是Zkopru在智能合约中需要withdrawal树的Merkle证明,但在SNARK环路中又需要UTXO树的Merkle证明。
要更新Withdrawal树,协调器需执行以下步骤。
1、收集所选交易的每个取款项。2、将所搜集的取款数组拆分成大小为32的块。3、构造子树并执行子树汇总(Subtreerollup)。
Zkopru方案实现:Zkopru中的区块结构
区块头
前372个字节的数据是区块头,区块头包含以下数据:
区块主体
区块主体包括交易、批量存款和批量转移。此外,区块头应该包含来自区块主体的正确信息。如果区块头没有包含正确的值,提案人会被质询系统所惩罚。
交易
批量存款
批量转移
Account
Zkopru计划创建一种新的公钥结构。
每个Zkopru帐户将同时管理Layer1和Layer2的密钥对。
首先,该帐户会有一个随机生成私钥的以太坊帐户,用于与Layer1交互。其次,Zkopru钱包会根据该以太坊账户的私钥创建一个Babyjubjub私钥和公钥集,用于Layer2的EdDSA签名和加密memo字段。
UTXO
Zkopru还将提出一种新的UTXO标准。
然后Zkopru再用Poseidon哈希计算叶节点哈希。
尊敬的EXX用户: ????EXX交易所即将上线全球性基础公链Demos项目.Demos是基于区块链的操作系统,由基础连和拓展链组成,采用双链并行机制,基础链为POWPOS共识机制.
尊敬的用户: HCXL即将上线法拉第交易所,并开通HCXL/USDT交易对。具体上线时间为:开启充提:7月24日10:00开放交易:7月24日10:00 开盘价格:0.16U 币种介绍: 代币名.
全球加密货币总市值为2730亿美元,较昨日下跌18亿美元,BTC市值1691亿美元,占总市值61.93%.
投资寄语: 比盈利重要的是分析,比分析重要的是自信,是你对市场的自信,是你对自我的自信,因为我们上周不仅又一次到达了盈利,并且再一次创出了暴利! 行情分析: 4小时级别看,现价9370附近.
交易,是一件细水长流的事情,心急吃不了热豆腐,不要因为震荡,就急得像热锅上的蚂蚁,不经历煎熬,哪能轻松蜕变!行情解析:从四小时图看,币价拉升到9300上方后,币价多次向下试探下轨位置.
梳理财富,增值生活.成功的投资=严格的心态控制+正确的资金管理+过硬的技术功力.明诚为你解决比特币投资路上的一切忧愁与困难.