输入/搜索内容
内置函数
结构体
内置变量与常量
通用约定
交易所

领取仓位的手续费与farm奖励,不动本金。

exchange.IO(k, positionIds)
exchange.IO(k, positionIds, sell)
exchange.IO(k, id1, id2, ...)

示例

未领手续费超过1 USDC的仓位一起领取。

javascript
function main() { var list = exchange.IO("lp.positions", "SOL_USDC") if (!list) { Log("查询失败:", GetLastError()) return } var ids = list.filter(function(p) { return p.feesValue > 1 }).map(function(p) { return p.id }) if (ids.length == 0) { Log("没有要领的") return } var r = exchange.IO("lp.collect", ids) if (!r) { Log("领取失败:", GetLastError()) return } r.positions.forEach(function(p) { Log(p.id, "手续费", p.feesBase, "SOL", p.feesQuote, "USDC", "奖励", JSON.stringify(p.rewards)) }) }

返回值

类型描述

object / 空值

{txHash, txHashes, positions, sells}:txHash为第一笔交易签名,txHashes为全部;positions每项为一个仓位的{id, symbol, txHashes, principalBase, principalQuote, feesBase, feesQuote, receivedBase, receivedQuote, rewards, rentRefundSol, feeSol},sells为卖回计价币的兑换,见备注。仓位不属于本钱包、模拟失败、交易失败时返回空值。

参数

名称类型必填描述

k

string

是

固定为lp.collect,用于领取手续费与奖励。

positionIds

array / string

是

仓位ID的数组;也可以把几个仓位ID依次写成参数。仓位ID的写法同lp.positions的id,都必须属于本钱包。

sell

bool

否

为true时把领到的基础币用Jupiter市价单卖成计价币。缺省false。

参考

备注

每个仓位一笔交易:DLMM为claim_fee2与claim_reward2,Raydium为流动性为0的decrease_liquidity_v2(同时结算池子全部已初始化的奖励),Orca为update_fees_and_rewards + collect_fees_v2 + collect_reward_v2。仓位与流动性不变;本金部分principalBase、principalQuote一般为0。

lp.decrease与lp.remove也会顺带领取手续费与奖励,撤出前不必先领。领取本身要付网络费,未领的手续费很少时不划算:先用lp.positions的feesValue判断。

返回的仓位行
字段说明
receivedBase、receivedQuote实际拿回的两种代币(按交易前后余额计算)
feesBase、feesQuote其中的手续费部分(按发送前链上可领的量拆出)
principalBase、principalQuote其中的本金部分 = 拿回的 − 手续费
rewards领到的farm奖励[{mint, symbol, amount}](不含池子的两种代币)
rentRefundSol关仓退回的租金(SOL)
feeSol这些交易付的网络费(SOL)

朝向(基础币、计价币)按稳定币(其次SOL)作计价币。sells每项为{symbol, qty, txHash},卖出失败时为{symbol, qty, error};卖出是Jupiter市价单,只等广播、不等确认,用exchange.IO("receipt")查结果。

交易的执行

每笔交易发送前都用节点模拟一遍,模拟失败不发送并报出原因(DLMM、Raydium CLMM、Orca Whirlpool的错误码附名字);计算单元上限按模拟用量加余量,优先费按最近写这些账户的交易的费率取第75百分位,不超过exchange.IO("priorityFee")的上限。交易确认后才返回,实际数量按交易前后的余额计算。120秒内既没确认也证明不了过期时报outcome is unknown并附交易签名:交易可能已经上链,先用exchange.IO("receipt")核对再决定是否重试。