LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > ZeroSwap:基于ZK-Rollup的 DEX【下】

ZeroSwap:基于ZK-Rollup的 DEX【下】

2020-10-02 蓝狐笔记 来源:区块链网络


ZeroSwap的整体框架
从大框架来说,ZeroSwap系统包括了链上智能合约、链下ZeroSwap 服务端、零知识证明系统以及前端用户界面。具体如下图:(ZeroSwap的整体框架,Source:ZeroSwap白皮书)链上智能合约是部署在以太坊上的一组智能合约。用户的代币会存入其中,它还会记录和验证Layer 2状态的更新和对应的证明,它是连接链上和链下的桥梁。ZeroSwap的Layer 2服务端处理链下的交易,一方面它通过接口跟用户发生交互,一方面它监听以太坊链上的交易。交易请求会放入ZeroSwap的内存池,区块提议者对交易进行Rollup,生成新区块,状态Keeper则负责更新Layer 2中的代币状态,并将其发送给Committer。Committer跟Prove server通信,获得对应交易的证明。这些状态和所对应的SNARK证明会发送到链上的ZeroSwap智能合约。ZeroSwap的零知识证明系统两个特点。一是具有分布式架构,其Prove server支持多个Prover,多个Prover可以查询Prove server的证明任务,在生成证明后返回给Prove server。二是采用了PLONK的零知识证明算法,它可以极大降低零知识证明的使用门槛。PLONK的全局信任设置只需要生成一次,电路规模在一定范围内可复用。ZeroSwap的交易过程会反映到其状态树的变化上。ZeroSwap的状态树是高度为34的默克尔树,用于记录当前系统中所有账户的余额状态。根节点Root的子节点为系统中所有账户节点。账户节点包括普通账户节点和Pair账户节点。普通账户节点用于记录账户内所有代币的状态,可以有多个叶子节点,每个叶子节点代表一个类型的代币以及其数量。Pair账户节点用于记录ZeroSwap中某个交易对资金池的状态。它只包含两个叶子节点,每个叶子节点代表该资金池中其中一个代币的余额和类型。
(ZeroSwap上的状态树,Source:ZeroSwap白皮书)总结来说,ZeroSwap在技术有自己的特色,例如它采用了Plonk证明系统,其ZK证明电路可以支持不同大小,其初始可信设置只需一次,且在已有设置上可升级;在Layer 2层面实现了Uniswap的兑换逻辑,有可能成为首个实现基于ZK-Rollup的AMM模式的DEX,如果顺利实现,可以极大降低用户的费用,加快交易速度。
ZeroSwap的用户操作的背后
跟目前Layer 1上的DEX相比,基于Layer 2的ZeroSwap上有哪些操作?这些操作的背后跟Layer 1上的DEX又有什么不一样?从用户前端操作的角度,ZeroSwap比Uniswap多了存入和提取代币的操作,其他操作基本一致。从交易者的角度,在ZeroSwap上完成交易,需要哪些操作?这些操作的背后是什么?相对于Layer 1上的DEX交易来说,Layer 2上的DEX交易需要将代币从Layer 1账户上存入到Layer 2的账户,之后才能进行代币的兑换或转账。这里会涉及到代币的存入、转账、兑换以及提取操作。首先是向Layer 2账户存入代币。用户将以太坊链上的代币存入ZeroSwap的合约,一旦ZeroSwap监听到用户在链上将代币转入ZeroSwap的合约之后,它会根据交易的详情更新状态树。ZeroSwap会根据交易找到相应的账户,并根据存入金额更新账户中该代币的余额。如果账户还没有相应代币的叶子节点,首先会创建该代币的叶子节点,然后在更新状态。叶子节点的状态更新会导致根节点哈希的改变。根节点哈希会与存入交易的SNARK证明一起发送到链上的ZeroSwap合约中。其次是在Layer 2上进行转账和交易。在ZeroSwap上进行转账就是把一种代币从一个账户发送到其他账户的过程。转账也由用户在Layer-2上发起,ZeroSwap Server收到转账请求后找到相应的收发账户,更新这两个账户下的代币余额状态。更新后的状态树的根节点哈希和转账相对应的SNARK证明一起发送到ZeroSwap的智能合约上。不过,它并不是链上的代币转移,因为代币还在ZeroSwap合约中。用户在Layer 2上进行交易,它本质上是用自己的代币与Layer 2中代币对资金池中的代币进行兑换。用户将其在ZeroSwap账户下的某个代币发送到相应的代币对账户,ZeroSwap则根据AMM算法计算出用户可以获得的相应代币的数量,并发送给用户账户。与此同时,ZeroSwap将更新后的状态树根节点哈希以及兑换操作所对应的SNARK证明发送到ZeroSwap合约上。在代币兑换后,跟转账操作一样,链上的代币状态不会发生改变,因为代币还在ZeroSwap合约中。(ZeroSwap上兑换操作流程,Source:ZeroSwap白皮书)最后跟Layer 1上的DEX不同,Layer 2 上的DEX代币要回到Layer 1,用户还需要将代币从Layer 2账户提取到Layer 1。当用户从ZeroSwap中提取代币时,首先用户在Layer 2上发起,之后ZeroSwap 服务器会收到用户的提币请求,之后更新该用户账户下对应的代币状态,并将更新后的状态树根节点哈希以及提取操作的SNARK证明发送到链上的ZeroSwap合约。合约进行验证,然后将合约中锁定的相应代币发送到用户在链上的账户。这一点类似于传统CEX的提币操作,不过不同的是,用户可以自由掌控ZeroSwap DEX的提币,而CEX的提币则会受限于CEX机构。在AMM模式的DEX中,交易者要完成交易,首先要有代币对的流动性池。那么如果从流动性提供者的角度,在ZeroSwap上如何提供流动性,如何移除流动性?其背后是什么原理?流动性提供者如何添加流动性?首先由用户在Layer 2上发起添加某个代币对流动性的请求,ZeroSwap服务器收到请求后会找到对应请求人的账户和代币对账户,然后根据AMM算法要求将用户账户下的两种代币转入到代币对账户。系统根据当前代币池的资金量,计算出用户可以得到的LP代币数量,LP代币代表了用户在流动性池中权益份额。状态更新后的状态树根节点哈希和对应的添加流动性证明一起发送到ZeroSwap合约中。(往代币池注入流动性,Source:ZeroSwap白皮书)流动性提供者如何移除流动性?首先由用户在Layer 2上发起移除流动性的请求,ZeroSwap服务器收到用户请求后会找到对应请求人的账户并销毁相应数量的LP代币。同时,该代币对账户会根据销毁LP的数量按比例将两种代币返回给请求人的账户。状态更新后的状态树根节点哈希和相应的移除流动性操作证明一起发送到ZeroSwap合约中。最后,ZeroSwap上还有一个提取流动性的操作,它并不是移除流动性,而是将流动性池的LP代币从Layer 2 提取到Layer 1。从操作过程看,它跟其他代币从Layer 2 提取回Layer 1是一致的。不过不同点在于LP代币还有一个“铸造”,需要在Layer 1生成LP代币,发送到相应账户。ZeroSwap什么时候推出?根据ZeroSwap发布的计划看,2020年10月10日可以在以太坊测试网上使用,支持Layer 2交易池的创建、兑换以及流动性的添加和移除;2020年10月20日支持多个交易池的组合。2020年10月30日正式推出,在以太坊主网上启动,支持类似于Uniswap的各种功能。2020年12月30日实现Plonk证明系统的电路优化,以及证明性能GPU优化;2020年11月初开启流动性挖矿。
Layer 2与DEX的发展
DEX不仅是DeFi的重要发展,也是整个加密领域最大的发展之一。在加密领域,CEX是最大的价值捕获者。如今的DEX逐渐演变成为CEX的实质对手。不过,目前的DEX在可扩展性、交易费用、交易速度、交易体验等方面依然存在短板,无法达到CEX的水平,但随着Layer 2解决方案的推出,尤其是Zk-Rollup技术的推出,DEX会逐渐解决其短板。一旦这些技术上的短板得以解决,DEX有机会走向大规模的人群的采用,进而在实质上真正成为CEX的对手。------风险警示:蓝狐笔记所有文章都不能作为投资建议或推荐,投资有风险,投资应该考虑个人风险承受能力,建议对项目进行深入考察,慎重做好自己的投资决策。加入蓝狐笔记的知识星球:https://t.zsxq.com/Iq3VzfM 欢迎加入蓝狐笔记群微信:donnell008

—-

编译者/作者:蓝狐笔记

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...