当前位置:主页 > 列表页 > 正文

Solana AMM 设计:多币池(MTP) 和 双币池(2Pools)

2021-09-09 15:00 | 出处: 洁sir


介绍

最近,像 Curve Finance 这样的 AMM 已经创建了超过 2 种资产的矿池机制,通常用于稳定代币的元组。这些矿池非常成功,Curve 的 3Pool (USDC-USDT-DAI) 吸引了数十亿美元的 TVL 和大量交易量。为简单起见,具有n > 2个资产的池在此将被称为多代币池 (MTP)。在本文中,我们会探讨 Solana 稳定对 AMM 中 MTP 和传统「2Pools」之间的权衡。

MTP 充当有用的 DeFi 流动性乐高积木,并在以太坊上提供出色的 gas 优化。当专注于少数资产不重叠的矿池的深度流动性时,它们尤其有效。在 Saber,我们最初计划为稳定资产实施 MTP,但最终决定使用与分流器(Router)相连的 2Pools。做出这一决定是因为我们作为 DeFi 的跨链流动性基础的策略定位。我们想要多个矿池而不是几个矿池,我们非常重视跨链 DeFi 所需要的 2Pools 来增加可组合性。在 Solana 上,2Pools 可以提高资本效率和可组合性,具有更快的运行时间,并且更安全地隔离系统性风险。

多币池的优势

MTP 非常适合在像以太坊等费用繁重的区块链上进行 gas 优化。 Curve Finance 在以太坊上的 3Pool 因其设计的 Gas 效率而广受欢迎。在整个合约中,像 add_liquidity 这样的主要功能通过 N_COINS 使用 for 循环(在这种情况下为 3),这是对通过每个 C(n,2) 时发生的二次缩放的改进(n 选择 2 对)。此外,交换功能在相对于代币数量的恒定时间内运行。 Curve 的 Stableswap 执行也将计算密集型 AMM 曲线计算推广到多个变数,再次节省了指令开销。然而在 Solana 上,由于极低费用、快速确定性和交易速度,gas 优化不是优先事项。在 Rust 中写程式需要的是对最大化安全性和平稳的交易执行的不同思维方式。


MTP 的另一个巨大优势是,在 USDC-USDT-UST 等元组中,资产之间的交换更容易。在一次交易中,用户可以轻松地将 n 种资产中的任何一种换成其他任何一种资产。但是,如果使用分流器(Router),2Pools 也可以实现类似的用户体验。 Saber 的智能分流器(Router)系统通过连接的 2Pools 之间的最小路径进行交易,实现没有直接配对的资产之间的传递交换,以便它们以最佳价格自动交换。例如: 存在一个包含 A:B 的池和一个分离的池 B:C。通过分流器(Router),可以传递地建立 A:C 关系。

最有名的 MTP 实际运用是在 Curve 上。例如: 考虑拥有 4 个资产的 sUSD 池。由于 LP 可以在 USDC、USDT 和 DAI 中添加 sUSD 流动性,因此有更多的可用流动性来构建 sUSD 池。假如只使用 DAI,而我们只想要一个 sUSD 池,那么 USDT 持有者将被排除在 LP 之外。因此 MTP 有助于最大化少数蓝筹加密货币池的深度流动性。不过应该指出的是,资产与其他 MTP 重叠的新 MTP 会有递减的边际收益。此外,包含 USDT-USDC-DAI 等大型蓝筹货币的独特潜在 MTP 数量有限。

为什么 Saber 选择了 2Pool-Router 系统

Solana 的协议级架构与以太坊有很大不同。对于普通用户来说,包含两种资产的池不仅更直观,而且 2Pools 在 Solana 的环境中具有明显的优势。

一、流动性有效分配

当处理大量资产时,MTP 中的流动性变得稀薄。想像两个矿池 USDC-USDT-UST 和 USDC-USDT-DAI。在两个 MTP 之间提供 USDC-USDT 关系的流动性是「重复的」,因此被浪费了。由于这些池之间的唯一区别是第三种资产,因此在多个 3Pool 中共享资产的好处变得有限。这种重叠随着 O(n²) 增加,并且当我们考虑多链生态系中稳定币的数量时,例如 UST、PAI 和 BUSD,这种影响变得非常重要。

在 2Pools 中,货币对之间建立了直接关系,流动性永远不会浪费。


二、 降低系统性风险和无常损失

所有加密货币都有不同程度的系统性风险。法币支持的中心化稳定币(如 USDC 和 USDT)具有审查风险、监管不确定性,并且具有不同的赎回流动性不足。像UST这样的算法稳定币可能根据市场的波动性而脱钩。如果池中的一个稳定币有风险,整个池都会处于危险之中。最重要的是将这种风险划分到孤立的 2Pools 中,而不是将风险分散到 3Pools 中。重要的是,Saber 的智能分流器(Router)系统通过允许传递交换(实质上在池之间共享流动性)而不分担风险,实现了两全其美。只有与受损货币有直接关联的流动性提供者才会承担系统性风险。


脱钩是一种灾难性的情况,稳定币 DEX 使用的 Stableswap 算法可能会加剧这种情况。 AMM 曲线的 Stableswap 不变量是对恒定乘积和恒定总和曲线的修改,在曲线中间附近聚集了更多的流动性。为了在价格平价附近获得更平坦的曲线(低滑点),Stableswap 不变量通过在曲线的极端处牺牲更陡峭的滑点来进行权衡。一旦脱钩资产超过某个极端价格阈值并脱离线性曲线,正反馈循环可能会导致不利的银行挤兑,从而加剧脱钩。如果池中的一个稳定币严重崩溃并且永远不会回到 1.0 挂钩,那么池中的流动性提供者实际上将几乎所有的流动性都保留在损坏的加密货币中。


Curve Finance指南

脱钩的威胁是非常真实的。几个月前,Terra 的 UST 跌至 0.897 美元,并在数周内未能正常恢复。在 3Pool USDC-USDT-UST 模型下,UST 的失败会传染性地影响那些交易和纯粹为 USDC-USDT 提供流动性的。孤立的 2Pools 减轻了这种风险,并为可能对锚定 USDT 或 UST 或任何其他稳定资产的强度持有意见的 LP 提供了更多的自由决定权。


三、 2Pools:易于平衡

不平衡的池会导致资本效率低,并对池中持有多数资产的人(池中的大多数人)进行惩罚。用户可以在大多数 Stableswap 平台上单边存款,导致资产不平衡。由于流动性挖矿奖励、市场动态、系统性风险以及上述流动性蚕食的原因,MTP 本质上对失衡更加敏感。保持 33–33–33 或 25–25–25–25 等的平衡是一条很难走的走钢丝,尤其是当每种资产在数量、市值和可访问性方面存在显著差异时。 2Pools 往往更平衡和资本效率更高,因为两种资产之间的关系涉及较少的变数。

不平衡的池有多大的破坏性? Stableswap 曲线是设计来鼓励用户存入有助于平衡池的少数资产,并通过更高的滑点惩罚存入已经占据池的多数资产的用户。惩罚加剧矿池失衡的用户的原则同样适用于退出矿池的时候。


为了说明这一点,想像一个由 USDC (40%)、USDT (40%) 和 UST (20%) 组成的 3Pool。存入 USDT 或 USDC 的流动性提供者都将因进一步使 3Pool 失衡而收到相对较少的 LP 代币作为惩罚,尽管这两种资产彼此相对平衡。不平衡的池也会降低交换体验。继续以 USDC (40%)、USDT (40%) 和 UST (20%) 为例,将高供应量的代币换成低供应量的代币(USDC → UST)的用户会因收到较少的代币而受到惩罚。


四、 2Pools:在 Solana 上执行简单高效率的程式码

Solana 上的 Rust 程序不是针对整体 gas 效率进行优化,而是专注于在有限的交易指令空间内最大限度地提高安全性和程式码执行效率。 Solana 交易只能使用 200,000 条指令(BPF 计算预算),并且处理三个或更多不同的帐户,而不是两个,增加了大量的指令。创建和维护许多帐户都会产生计算成本,例如调用 create_program_address_units。


与以太坊相比,Solana 上的帐户储存有根本上的不同,因为几乎无需任何费用。在 Solana 上保持帐户活跃会产生租金 — 一种以 Epoch 为主的固定利率储存成本 — 因为区块链集群必须积极维护数据以处理任何未来的交易。


五、可组合性

AMM 的一个关键优势是 LP 部位的可组合性。 MTP LP 代币自然比 2Pool 更复杂,这种复杂性限制了可以在 LP 部位之上实现的附加逻辑的数量。在 Solana 上,对于跨程式调用,调用的程式继承其母程式的预算。如果被调用的程式消耗了预算或超出了界限,则整个调用链和母程式都将停止。 Saber 的目标是在母程式中保留尽可能多的免费交易存储,以便建立在 Stableswap AMM 之上的项目不受上限的限制。

具体来说,处理三个帐户而不是两个帐户对于跨程式调用是低效率的,因为调用功能要求调用者传递被调用指令所需的所有帐户。还有许多其他检查点(例如 pay()和 pay_and_launch_missiles()),其中运行时策略必须检查所有帐户的状态。由于调用程式在程式完成指令处理之前会呈现暂停的状态,因此检查 3Pool 状态时会需要查额外帐户加上会占用更多时间并引入额外的异步性。

结论

MTP 和 2Pools 根本上专注于不同的事情。

MTP 非常适合像以太坊这样的区块链,其中 Gas 优化很重要,并且在专注于少数具有深厚流动性的蓝筹池时尤其有效。但是包含USDT-USDC-DAI等大型蓝筹的独特潜在MTP数量有限。

在 Solana 上,2Pools 往往更具资本效率、平衡性、隔离系统性风险的安全性、程序执行效率更高、数学更简单、更易于组合且更易于开发。对于 Saber 来说,我们决定使用 2Pools 进行开发,因为我们将策略定位为 DeFi 的跨链流动性基础。我们想要多个矿池而不是几个矿池,我们非常重视跨链 DeFi 所必需的 2Pools 来增加可组合性。

最终,3Pools 和 2Pools 有自己的优势和适用例子。随着跨链资产数量的不断增长,我们期待Stableswap AMM 设计的持续创新。


关于 Saber


Saber 是 Solana 上挂钩资产的领先跨链 AMM,例如稳定币和包装资产。作为 Solana 的核心跨链流动性网络,Saber 有助于促进 Solana 与其他区块链之间的资产转移。用户将加密货币存入 Saber 流动性池,从交易费用、代币奖励措施以及最终自动化的 DeFi 策略中获得被动收益。


原文作者:Vza

原文链接:Solana AMM Design: Multi-Token Pools and 2Pools

作者郑重申明:截至发文时,作者与文中提及项目皆不存在任何利益关系。
相关文章