宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > FTX > 正文

一文了解Uniswap V2的新功能与工作原理

作者:

时间:1900/1/1 0:00:00

编者按:本文来自以太坊爱好者,作者:RossBulat,翻译&校对:闵敏&阿剑,Odaily星球日报经授权转载。

UniswapV2是该链上交易所的新一版迭代

Uniswap是一个运行在以太坊区块链上的流动性协议,支持免信任的代币互换,也即是说,该交易所上的所有交易都是由智能合约自动执行的,用户无需依靠某个中介也无需信任某个第三方。这种去中心化的代币互换方案已经证实在ERC20代币的持有者群体中很吃香,他们愿意使用Uniswap来交易代币并为不同的交易对提供流动性。Uniswap在2020年3月19日在以太坊主网上推出了一个新版本,还配合着公开了核心合约的1.0.1版;在发行之前,该版本已经在Rinkeby测试网上测试过一段时间了。截至撰文之时,这个新版本在以太坊主网上已经使用超过了两个月时间,而且迄今为止,没有出现任何损坏智能合约完整性的问题。不论你是持有还是在交易密码学货币,是在搞以太坊开发还是做宽泛的金融科技业务,都有必要了解一下Uniswap,它在2020年的第三季度随着DeFi概念的崛起迎来了快速的增长。所谓一项独立的服务,Uniswap也可以集成到第三方的数字钱包和dApp中。此外,其它智能合约也可以拿Uniswap作为基础来开展服务。本文旨在向读者介绍UniswapV2带来的增强功能,并详细介绍其主要特性。UniswapV1定下的基调

UniswapV1为链上代币互换和去中心化流动性池定下了基调,就是向交易代币的用户收取少量手续费、以此给提供流动性用户以奖励。UniswapV1使用的不是链上订单簿,正相反,代币的交换比率是用一个叫做“恒定乘积公式”的算法来确定的,相当于提供了一种机制来保持一种代币的体量在所在交易对中的平衡。这个我们后面会进一步介绍。底层的代币交易对各有各的流动性池,用户可以通过同时存入两种相应的代币来提供流动性。流动性提供者可以得到所在流动性池中代币交易的手续费作为奖励,手续费率为0.3%,流动性提供者之间按份额分配——份额的大小,端看你注入流动性池的代币数量占整个流动性池数量的比重。要是读者不太了解Uniswap,我曾写过的一篇基于UniswapV1的解释性文章肯定有所帮助——在那篇文章中我解释了协议的整个机制、交易比例是如何计算出来的、流动性提供者如何能赚到佣金、使用Uniswap的好处和缺点,等等。见此处。UniswapV2有什么新东西

SEC并未寻求永久禁止Coinbase从事金融业务:6月6日消息,在对Coinbase的起诉书中,SEC请求法院做出裁决:(a)永久禁止被告违反证券法相关规定的行为;(b)命令被告人交出非法所得,并支付预付利息;(c)对 Coinbase 进行民事罚款,并要求其为投资者的利益给予适当或必要的公平救济。值得注意的是,昨日SEC对Binance裁决中,还禁止其永久从事金融业相关业务,包括加密金融。[2023/6/6 21:19:48]

UniswapV2给协议带来了一系列的升级和增强功能。主要的更新包括:ERC20对ERC20代币的交易对。即,不再需要ETH作为中介代币来协助两种ERC2O代币的互换过程。移除这个硬性要求可以减少一半的交易数量,也能节约交易的Gas费。也因此,dApp可以在缺乏直接的代币互换池子的时候,更高效地发现从一种代币到另一种代币的“路由”。这一部分我们后文还会详细讲。价格信息传输功能,每个区块都能基于按时间加权平均的定价方式为交易对刷新价格。这一部分我们后文也会详细讲解。闪电互换,或者说你可以从Uniswap流动性池中“借出”代币、用于与任意的外部服务交互、然后还清你的初始贷款,所有操作都要放在一笔交易内。这样的交易是原子化的,意思是说,交易中的任何一个操作失败,都是导致整笔交易失败、被改动的状态完全回复。这种功能的一个显而易见的用途就是利用流动性来做套利交易,但也有别的用途,比如为特定的DeFi操作节约Gas费,例如关闭Maker金库。支持不标准的ERC20代币。办法是将返回void类型的transfer()和transferFrom()的函数调用也视作成功的transfer操作。这个功能看起来毫不起眼,但其实,许多主流代币比如USDT和BNB的transfer方法都会产生这样的返回值。支持这些广泛接受、但不完全遵守ERC20标准的代币,增强了Uniswap在链上交易所中的优势。额外的功能性方法,用于防止用户所转移的代币数量超过Solidity编程语言所能支持的最大数量时出现溢出错误注意:不标准的ERC20代币即支持正式的EIP详述所指定的方法,但返回值的类型迥异于详述的代币。这种缺陷会让一种代币变成不标准的代币。类似的,重命名或者移除了详述所指定的方法也会让代币变成不标准的,但这种情况在实践中很少见,如果像Uniswap这样的协议希望支持这样的变种,还需要大量的开发工作才能解决。UniswapV2还引入了一个可启用的0.05%的协议层收费,就是从流动性提供者的0.3%的手续费中分一杯羹。不过,现在这个机制是关闭的——而且只能够通过一个去中心化的治理机制来触发。我们后文还会再说。UniswapV2经过充分的测试和审计之后方才推出

智能合约一经部署就不可改变的特性所带来的风险,已经是老生常谈了。如果一个合约包含了会导致资产锁定的错误,那是没有办法让这些发送资产的交易都撤销的。Uniswap团队遵照了行业的标准实践以尽可能地消除bug风险和逻辑错误。值得称赞!从V1转成V2,团队也用Solidity语言重写了他们的智能合约。Uniswap的开发者因此得以跨越Vyper语言的局限性、利用最新版本的Solidity语言中的更新的操作码,进一步优化了合约执行的CPU消耗。UniswapV2由多个智能合约组成,包括Factory、RouterV2、Pair和PariERC20,还有一个负责功能的Library。驱动Uniswap工作的几个主要的合约如下图所示:

火必将于5月24日上线ACS(Access Protocol)其充币业务于今日16时开放:据火必官方公告,火必将于2023年5月24日正式上线ACS(Access Protocol)。公告显示,火必将于5月22日16时(GMT+8)开放ACS充币服务,于5月25日18时(GMT+8)开放ACS提币服务。ACS/USDT现货交易将于充币量达到市场交易需求后开放。

据悉,Access Protocol是Solana生态内容货币化协议,于2月15日在Solana区块链上启动,目前已上线Coinbase。[2023/5/22 15:18:33]

Router2是Router1优化之后的版本,不过它们的功能是一样的。Uniswap建议所有的开发者都切换去用Router2合约。重写后的所有合约都得到了行内值得尊敬的开发团队的审核,也在模拟现实运行场景的测试网上做了广泛的测试。ConsensysDiligence联合多方撰写了对UniswapV2源代码的完整报告。完整的审核报告可见此处。显然的是,UniswapV2在上线主网之前经过了充分的测试和审核。贯彻对源代码的尽职审核很有可能保证了未来不会发现任何重大的问题,虽然Uniswap还是发布了一个Bug悬赏,任何人发现了重大漏洞都可以获得奖金。安全是区块链生态永不可能绕开的一个话题,而且这种担心也是可以理解的,毕竟有这么大的资金体量在这里交易。对底层区块链的攻击已经出现了大量的学术研究,但智能合约的完整性似乎仅仅在以太坊生态中才被人重视,因为被锁在合约中的资产仰赖于智能合约的逻辑来保证其安全性和可触达性。好的,接下来我们就深入了解下UniswapV2的机制,感受一下这个协议的潜力。UniswapV2的工作原理

每个代币交易对都要通过工厂合约建立自己的流动性池。建立流动性池时,需在其中存入初始资金,以提供流动性。流动性池中代币对的汇率是基于供需量计算得出的,即所谓的恒定乘积公式。配合恒定乘积公式,一个交易对中的一种代币的价格,根据池中的供给量和交易者的需求量得出。因此,价格会在根据该公式画出的一条曲线上变动:

投资管理公司Ninepoint提议改变其比特币ETF的投资策略:金色财经报道,随着比特币价格在过去12个月内下跌约47%,Ninepoint提议改变其比特币ETF的投资策略,从仅购买比特币转向其他Web3和区块链相关股票。

据其网站称,该基金名为Ninepoint比特币ETF ( BITC.CA ),在多伦多证券交易所 (TSX) 交易,管理着约2100万美元的资产。它以前旨在为投资者提供比特币敞口,而无需通过加密货币交易所购买数字资产。Ninepoint的变更取决于基金单位持有人的投票,以及TSX和其他监管机构的批准。声明称,如果获得批准,新的投资策略将于5月生效,并将更名为Ninepoint Web3 Innovators Fund,股票代码为TKN。[2023/3/3 12:39:31]

-UniswapV2上的汇率取决于恒定乘积公式-汇率是基于一个简单的公式x*y=k自动计算的。对应的曲线代表所有可能的汇率。每个交易对都有自己的曲线,用来调节当前汇率。如果代币B的需求量很大,以至于流动性干涸,其价格将成倍增长,导致k点向曲线左侧上移。如果代币B的供应量很大,需求比代币A少得多,k点就会向曲线右侧下移。要注意的是,这种供需平衡仅限于代币A与代币B的流动性池。如果是代币B与代币C的流动性池,会形成自己的供需平衡,汇率也会不同。受到这些机制的影响,Uniswap依赖套利交易来让流动性池中的代币价格与市场价格保持一致。从本质上来说,这些协议依然需要通过外部交易系统来调控流动性池中代币的价格。每个代币对的汇率将根据市场价格不断波动,为交易者带来巨大的套利机会。当用户在Uniswap.exchange的代币对流动性池中进行交易时,使用的是实时汇率。JavaScriptSDK会为其它应用提供API,再由这些应用提供自己的界面来访问不同的代币对及其汇率。这些汇率应用于ETH和ERC20代币:

-UniswapV2用户界面上ETH/DAI交易对的汇率-现在,让我们深入探究可在UniswapV2上执行的交易类型。UniswapV2提供了更多交易选择,因为它不再像UniswapV1那样使用ETH作为中介代币来实现“ETH搭桥”。UniswapV2上的交易选择

如上文所述,UniswapV1上的每个交易对中都有ETH。如果要将代币A兑换成代币B,必须先用代币A买入ETH,然后再用ETH买入代币B。因此,交易者需要支付两笔交易费和gas费。Uniswap的文档将V1称为去中心化自动交易所的“原型”。这有可能是因为开发人员发现了V2提供的更高效的交易执行方法。不再将ETH作为中介代币就是优化之一。如下图所示,ETH不再作为中介代币之后,交易对之间可以进行直接交易:

FTX 债务人将寻求归还巴哈马监管机构持有的加密货币:金色财经报道,FTX Trading及其附属债务人周五表示,他们将寻求将巴哈马证券委员会控制的加密货币归还给他们的第11章财产,以利于债权人。

巴哈马证券委员会周四表示,自11月12日以来,它一直掌握着价值超过35亿美元的FTX客户资产。FTX债务人称,这些资金是在FTX前CEO SBF 和前CTO Gary Wang在巴哈马当地政府的要求下,在破产程序启动后转移的。

债务人表示,由巴哈马监管机构控制的Fireblocks钱包中的加密货币的价值在最初被转移时按现货市场价格计算为2.96亿美元,目前价值1.67亿美元。(The Block)[2022/12/31 22:17:56]

-两种ERC20代币直接互换-这种方式似乎既合理又直观,或许V1就应该采取这种运作方式。只需调用路由合约上的swapExactTokensForTokens和swapTokensForExactTokens方法即可交易。上述方法名称中的Exact表示你希望为交换中的哪一种代币设置限额。如果你想用DAI买入一定数量的ETH,就要使用swapTokensForExactTokens;另一方面,如果你想用一定数量的DAI买入ETH,就要使用swapExactTokensForTokens。UniswapV2的智能合约就采用了这两种方法。除了直接交易外,用户依然可以选择使用ETH作为中介代币来实现两种代币之间的交易。用户无需直接在输入代币和输出代币之间创建流动性池,只要这两种代币与ETH之间存在流动性池即可。例如,以ETH作为中介代币来实现DAI和LINK之间的交易,其流程如下图所示:

-以ETH作为中介代币实现间接互换-与之对应的Solidity方法是swapExactETHForTokens和swapETHForExactTokens,以及swapTokensForExactETH和swapExactTokensForETH。实现代币交易的最后一种方法就是,在多个ERC20代币之间进行交易,直至获得你想要的输出代币为止,也就是白皮书中所说的“任意ERC20交易对”。当然了,所谓的任意代币对中也可以包含ETH。下图显示了如何通过一系列代币将DAI的价值转移到理想的输出代币Link中:

昆山首个“数字人民币医疗场景支付”落地:金色财经报道,近日,在昆山市卫健委和市金融办的支持下,昆山市第三人民医院与昆山市农村商业银行联合,在自助挂号缴费机渠道开通数字人民币缴费功能,这也是数字人民币首次在昆山地区医疗机构落地应用。患者使用数字人民币支付时,仅需点击自助缴费机屏幕上的“数字人民币”,再打开手机上的数字人民币APP,使用“扫一扫”功能,扫描自助机上的数字人民币付款码,即可完成缴费。[2022/8/9 12:12:05]

-对于没有直接交易对的代币,可以通过一系列中介代币交易来获得输出代币-如果你的输入代币和你想获得的输出代币之间没有流动性池,就可以采取这种方法,而且不一定需要上文所述的ETH作为中介代币。虽然这种交易方法是可行的,但是目前没有智能合约能自动实现这么多笔代币交易,只能手动将这个功能写入前端应用的代码中,并对Uniswap进行多个交易调用。这个办法的使用频率可能不高,因为在通过一至两个中介代币转移价值后,额外的Gas费会让迂回交易变得很不划算。或许通过中心化交易所交易成本反而更低。尽管如此,一旦ETH2.0主网上线,采用更加高效的PoS机制,再加上可扩展性功能,让迂回交易变得更加可行,这种方法将得到更广泛的使用。价格信息传输机制

Uniswap的价格信息传输机制可以让开发者基于某个代币在几个区块内的价格波动性来计算该代币的平均价格。这个时间区间可以是前1小时,前24小时乃至更久。虽然Uniswap会提供代币价格,但是它不会在链上存储任何历史价格。需要dApp开发者自选基于一段时间的累积价格,来计算某个代币在这段时间的平均价格。这些平均价格称为时间加权平均价格。所谓的TWAP就是在链上选定一段区块作为时间区间,将某个代币在这段区块内的累积价格除以时间戳区间,得出该代币在这段区块的平均价格。图解如下:

-TWAP是基于一段区块内的累积代币价格计算得出的-TWAP是可靠的,反映了一段时间内的代币价格。采取这种方式可以避免闪电崩盘和剧烈的价格波动,这些在加密货币市场上很常见。当市场出现价格波动时,TWAP可以更准确地反映代币的情况。如果需要,开发者可以通过Uniswap的JavaScriptSDK免费获取价格信息。详情见下文。闪电交易

闪电交易指的是通过一个交易来完成从Uniswap的流动性池中借出代币、使用这些代币进行某项操作并偿还这些代币这一多阶段流程。如果这个流程中的任意一阶段失败,所有状态更改都会撤销,相关代币重新回到对应的Uniswap流动池中。下图显示了交易者如何能够不持有代币而执行闪电交易。这是因为从流动性池中借出的价值一定会归还到池内,要么交易失败,要么交易者归还借出的代币:

闪电交易的一大用例就是套利交易,而且交易者一定能在获利的同时将之前借得的代币价值归还至Uniswap流动性池内。交易者每次都能通过套利交易轻松获得收益。另一个用例是使用Uniswap流动性池结算Maker金库,你可以偿还债务,并取出Maker金库中作为担保品的ETH来偿还Uniswap流动性池。相比直接使用自己持有的代币来还款,这种方式消耗的gas较少。闪电交易是Uniswap上一项比较新的功能,不过我们很快就能看到更多dApp整合这一功能。在交易机器人这一用例中,闪电交易还可以用来自动执行套利交易。交易机器人不需要资金来执行交易,只需要识别套利机会并执行闪电交易即可。新的0.05%的协议收费和治理

UniswapV2还为协议引入了一种新的费用,叫做“协议费”,启用这一机制后,Uniswap上发生的交易额的0.05%就会转移到一个由Uniswap持有的地址上。这个0.05%是从Uniswap标准的0.3%手续费中抽出来的,所以启动这一机制会导致流动性提供者的利益受损。当前这一机制还是关闭状态,而且Uniswap项目方也没有任何公开声明表示有启用这一机制的计划。添加这个机制似乎有点可疑,但Uniswap开发者认为,这是为了支持Uniswap的增长和可持续性的必要功能。而且,还有一个事实可以为他们辩护:启用这一机制需要一个治理机制,由社区来投票决定要不要启动这一机制。虽然启动这一功能需要先达成社区共识,这样做会给予Uniswap项目方巨大的利益和竞争优势。从好的一面来说,这笔费用可用于升级协议和整个生态系统、提高接受度,最终能够让流动性提供者获得更大的利益;理论上来说,可以弥补他们在这一机制中的利益受损。整个过程如下图所示:

-收取0.05%的协议费用的积极结果-现在还未有该治理机制的公开信息,但不妨假设会有利用ERC20代币来收集投票,类似于Maker的治理和投票机制。为管理协议收费机制,UniswapFactory合约包含了feeTo和feeToSetter方法来设置接收资金的地址,以及有权更改feeTo地址的账户。JavaScriptSDK

本文有意避免过度技术化,但还是有必要提及Uniswap的JavaScriptSDK。这个开源库给NodeJS、JavaScript框架及所有基于浏览器的应用提供了JavaScriptAPI来集成Uniswap。这已经足以让第三方应用直接将Uniswap集成到自己的产品和服务中。AgentWallet、SwitcheoExchange和StreamrMarketplace是其中3个已经直接集成了Uniswap的产品。该JavaScriptSDK的文档讲解了用于提取代币对数据和代币对地址的API,还有启动交易和获取定价的API,应用可以借此使用上文所述的价格信息传输功能。注意,API不能自动执行交易,只能帮你准备一笔交易,把你愿意接受的市场价格中位数和交换所得的最低数量发起和签名交易。关于Uniswap的代币列表

如果你好奇Uniswap.exchange上的代币列表是如何决定的,很简单,这是人工操作的,Uniswap团队会用视频会议讨论要加入哪些代币。因此,即使某种ERC20代币的交易池已经出现了,也并不代表这种代币会出现在Uniswap官方网站的代币列表上。如果你是某种代币的发行者,你想要让你的代币出现在默认的代币列表上,你需要在DefaultTokenListrepository上提交一个Githubissue。Uniswap.exchange上还有一个功能:你可以在一个搜索框内输入某个ERC20代币的地址来找出这种代币,然后添加到你自定义的列表中。这样一来你就能在dApp中交易这种代币了,但这不代表别人也能看到这种代币,因此也不会提高这种代币的曝光度。开发者也可以在自己的Uniswap集成中创建定制化的代币列表,只需遵循一个简单的JSON结构即可。更多操作细节可见Uniswap的TokenListsrepository。总结

本文完整地考察了UniswapV2,揭开了它的改进项目及其工作原理。更高效的代币互换、按时间来加权的价格信息标识机制、闪电兑换功能,都是重大改进,在这些改进的背后,是迁移到基于Solidity来编写合约的技术工作,这些技术工作让UniswapV2得以利用最新的操作码来实现更高效率的执行。UniswapV2保持了免信任、去中心化的本色,它存在于以太坊区块链上,除非爆破底层协议,不然就无从破坏它。到目前为止,没有这样的事情发生,而且,看现在的矿工群体规模,以后也不太可能发生。以太坊2.0的测试网Medalla启动时有2万名验证者——我估计这个数字在主网启动时还会更高,因为到时候的验证者可以得到经济回报。另一方面,UniswapV2作为一个代币交易所,也还不能说是完美的。在撰文之时,以太坊网络的Gas费正处于历史上最高的时期,这使得使用Uniswap的Gas费异常昂贵。Uniswap没有实时订单簿功能,因此交易员要使用交易策略还是只能找上中心化交易所。如前所述,Uniswap需要用户套利来保持交易所内代币价格与市场价格的一致,中心化交易所仍旧在平衡Uniswap的汇率上发挥着不可替代的作用。UniswapV2是朝着正确的方向迈出的积极一步,但若想让去中心化交易所能够完全取代中心化交易所,还是长路漫漫。虽说如此,密码学货币社区的意见还是非常乐观的——我们可以有把握地说,DeFi的进展,不论从技术能力还是接受度来看,在短期内都不会放缓。

标签:SWAPUNIUniswapETHCSWAP价格LUNIuniswap币不见了ETHICA

FTX热门资讯
Deribit期权市场播报:0831 — Put Buys

比特币价格上涨至11700美元,价格的波动带来期权交易量的上升。今天持仓量维持12亿美元附近,但是成交量反弹到1亿美元以上。今天比较特别数据是PutBuys成交量占比极大,成交量上涨几乎全部都是买入看跌期权带来的.

1900/1/1 0:00:00
9·4三周年,DeFi会和ICO一样面临强监管吗?

编者按:本文来自01区块链,Odaily星球日报经授权转载。2017年的9月4日,曾火爆一时的ICO被叫停;2020年,DeFi火了,几乎加密货币圈的所有目光都被吸引了,那么DeFi会迎来大发展还是同样会因监管而暗淡收场?9·4公告回.

1900/1/1 0:00:00
迎接物联网时代,区块链大有可为

当代著名思想家、华盛顿特区经济趋势基金会主席杰里米·里夫金在其著作《零成本社会》里介绍,随着微电子、新材料、3D打印、电能存储等新技术的不断发展应用,物联网从幕后走向台前,数十亿人和数百万组织连接到物联网.

1900/1/1 0:00:00
占据18%DEX市场份额的Curve,其治理代币CRV是如何捕获价值的?

编者按:本文来自蓝狐笔记,Odaily星球日报经授权转载。到蓝狐笔记写稿时,Curve的锁定资产量达到12.4亿美元,整个DeFi领域是78.2亿美元,Curve占据15.8%左右的比例.

1900/1/1 0:00:00
建行推出数字货币钱包,数字法币DCEP时代正式到来

编者按:本文来自区块律动BlockBeats,Odaily星球日报经授权转载。央行数字货币的进展无疑是2020年的最重磅消息,从农业银行的DCEP钱包内测,到美团等互联网巨头宣布合作,再到苏州、深圳、雄安,以及成都的四个试点地区的测试.

1900/1/1 0:00:00
这届牛市和之前有何区别?

编者按:本文来自风火轮社区,作者:佩佩,Odaily星球日报经授权转载。佛曰:炒币该慈悲为怀,助人为乐,别人抢着要的,让大佬们先上车,别人丢弃的,捡一捡不碍事.

1900/1/1 0:00:00