DeFi之道丨对比Balancer、Curve和Uniswap三大DEX的Gas成本差异
本文作者:Yule Souza Andrade
用户在以太坊区块链中发现的主要用例之一就是无需中介即可在加密资产之间进行兑换的能力。 去中心化交易所或 DEX 是用于此活动的平台。 它们可以概括为一类应用程序,允许您使用其池中可用的流动性将 ETH 或任何代币交换为其他代币。
DEX代表了以太坊上最广泛的gas消耗应用。 根据 The Block 的统计,与代币兑换相关的合约是消耗区块链资源最多的合约之一。
尽管这些系统具有无需许可的性质、惊人的数量和无可争议的成功,但在链上进行操作成本高昂,对某些用户来说是一种负担。 兑换成本可以分解为几个不同的成本要素:
- 价格影响
- 流动性提供商费用
- 滑点
- 底层区块链的交易费用
了解这些成本对于资本效率至关重要,并且如果做出正确选择,用户或可节省数千美元。
DEX中有几个可供用户选择的协议应用,它们提供相同的代币兑换核心服务。 本文旨在根据体验对它们进行对比,也就是使用市场上可用的不同 DEX 时的交易费用成本。
为什么交易和 DEX 之间的 gas 成本会有所不同?
任何链上操作都需要根据它消耗的计算资源量来定价。 在以太坊网络中,gas 是用于衡量用于执行每个特定操作的计算工作量的单位,并直接影响交易成本。 由于每个协议采取不同的方法并且需要执行不同的函数来进行交换,因此每个交易/协议的消耗也不同。
一笔交易可以调用任意数量的函数并与许多不同的智能合约进行交互。 下面,我们可以看到使用 Tenderly 提供的工具进行的两笔不同交易的 gas 消耗明细。 如您所见,第二笔交易最终比第一笔交易多花费了 70% 的 gas。
两笔一般兑换交易所消耗 Gas的细节。来源: https://tenderly.co/ Dashboard
比较法
每个 DEX 都有其执行兑换的方法,但可以在它们之间确定一些模式。 为了比较不同 DEX 之间兑换的 gas 成本,每种都选择了一个代表。 Uniswap V2代表了传统的恒定产品池,Uniswap V3引入了集中流动性池。Curve采用了混合和自定义曲线池;Balancer V2采用了加权池。 对于他们中的每一个,都设置了一个Dune仪表板:
- Balancer: https://duneanalytics.com/yulesa/Balancer-Gas
- Curve: https://duneanalytics.com/yulesa/Curve-Gas-Usage
- Uniswap V2: https://duneanalytics.com/yulesa/Uniswap-V2-Gas-Usage
- Uniswap V3: https://duneanalytics.com/yulesa/Uniswap-V3-Gas-Usage
仪表板允许通过在选择框中输入池地址来单独检查每个池。 它还有一个事务表来过滤异常值以进行更详细的调查。
DEX gas对比仪表板。
在分析一个协议的多个池时,只有超过 100 笔交易符合上述标准的池才会被绘制出来,以获得更相关的结果。 在分析与单个池交互的交易时,交易按兑换中涉及的跳转次数进行分组。
涉及多次兑换的交易(在本例中为 2)。 来源: https://etherscan.io/
兑换执行可以包装在也执行其他代码的事务中。 为了排除这种影响,只分析了直接调用协议金库/路由器合约的交易。 此过滤器用于排除由 DEX 聚合器和合约路由的兑换交易,这些合约捆绑了多个会增加交易成本但与 DEX 协议本身无关的功能。
Balancer
Balancer池分布。
Balancer 的大部分交易来自 DEX 聚合器应用程序,例如 1inch、Metamask 等。 由于这些交易被排除在分析之外,这自然会减少可用的数据量。 尽管如此,仍有 14 个池符合至少 100 个直接调用交易的标准。 正如预期的那样,当单独评估每个池时,可以看到单跳交换和多跳兑换之间的显着差异。 另一项发现是,池中代币的数量不会改变使用它的交易的 gas 支出。 重要的是要记住,Balancer 中的 2 代币池可能会也可能不会充当预言机——如果它们这样做了,当存储价格数据的内存槽被初始化时,gas 成本会更高一些。 这可以在这些池的移动平均图表上查看。 请注意一旦所有内存插槽都已初始化,平均值是如何突然下降的。
分别为 LINK/WET、USDC/WETH 和 WBTC/WETH 矿池分布。
Curve
Curve池分布。
从本文研究的 DEX 来看,Curve 有一个独特的机制,这使得这个对比有时会不平衡。 每个 Curve 池(metapool除外)都是为其资产定制的。
Curve显示了所分析的 DEX 之间最显着的gas消耗差异。 这得到了部分解释,因为 Curve 允许交换未封装的代币,如 DAI 或 USDC,而这个池设计为不依赖其他协议 IOU,如 cDAI 或 yUSDC,并且封装和拆包过程是交易的一部分。 结果,虽然池中的资产积累了这些协议的好处,但它使兑换变得更加昂贵。
分别为 3pool、renBTC 和 Tricrypto 池分布。
Uniswap V2
Uniswap V2 池分布。
除了是此列表中最古老的协议外,Uniswap V2 还被广泛采用。 协议中已经创建了 2500 多个池,服务于资产的长尾。 绘制上图时施加了一些限制,但它们可以描绘协议中的 gas 成本。 一些最受欢迎的代币,例如稳定币和 BTC,广泛用于 ABC <-> ETH <-> WBTC 等交易中的多跳交换。 有时 ABC 转账是 gas 密集型的,会增加涉及这些流行代币的交易中使用的平均 gas。 再一次,在调查每个池时,交易 gas 使用之间最显着的差异可以分配给每笔交易进行的跳数。
分别为 LINK/WET、USDC/WETH 和 WBTC/WETH 池分布。
Uniswap V3
Uniswap V3 池分布。
Uniswap 协议V3的最大担忧之一是交换交易可能会花费更多的 gas。 Uniswap V3 兑换受其造成的价格影响。 相对于可用流动性的订单越高,它就越能推动价格跨刻度,离散的价格区间代表 0.0001% 的价格上涨或下跌,其中流动性需要调整。 由于大多数交易对价格的影响相对较小,因此交易成本中位数与之前的版本一致。 但是,在处理适度的流动性池时,用户需要关注订单对价格的影响。
分别为 LINK/WET、USDC/WETH 和 WBTC/WETH 池分布。
对比协议
每个协议的gas成本。
选择了 Balancer V2 和 Uniswap V2 和 V3 共有的三个对等池来进行详细比较——USDC/WETH、WBTC/WETH 和 LINK/WETH。由于 Curve 的方法不同,因此选择了它的一些池来融入图片,但不会参与比较。
可以观察到,3 个 DEX 之间消耗的gas没有显着差异。观察到的差异可能与为研究选择的方法不精确有关。对于 2 次跳转兑换,差异可归因于交易中涉及的其中一个代币合约中的转移函数的二阶效应。
此外,这里有一个表格,计算成本(以美元为单位)、当前 ETH 价格和 DEX 之间观察到的大致差异。从一个角度来看,在 2000 美元的 ETH 场景中,gas 为 50 gWei,为 WBTC/WETH 2 跳交换选择 Uniswap V2 而不是 V3 的差异将节省 3.12 美元。对于大于 1040 美元的订单,典型的 0.3% LP 费用大于此差异。
不同场景的gas成本。
结论
该研究表明,所分析的 DEX 之间没有显着差异。 对交易使用的 gas 的最大影响是执行交换所必须进行的跳数。 1 跳和 2 跳交换之间的差异比 DEX 之间的差异更有意义。 此外,根据交易规模,兑换成本的其他因素,如 LP 费用或滑点,可能会对总成本产生更显着的影响。
尽管 Curve 在 gas 支出方面有一些非常有竞争力的池,但它的一些矿池是用底层协议 IOU 设计的,包装和解包过程会显着影响它们的掉期。
感谢 Markus Buhatem Koch 的讨论为这篇文章提供了帮助。
原文:https://yulesa.medium.com/dex-gas-comparison-617d58c0cc19