如何解决EIP-4626中的高滑点问题?

链闻财经
2022-11-24 20:00

原文标题:《Solving the issue with slippage in EIP-4626 》

原文作者:Nick Addison

原文编译:ChinaDeFi

简介

EIP-4626 提供了一种将代币投资到投资池 ( 通常称为金库 ) 的标准方法。当我们存入自己的资产(ERC-20 代币)时,我们会收到一个份额代币,代表我们在金库里的资产。金库将把汇集的资产投资到一个或多个基础平台,为持有者产生收益。

EIP-4626 标准的一个结果是,存款和铸币函数没有提供指定回报的最小份额或资产金额的方法。这通常用于防止高滑点或三明治攻击。mStable 如何通过其 Meta Vaults 解决这个问题——在保持符合标准的同时减轻高滑点攻击?本文描述了这些挑战,并解释了他们的方法是如何工作的。

EIP-4626 和 mStable 金库存款

mStable EIP-4626 的首个金库将投资于基于 Curve 3 Pool 的 Convex 池。从 EIP-4626 的角度来看,金库的资产是 Curve 3 Pool 的流动性提供者代币 ( 3 Crv)。存款函数是 EIP-4626 规范的一部分,它指定要存入多少资产以及将接收金库份额的帐户。存款函数返回给接收方会铸造多少金库份额。

function deposit(uint 256 assets, address receiver)

external

returns (uint 256 shares);

例如,存入 3 Crv Convex mUSD 金库将从调用方转移 3 Crv,并将 vcx 3 CRV-mUSD 金库份额转移到接收方。

如何解决EIP-4626中的高滑点问题?

EIP-4626 标准的强大之处在于,在投资池中有一种通用的投资方法,但对资产可以投资到底层平台的内容和时间没有限制。对于 mStable 的 3 Crv Convx mUSD 金库来说, 3 Crv 被添加到 Curve mUSD Metapool 中,然后产生的流动性提供者代币 (musd 3 Crv) 被存入 Convex mUSD 池中,该池会投资于 Curve mUSD gauge 并获得更高的回报。

这个过程中的一个技术挑战是如何防止三明治攻击。

如何解决EIP-4626中的高滑点问题?

什么是三明治攻击?如何预防它们?

当我们向 Curve Metapool( 或任何其他池 ) 添加流动性时,我们指定自己想存入的资产数量和流动性提供者 (LP) 代币的最小数量。对于 mUSD Metapool,金额是一个包含两项的数组。第一个是 mUSD 的量,第二个是 3 Crv 的量。 3 Crv Convex 金库只存 3 Crv,因此金额数组的第一项将为零。

function add_liquidity(uint 256 [ 2 ] memory amounts, uint 256 min_mint_amount)

external

returns (uint 256 );

开发金库时的一个技术挑战是我们如何设置预期流动性提供者代币的最小数量。

仅仅将 min_mint_amount 设置为零是不够的,因为它会让存款交易受到三明治攻击。但在我们深入了解三明治攻击是如何工作之前,我们需要更多地了解 Curve Metapool 定价是如何工作的。由于金库只添加两个池代币 (mUSD 和 3 Crv) 中的一个,因此它接收到的 Metapool 流动性提供者 (LP) 代币的数量将取决于 Metapool 中 mUSD 和 3 Crv 的余额。池中的 3 Crv 越多,当仅将 3 Crv 添加到 Metapool 时,返回的 LP 代币就越少。

例如,如果 Curve 的 mUSD Metapool 添加了 200 万个 mUSD, 600 万个 3 Crv 和 100 k 个 3 Crv,则将收到 100 , 068 个 LP 代币 (musd 3 Crv)。如果 Metapool 有 600 万个 mUSD,添加了 200 万个 3 Crv 和 100 k 个 3 Crv,将收到 100 , 892 个 LP 代币 (musd 3 Crv)。

那么三明治攻击是如何实现的呢?

攻击者在将交易包含到区块之前,就会监控 Mempool 中可能被利用的交易。为了利用交易,他们贿赂区块生产者,将他们的交易包含在可利用的交易之前和之后。也就是说,他们将易受攻击的交易与自己的交易夹在一起。如果有一笔交易将 3 Crv 添加到最低 LP 金额为零的 mUSD Metapool,则攻击者的第一笔交易将是减少 Metapool 中的 mUSD 数量。这意味着在易受攻击的添加流动性交易中收到的 Metapool LP 代币数量远低于应有的数量。在第三个交易中,攻击者返还在第一个交易中删除的 mUSD,并将收益装入囊中。

例子

使用 Curve 的 mUSD Metapool,池中有 6 , 000 , 000 mUSD 和 3 Crv, 11 , 917 , 295 个 LP 代币 (musd 3 Crv) 和 1.018095 美元的虚拟价格。

攻击者通过使用 6 , 500 , 000 ( 54.5%          ) 池流动性提供者 (musd 3 Crv) 代币从池中提取 5 , 973 , 425 的 mUSD,使用他们池中的大部分流动性提供者代币 (musd 3 Crv) 来平衡池。使用 remove_liquidity_one_coin 函数进行单边提款,池中剩下 0.43%           mUSD 和 99.56%           3 Crv。虚拟价格上涨了近 1%          ,至 1.019105 ,因为大量不平衡的提现为池收取了费用。

受害者使用 add_liquidity 函数将 100 , 000 个 3 Crv 添加到不平衡的池中,且没有最小流动性提供者数量。如果池是平衡的,受害者得到 81978 个 LP 代币而不是 100371 个。这意味着受害者得到的 LP 代币比他们应该得到的少 18 , 393 个 ( 18%          )。以美元计算,受害者得到的美元价值减少了 18 , 643 ( 18%          )。

对于第三个也是最后一个交易,攻击者使用 add_liquidity 将他们从第一个交易中提取的 5 , 973 , 425 个 mUSD 添加回池中,以接收 6 , 503 , 610 个 LP 代币 (musd 3 Crv)。比第一次交易多取了 3610 美元。池的虚拟价格将增加 1%           至 1.019216 ,因为这是另一个不平衡的交易。以美元计算,攻击者的 LP 价值从 6 , 500 , 000 * 1.018095 = 6 , 617 , 617 美元上升到 6 , 503 , 610 * 1.019216 = 6 , 628 , 583 美元,增加了 10 , 966 美元 ( 1.65%          )。

如果受害者损失了 18643 美元价值,而攻击者只获得了 10966 美元价值,那么缺失的 7677 美元价值在哪里?

使池失衡的 0.04%           费用由流动性提供者和 Curve 投票托管的 CRV (veCRV) 持有者平均分摊。攻击者未持有的 5 , 417 , 295 LP 代币的价值从 5 , 515 , 323 美元增加到 5 , 520 , 794 美元。这比池费用的 50%           增加了 5 , 471 美元。增加的美元价值归于托管 CRV (veCRV) 持有人。

Curve 的保护

为了防止三明治攻击,在向 Curve Metapool 添加流动性时,需要指定一个合理的最小 LP 代币数量。通常,DeFi 协议会在交易中传入相当数量的金额。Curve 池中的 add_liquidity 函数就是 min_mint_amount 的一个很好的例子。但是对于标准的 EIP-4626 存款函数,没有定义参数来指定最小金额,因此我们无法传入相当数量的链下计算的 Metapool LP 代币。

Curve 池有一个 calc_token_amount 函数,它可以计算池代币存款收到的 LP 代币数量。但这不能用来防止三明治攻击。如果已经运行了一个交易来平衡池,那么 calc_token_amount 函数将只返回当前不公平的 LP 代币数量。

function calc_token_amount(uint 256 [ 2 ] memory amounts, bool is_deposit) external view returns (uint 256 );

因此问题仍然存在,EIP-4626 函数没有办法传递最小量。打破标准来添加这一点是不可取的,使用预言机也是次优的。我们需要链上方法。

mStable 的方法

mStable 的金库获得一个公平的 Metapool LP 代币价格的方法是使用 Curve Metapool 和 Curve 3 Pool 的虚拟价格。get_virtual_price 函数以美元为单位返回池的流动性提供者代币的价格。它通过计算池的不变式来实现这一点,该不变式是池中代币的美元价值除以代币的总供应量。由于池中代币的余额不影响池的不变值或总美元价值,虚拟价格不会受到三明治攻击。

function get_virtual_price() external view returns (uint 256 );

对于存入 mStable 金库的存款,我们需要在 Curve 的 3 Pool LP 代币 ( 3 Crv) 中对 Metapool LP 代币进行定价,因为这是我们在金库中使用的资产。为此,我们得到 3 Pool 虚拟价格,并将其除以 Metapool LP 代币价格。

fair Metapool LP tokens = 3 Crv assets *

3 Pool virtual price /

Metapool virtual price

一旦我们有了一个合理的价格,我们就可以通过目前配置为 1%           的滑点系数来降低它。这个调整后的公平价格用于计算在向池中添加 3 Crv 流动性时可以接收的 Curve Metapool LP 代币 (musd 3 Crv) 的最小数量。

存款的全部流程如下:

如何解决EIP-4626中的高滑点问题?

结论

虽然标准在标准化和获得采用方面起着巨大的作用,但像这样的问题提醒我们,在 DeFi 方面没有轻松的胜利。我们需要认识到现有标准的局限性,并为它们寻找最佳的解决方案。

免责声明:本文版权归原作者所有,不代表MyToken观点和立场;如有关于内容、版权等问题,请与我们联系。

DAOrayaki:从兼容性、等效性看zkEVMs赛道的竞争格局

链闻财经
2022-11-24 18:53
zkEVMs的竞赛现在正在进行,本文将研究分析哪些先行者能够成功地大规模实施 zkEVM 并在早期用...
应用内查看全文

SharkTeam:Move语言安全性分析及合约审计要点之函数恶意初始化

鸵鸟区块链
2022-11-24 18:46
2021年8月10日,去中心化年金协议Punk Protocol遭遇黑客攻击,造成890万美元损失
应用内查看全文

CrossTower考虑收购加密公司并成立救助基金

星球日报
2022-11-24 17:19
该交易所昨日交易量仅2.17万美元,不及Coinbase和Bitstamp的零头。
应用内查看全文

观点:以太坊距离大规模扩容 ,可能比我们想象的更近

隔夜的粥
2022-11-24 17:09
以太坊核心开发者将于本周四召开电话会议,讨论是否将 EIP-4844 纳入考虑范围(CFI )...
应用内查看全文

空投埋伏日记:Across、MES Protocol、Neon Labs(11月24日)

链闻财经
2022-11-24 16:57
宁可错付gas,不能放过大毛。...
应用内查看全文

Curve稳定币设计白皮书(中英文参照版本)

星球日报
2022-11-24 16:30
Curve 的稳定币设计机制希望能解决为制造稳定币和借贷目的而进行清算的风险性。
应用内查看全文

万字回顾FTX兴衰史:这不是加密行业的第一次危机,也不会是最后一次

博链财经
2022-11-24 16:20
Crypto 发展至今,一次次走向绝望又一次次重生,背后靠的从来不是对人性的信任,而是对技术的信任,Code is Law.
应用内查看全文

Cosmos生态DeFi协议Onomy完成1000万美元融资

链闻财经
2022-11-24 16:03
Bitfinex、GSR、Ava Labs等参投。...
应用内查看全文

FTX 崩盘后还有一线生机吗?

博链财经
2022-11-24 15:31
那些在 FTX 崩盘中抱有希望的人是过于乐观了,还是他们真的在考虑长远问题?
应用内查看全文

详解币安Launchpad项目Hooked经济模型以及产品玩法

鸵鸟区块链
2022-11-24 14:10
带你详解 Hooked Protocol 的团队、经济模型、产品体验、赚币玩法等。
应用内查看全文

一文详解以太坊的两个基础:区块提议和MEV-Boost

链闻财经
2022-11-24 13:00
为什么它对今天的以太坊如此重要?...
应用内查看全文

一文读懂Chainlink 2.0经济学权益质押协议以及v0.1版权益质押细则

链闻财经
2022-11-24 12:50
Chainlink 2.0经济学权益质押协议以及v0.1版权益质押细则新鲜出炉!本文将详细阐述质押池...
应用内查看全文

致社区的一封信——写在Dora八岁生日之际

星球日报
2022-11-24 12:28
世界需要更多的Hacker。
应用内查看全文

Pantera Capital:2024年减半时,比特币价格会到多少?

星球日报
2022-11-24 11:30
如果比特币重复之前减半的表现可能会发生什么?
应用内查看全文

Bankless丨一文探讨 Optimism 对模块化扩展的愿景:OP Stack

Yangz
2022-11-24 10:40
OP Stack 是以太坊通过模块化进行扩展的基本愿景的颂歌...
应用内查看全文

Delphi Digital:20张图表细数加密雷曼事件

链闻财经
2022-11-24 10:39
加密行业正在经历挫折,最终将推进去中心化和自我监管的原则。...
应用内查看全文

ApeCoin DAO NFT市场上线,涵盖BAYC等自定义市场

博链财经
2022-11-24 09:40
自定义市场包括专为BAYC和Otherside社区构建的独特功能,以及ApeCoin质押和NFT元数据集成。
应用内查看全文

【2022-11-24】爆仓统计

MyToken
2022-11-24 08:10
应用内查看全文

星球日报 | Binance US将涉足美国政坛;Zhu Su将成立新投资公司(11月24日)

星球日报
2022-11-24 08:00
FTX的大量加密资产被盗或丢失。
应用内查看全文

数千万美元CRV多空对决后,Aave躺枪?

星球日报
2022-11-23 22:05
Aave:你们别打啦。
应用内查看全文
点击加载更多