Bitcoin Vault -比特币保险库

教程

科学普及|关于Uniswap V2的一切:新功能和工作原理

V2联合交易所是交易所链上的一个新的迭代

Uniswap是一个在区块链以太网上运行的流动性协议,支持无信任令牌交换。也就是说,交易所的所有交易都是通过智能合同自动执行的,用户不需要依赖中介或信任第三方。这种分散的代币交换方案在ERC20代币持有者中非常受欢迎,他们愿意使用Uniswap交易代币,并为不同的交易对提供流动性。

2020年3月19日,Uniswap在以太网主网上发布了新版本,并与核心合同的1.0.1版本进行了合作;这个版本在发布之前已经在林克比测试网络上测试了一段时间。截至本文撰写之时,这个新版本已经在以太网的主网络上使用了两个多月,到目前为止,还没有出现损害智能合同完整性的问题。

无论您是持有还是交易密码货币、开发以太网还是从事广泛的金融技术业务,都有必要了解Uniswap,它在2020年第三季度随着DeFi概念的兴起而经历了快速增长。Uniswap,一种所谓的独立服务,也可以集成到第三方的数字钱包和dApp中。此外,其他智能合同也可以使用Uniswap作为开发服务的基础。

本文的目的是向读者介绍V2 Uniswap带来的增强功能,并详细介绍其主要特性。

V1联合国新闻发布会定下基调

Uniswap V1为令牌交换和链中的分散流动性池定下基调,即向交易令牌的用户收取少量手续费,以奖励提供流动性的用户。

Uniswap V1没有使用连锁订单簿,相反,代币的汇率是由一种称为“常数积公式”的算法决定的,这相当于提供了一种机制来保持交易对中代币的余额。稍后我们将进一步介绍这一点。

基础代币交易对(如代币对ETH或代币对USDC)有自己的流动性池,用户可以通过同时存入两个相应的代币来提供流动性。流动性提供者可以在其流动性池中获得代币交易的手续费作为奖励,手续费率为0.3%。流动性提供者根据他们的份额分配33,354股股票,这取决于你注入流动性池的代币占总流动性池的比例。

如果读者对优酷网了解不多,我曾经写的一篇基于优酷网V1的解释性文章肯定会有所帮助。在那篇文章中,我解释了协议的整个机制,交易比率是如何计算的,流动性提供者如何赚取佣金,使用Uniswap的优缺点等等。看这里。

(编者按:有关Uniswap的更多细节,请参见文章末尾的超链接)

V2 Uniswap有什么新功能

Uniswap V2为该协议带来了一系列升级和增强。主要更新包括:

ERC20 对 ERC20 代币的交易对.也就是说,不再需要ETH作为中介令牌来协助两个ERC2O令牌的交换过程。取消这一严格要求可以将交易数量减少一半,还可以节省燃气交易成本。因此,当没有直接令牌交换池时,dApp可以更有效地找到从一个令牌到另一个令牌的“路由”。这一部分将在后面详细讨论。

价格信息传输函数,每个块可以根据时间加权平均定价方法刷新交易对的价格。这一部分将在后面详细解释。

闪电互换,或者你可以从Uniswap流动性池中“借出”代币,用它们与任何外部服务进行互动,然后还清你的初始贷款,所有这些都应该放在一个交易中。这种事务是原子化的,这意味着事务中任何操作的失败都将导致整个事务失败和状态改变的完全恢复。这一功能的一个明显用途是利用流动性进行套利交易,但也有其他用途,如为特定的DeFi操作节省燃气费用,如关闭Maker保险库。(编者按:要进一步理解闪电互换的原理,请参阅文章末尾的超链接《一笔交易能做什么》)

支持非标准ERC20令牌。方法是将返回void类型transfer()和transferFrom()的函数调用视为成功的传输操作。这个功能看起来不起眼,但事实上,许多主流代币,如USDT(系绳)和BNB(硬币——硬币),将产生这样的返回值。支持这些被广泛接受但不完全符合ERC20标准的令牌增强了Uniswap在连锁交易中的优势。

当用户传输的令牌数超过Solidity编程语言支持的最大数量时,使用额外的函数方法来防止溢出

注意:非标准的ERC20令牌支持在正式的EIP细节中指定的方法,但是返回值的类型(以及相应的方法签名)与细节中指定的令牌(契约)非常不同。该缺陷将使令牌成为非标准令牌。同样,重命名或删除详细指定的方法会使令牌变得不标准,但这种情况在实践中很少见。如果像Uniswap这样的协议想要支持这种变体,将需要大量的开发工作来解决它。

V2联行还引入了0.05%的协议层授权费,即从流动性提供商的0.3%手续费中分得一杯羹。但是,这个机制现在是封闭的——,只能由分散的治理机制触发。我们以后再谈。

Uniswap V2在发布前已经过全面测试和审核

一旦部署,智能合同不可改变的特性所带来的风险(代码问题可能导致资产损失/冻结)已经变得司空见惯。如果合同包含导致资产锁定的错误,则无法取消所有发送资产的交易(根据以太网的当前容量和复杂依赖关系,除非在整个区块链实施硬分叉——,否则几乎不可能取消)。

Uniswap团队遵循行业标准实践,尽可能消除错误风险和逻辑错误。值得称赞!

从V1到V2,团队也用实度语言重写了他们的智能合同(智能合同的第一个版本是用维伯语言写的)。因此,Uniswap的开发人员可以克服Vyper语言的限制,并使用最新固化语言的更新操作码来进一步优化合同执行的CPU消耗(从而节省Gas成本)。

Uniswap V2由几个智能合同组成,包括工厂、路由服务器2、配对和巴黎ERC20,以及一个负责功能的库。

驱动Uniswap工作的主要合同如下图所示:

路由器2是路由器1的优化版本,但它们的功能是相同的。Uniswap建议所有开发人员切换到路由器2合同。

所有重写的合同都经过了业内受人尊敬的开发团队的审查,并且在模拟真实运行场景的测试网络上进行了广泛的测试。Consensys尽职调查已经联合撰写了一份关于Uniswap V2源代码的完整报告。完整的审计报告可以在这里找到。

很明显,在上线之前,Uniswap V2已经经过了全面的测试和审核。对源代码进行尽职调查可能会确保将来不会发现重大问题。虽然Uniswap已经发布了一个Bug奖励,但是任何发现主要漏洞的人都可以得到奖励。

安全是区块链生态学永远无法回避的话题,这种担忧是可以理解的。毕竟,这里有如此大量的资金可供交易。对底层区块链的攻击(与共识、块生产和交易验证相关的攻击)已经在大量学术研究中进行了研究,但是智能契约的完整性似乎只在以太生态中受到关注,因为锁定在契约中的资产依赖于智能契约的逻辑来确保它们的安全性和可访问性。

好的,让我们深入了解一下Uniswap V2的机制,感受一下这个协议的潜力。

V2 Uniswap的工作原理

每个令牌交易对都必须通过factorycontract建立自己的流动性池。当建立流动性池时,初始资金应存入其中以提供流动性。

流动性池中代币对的汇率是根据供求关系计算的,称为常数积公式。利用常数积公式,交易对(即流动性池)中的代币价格是根据池中的供给和交易者的需求获得的。因此,价格会在根据以下公式绘制的曲线上发生变化:

uniswapv2上的汇率取决于常数产品公式-汇率是根据简单公式x * y=k自动计算的(其中x和y分别表示交易池中两个代币的可用数量)。相应的曲线代表所有可能的汇率。每个交易对都有自己的曲线,用来调整当前汇率。

如果对代币B的需求如此之大,以至于它的流动性枯竭,它的价格将会成倍增长,导致K点向上移动到曲线的左边(如上图所示)。如果代币乙的供应量很大,而需求比代币甲少得多,那么K点将向下移动到曲线的右边。需要注意的是,这种供需平衡仅限于令牌甲和令牌乙的流动性池,如果是令牌乙和令牌丙的流动性池,就会形成自己的供需平衡,汇率会有所不同。

(译者注:简而言之,Uniswap不使用订单簿模型来确定代币的价格。相反,在用户交易过程中,代币的价格会根据公式不断自动变化,这样交易者的行为,包括注入流动性和套利交易,就可以找到没有套利空间的价格,即市场价格。(

在这些机制的影响下,Uniswap(和其他使用不变产品公式的分散交易所)依靠套利交易来保持流动性池中的令牌价格与市场价格一致。本质上,这些协议仍然需要通过外部交易系统来调节流动性池中代币的价格。每对代币的汇率会根据市场价格不断波动,这将给交易者带来巨大的套利机会。

当用户在Uniswap交易所的令牌-流动性池中交易时,使用实时汇率.JavaScript SDK(将在下面进一步描述)将为其他应用程序提供应用编程接口,然后这些应用程序将提供自己的接口来访问不同的令牌对及其汇率。这些费率适用于ETH和ERC20代币:

uniswapv2用户界面上ETH/DAI交易对的汇率-现在,让我们探讨一下可以在Uniswap V2上执行的交易类型。V2联行提供了更多的交易选择,因为它不再像V1联行那样,使用ETH作为中介代币来实现“ETH桥”。

(未完成)

原文链接:https://media.com/@ Ross bulat/unis WAP-v2-everything-with-the-distributed-exchange-52b 4 bb 2093 ab

作者:罗斯布拉特

翻译校对:敏敏阿建

Title