ZKSwapV2?版本预计将于6月初正式上线,届时新版本将会支持Layer2?的自主无限上币,用户可以自主添加自己发行的ERC20token?到ZKSwap?的Layer2?支付网络和兑换网络,实现免费实时转账任意ERC20?代币以及免费实时兑换任意ERC20?代币。
ZKSwap?在V1?的基础上,V2?版本新增了如下功能:
1)"?限"上币-??户在?付?定费?的情况下,可以?主添加任意Token,并可创建交易对;
2)优化电路分支的实现,提升电路效率-??持?个账户,两个余额的修改;
3)优化提现体验-V1?版本中,提现的操作和区块验证操作捆绑在?起。由于每笔gas?费?的限制,导致区块中的提现的个数受限,特别是在聚合验证的情况下,受限更多。V2版本将会优化用户的提现体验。
1.Token管理
ZKSwapV2?版本将?持三种类型的?Token:FeeToken、UserToken?和LPToken。总共?持2^16?个Token。?
1.1FeeToken?
FeeToken?只能由Governor?添加,主要为ETH、ZKS、USDT、USDC?和BTC?等。
1.2UserToken
UserToken??户可以付费添加。
1.3LPToken?
ZKSwap??户创建交易对时,必须?付费?。LPToken?将在?户创建交易对时?动添加。用户创建的交易对中必须有?种?Token?是?FeeToken。UserToken?能创建的交易对个数受限。?
1.4GovernorConfig?
Governor?可以设置添加UserToken?和修改创建交易对?付的费?。
2.?账户管理
ZKSwap?V2?版本将?持2^28?个账户。其中账户0?为Validator?账户。
3.Fee模型
ZKSwapV2?版本上的Layer2?交易,可以指定FeeToken?中的?种作为?续费。?
4.PubDataofTransactions?
ZKSwapV2?版本上的所有交易都需要打包提交PubData?到Layer1。为了保持最优的电路性能,Chunk???为11?字节,兑换和转账只需要2?个Chunk。
4.1Noop?
ZKSwapV2?版本允许存在空交易,来填充Layer2?区块。
a.pubdata?
pubdata?的总?度=1?字节。
4.2Deposit?
用户从ZKSwap?Layer1?发起充值操作时,系统会将用户?Layer1?的资产映射到Layer2。
a.?接?函数
functiondepositERC20(IERC20_token,uint104_amount,address_franklinAddr)?
functiondepositETH(address_franklinAddr)?
b.pubdata?
pubdata?的总?度=1+4+2+16+20=43?字节。总共4?个Chunk。?
4.3Transfer?
用户通过ZKSwap?Layer2?发起的转账交易,可实现任意Token?的转账。
a.pubdata?
pubdata的总?度=1+4+2+4+5+1+2=19?字节。2?个Chunk。
4.4TransferToNew?
用户通过ZKSwap?Layer2?发起转账交易,可实现任意Token?的转账。转账对?不需要提前创建账户。
a.pubdata?
pubdata?的总?度=1+4+2+20+4+5+1+2=39?字节。4?个Chunk。
4.5Withdraw?
用户通过ZKSwap?Layer2?发起提现操作,可实现任意Token?在Layer1?的提现。
a.pubdata?
pubdata?的总?度=1+4+20+2+16+1+2=46?字节。5?个Chunk。
4.6FullExit?
用户可直接从ZKSwap?Layer1?发起FullExit?请求,提取资产,此操作需要Layer2?提供证明。
a.pubdata?
pubdata?的总?度=1+4+2+20+16=43?字节。4?个Chunk。
4.7ChangePubKey?
用户通过在ZKSwap?Layer2?发起提取交易,可实现任意Token?在Layer1?的提现。
a.pubdata?
pubdata?的总?度=1+4+20+20+4=49?字节。5?个Chunk。
4.8CreatePair?
用户通过ZKSwap?Layer1?发起交易池的创建。创建交易池需要在Layer1?创建对应的智能合约。
a.?接?函数
functioncreatePair(address_tokenA,address_tokenB)?
b.pubdata?
pubdata?的总?度=1+4+2+2+2+20=31?字节。总共3个Chunk。
4.9AddLiquidity?
用户通过ZKSwap?Layer2?添加流动性。
a.pubdata?
pubdata?的总?度=1+4+4+5+5+5+5+1+2=32?字节。总共3?个Chunk。
4.10RemoveLiquidity?
用户通过ZKSwap?Layer2?移除流动性。
a.pubdata?
pubdata?的总?度=1+4+4+5+5+5+1+2=27?字节。总共3?个Chunk。
4.11Swap?
用户通过ZKSwap?Layer2?实现两种Token?之间的兑换。
a.pubdata?
pubdata?的总?度=1+4+4+5+5+1+2=22?字节。总共2?个Chunk。
5.CircuitOptimization?
ZKSwap?V2?版本为了降低AMM?相关操作的Chunk?个数,需要降低“Branch”的个数。原有设计在状态树上的?个Account?和?个Token?的Balance?组成?个“Branch”。在AMM?相关的操作中,如果采?FeeToken?的?式,原有的设计效率?较低,需要?持1?个Account?和2?个Token?的Balance的“Branch”。
1)AccountAuditPath(aap)
2)?该Account?下的2?个Balance(balance0/balance1)?在修改前的AuditPat(bap0/bap1)3)?该Account?下的2?个Balance(balance0'/balance1')?在修改后的AuditPat(bap0'/bap1')?
在修改前电路需要证明:?
balance0+bap0==>b_root0
balance1+bap1==>b_root0?
account(b_root0)+aap==>root?
在balance修改后电路需要证明:?
balance0'+bap0==>b_root0'?
balance1+?bap1'?==>b_root0'?
balance1'+bap1'==>b_root0''?
account(b_root0'')+aap==>root'?
6.AMMCircuitExplanation?
6.1CreatePairCircuit?
6.2AddLiquidityCircuit
6.3RemoveLiquidityCircuit?
6.4SwapCircuit
7.?WithdrawalOptimization
ZKSwapV2?版本提现操作和区块验证隔离开,区块中的提现个数将不受限制。?
在某个区块验证后,通过CheckWithdrawals?函数创建PendingWithdraws,再通过CompleteWithdrawls?完成提现。CompleteWithdrawls?函数需要增强可以优先处理某个PendingWithdraws。区块验证是针对多区块聚合实现的。CheckWithdrawals?针对每个验证后的区块进?处理。创建?个PendingWithdraw?的gas?费?在7w?左右,按照?个交易最?的gas?费?1250w?来说的话,?个区块?持的最?的提现个数是178?笔。
7.1checkWithdrawals?
7.2completeWithdrawals?
8.Limitation?
1.FeeToken:32个;UserToken:16352个;Pair:49152?
2.?兑换中交易对的2?个Token,其中一个必须是FeeToken;
3.?兑换时收取的费用将是2?个Token?中的一个FeeToken;
4.?所有交易的?额最?为120bit,且任何中间计算变量的最?值为120bit。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。