For the complete documentation index, see llms.txt. This page is also available as Markdown.

主要功能

1️⃣ Singleton

在 PancakeSwap v3 中,每个流动性资金池都有自己的合约,这使得创建资金池以及跨多个资金池进行兑换的成本更高。

Infinity 通过实现 Singleton 模型解决了这一问题。现在,所有资金池都存放在一个名为 PoolManager 的单一合约中。这一改变将资金池创建的 gas 成本降低多达 99%,并通过避免不必要的代币转移,使多跳兑换(经过多个资金池的兑换)的成本大幅降低。

⚙️ 工作原理:

  • 每个资金池的数据都使用唯一的资金池 ID 存储在一个共享合约中。

  • 创建新资金池现在只是一次状态更新,而不是一次完整的合约部署。

  • 跨资金池兑换更快且消耗更少的 gas。

这种 Singleton 方法,连同 Flash Accounting 和 ERC-6909 等其他优化,共同使 PancakeSwap Infinity 成为当今最省 gas 的 DEX 平台之一。


⚡️ Flash Accounting

Flash Accounting 是 PancakeSwap Infinity 中一项强大的优化,有助于在多跳兑换和流动性变更等复杂交易期间降低 gas 费。

在旧版本(如 v3)中,代币会在交易的每一步进出每个资金池。这导致高昂的 gas 成本,尤其是对于多跳兑换。

有了 Flash Accounting,这就不再必要了。PancakeSwap Infinity 不再在每一步之后转移代币,而是在内部跟踪所有代币的流动,并仅在整个交易结束时进行一次最终转移。这节省了大量 gas。

⚙️ 工作原理:

  • 当你与 Infinity 交互时(例如兑换或添加流动性),系统会计算你应支付或应收取代币的净余额。

  • 这些净代币余额会使用 Transient Storage 临时存储,这是随以太坊 Cancun 升级(EIP-1153)引入的一项新特性。

  • Transient Storage 比传统存储更便宜,因为它只在交易期间存在——无需进行永久性的写入或读取。


🪙 原生代币支持

随着 Singleton 架构和 Flash Accounting 的引入,PancakeSwap Infinity 现在可在流动性资金池中直接支持原生 gas 代币(如 BNB、ETH)——无需再进行封装和解封装。

✅ 主要亮点

  • 直接原生代币资金池: 你现在可以创建如 ETH/USDC、BNB/CAKE 这样的资金池,而无需 WETH 或 WBNB。

  • 省 gas: 原生代币转移比 ERC-20 代币转移便宜约 50%,从而为兑换和流动性操作带来更低的 gas 成本。

曾被移除,现已重新启用: 由于实现复杂以及流动性碎片化的问题,原生代币支持在早期版本中曾缺失。


📈 自定义定价曲线

PancakeSwap Infinity 赋予开发者为资金池创建自定义定价模型的能力——超越大多数 AMM 所采用的传统模型。

开发者可以构建全新的兑换行为和流动性模型,专为特定资产类型或交易策略量身打造。

🔧 什么是自定义定价曲线?

自定义定价曲线允许开发者:

  • 绕过原生资金池管理器逻辑,创建具有自定义兑换行为的资金池。

  • 改变兑换或流动性修改时代币数量的计算方式。

  • 纳入自定义费用机制,例如:

    • 流动性提取费用

    • 基于策略的回扣或惩罚

所有这些都通过 swap 前/后 hook 回调实现,它们可以动态拦截和修改兑换参数。

🛠 示例用例

  • StableSwap 曲线: 围绕 1:1 价格比设计更平缓的曲线,降低 USDC 和 USDT 等资产之间的价格影响。

  • RWAs: 为具有动态供应量的不同资产类型创建自定义行为。

  • Hook 层级费用: 收取不同于资金池层级费用的独特费用,例如开发者费用。

  • 自定义风险模型: 调整定价以反映波动性、预言机数据或外部指标。

在以往的 AMM 版本中(如 PancakeSwap v2/v3),定价逻辑是硬编码且僵化的。PancakeSwap Infinity 的架构解锁了构建资本效率更高、更量身定制的资金池的能力。

🔍 开发者灵活性

  • 开发者可以部署自定义 hook 合约来覆盖定价逻辑。

  • beforeSwap 和 afterSwap 等 hook 回调允许完全控制代币 delta 的计算和应用方式。


🧮 ERC-6909:高效的多代币记账

PancakeSwap Infinity 采用 ERC-6909,这是一种轻量且省 gas 的代币标准,专为在单一合约内对多种代币进行内部记账而设计。它用 mint 和 burn 原语取代了许多传统的 ERC-20 操作——从而带来显著的 gas 节省和简化的交易流程。

⚙️ 工作原理

ERC-6909 代币不再在每次交互时将代币移入和移出协议,而是表示内部余额:

  • Mint:当用户存入代币或执行交易时,他们可以选择接收 ERC-6909 代币作为凭证。

  • Burn:之后,用户无需再次转移 ERC-20 代币,只需销毁这些 ERC-6909 代币即可结算余额或为新操作提供资金。

这种模型大幅减少了对外部代币转移的需求,而外部转移通常会产生更高的 gas 成本并与第三方逻辑交互(如 USDC 的黑名单检查)。

🪙 ERC-6909 的优势

特性
优势

✅ 内部余额凭证

无需在用户和合约之间反复转移代币

✅ 省 gas 的 Mint/Burn

无论代币种类,开销恒定,无需外部合约调用

✅ 比 ERC-1155 更简单

代码体积更小,无回调,无批量转移要求

✅ 多代币支持

单一合约可以跟踪多种代币类型,余额相互隔离

✅ 与 PoolManager 无缝衔接

消除冗余的 ERC-20 授权和转移

🚀 用例

  • 高频交易者: 避免高 gas 的转移,直接使用内部余额进行交互。

  • 流动性管理者: 更高效地开仓和平仓,无需过多的代币移动。

💡 关键说明

  • 当用户无需立即结算代币转移时,可以选择加入 ERC-6909 流程。

  • 内部余额可以稍后合并并进行净额结算,为高级用户提供更大的控制力和灵活性。


donate() 方法允许用户通过捐赠代币,直接激励资金池内处于价格区间内的流动性提供者。该方法依赖资金池的费用记账系统来完成支付,确保仅支持资金池代币。

🔹 主要功能:

  • 直接向 LP 支付: 捐赠会直接发放给流动性提供者,奖励那些在资金池活跃区间内维持流动性的人。

  • 仅支持资金池代币: donate() 方法仅支持以资金池代币进行捐赠,因为它利用费用记账系统来确保正确分配。

  • 向所有用户开放: 任何用户都可以调用 donate() 方法,使任何人都能激励活跃的流动性提供。

虽然 donate() 方法是激励 LP 的强大工具,但捐赠者应注意,他们的捐赠可能被其他用户抢先交易(front run)。当某个用户在捐赠发生前迅速向资金池添加流动性,从而获得一部分捐赠资金时,就可能发生这种情况。

为防止抢先交易,捐赠者在设计其捐赠机制时可能需要考虑额外的策略,例如:

  • 确保以一种最大限度减少机会主义抢先交易能力的方式进行捐赠。

  • 添加时间延迟或特定条件(使用 donate 前/后 hook 回调),以确保捐赠不会以这种方式被利用。

Last updated

Was this helpful?