当前位置:首页 > 资讯 > 区块链新闻 > 正文

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM

发布:中币网   时间:2021-07-30 00:14:54   加入收藏 打赏

由于这些虚拟交易仅与 TWAMM 的嵌入式 AMM 交互,因此 TWAMM 的行为在外部交互之间是完全确定的。

见https://github.com/para-dave/twamm/blob/master/splitting_exploration.ipynb

效率

由于 TWAMM 旨在用于以太坊,因此为每个区块明确计算多笔虚拟交易的交易成本会高得惊人。然而,当我们有无限多个无限小的交易时,我们可以在一次计算中计算交易者的结果(无论自上次检查以来已经有多少个区块)。

八、实施优化方案8.1 延迟计算(Lazy Evaluation)

TWAMM 将虚拟子订单视为发生在区块之间的空间中,这对于避免三明治攻击而言是很重要的。

为了以一种节省gas的方式实现这一点,TWAMM 使用了延迟计算(Lazy Evaluation),仅在需要确定交互结果时才计算虚拟交易的影响。

每次用户与TWAMM 交互时(例如,通过使用嵌入式 AMM 进行交易或添加新的长期订单),TWAMM 都会追溯计算自上次交互以来发生的所有虚拟交易的影响。

由于这些虚拟交易仅与 TWAMM 的嵌入式 AMM 交互,因此 TWAMM 的行为在外部交互之间是完全确定的。即使 TWAMM 在外部交互之间移动了 100 万个区块,下次有人与之交互时,它也能够准确计算所有介入虚拟交易的结果。

插入 TWAMM 的前端将能通过跟踪当前区块编号并自行进行 TWAMM 计算来考虑尚未在链上表示的虚拟交易。

8.2 Gas优化

汇集订单

如示例所示,当我们在同一方向有多个长期订单(即出售ETH并兑换成USDC)时,我们将它们汇集在一起,然后将它们拆分为虚拟订单。然后,TWAMM 可使用用于跟踪 Compound 和 Uniswap 等协议中LP 奖励的十亿美元算法‌来跟踪余额。

从技术上讲,每个TWAMM总是有两个长期订单池(每个资产一个):例如,卖 USDC 的订单池和卖 ETH 的订单池。在任何给定时间,这些订单池中的一个或两个可能是空的。

长期订单到期

将订单池与延迟计算结合使用时会出现一种复杂情况。

想象一下,Bob 下订单在接下来的 100 个区块中出售 100 ETH,而 Charlie 下订单在接下来的 200 个区块中出售 200 ETH。这两个订单都以每个区块1 ETH 的速率出售。

假设在接下来的 150 个区块中没有人与TWAMM 交互,此时会发生新的外部交互。他们的第一批订单是Bob和Charlie的共同订单,每个区块卖出2 ETH。然而,在那之后的50个区块,Charlie的订单是独立的,每个区块只卖出1 ETH。

这意味着我们必须进行两次单独的交易计算才能找出发生了什么:一次计算前 100 个区块的结果,一次计算后 50 个区块的结果。在最坏的情况下,如果过去 150 个区块的每个区块都有订单到期,这意味着 TWAMM 将不得不为每个区块处理一笔交易,从而破坏 gas 效率。

对此最简单的解决方法,是限制符合订单到期条件的区块数量:例如,TWAMM 可以指定订单只能每 250 个区块到期一次,或者大约每小时一次。

取消长期订单

用户可以随时取消长期订单。在实践中,这允许用户为他们的订单选择取消时间。这不会增加系统的 gas 负担,因为想要取消的用户需要自己支付 gas费用。

8.3 虚拟交易涉及的数学

定义:

假设自 TWAMM 上次执行任何虚拟交易以来已经有 t 个区块。

为简单起见,假设没有长期订单过期,因此在整个时间段内,出售 X 的池子以每区块x_rate的速率出售,而出售 Y 的池子在整个时间段内以每个区块y_rate的速率出售。

那么在此期间售出的 X 总量为

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM

,而在此期间售出的 Y 总量为

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM

让我们将时间段开始时嵌入的 AMM 储备分别表示为

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM

以及

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM

公式:

在处理完所有虚拟交易后,嵌入式 AMM 将有 X 储备

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM

其中

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM

从这个恒定乘积公式,我们知道

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM

出售 X 的池子获得了所有没有出现在嵌入式 AMM 中的 Y,换句话说,

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM

以及类似的,

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM九、潜在的攻击向量9.1 三明治攻击(又名夹心攻击)

描述:在三明治攻击中,攻击者 Atticus 看到交易者 Trey 即将在 AMM 上进行一笔交易,随后Atticus 发送了两个订单并夹住了Trey 的订单,以此实现获利。

想象一下,Trey 向 AMM 发送了一笔用 USDC 购买 ETH 的订单。而攻击者 Atticus 在看到这个订单后,抢先在rey 之前在 AMM 上购买 ETH,以此推动ETH价格上涨。由于他正在向 AMM 支付费用并产生价格影响,因此 Atticus 在操作完这个订单后是亏钱的。

当Trey 的订单被执行时,他会以更高的价格购买ETH,因为Atticus 推高了价格,而Trey的订单进一步推高了ETH的价格。

现在,Atticus 立即将他的 ETH 卖回给 AMM,此时他卖出的价格要高于其买入的价格,因此能够实现盈利。

如果 Atticus 能够保证在 Trey 购买后立即将他的 ETH 卖回给 AMM,那么这种攻击对 Atticus 才有意义。在给定的区块内,如果 Atticus 是一名矿工、与某个矿工达成交易或使用 Flashbots 之类的服务,则这是可能的。

三明治攻击和虚拟订单

乍一看,虚拟订单似乎特别容易受到三明治攻击,因为每个人都知道它们会来。

但由于它们在** 区块之间执行,因此要进行攻击是不容易的,要夹住 TWAMM 的虚拟订单的攻击者必须在一个区块的末尾与嵌入的 AMM 进行交易,导致虚拟订单在区块之间以糟糕的价格执行,然后在另一个方向交易,在下一个区块开始时结束交易。

目前,攻击者没有办法保证实施这类攻击。当这种多区块MEV变得更加普遍,允许交易者在多个区块之间进行夹心交易时,这可能会成为一个更大的问题。

9.2 信息泄露

长期交易者在 TWAMM 中可能遇到的最大权衡是,他们在下公开可见订单时会面临信息泄露的问题,这是以太坊的性质所导致的。

如果一个交易者下了足够大的长期订单,其他交易者可能会试图抢先在TWAMM的嵌入式AMM和其他地方购买资产,以便在长期订单推高价格后将其出售给交易者。

由于用户可以随时取消他们的长期订单,我们预计过于激进的抢先交易者会被其他交易者利用,从而控制信息泄漏的整体影响。

例子:

想象一下,欺骗者Sally已经注意到 TWAMM 上的攻击性抢先交易,她从流动性聚合商那里购买了价值100 万USDC的 ETH,从而推高了整个市场的价格。然后她在 TWAMM 上下了一个巨大的长期订单,在接下来的 24 小时内每个区块购买 10 万USDC的 ETH。

抢先交易者Frank立即看到了这个订单,并通过聚合器购买了价值100万 USDC的ETH,进一步推高了价格。Sally 通过聚合商卖回她的 ETH 以获取利润,这导致ETH价格下降,并让Frank 蒙受损失。最后,她在任何订单完成之前取消了她的长期订单。

十、Python 参考实现

你可以在此处‌查看 TWAMM 的 Python 参考实现。

这个 Jupyter 笔记‌演示了TWAMM在多个长期订单和套利者存在下的情况。

为了简单起见,这个Python版本并没有实施gas优化,比如订单池顺序或真正的延迟计算。

十一、结论

我们已经勾勒出了TWAMM的设计,但我们的工作才刚刚开始。如果你有兴趣解决此问题或类似问题,可以发邮件至dave@paradigm.xyz或者在Twitter上给我发私信,或者你也可以通过ideas@uniswap.org联系Uniswap Labs。

致谢:Sam Sun, Georgios Konstantopoulos, Michael Bently, Michael Kustermann, Kevin Pang, Hasu, Sam Bankman-Fried, Henry Prior, Tom Cadwell, Alex Wice, Mewny, Big Magic, Lily Francus, Tarun Chitra, Moody Salem, Noah Zinsmeister, Teo Leibowitz。

DeFi之道丨一文了解Uniswap 新型做市系统TWAMM Uniswap

来源:洒脱喜




来源:中币网  https://www.zhongbi.net/news/blocknews/276811.html
声明:登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。 此文如侵犯到您的合法权益,请联系我们3111859717@qq.com,我们将第一时间处理。