Raydium 是 Solana 链上的一个 DeFi 应用,它通过集成自动做市商(AMM)与 OpenBook(前身 Serum)的中央限价订单簿(CLOB),实现了一种混合模型。其核心机制包括使用斐波那契数列进行流动性分配,优化交易价格和滑点,并允许用户进行无需许可的池子创建。
Raydium
Raydium 是一个 DeFi 应用,它允许交易者以无需信任的方式将一种 Token 兑换为另一种 Token。 它是 Solana 上早期进行交易的自动化做市商之一(尽管不是第一个)。
自动化做市商是订单簿的替代方案,假设读者已经熟悉订单簿。
自动化做市商在池子(智能合约)中持有两种 Token(Token X 和 Token Y)。它允许任何人从池子中提取 Token X,但他们必须存入一定数量的 Token Y,以便池子中资产的“总额”不减少,其中我们将“总额”视为两种资产数量的乘积。
AMM 公式
这里 x′ 和 y′ 是交易后池子的 Token 余额,x 和 y 是交易前池子的 Token 余额。
这保证了池子的资产持有量只能保持不变或增加。大多数池子都会收取一定费用。余额的乘积不仅应该增加,而且至少应该增加一定数量以支付费用。
资产由 流动性提供者 提供给池子,他们收到所谓的 LP Token 来代表他们在池子中的份额。
在 AMM 中,价格发现是自动的。它由池子中资产的比例决定。具体来说,如果我们有 Token x 和 Token y,价格的确定方式如下:
AMM 的价格发现
y 的价格发现也是如此。具体来说,放入池子中的资产 x 越多,它就越“丰富”,x 的价格就会下降。
无需等待合适的“买入”或“卖出”订单出现。它总是存在。如果 AMM 中的价格与另一个交易所的价格不匹配,那么交易者将套利差价,使价格恢复平衡。
我们应该强调,这是“现货”或“边际”价格。如果你购买任何数量的 x,你支付的实际价格将比此计算结果更差。
即使是小额订单也会影响 AMM 中的价格。
流动性提供者无法控制其资产的售价,并且会遭受无常损失。
Raydium AMM 于 2021 年推出,是 Solana 区块链上一个关键的去中心化金融 (DeFi) 协议,以其创新的混合模型而闻名,该模型将自动化做市商 (AMM) 与 OpenBook(前身为 Serum)的中心限价订单簿 (CLOB) 相结合。
Raydium 池子兑换
与仅依赖池子储备的 Uniswap 等传统 AMM 不同,Raydium 与 OpenBook 的集成允许流动性提供者 (LP) 利用更广泛的订单流,从而减少滑点并提高资本效率。 主要功能包括:
自成立以来,Raydium 在 Solana 中推动了大量的流动性,支持新 Token 上市的 AcceleRaytor 启动板和激励流动性供应的无需许可的农场等功能。 它的采用突显了其在推动 Solana DeFi 增长方面的作用。
Raydium 高级兑换流程
本分析深入探讨 Raydium 的技术架构、指令流程、基于斐波那契的流动性分配等独特功能以及开发人员的注意事项,这些都来自官方文档、二手来源和可用的开源代码。
Raydium AMM 在 Solana 上运行,利用其基于账户的模型来管理状态和执行指令。 该架构围绕以下内容展开:
恒定乘积公式
指令流程包括:
Raydium 的混合模型在以下方面表现出色:当不存在直接池子或有更好的定价可用时,它能够通过 OpenBook 路由交易,如Raydium FAQ 中所述。
Raydium 的 AMM 程序用 Rust 实现,包含以下关键文件:
AMMInstruction
枚举,包括 SwapBaseIn、SwapBaseOut 和 MonitorStep。每个 Raydium 池子都依赖于多个帐户:
这些账户确保安全且隔离的操作,PDA 最大程度地降低了未经授权的访问风险。
Raydium 的指令在 instructions.rs
中定义,包括:
Raydium 资金转移流程
processor.rs 文件实现了这些指令,验证帐户并执行逻辑。 例如,process_swap_base_in 使用恒定乘积公式计算输出,并根据费用进行调整(通常为 0.25%,其中 0.22% 给 LP,0.03% 用于 RAY 回购)。
兑换遵循恒定乘积公式:
Raydium 使用的恒定乘积公式
基本性质成立:储备的乘积在交易前后必须保持不变。
假设一个 SOL-USDC 池子有:
扣除费用,并通过用户指定的容差来管理滑点。 这篇 Medium 文章 详细介绍了一个 SOL-USDC 兑换的 TypeScript 示例。
Raydium 的最佳价格兑换功能(可能在链下)会将 AMM 池子价格与 OpenBook 的订单簿进行比较。
如果 OpenBook 提供更好的价格(例如,通过市场订单匹配现有的限价订单),则交易可能会路由到那里。 这是从 Raydium FAQ 和 Decoding Raydium Swaps 中推断出来的,它们指出当不存在直接池子或为了更好的执行而通过 OpenBook 路由。
Raydium 的突出特点是其向 OpenBook 提供流动性,使用斐波那契数列来下达限价订单。 math.rs 文件包含一个生成序列的 fibonacci 方法(例如,0、1、2、3、5、8、13)。 这些数字可能决定价格水平(例如,与市场价格的 23.6%、38.2% 的偏差)或订单规模, 从而确保当前价格附近的价差较小,而更广泛的价差处具有更深的流动性。 MonitorStep 指令管理这些订单,根据池子储备对其进行调整,如 Raydium AMM 仓库中所述。
Raydium 白皮书详细介绍了这种方法,该方法提高了资本效率并减少了滑点,从而将 Raydium 与传统的 AMM 区分开来。
斐波那契流动性分配 用于优化 OpenBook(前身为 Serum)上的流动性,OpenBook 是一个中心限价订单簿 (CLOB)。 这种方法包括在从斐波那契比率得出的价格水平上下达限价订单,从而平衡了小额交易的窄价差和大额交易的更深流动性。 下面,我们将探讨这种机制的工作原理以及它如何在 Raydium 的智能合约中实现。
斐波那契流动性分配利用斐波那契数列的数学属性——斐波那契数列是一系列数字,其中每个数字都是前两个数字之和(例如,0、1、1、2、3、5、8 等)。
从这个序列中,得出特定的比率(例如,23.6%、38.2%、50%、61.8%),这些比率通常用于金融市场以识别关键的支撑位和阻力位。
Raydium 应用这些比率在 OpenBook 上围绕当前市场价格策略性地下达买入和卖出限价订单。
例如,如果 Token 对(例如 SOL/USDC)的当前价格为 100 美元:
斐波那契水平的样子图示
这会创建一个订单网格,就像一个流动性“安全网”,有效地支持频繁的小额交易和偶尔的大额交易。
智能合约工作流程
此序列图概述了智能合约的工作流程。 它从用户或系统触发 MonitorStep 指令开始。 Raydium AMM 程序获取当前价格,使用 math.rs 计算斐波那契价格水平,根据 processor.rs 中的池子储备确定订单规模,并将订单提交给 OpenBook。 确认后,池子状态将更新,从而完成该流程。
math.rs 文件负责斐波那契流动性分配的数学基础:
此文件提供了合约的其他部分所依赖的核心实用程序函数。
processor.rs 文件包含执行斐波那契策略的逻辑:
instruction.rs 文件定义了 MonitorStep 指令,该指令是维护斐波那契订单网格的关键:
流程:
这种动态调整确保了流动性在价格波动时保持最佳状态。
state.rs 文件跟踪池子的状态,这对于斐波那契逻辑至关重要:
让我们来看一个简化的场景:
2. processor.rs:在 OpenBook 上下达限价订单:
此网格确保流动性在战略水平上可用,从而适应市场变化。
通过使用斐波那契导出的价格水平,Raydium 实现了:
Raydium AMM 是一款复杂的 DeFi 协议,它将 AMM 效率与 CLOB 深度相结合,从而利用了 Solana 的速度和低成本。 其基于斐波那契的流动性分配、最佳价格兑换和无需许可的设计使其与众不同,但有限的代码透明度需要谨慎。 鼓励开发人员探索 Raydium AMM 仓库和 Raydium SDK,以构建创新的 DeFi 应用程序。
- 原文链接: extremelysunnyyk.medium....
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!