风险提示:请理性看待区块链,树立正确的货币观念和投资理念,不要盲目跟风投资,本站内容不构成投资建议,请谨慎对待。 免责声明:本站所发布文章仅代表个人观点,与CoinVoice官方立场无关

DeFi 丨一文读懂 Uniswap V2 改进与创新

加密谷Live
2020年08月19日

DeFi 丨一文读懂 Uniswap V2 改进与创新

作者 | Ross Bulat

DeFi 丨一文读懂 Uniswap V2 改进与创新

Uniswap V2 是链上交易所的下一个迭代产品。

Uniswap 是 Ethereum 区块链上的一个链上流动性协议,它可以实现无信任的代币交换,这意味着所有的交易都是由智能合约执行的,而不需要中介或受信任方。这种去中心化的交换代币的方法已经被证明受到 ERC20 代币持有者的欢迎,以交换他们的代币并为代币对提供流动性。

Uniswap 于 2020 年 5 月 19 日在 Ethereum 主网上推出了第二个版本,以配合核心合约 v1.0.1 的发布,在此之前,Uniswap 已经在 Rinkeby testnet 上测试了一段时间。在撰写本文时,该协议已经在主网上使用了 2 个多月,到目前为止,还没有发生与智能合约完整性有关的重大破损或问题。

如果你对持有和 / 或交易加密货币、Ethereum 发展、金融科技或一般的金融趋势感兴趣,Uniswap 应该会吸引你的注意。它在 2020 年第三季度经历了快速增长,以配合蓬勃发展的 DeFi 领域。Uniswap 作为一个独立的服务存在,但也可以整合到第三方钱包或 Dapps 中。除此之外,其他智能合约也依靠 Uniswap 作为其服务的基础。

本篇将以中立的方式向读者介绍与 Uniswap V2 一起推出的增强功能,详细介绍主要功能。

Uniswap V1 提供的基础

Uniswap V1 奠定了链上代币交换和去中心化流动性池的基础,为用户提供流动性的奖励,并收取少量费用进行交换。

代币汇率不是实盘,而是使用所谓的 " 恒定产品公式 " 来计算,这一点将在下面简单重温。它本质上提供了一种机制,以保持代币价值相对于相关代币对的平衡。

基础代币对(如 DAI 兑换 ETH,或 DAI 兑换 USDC)都有与之相关的独立流动性池,用户可以通过将其中任何一种代币存入相应的池子来贡献流动性。然后,每当有交易发生时,流动性提供者就会得到 0.3% 的手续费分成奖励--这个分成是基于其池中代币相对于整个池子供应量的比例。

Uniswap V2 中的新内容

Uniswap V2 为协议带来了一系列升级和增强,这些升级和增强建立在第一个迭代引入的交换和流动性机制的基础上。主要变化包括

  • ERC20 到 ERC20 的代币交换,其中 ETH 不再需要作为中介代币来促进交换过程。这也被称为 "ETH 桥接 "。取消这一要求后,交易次数减少了一半,节省了 gas 费。这也使得 Dapps 在没有设置直接交换代币池的情况下,可以有效地找到从一个代币到另一个代币的 " 路线 "。本篇将进一步详细访问这些变化。

  • 价格预言机功能,允许根据每个区块的代币对价格进行时间加权平均定价。我们将详细解读这个机制背后的机制。

  • 闪电交换,或者说能够从 Uniswap 池中 " 借用 " 代币,与外部服务进行一些任意交易,并在一次交易中偿还你最初的借贷资金。该交易是具有原子性的,这意味着如果在任何阶段交易失败,它将被全额还原。这种功能的明显用例是利用流动性池执行套利交易,但也有其他用例提供了好处,比如削减执行特定 DeFi 操作的 gas 费用,比如关闭 Maker Vault。

  • 通过将无效返回类型的 transfer 和 transferFrom 视为成功转移,支持非标准的 ERC20 代币。这看起来似乎微不足道,但主要的代币如 USDT (Tether)和 BNB (Binance Coin)在它们的转移方法上正是这样做的。包括广泛采用的没有完全遵守 ERC20 标准的代币,加强了 Uniswap 在使用量上优先链上交易所的主张。

  • 额外的实用方法,以防止在转移的代币数量超过 Solidity 所能支持的情况下出现溢出。

非标准 ERC20 代币必须支持官方 EIP 规范中指定的方法,但返回类型以及由此产生的方法签名可能与概述的内容不同。这个问题使得令牌成为非标准的。重命名或删除所需的方法也会使令牌成为非标准,但这种做法较少,而且如果像 Uniswap 这样的协议想要支持这种与最终确定的规范的偏差,则需要大量的变通方法。

Uniswap V2 引入了一个可切换的 0.05% 的协议收费,它吃掉了标准的 0.3% 的费用,但它目前是关闭的--只有通过去中心化的治理机制才能开启。关于这一点,我们将在下文中介绍更多。

Uniswap V2 在经过广泛的测试和审计后推出。

已经有充分的证据表明,如果智能合约中存在 bug,智能合约的不可更改性会带来灾难性的代币损失 / 冻结的风险。如果智能合约写得很差,并且包含错误,导致锁定资金,那么就无法恢复这些交易(除非对整个区块链进行硬分叉--考虑到 Ethereum 的规模和现在有多少方依赖它,这种情况不太可能发生)。

值得称道的是,Uniswap 团队遵循了行业标准的做法,以确保其合约中的错误和逻辑错误的风险保持在最低限度。

从 Uniswap V1 到 V2,合约从第一个版本的 Vyper 转到了 Solidity 中重新编写。这成功地克服了 Vyper 的局限性,并允许 Uniswap 开发人员利用最新的 Solidity 版本推出的较新的操作码,进一步优化了合约执行中所使用的 CPU 资源(以及因此产生的 gas 费用)。

让 Uniswap 工作的主要合约如下:

DeFi 丨一文读懂 Uniswap V2 改进与创新

智能合约的结构,使 Uniswap V2 发挥作用

Router2 是 Router1 的一个更优化的版本,但它们都执行同样的任务。Uniswap 建议所有的开发者现在转而使用 Router2 合约。

Uniswap 的全面改版需要第三方的审核,由知名的开发工作室进行审核,并在测试网上进行大量的测试,以模拟真实世界的使用情况。这一切都发生了--Consensys Diligence 是提供 Uniswap V2 源码综合报告的各方之一。

在主网发布之前,Uniswap V2 似乎已经过广泛的审计和审查。在源代码上进行这一关键任务的尽职调查,很可能确保了未来不会发现任何重大错误。但是 Uniswap 仍然有一个 Bug 赏金计划,如果发现任何重大缺陷将会获得赏金。

安全性是区块链领域的一个持续关注点,考虑到该领域的交易价值量,这一点是可以理解的。对涉及共识、区块创建和交易验证的底层区块链机制的攻击是学术界大量研究的重点,但智能合约的完整性在 Ethereum 上可以说是同样重要的,被锁定的代币依靠智能合约逻辑的完整性来保持它们的安全和可及性。

现在让我们深入了解 Uniswap V2 的一些机制,进一步了解该协议的功能。

Uniswap V2 如何工作

每一对代币都有自己的资金池,通过合约初始化,并向池子存入初始资金,以提供流动性。

代币的汇率是根据池中两个代币的供求情况计算的,采用所谓的恒定函数。利用恒定乘积公式,根据供求关系计算某一对代币的价值,其中价值沿着公式的曲线移动。

DeFi 丨一文读懂 Uniswap V2 改进与创新

决定 Uniswap V2 上汇率的恒定积公式

汇率是根据简单的公式自动计算的。x*y=k 相应的曲线代表了所有可能的代币价值 每对代币都有自己的曲线来调节当前的汇率状态。

如果 B 代币需求量巨大,数量枯竭,那么价格将成倍增长,并因此向曲线左侧移动。另一方面,如果 B 代币有充足的供应,相对于 A 代币没有需求,那么价格将在曲线的右侧趋于平稳。请注意,这种供需平衡是基于相对于 A 代币,所以相同的 B 代币与不同的 A 代币搭配将代表不同的数量和价格比例

由于这些机制,Uniswap (以及其他依赖恒定产品公式的去中心化交易所)依靠套利交易来保持代币的价值与市场其他部分保持一致。本质上,这些协议仍然需要一个外部交易生态系统来控制代币价值。每个代币对的汇率将不断更新以匹配市场价格--这为交易者提供了巨大的机会。

当您在 Uniswap.exchange 上切换代币对时,汇率会实时应用。JavaScript SDK (我们将在下文中查看)为其他应用程序提供了 API,以提供他们自己的接口来获取代币对及其汇率。除了 ERC20 代币外,汇率还适用于原生 ETH。

DeFi 丨一文读懂 Uniswap V2 改进与创新

Uniswap V2 用户界面中应用于 ETH | DAI 交易对的汇率。

现在让我们来介绍一下 Uniswap V2 上可以进行的交换类型。现在扩大的交换选择是由于 ETH 没有像在 Uniswap V1 中那样被用作中介代币,也就是 "ETH 桥接 "。

Uniswap V2 交换选项

如上所述,在 Uniswap VI 中,每一个代币交换都使用 ETH。在从 A 代币到 B 代币的交换中,A 代币首先要兑换成 ETH,然后该 ETH 再兑换成 B 代币。这就导致了双倍的交易费用和双倍的 gas 费因此而产生。

Uniswap 文档中提到,第一次迭代是他们对去中心化自动交易所想法的 " 原型 "。这很可能是因为开发者发现了更高效的交易执行方法,而这些方法已经在 V2 中得到了应用。省略 ETH 作为中介代币就是这样的优化之一。

去掉 ETH 作为实用性代币,实现了代币对的直接交换,如下图所示。

DeFi 丨一文读懂 Uniswap V2 改进与创新

两个 ERC20 代币之间直接交换。

这看起来很合理也很直观,也许是 V1 应该的工作方式。Router 合约上的 swapExactTokensForTokens 和 swapTokensForExactTokens 方法可以被调用来进行这样的交易。

这些方法名中使用的 Exact 术语代表了你希望交易到的代币。在从 DAI 到 ETH 的交易中,如果您需要特定数量的 ETH 作为回报,您将使用 swapTokensForExactTokens。另一方面,如果您想用准确的 DAI 金额换取相应的 ETH 值,您将使用 swapExactTokensForTokens。这个约定贯穿于 Uniswap V2 的智能合约中。

除了直接交换,用户仍然可以选择在两个代币之间进行交换,以 ETH 作为中间代币。当输入和输出代币没有资金池,但 ETH 和两个代币之间存在资金池时,这就变得很有用。

在通过 ETH 交换 DAI 和 LINK 的情况下,产生的交换流程如下。

DeFi 丨一文读懂 Uniswap V2 改进与创新以 ETH 为中介代币的间接交换(类似于 Uniswap V1)。

允许这种交易的相应 Solidity 方法是 swapExactETHForTokens 和 swapETHForExactTokens,以及 swapTokensForExactETH 和 swapExactTokensForETH。

最后一种交换代币的手段是将交换路由到多个 ERC20 代币,或者白皮书所说的 " 任意对 ERC20 代币 ",然后再到达你想要的输出代币。当然,原生 ETH 代币也可以存在于任意对中。

考虑以下插图,在到达所需的 LINK 输出令牌之前,通过一系列代币移动 DAI 值。

DeFi 丨一文读懂 Uniswap V2 改进与创新

通过一系列的代币进行资金路由,交换一个没有直接配对的代币

如果你的直接代币之间没有资金池,这种方法是很有用的,并且已经省略了前面介绍的 ETH 桥接。

虽然这种交换方法是可能的,但没有智能合约方法可以自动促进众多代币的交换。相反,前端应用程序必须手动编写功能代码,并向 Uniswap 进行多次交易调用来代替。

这种用例可能不会被大量使用--在通过 1 个或 2 个中间代币传递价值后,gas 会使额外的交换变得不经济。此外,中心化交易所可能会有更便宜的代币交换。说了这么多,一旦 Ethereum 2.0 的扩展功能和更高效的股权证明共识被 并入主网 ,这样的能力可能会变得更加广泛,使多交易互换成为更可行的前景。

价格预言机

Uniswap 的价格预言机机制允许开发者根据该代币在一些区块上的价格变动计算出平均的代币价格,这些区块也通过它们的时间戳代表一段时期。

这个时间段的累积可以是最近一小时、24 小时或更长时间。

虽然 Uniswap 提供了代币价格,但它并没有在链上存储任何历史值。相反,Dapp 开发者有责任将一段时间内的价格累积起来,计算出这段时间的平均价格。

这些价格被称为 " 时间加权平均价格 ",或 TWAPS。

这个想法是通过将累积价格(持续时间内每个区块的代币价格)除以时间戳持续时间(持续时间结束时间戳减去持续时间开始时间戳)来计算出一段区块的平均价格。

以下图示总结了这种计算方法。

DeFi 丨一文读懂 Uniswap V2 改进与创新

TWAPs 是可靠的, 它 反映了代币(不要忘记,基于特定的代币对)在一段时间内的价值。这种方法提供了保护,防止闪电崩盘或疯狂的价格变动,这种活动在加密货币交易中并不少见。在市场出现波动的情况下,提供时间加权价格反映了代币更准确的表现。

开发者可以自由地利用价格预言机,如果需要他们的服务,他们可以通过 Uniswap JavaScript SDK 检索,将进一步访问。

闪电交换

Flash Swaps 是由从 Uniswap 代币池中借入代币、用这些代币做一些事情以及偿还这些代币的多阶段过程组成的交易,所有这些都在该单笔交易中进行。如果交易的任何阶段失败了,所有的状态变化都会被还原,代币仍然保留在其对应的 Uniswap 池中。

考虑以下插图,显示买方可以在没有持有代币的情况下执行闪电交换。这是因为该代币价值被保证返回到池中,要么交易失败,要么买方偿还在同一交易中借用的代币。

DeFi 丨一文读懂 Uniswap V2 改进与创新

闪电交换的一个很好的应用案例是套利交易,即保证买方获利并将原始代币价值返还给 Uniswap 池。买方每次都能从套利交易中获得利润。

另一个用例是利用 Uniswap 池来结算 Maker Vault,你将偿还债务,并从该 Vault 中提取你的抵押 ETH (或其他抵押代币)来偿还 Uniswap 池。这比使用您的自有资金来实现同样的任务所需的 Gas 更少。

闪电交换是 Uniswap 相对较新的功能,但我们可以期待在不久的将来有更多的 Dapp 整合该功能。

在交易机器人的使用案例中,闪电交易也可以被利用来自动执行套利交易。机器人将不需要资金来执行交易,只需要识别套利机会并执行闪换交易。

新的 0.05% 协议费和治理

Uniswap V2 以 " 协议费 " 的形式为协议引入了额外的费用,当开启时,将交易价值的 0.05% 路由到 Uniswap 拥有的地址。这 0.05% 是从交易所标准的 0.3% 费用中扣除的,所以在开启这项费用时,流动性提供者将成为损失的一方。

协议费目前是关闭的,Uniswap 也没有公开宣布近期会开启。

这个新增的功能看似是一个值得商榷的决定,但 Uniswap 开发者认为这是一个必要的功能,以支持 Uniswap 的长期发展和可持续性。事实证明,如果他们希望启动这一收费,就会有一个管理机制,社区需要投票决定是否启动该机制。

虽然需要达成社区共识才能启动这一功能,但这样做会给 Uniswap 团队带来巨大的财务优势,因此也是竞争优势,因为费用会被转移到他们的钱包。

从好的方面看,这种费用将为改进协议和整体生态系统提供资金,这将带来更多的应用,因此更多的交易费用将使流动性提供者受益。理论上,这可以弥补收费最初引入的损失。以下图示概括了这一想法。

DeFi 丨一文读懂 Uniswap V2 改进与创新

关于将决定是否开启协议收费的治理机制,目前还没有公布太多细节,但可以假设会利用 ERC20 代币来提交投票,类似于 Maker 的治理和投票协议。

为了管理协议收费机制,Uniswap Factory 合约中包含了 feeTo 和 feeToSetter 方法,分别设置协议收费钱包地址和能够设置 feeTo 值的账户。

总结

这篇文章是对 Uniswap V2 的全面介绍。我们已经涵盖了它所提供的一系列进步以及它们如何工作。更高效的代币交换、时间加权价格预言机和闪电交换功能是主要的增强功能,还有一些底层的改进,比如转向基于 Solidity 的智能合约,利用最新的操作码进行更高效的执行。

Uniswap V2 仍然是一个去信任的去中心化交易所,它运行在 Ethereum 区块链上,无法被篡改,除非基本的 Ethereum 被成功攻击。到目前为止,这种情况还没有发生,而且以目前运行的矿工和验证者的数量,这种情况也不太可能发生。

ETH 2 的 Medalla 测试网启动时有 2 万名验证者--我预计这个数字在主网启动时将会更高,验证者将得到实际价值的激励。

另一方面,Uniswap V2 仍然是一个不太完美的代币交易所的实现。gas 费目前是历史上最高的(在撰写本文时),使得每笔 Uniswap 交易都很昂贵。Uniswap 没有实时订单簿,导致交易者仍然依赖中心化交易所来执行交易策略。如前所述,集中式交易所在平衡 Uniswap 汇率方面仍然发挥着不可替代的作用,它依靠套利交易与市场均价保持同步。

Uniswap V2 是朝着正确的方向迈出的积极一步,但如果去中心化交易所希望完全取代中心化交易所,前方仍有重大挑战。说到这里,整个加密货币社区,尤其是 Ethereum 的情绪是非常积极的--可以很有信心地预计,DeFi 领域在中短期内的技术能力和应用不会放缓

DeFi 丨一文读懂 Uniswap V2 改进与创新

Ross Bulat 作者

子铭 翻译

Edward 编辑

内容仅供参考 不作为投资建议 风险自担

版权所有 未经允许 严禁转载

DeFi 丨一文读懂 Uniswap V2 改进与创新

DeFi 丨一文读懂 Uniswap V2 改进与创新

☟☟☟


声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。

评论0条

加密谷Live

简介:分享区块链领域专业、前沿、有趣的内容

专栏

更多>>