UniswapV2是链上交易所的下一个迭代产品。
Uniswap是Ethereum区块链上的一个链上流动性协议,它可以实现无信任的代币交换,这意味着所有的交易都是由智能合约执行的,而不需要中介或受信任方。这种去中心化的交换代币的方法已经被证明受到ERC20代币持有者的欢迎,以交换他们的代币并为代币对提供流动性。
Uniswap于2020年5月19日在Ethereum主网上推出了第二个版本,以配合核心合约v1.0.1的发布,在此之前,Uniswap已经在Rinkebytestnet上测试了一段时间。在撰写本文时,该协议已经在主网上使用了2个多月,到目前为止,还没有发生与智能合约完整性有关的重大破损或问题。
如果你对持有和/或交易加密货币、Ethereum发展、金融科技或一般的金融趋势感兴趣,Uniswap应该会吸引你的注意。它在2020年第三季度经历了快速增长,以配合蓬勃发展的DeFi领域。Uniswap作为一个独立的服务存在,但也可以整合到第三方钱包或Dapps中。除此之外,其他智能合约也依靠Uniswap作为其服务的基础。
本篇将以中立的方式向读者介绍与UniswapV2一起推出的增强功能,详细介绍主要功能。
UniswapV1提供的基础
UniswapV1奠定了链上代币交换和去中心化流动性池的基础,为用户提供流动性的奖励,并收取少量费用进行交换。
代币汇率不是实盘,而是使用所谓的"恒定产品公式"来计算,这一点将在下面简单重温。它本质上提供了一种机制,以保持代币价值相对于相关代币对的平衡。
基础代币对都有与之相关的独立流动性池,用户可以通过将其中任何一种代币存入相应的池子来贡献流动性。然后,每当有交易发生时,流动性提供者就会得到0.3%的手续费分成奖励--这个分成是基于其池中代币相对于整个池子供应量的比例。
UniswapV2中的新内容
UniswapV2为协议带来了一系列升级和增强,这些升级和增强建立在第一个迭代引入的交换和流动性机制的基础上。主要变化包括
ERC20到ERC20的代币交换,其中ETH不再需要作为中介代币来促进交换过程。这也被称为"ETH桥接"。取消这一要求后,交易次数减少了一半,节省了gas费。这也使得Dapps在没有设置直接交换代币池的情况下,可以有效地找到从一个代币到另一个代币的"路线"。本篇将进一步详细访问这些变化。
价格预言机功能,允许根据每个区块的代币对价格进行时间加权平均定价。我们将详细解读这个机制背后的机制。
闪电交换,或者说能够从Uniswap池中"借用"代币,与外部服务进行一些任意交易,并在一次交易中偿还你最初的借贷资金。该交易是具有原子性的,这意味着如果在任何阶段交易失败,它将被全额还原。这种功能的明显用例是利用流动性池执行套利交易,但也有其他用例提供了好处,比如削减执行特定DeFi操作的gas费用,比如关闭MakerVault。
通过将无效返回类型的transfer和transferFrom视为成功转移,支持非标准的ERC20代币。这看起来似乎微不足道,但主要的代币如USDT和BNB在它们的转移方法上正是这样做的。包括广泛采用的没有完全遵守ERC20标准的代币,加强了Uniswap在使用量上优先链上交易所的主张。
额外的实用方法,以防止在转移的代币数量超过Solidity所能支持的情况下出现溢出。
非标准ERC20代币必须支持官方EIP规范中指定的方法,但返回类型以及由此产生的方法签名可能与概述的内容不同。这个问题使得令牌成为非标准的。重命名或删除所需的方法也会使令牌成为非标准,但这种做法较少,而且如果像Uniswap这样的协议想要支持这种与最终确定的规范的偏差,则需要大量的变通方法。
UniswapV2引入了一个可切换的0.05%的协议收费,它吃掉了标准的0.3%的费用,但它目前是关闭的--只有通过去中心化的治理机制才能开启。关于这一点,我们将在下文中介绍更多。
UniswapV2在经过广泛的测试和审计后推出。
已经有充分的证据表明,如果智能合约中存在bug,智能合约的不可更改性会带来灾难性的代币损失/冻结的风险。如果智能合约写得很差,并且包含错误,导致锁定资金,那么就无法恢复这些交易。
值得称道的是,Uniswap团队遵循了行业标准的做法,以确保其合约中的错误和逻辑错误的风险保持在最低限度。
从UniswapV1到V2,合约从第一个版本的Vyper转到了Solidity中重新编写。这成功地克服了Vyper的局限性,并允许Uniswap开发人员利用最新的Solidity版本推出的较新的操作码,进一步优化了合约执行中所使用的CPU资源。
让Uniswap工作的主要合约如下:
智能合约的结构,使UniswapV2发挥作用
Router2是Router1的一个更优化的版本,但它们都执行同样的任务。Uniswap建议所有的开发者现在转而使用Router2合约。
Uniswap的全面改版需要第三方的审核,由知名的开发工作室进行审核,并在测试网上进行大量的测试,以模拟真实世界的使用情况。这一切都发生了--ConsensysDiligence是提供UniswapV2源码综合报告的各方之一。
在主网发布之前,UniswapV2似乎已经过广泛的审计和审查。在源代码上进行这一关键任务的尽职调查,很可能确保了未来不会发现任何重大错误。但是Uniswap仍然有一个Bug赏金计划,如果发现任何重大缺陷将会获得赏金。
安全性是区块链领域的一个持续关注点,考虑到该领域的交易价值量,这一点是可以理解的。对涉及共识、区块创建和交易验证的底层区块链机制的攻击是学术界大量研究的重点,但智能合约的完整性在Ethereum上可以说是同样重要的,被锁定的代币依靠智能合约逻辑的完整性来保持它们的安全和可及性。
现在让我们深入了解UniswapV2的一些机制,进一步了解该协议的功能。
UniswapV2如何工作
每一对代币都有自己的资金池,通过合约初始化,并向池子存入初始资金,以提供流动性。
代币的汇率是根据池中两个代币的供求情况计算的,采用所谓的恒定函数。利用恒定乘积公式,根据供求关系计算某一对代币的价值,其中价值沿着公式的曲线移动。
决定UniswapV2上汇率的恒定积公式
汇率是根据简单的公式自动计算的。x*y=k相应的曲线代表了所有可能的代币价值每对代币都有自己的曲线来调节当前的汇率状态。
如果B代币需求量巨大,数量枯竭,那么价格将成倍增长,并因此向曲线左侧移动。另一方面,如果B代币有充足的供应,相对于A代币没有需求,那么价格将在曲线的右侧趋于平稳。请注意,这种供需平衡是基于相对于A代币,所以相同的B代币与不同的A代币搭配将代表不同的数量和价格比例。
由于这些机制,Uniswap依靠套利交易来保持代币的价值与市场其他部分保持一致。本质上,这些协议仍然需要一个外部交易生态系统来控制代币价值。每个代币对的汇率将不断更新以匹配市场价格--这为交易者提供了巨大的机会。
当您在Uniswap.exchange上切换代币对时,汇率会实时应用。JavaScriptSDK为其他应用程序提供了API,以提供他们自己的接口来获取代币对及其汇率。除了ERC20代币外,汇率还适用于原生ETH。
UniswapV2用户界面中应用于ETH|DAI交易对的汇率。
现在让我们来介绍一下UniswapV2上可以进行的交换类型。现在扩大的交换选择是由于ETH没有像在UniswapV1中那样被用作中介代币,也就是"ETH桥接"。
UniswapV2交换选项
如上所述,在UniswapVI中,每一个代币交换都使用ETH。在从A代币到B代币的交换中,A代币首先要兑换成ETH,然后该ETH再兑换成B代币。这就导致了双倍的交易费用和双倍的gas费因此而产生。
Uniswap文档中提到,第一次迭代是他们对去中心化自动交易所想法的"原型"。这很可能是因为开发者发现了更高效的交易执行方法,而这些方法已经在V2中得到了应用。省略ETH作为中介代币就是这样的优化之一。
去掉ETH作为实用性代币,实现了代币对的直接交换,如下图所示。
两个ERC20代币之间直接交换
这看起来很合理也很直观,也许是V1应该的工作方式。Router合约上的swapExactTokensForTokens和swapTokensForExactTokens方法可以被调用来进行这样的交易。
这些方法名中使用的Exact术语代表了你希望交易到的代币。在从DAI到ETH的交易中,如果您需要特定数量的ETH作为回报,您将使用swapTokensForExactTokens。另一方面,如果您想用准确的DAI金额换取相应的ETH值,您将使用swapExactTokensForTokens。这个约定贯穿于UniswapV2的智能合约中。
除了直接交换,用户仍然可以选择在两个代币之间进行交换,以ETH作为中间代币。当输入和输出代币没有资金池,但ETH和两个代币之间存在资金池时,这就变得很有用。
在通过ETH交换DAI和LINK的情况下,产生的交换流程如下。
以ETH为中介代币的间接交换
允许这种交易的相应Solidity方法是swapExactETHForTokens和swapETHForExactTokens,以及swapTokensForExactETH和swapExactTokensForETH。
最后一种交换代币的手段是将交换路由到多个ERC20代币,或者白皮书所说的"任意对ERC20代币",然后再到达你想要的输出代币。当然,原生ETH代币也可以存在于任意对中。
考虑以下插图,在到达所需的LINK输出令牌之前,通过一系列代币移动DAI值。
通过一系列的代币进行资金路由,交换一个没有直接配对的代币
如果你的直接代币之间没有资金池,这种方法是很有用的,并且已经省略了前面介绍的ETH桥接。
虽然这种交换方法是可能的,但没有智能合约方法可以自动促进众多代币的交换。相反,前端应用程序必须手动编写功能代码,并向Uniswap进行多次交易调用来代替。
这种用例可能不会被大量使用--在通过1个或2个中间代币传递价值后,gas会使额外的交换变得不经济。此外,中心化交易所可能会有更便宜的代币交换。说了这么多,一旦Ethereum2.0的扩展功能和更高效的股权证明共识被并入主网,这样的能力可能会变得更加广泛,使多交易互换成为更可行的前景。
价格预言机
Uniswap的价格预言机机制允许开发者根据该代币在一些区块上的价格变动计算出平均的代币价格,这些区块也通过它们的时间戳代表一段时期。
这个时间段的累积可以是最近一小时、24小时或更长时间。
虽然Uniswap提供了代币价格,但它并没有在链上存储任何历史值。相反,Dapp开发者有责任将一段时间内的价格累积起来,计算出这段时间的平均价格。
这些价格被称为"时间加权平均价格",或TWAPS。
这个想法是通过将累积价格除以时间戳持续时间来计算出一段区块的平均价格。
以下图示总结了这种计算方法。
TWAPs是可靠的,它反映了代币在一段时间内的价值。这种方法提供了保护,防止闪电崩盘或疯狂的价格变动,这种活动在加密货币交易中并不少见。在市场出现波动的情况下,提供时间加权价格反映了代币更准确的表现。
开发者可以自由地利用价格预言机,如果需要他们的服务,他们可以通过UniswapJavaScriptSDK检索,将进一步访问。
闪电交换
FlashSwaps是由从Uniswap代币池中借入代币、用这些代币做一些事情以及偿还这些代币的多阶段过程组成的交易,所有这些都在该单笔交易中进行。如果交易的任何阶段失败了,所有的状态变化都会被还原,代币仍然保留在其对应的Uniswap池中。
考虑以下插图,显示买方可以在没有持有代币的情况下执行闪电交换。这是因为该代币价值被保证返回到池中,要么交易失败,要么买方偿还在同一交易中借用的代币。
闪电交换的一个很好的应用案例是套利交易,即保证买方获利并将原始代币价值返还给Uniswap池。买方每次都能从套利交易中获得利润。
另一个用例是利用Uniswap池来结算MakerVault,你将偿还债务,并从该Vault中提取你的抵押ETH来偿还Uniswap池。这比使用您的自有资金来实现同样的任务所需的Gas更少。
闪电交换是Uniswap相对较新的功能,但我们可以期待在不久的将来有更多的Dapp整合该功能。
在交易机器人的使用案例中,闪电交易也可以被利用来自动执行套利交易。机器人将不需要资金来执行交易,只需要识别套利机会并执行闪换交易。
新的0.05%协议费和治理
UniswapV2以"协议费"的形式为协议引入了额外的费用,当开启时,将交易价值的0.05%路由到Uniswap拥有的地址。这0.05%是从交易所标准的0.3%费用中扣除的,所以在开启这项费用时,流动性提供者将成为损失的一方。
协议费目前是关闭的,Uniswap也没有公开宣布近期会开启。
这个新增的功能看似是一个值得商榷的决定,但Uniswap开发者认为这是一个必要的功能,以支持Uniswap的长期发展和可持续性。事实证明,如果他们希望启动这一收费,就会有一个管理机制,社区需要投票决定是否启动该机制。
虽然需要达成社区共识才能启动这一功能,但这样做会给Uniswap团队带来巨大的财务优势,因此也是竞争优势,因为费用会被转移到他们的钱包。
从好的方面看,这种费用将为改进协议和整体生态系统提供资金,这将带来更多的应用,因此更多的交易费用将使流动性提供者受益。理论上,这可以弥补收费最初引入的损失。以下图示概括了这一想法。
关于将决定是否开启协议收费的治理机制,目前还没有公布太多细节,但可以假设会利用ERC20代币来提交投票,类似于Maker的治理和投票协议。
为了管理协议收费机制,UniswapFactory合约中包含了feeTo和feeToSetter方法,分别设置协议收费钱包地址和能够设置feeTo值的账户。
总结
这篇文章是对UniswapV2的全面介绍。我们已经涵盖了它所提供的一系列进步以及它们如何工作。更高效的代币交换、时间加权价格预言机和闪电交换功能是主要的增强功能,还有一些底层的改进,比如转向基于Solidity的智能合约,利用最新的操作码进行更高效的执行。
UniswapV2仍然是一个去信任的去中心化交易所,它运行在Ethereum区块链上,无法被篡改,除非基本的Ethereum被成功攻击。到目前为止,这种情况还没有发生,而且以目前运行的矿工和验证者的数量,这种情况也不太可能发生。
ETH2的Medalla测试网启动时有2万名验证者--我预计这个数字在主网启动时将会更高,验证者将得到实际价值的激励。
另一方面,UniswapV2仍然是一个不太完美的代币交易所的实现。gas费目前是历史上最高的,使得每笔Uniswap交易都很昂贵。Uniswap没有实时订单簿,导致交易者仍然依赖中心化交易所来执行交易策略。如前所述,集中式交易所在平衡Uniswap汇率方面仍然发挥着不可替代的作用,它依靠套利交易与市场均价保持同步。
UniswapV2是朝着正确的方向迈出的积极一步,但如果去中心化交易所希望完全取代中心化交易所,前方仍有重大挑战。说到这里,整个加密货币社区,尤其是Ethereum的情绪是非常积极的--可以很有信心地预计,DeFi领域在中短期内的技术能力和应用不会放缓。
RossBulat??作者
子铭??翻译
Edward??编辑
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。