宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > 火必 > 正文

一文读懂以太坊最新二层隐私技术Zkopru,实现ETH、ERC20和ERC721代币标准互通

作者:

时间:1900/1/1 0:00:00

7月20日,Ethereum9?创始人WanseobLim在太坊技术论坛ethresear.ch上正式发布了Zkopru,这是一种二层私人交易扩容解决方案,同时使用了zk-SNARK和Optimisticrollup技术。它能够以很低的成本支持ETH,ERC20,ERC721代币在二层网络内进行私人转移和原子交换。此外,借助预付款功能,用户可以在交易确认之前从二层提取资产。

非常高兴分享以太坊二层隐私技术Zkopru的实现。从去年11月开始,我和/img/20230515223157354545/0.jpg "/>

流入验证

Zkopru使用承诺消除器方案实现隐私。这意味着zk交易花费了UTXO,而没有透露已使用了哪个票据。取而代之的是,我们揭示了源自UTXO的无效符,但无法与其原始UTXO链接。

要使用UTXO,必须满足以下条件:

UTXO证明

tx构建器会提交每个UTXO的Merkle证明以证明其存在。为了进行有效的SNARK计算,UTXO树使用Poseidon作为其哈希函数。

BBC Studios将在The Sandbox中推出虚拟房地产和游乐园:5月25日消息,BBC集团商业子公司BBC Studios与Reality+合作,将于今年晚些时候在The Sandbox元宇宙中推出虚拟房地产和游乐园,粉丝能与BBC旗下IPTop Gear和Doctor Who的沉浸式内容进行互动。[2023/5/25 10:40:08]

所有权证明

只有所有者才可以使用UTXO。在这种情况下,每个note都有一个公钥字段,即一个Babyjubjub点。使用配对的私钥,所有者可以创建EdDSA签名以证明其所有权。

commitment证明

该回路应具有有关输入UTXO的详细信息,以计算流入的总和。因此,所有者应提供详细信息,其Poseidon哈希值应等于Merkle证明和所有权证明的leef哈希值。

Nullifier证明

给定的Nullifier可以从输入的UTXO正确得出。

流出验证

zk交易可以创建三种类型的输出:UTXO,取款和迁移。如果zk事务创建了UTXO,则Zkopru将它们附加到UTXO树中。创建提款输出时,Zkopru会将它们附加到提款树中。最后,作为二层区块一部分的大规模迁移,包括该区块每个zk交易的迁移输出。

因此,流出应满足以下条件:

当输出为UTXO类型时,输出的公共哈希值等于在SNARK回路中计算出的值。

如果输出的类型是提款或迁移,则应显示详细信息,因为它将正确数量的资产移至网络外部。

零和证明

最后,zk交易应保证流入等于流出,包括手续费。

区块结构

区块头

数据的前372个字节应为区块头。区块头包含以下数据:

区块体

区块主体由交易,大量存款和大规模迁移组成。此外,区块头应包含来自区块体的正确信息。如果区块头的值不正确,提出者将通过质询系统被削减。

交易

贝莱德钱包地址提取了1.27万亿枚PEPE到4个地址:金色财经报道,据Lookonchain监测数据显示,贝莱德钱包地址在2小时前从Binance提取了1.27万亿枚PEPE(约合198万美元)到4个地址。这4个地址与blackrockfund3.eth使用同一个币安充币地址,极有可能是贝莱德新创建的地址,它在4月21日以0.0000002431美元的平均价格购买了1万亿枚PEPE(当时为24.4万美元),并于5月5日以0.000002627美元的平均价格出售了所有PEPE(当时为263万美元),利润约为239万美元(10倍)。[2023/5/18 15:11:05]

大量存款

大规模迁移

账户

Zkopru将提出了一种新的公共密钥结构。注意此规范未来将进行更新。

Zkopru帐户管理着1层和2层密钥对。首先,该帐户具有一个以随机方式生成的私钥的以太坊帐户。这用于1层上的交互。其次,Zkopru钱包从以太坊帐户的私钥中创建一个Babyjubjub私钥和公钥集。此Babyjubjub密钥集用于二层的EdDSA和加密的备注字段。

UTXO

很快会提出一种新的UTXO规范

Zkopru使用Poseidon哈希计算leaf哈希:

varintermediate_hash=poseidon(ether,pub_key.x,pub_key.y,salt)

varresult_hash=poseidon(intemediate_hash,token_address,erc20,nft)

接收者如何知道?

Euro Tether(EURT)和Tether Gold(XAUT)将在SimpleSwap上推出:4月7日消息,Tether Operations Limited (Tether) 宣布 Euro Tether (EUR?) 和 Tether Gold (XAU?) ) 已在 SimpleSwap 上上市,SimpleSwap 是一个即时交易平台,具有用户友好的界面,可在支持的交易所进行无限交易或购买。[2023/4/8 13:50:58]

zk交易可以为接收者包括81个字节的加密备注字段。由于具有零知识特性,如果没有交互过程,接收者也无法知道怎么接收。因此,为了保持非交互方式,我们可以在接受者的备注字段中放入一些加密的数据。

加密

使用Diffie-Hellman密钥交换协议生成共享密钥。为发送者生成共享密钥的详细步骤为:

1.创建一个临时密钥及其同态隐藏值:

ephemeral=epublic_ephemeral=ge

2.将其临时密钥乘以接收者的公共密钥:

recipient_pubkey=gashared_key=(ga)e

3.准备对压缩数据进行加密:

data={

salt//16byte

tokenId,//1byte

value,//32byte

}

4.使用chacha20算法对数据进行加密,并使用临时公共密钥创建备忘录数据:

ephemeral=random.new()

public_ephemeral=generator.multiply(ephemeral)

shared_key=recipient_jubjub.multiply(ephemeral)

ciphertext=chacha20.encrypt(data,shared_key)

memo=public_ephemeral+ciphertext

解密

使用Diffie-Hellman密钥交换协议,接收者还使用公共临时密钥和私有密钥创建共享密钥。

1.解析备注并获取共享密钥:

public_ephemeral,ciphertext=parse(memo)

shared_key=public_ephemeral.multiply(private_key)

2.使用共享密钥解密ciphertext:

decrypted=ciphertext.decrypt(shared_key)

3.接收者使用解密结果尝试生成各种可能的UTXO。这是因为加密的数据只有49个字节以最小化调用数据的大小。因此,接收者应尝试各种组合以检查交易是否包括被恢复的UTXO哈希。如果未能在TX中找到已恢复的UTXO,则认为TX没有接收方的输出。

埃塞俄比亚:加密公司需要向该国网络安全机构申请注册:金色财经报道,据近期的一份报告称,在埃塞俄比亚运营的加密货币公司需要向该国的网络安全机构信息网络安全管理局(INSA)申请注册。该机构表示,将对未遵守其注册要求的加密公司,采取相应的法律措施。

据悉,由于新修订的一项法律,埃塞俄比亚网络安全机构信息网络安全管理局(INSA)已经开始为在该国运营的加密公司提供注册服务。修订后的法律还将赋予INSA监管加密产品和相关交易的权力。此外,INSA还将负责开发操作程序以及加密基础设施。(News.Bitcoin)[2022/8/28 12:54:05]

压缩数据

为了最大程度地减少调用数据,Zkopru将原始数据压缩为49字节数据。首先,它摆脱了加密候选者的公钥,因为接收者将使用自己的公钥来推断出。并且,它使用TokenID,该TokenID将支持的token地址和索引从0映射到255。然后,由于value可以是ether,erc20Amount或nftId,因此接收者针对这3种情况创建了三种类型的UTXO。最后,如果在交易的输出列表中存在任何推断出的UTXO,则接收者成功接收了UTXO。

局限性

Zkopru不会强制回路检查加密协议。因此,如果发送者未使用适当的共享密钥或数据,则接受者将不会收到备注。

原子交换

Zkopru以直接方式支持原子交换。如果A和B想要交换其资产,则它们会彼此创建备注并将所需的备注公开在交易数据上。然后,协调者应对相反的交易进行配对或被削减。

例如,爱丽丝想用天的50ETH交换鲍勃的1000DAI。

爱丽丝支出她的60ETHnote,并为自己创建了10ETHnote,并为鲍勃创建了50ETHnote。

爱丽丝还计算她未来的1000DAInote的哈希值,并将该哈希值暴露给她交易的swap字段。

鲍勃则支出他的3000DAInote,并为自己创建了2000DAInote,为爱丽丝创建了1000DAInote。

鲍勃还计算他未来的50ETHnote的哈希值,并将该哈希值暴露给他的交易的swap字段。

一旦协调者匹配了交易池中成对的交易集,它将把交易对包括在一个新区块中。

如果一个区块仅包含其中一个,则协调者将被削减。

V神赞扬以太坊社区反对加拿大交易限额政策:8月18日消息,以太坊联合创始人Vitalik Buterin(V神)在其个人社交媒体平台发文表示,“很高兴看到以太坊社区成员反对将ETH凌驾于其他合法加密货币之上的规定。(我目前尚未深入研究具体发生了什么,很大程度上是政府的事情,而不是一家企业的合规决策)”。此外,V神再次重申反对禁止PoW。

此前消息,今日早些时候,加拿大加密货币交易平台Bitbuy与Newton表示,将根据安大略证券委员会(OSC)和加拿大证券管理局(CSA)最新的监管政策,设置加拿大九个省份的居民在购买加密货币时的年度净购买限额为3万加元,以交易时价格计算。从首次购买受限Token起,该限制将每12个月重置一次。[2022/8/18 12:33:51]

Zkopru正在使用一种简单版本的原子互换。然而如果你想要检验一种基于MPC的zk原子互换模型,你可以在这里看到详细信息。

Merkle树结构

UTXO树和withdrawal树中的备注在下一个版本将有64深度。将只有一个单一的UTXO树和一个提取树。

Zkopru的树林由UTXO树,nullifier树和withdrawal树组成。

UTXO树是仅追加用法,包含UTXO的Merkle树。通过提交包含Merkle证明,用户可以将UTXO用作交易的流入。并将交易的输出结果附加回最新的UTXO树中。

另外,如果zk-transaction创建withdrawal输出,则Zkopru会将它们附加到最新的withdrawal树中。将树的根被标记为已完成后,所有者可以通过证明所有权来提取资产。

然后,通过commitment-nullifier方案,将用过的UTXO的nullifier标记为在nullifier树中使用。如果交易试图使用已经无效的叶子,它将变为无效,并且挑战者系统会大幅削减区块提议者。

Merkle树规范

{%hintstyle=“warning”%}

UTXO树&withdrawal树在Burrito版本上有64深度https://github.com/zkopru-network/zkopru/issues/35

{%endhint%}

如何管理UTXO树

单个UTXO树是用于成员资格证明的稀疏Merkle树。它使用Poseidon哈希生成zkSNARK证明以隐藏支出哈希及其路径。

要将新树叶追加到UTXO树,协调者将执行以下步骤。1.准备一个阵列。2.协调者选择要包括的MassDeposits,并将MassDeposits中的每笔存款附加到阵列中。3.二层交易生成新的UTXO。将新生成的UTXO附加到阵列。4.以区块大小为32对准备好的数组进行分割。5.构造子树(sub-tree)并执行子树rollup。

假设UTXO树已被个事项完全填充,系统将被填充的树进行存档并启动一个新树。也允许使用归档树来引用交易的包含证明。

Nullifier树

每次转账,提款和迁移交易都支出带有包含证明的UTXO,并标记在nullifier树上使用的派生nullifier。因此,nullifier树是一个很大的稀疏Merkle树,它记录了深度为254的稀疏Merkle树中每一个用过的UTXO。因此,Zkopru使用最便宜的哈希函数keccak256作为nullifier树的哈希函数。

要更新nullifier树,协调者执行以下步骤:

选择交易并从交易中收集所有nullifier。

检查是否存在任何已使用的nullifier。

将每个nullifier标记为已使用。在更新过程中,如果所有nullifier都没有更改nullifier树的根,请丢弃该交易,因为它会尝试进行双花。

就像UTXO树一样,Zkopru乐观地更新了nullifier树的根。如果有任何问题,我们可以通过生成防欺诈链上证明一个nullifier被使用了不止一次。要查看工作原理,请参阅

RollUpChallenge.sol和

SMT.sol。

提款树

与withdrawal树和UTXO树的唯一区别在于,withdrawal树使用keccak256作为哈希函数。之所以使用keccak256,是因为Zkopru在智能合约上需要提取树的Merkle证明,而在SNARK回路中则需要UTXO树的Merkle证明。在树的根定型后,withdrawal树中的叶子在1层智能合约中便是可以提取的。

要更新提款树,协调者执行以下步骤:

收集已选择交易的所有withdrawal叶子。

拆分出区块大小为32的withdrawal数组。

构造子树并执行子树rollup。

大量存款

当用户将资产存入Zkropu时会发生什么:

Zkopru合约将给定数量的资产从用户帐户转移到自身。

验证note是否带有给定信息的一个有效哈希。

将note合并到MassDeposit列表的最后一项。

什么是MassDeposit?

MassDeposit是用于rollup证明的单个mergedLeavesbytes32值。可在此处检查什么是rollup证明mergedLeaves。如果协调员提出一个包含MassDeposits的区块,则该区块会将MassDeposit中的所有note追加到其UTXOMerkle树。

协调员如何处理MassDeposits?

协调员只能包括不再更改的“已承诺”MassDeposit。为了包含MassDeposit,协调员将监视Zkopru合约中的存款事件。

MassDeposit什么时候变成“已承诺”?

尽快将存款推到二层网络。因此,当协调员提出每个新区块时,它将冻结最新的MassDeposit。

协调员可以包含多个MassDeposit吗?

是的,可以在最大挑战成本范围内一次包含多个MassDeposit。

大规模迁移

大规模迁移的基本思想非常简单。虽然1层合约上的存款交易创建了MassDeposit对象,但是交易的“迁移”类型输出可以创建MassMigration,该MassMigration为其目的地网络构造MassDeposit。

交易可以具有UTXO,迁移或取款类型的输出。

在Zkopru中,要进行迁移,就会涉及到源网络和目标网络。一旦完成源网络上的大规模迁移,就可以执行源网络上的migrationTo函数。该函数可以移动资产,同时为目标网络创建MassDeposit对象。

因此,目标网络应实现acceptMigration函数。更多信息在这里

rollup之间的迁移标准将通过EIP进行标准化。

即时取款

在Zkopru中,提取者可以通过设置每个提取note的即时提取费用来请求即时提取。然后,任何人都可以提前为未完成的提款付款并收取费用。

为了请求即时提款,所有者为她的note生成ECDSA签名并进行广播。拥有足够资产且可支付的任何人都可以使用签名提前支付取款。一旦Zkopru成功包含该交易,智能合约便将提款note的所有权转移给付款人。最后,预付款人在完成交易后将其提取。

我们可以有一个分散的公开市场来收取即时取款费。要跟进最新进展,请订阅此github:?https://github.com/zkopru-network/zkopru/issues/333

结论

根据此规范,我们已成功使用Circom,Solidity,Typescript等构建了测试网。

使用zk-SNARK和Optimisticrollup的以太坊二层私人交易扩展解决方案。-zkopru-network/zkopru

首先,我们可以实现了一种每笔zk交易可承受的gas成本。平均值约为8800gas,当gas限制为1,150,000且区块时间为13.2秒时,理论上最大的TPS为105。在Zkopru中,交易数据消耗约534个字节。由于证明数据为256字节,因此如果将来应用证明聚合,我们可以减少大约两倍的交易成本。否则,每个区块提出和最终确定的存储成本分别约为168kgas和55kgas。当我们包括350笔交易时,此成本约为区块生成成本的6.7%。

此外,我们可以利用OptimisticRollup的灵活性来实现许多功能。首先,Zkopru通过多个SNARK验证密钥支持各种类型的交易。您甚至可以使用1个输入和4个输出,或4个输入和1个输出完成一笔交易。通过OptimisticRollup的灵活性,使其支持多种类型的交易非常简单。其次,Zkopru实现了精确类型的挑战案例。这意味着,如果区块的第n个交易有问题,则质询仅检查该特定交易。

另外,Zkopru需要您在计算机上运行节点,这一点也很重要。因此,SNARK高效率性和轻节点是软件实现要考虑的重要因素。因此,我们将使用Typescript和NodeJS构建该项目,以供将来在基于本机的移动应用程序中使用。预计轻型节点将仅消耗约50?100MB的存储空间用于树管理。

总结一下工作,我们希望Zkopru可以用于以太坊的隐私交易层。它既快速,便宜,又可移植到升级版本。欢迎感兴趣的人为该项目进行捐款。您可以通过Zkopru的文档页面查看一个已经组织过的版本。

感谢你阅读本文。

参考文献:

Ethereum93/4:Optimisticrollupforzk-Mimblewimble1

BarryWhitehat’szk-rollup1

JohnAdler’sMinimalViableMergedConsensus1

Plasma-group’sOptimisticRollup

BatchDepositsforrollup/mixers/MACI

Massmigrationtopreventuserlockininrollup

标签:KOPMERPOSMASKOP币Virtual GamerPOSW币metamask官网下载2023年最新版本

火必热门资讯
去中心化借贷项目Teller获100万美元种子轮融资,用信用评分降低DeFi贷款利率

价值数十亿美元的去中心化金融产业构建于即时加密货币贷款之上,但是它似乎被赋予了过多的责任。目前的去中心化借贷协议确定信贷风险的方式意味着,贷款需要大量前期资金或收取高利率.

1900/1/1 0:00:00
2020第二季度 | 数字资产衍生品交易所行业研究报告(上)

前言 整体而言数字资产交易市场第二季度表现不如第一季度,主要原因在于六月一整个月市场波动极小,长时间处于横盘状态。比特币减半带来的市场情绪被消耗殆尽,赚钱效应较低的情况下,整个市场交易都较为冷清.

1900/1/1 0:00:00
Coinbase即将上市?一文回顾加密独角兽养成记

作者:?CoinVoiceCoinbase的使命-为世界创造一个开放的金融体系。Coinbase上市风波昨日据路透社援引三位知情人士称,Coinbase已开始准备上市工作,最早可能在今年完成上市.

1900/1/1 0:00:00
二元期权风险极高!COMP 代币为标的资产的七日二元期权上线了

怀揣着无比激动的心情,我们要宣布一则新消息:以COMP代币为标的资产的七日二元期权上线啦! 二元期权很好理解,而且容易上手,因此对于那些想要投机资产未来价格的用户来说,是非常好的金融产品.

1900/1/1 0:00:00
以太坊基金会研究员AMA:Phase 0 最早什么时候启动?

转自:以太坊爱好者 作者:曾汨 研究员JustinDrake认为最早2021年1月3日启动,但是V神不认可。编者注:2020年7月,以太坊基金会研究员再一次在Reddit上举行AMA活动。本文为问答内容的节选.

1900/1/1 0:00:00
科普 | 一文读懂去中心化预言机 NEST 3.0

这是一个设计精巧的博弈体系,众人在博弈中输出交易对报价,并产生众多功能性代币。这个系统如何运转?各个代币有何用途?原文:www.NESTfans.com作者:LeftOfCenter匿名团队开发的去中心化预言机系统NEST在7月13日.

1900/1/1 0:00:00