同理,假如zk生意业务建设的是withdrawal输出,Zkopru将它们插手withdrawal树。一旦树的根被标志为确定状态,所有者在证明所有权之后可以提取资产。
解密
Withdrawal树
Zkopru并没有回收电路证明加密协议。因此,如若发生意业务者没有利用得当的共享钥匙或数据,吸收者将不会收到该钱币。
Master seed 32 byte 随机生成 规复钥匙
Zkopru支持原子互换的方法很是直接。假如A和B想互换他们的资产,他们建设各自的note,并在生意业务信息中透露适当的数据。然后打包者该当将相对的生意业务配对或删除。
· 支持 ETH, ERC20, 甚至是 ERC721
是的,在最大本钱的区间里同时包括多笔MassDeposits是大概的。
Zkopru丛林由UTXO树,nullifier树和withdrawal树构成。
新的UTXO说明近期将更新Zkopru账户系统同时打点layer-1和layer-2的钥匙串。首先,账户里必需有一个随机生成私钥的Ethereum账户,用来在layer-1长举办操纵。其次,Zkopru钱包从Ethereum账户的私钥中建设一个Babyjubjub私钥和公钥对。这个Babyjubjub 钥匙对会被用于EdDSA和layer-2上的加密备忘录字段。UTXO输出验证
Zkopru 努力地更新树的根并仅当挑战存在时举办确认。对付挑战,Zkopru运用子树rollup要领生成链上防欺诈。子树rollup不是一个一个插手,而是将牢靠巨细的子树一次性插手。当子树深度为5时,它将一次插手32个。假如子树仅包括18个,剩下的14个将会永远配置成0值。这个子树rollup的要领对较量于rollup,极大地减小了gas本钱——约莫20倍。请到 contracts/controllers/challenges/RollUpChallenge.sol查察源代码,想知道子树的运作道理请查察packages/contracts/contracts/libraries/Tree.sol。· 通过利用大量存款和大局限迁移,我们可以构建一个inter-layer-2的网络.
Nullifier tree’s root bytes32
生意业务Bob 消费3000 DAI 币,建设2000 DAI给他本身,1000 DAI币给Alice。
1. 建设一个姑且密钥和其同态计较值
var intermediate_hash = poseidon(ether, pub_key.x, pub_key.y, salt)
区块内容
重中之重,来这里试试我们的测试版 https://zkopru.network
public_ephemeral, ciphertext = parse(memo)
UTXO树是由UTXO构成的仅答允追加的Merkle树。用户可以通过提交包括Merkle证明,利用UTXO作为生意业务的流入,生意业务的功效将被插手UTXO树。
3. 构建子树,举办子树rollup
因此,目标网络该当挪用 acceptMigration 函数。详情见 这里
Latest UTXO tree’s leaf index uint256
public_ephemeral = g^e
本钱(gas/leaf) 180k 351k 5.2k
Property type
UTXO 存在性证明
2. 以32的块巨细来打散收集好的生意业务
即时提款
当用户在Zkropu存入资产时会产生什么
大局限迁移的根基思想很简朴。当layer-1合约上的 deposit生意业务成立一个 MassDeposit工具, “迁移” 类此交际易输出可以建设一个 MassMigration,为方针网络建设 MassDeposit 。
Migrations’ root bytes32
我们可觉得即时提款成立一个分手的果真市场。对这个话题有乐趣的话请存眷这个github issue https://github.com/zkopru-network/zkopru/issues/33 9](https://github.com/zkopru-network/zkopru/issues/33)
UTXO 树和 withdrawal 树在Burrito 版本中将有64层深度. https://github.com/zkopru-network/zkopru/issues/35 3
Zero-sum证明
Zkopru是什么?
原子互换
Key 巨细 如何获得 在哪利用
Merkle树说明
总结
区块内容由生意业务,充值和迁移构成。并且区块头应该包括了区块的正确信息。假如区块头不正确,区块视为无效。
最后,zk生意业务该当担保UTXO输入和UTXO输出金额相等,包罗手续费。
性质 描写
简而言之,我们但愿Zkopru可以在Ethereum的隐私生意业务层中被回收。它具有快捷,便宜,而且可迁移到更新的版本的特性。
同UTXO树一样,Zkopru努力更新nullifier树根。假如进程存在任何问题,我们可以通过生成一个链上反欺诈来证明nullifier被多次利用,想知道这是如何运作的请查察RollUpChallenge.sol 和 SMT.sol。
Commitment证明
https://ethresear.ch/t/zkopru-zk-optimistic-rollup-for-private-transactions/7717
首先,每笔zk生意业务的gas用度都是可以我们包袱的,平均在8800 gas。当gas limit是11,950,000,block time是13.2秒时,理论TPS最大值为105。在Zkopru中,生意业务数据仅占534字节。因为证明数据是256字节,在将来我们可以通过证明聚合来淘汰两倍的生意业务本钱。除此以外,每个区块提出和确定的存储用度别离是168k和55k。当完成350次生意业务时,这个本钱或许是区块生成本钱的6.7 %。
UTXO输入验证
3. 将所有nullifier标志成已利用。在更新进程中,假如树根没有被任何nullifier改变,废弃这笔生意业务因为该生意业务试图实验双花。
· 利用 optimistic rollup来打点区块
Token Address (Optional) 当包括ERC20可能ERC721代币条约的地点。默认值为0
MassDeposit是用于rollup证明的mergedLeaves(bytes32)。假如协调者提出了一个含有 MassDeposits的区块,区块将MassDeposit中所有Note插手它的UTXO Merkle树。
2. 用姑且密钥乘以吸收者的公钥
var result_hash = poseidon(intemediate_hash, token_address, erc20, nft)
value, // 32 byte
data = {
举个例子,Alice想用她的50ETH调换Bob的1000DAI:
zk生意业务可以发生三种差异的输出:一般UTXO生意业务(layer2的普通生意业务),提取生意业务(layer2中的非凡生意业务),迁移生意业务(layer1和layer2交互生意业务)。假如zk生意业务发生UTXO生意业务,将它们加到 UTXO树上。当发生提取生意业务输出时,Zkopru将它们加到withdrawal 树上。最后,迁移生意业务,也就是layer-2区块的一部门, 包括了区块中每一个zk生意业务的迁移输出。
一笔zk生意业务可以包括81字节给吸收者的加密备忘录字段。因为零常识的特性,纵然是吸收者也无法在没有必然操纵的环境下相识到这些信息,因此当我们想保持操纵的轻便性,我们可以在备忘录字段上为吸收者添加一些保密信息。
Hash Poseidon Keccak256 Keccak256
Fee uint256
public_ephemeral = generator.multiply(ephemeral)
假如区块只有配对生意业务的个中一个生意业务,打包者将被处罚。协调者如那里理惩罚MassDeposits?
Metadata uint256
2. 利用共享钥匙解密密文
Ethereum public address 20 byte 私钥派生 Layer 1 操纵
一个单一的UTXO是为了存在性证明的稀疏Merkle树。它回收的是Poseidon hash,SNARK中最自制的hash函数之一,来生成zk-SNARK证明以埋没哈希和它的路径。
· 当gas limit为11.95M,block time为13.2s时,最大TPS是105
只有所有者拥有利用UTXO的权限。为告竣这个条件,每一个note都有一个公钥(Babyjubjub点)。通过利用对应的密钥,所有者可以建设EdDSA签名来证明他/她的所有权。
利用UTXO需要满意以下几个条件:
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。