Skip to main content

你将构建什么

一个循环运行的复投机器人,它会:
  1. 监控你当前 LP 仓位里累积的手续费
  2. 手续费超过可配置的阈值后领取
  3. 在同一个流程里把领取到的代币兑换成 SOL
  4. 把 SOL 重新存入同一个池子,实现收益复投(Compound)
不需要智能合约知识:机器人全程使用 LP Agent 的 Open API。
新的 claim-fee-tx 接口可以在同一个响应里返回兑换成 SOL 的交易,所以重新存入之前不需要再单独做一次兑换。所有交易都通过 Jito 上链,上链成功率高得多:而且免费。

复投的原理

LP 手续费收益会在你的仓位里累积,但它们本身不会再赚手续费:在你领取并重新投入之前,它们一直闲置着。一次复投就是把这些闲置的手续费变成更多流动性:

机器人的决策循环

每个检查周期,机器人都按下面的流程执行:

机器人要做的关键决策


前置条件

  • 一个 LP Agent API key(在 API Dashboard 获取)
  • 一个有 SOL 可以付交易手续费的 Solana 钱包
  • Node.js >= 18

配置

运行机器人之前,先调整这些设置:

分步教程

第 1 步:初始化

配置好 API 客户端和钱包(和 zap-in 教程 里的样板代码一样):

第 2 步:找出有累积手续费的仓位

查询你的当前仓位,挑出未领取手续费值得领取的那些。
不管仓位在不在区间内,手续费都可以领取:累积的手续费会一直留在仓位里,直到你领取为止。如果某个仓位已经偏离区间,你照样可以领取,然后要么存到别的地方,要么配合再平衡一起用。

第 3 步:生成领取 + 兑换成 SOL 的交易

传入 swapToNative: true 时,claim-fee-tx 接口可以在一次调用里同时返回领取交易和兑换成 SOL 的交易。
返回内容:
如果某个手续费代币本身就是 SOL,就不会为它生成兑换交易:领取交易会直接把它转到你的钱包。

第 4 步:签名并上链

签名每一笔交易,然后通过上链接口提交。上链接口会先发送领取 bundle,再发送兑换 bundle。
始终使用 landing-claim-fee-tx,不要自己通过 RPC 提交交易。LP Agent 的 Jito 集成上链成功率高得多:而且免费。

第 5 步:重新存入同一个池子

领取交易上链后,你的钱包里会多出一些 SOL。读取新的 SOL 余额,留出一部分作为以后的手续费预留,然后把剩下的 zap 进同一个池子。
这个示例会以当前价格为中心开一个新仓位,而不是往原来的仓位里追加。大多数策略都更喜欢这种做法:即使行情在变,你的区间也能一直紧贴当前价格。

参考

如何选择 MIN_FEE_USD

每次复投大约要花 0.01–0.03 SOL 的交易手续费(领取 + 兑换成 SOL + zap-in)。按 ~150/SOL算,也就是150/SOL 算,也就是 1.50–4.50。设置‘MINFEEUSD‘时要保证收益能轻松覆盖成本:对大多数用户来说,‘4.50。设置 `MIN_FEE_USD` 时要保证收益能轻松覆盖成本:对大多数用户来说,`5` 是一个稳妥的默认值。

常见错误

小贴士

  • 放慢检查节奏:手续费是按小时累积的,不是按秒。每 5–15 分钟检查一次就够了,还能降低 API 用量。
  • 超出区间的仓位:手续费仍然可以领取,但如果你重新存入同一个区间,就等于往不活跃的流动性里加钱。可以考虑改用再平衡,或者把新的 bin 区间设在当前 active bin 附近(示例机器人就是这么做的)。
  • 考虑税务影响:在很多司法辖区,每次领取都算一次应税事件:请查阅当地规定。
  • DAMM V2 支持:同一套代码适用于 DLMM 和 DAMM V2:唯一的区别是请求 body 里的 type 字段。

用到的 API 接口


完整机器人脚本

下面是完整的机器人代码,可以直接复制粘贴运行:

下一步