@w3lib/solana-batch-call 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/README.md +205 -2
- package/dist/address.d.ts +2 -0
- package/dist/address.d.ts.map +1 -1
- package/dist/address.js +8 -0
- package/dist/address.js.map +1 -1
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -0
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +5 -0
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +16 -0
- package/dist/layout.js.map +1 -1
- package/dist/liquidity/amm.d.ts +7 -0
- package/dist/liquidity/amm.d.ts.map +1 -0
- package/dist/liquidity/amm.js +307 -0
- package/dist/liquidity/amm.js.map +1 -0
- package/dist/liquidity/clmm.d.ts +18 -0
- package/dist/liquidity/clmm.d.ts.map +1 -0
- package/dist/liquidity/clmm.js +85 -0
- package/dist/liquidity/clmm.js.map +1 -0
- package/dist/liquidity/common.d.ts +94 -0
- package/dist/liquidity/common.d.ts.map +1 -0
- package/dist/liquidity/common.js +228 -0
- package/dist/liquidity/common.js.map +1 -0
- package/dist/liquidity/index.d.ts +34 -0
- package/dist/liquidity/index.d.ts.map +1 -0
- package/dist/liquidity/index.js +157 -0
- package/dist/liquidity/index.js.map +1 -0
- package/dist/liquidity/orca.d.ts +6 -0
- package/dist/liquidity/orca.d.ts.map +1 -0
- package/dist/liquidity/orca.js +303 -0
- package/dist/liquidity/orca.js.map +1 -0
- package/dist/liquidity/raydiumClmm.d.ts +6 -0
- package/dist/liquidity/raydiumClmm.d.ts.map +1 -0
- package/dist/liquidity/raydiumClmm.js +307 -0
- package/dist/liquidity/raydiumClmm.js.map +1 -0
- package/dist/liquidity/types.d.ts +150 -0
- package/dist/liquidity/types.d.ts.map +1 -0
- package/dist/liquidity/types.js +2 -0
- package/dist/liquidity/types.js.map +1 -0
- package/dist/lp.d.ts +168 -0
- package/dist/lp.d.ts.map +1 -0
- package/dist/lp.js +632 -0
- package/dist/lp.js.map +1 -0
- package/dist/lpMath.d.ts +82 -0
- package/dist/lpMath.d.ts.map +1 -0
- package/dist/lpMath.js +365 -0
- package/dist/lpMath.js.map +1 -0
- package/dist/shortcuts.d.ts +8 -0
- package/dist/shortcuts.d.ts.map +1 -1
- package/dist/shortcuts.js +1 -1
- package/dist/shortcuts.js.map +1 -1
- package/dist/subpaths/liquidity.d.ts +23 -0
- package/dist/subpaths/liquidity.d.ts.map +1 -0
- package/dist/subpaths/liquidity.js +19 -0
- package/dist/subpaths/liquidity.js.map +1 -0
- package/dist/subpaths/lp.d.ts +31 -0
- package/dist/subpaths/lp.d.ts.map +1 -0
- package/dist/subpaths/lp.js +33 -0
- package/dist/subpaths/lp.js.map +1 -0
- package/dist/subpaths/write.d.ts +22 -0
- package/dist/subpaths/write.d.ts.map +1 -0
- package/dist/subpaths/write.js +19 -0
- package/dist/subpaths/write.js.map +1 -0
- package/dist/write/batch.d.ts +41 -0
- package/dist/write/batch.d.ts.map +1 -0
- package/dist/write/batch.js +46 -0
- package/dist/write/batch.js.map +1 -0
- package/dist/write/collect.d.ts +50 -0
- package/dist/write/collect.d.ts.map +1 -0
- package/dist/write/collect.js +220 -0
- package/dist/write/collect.js.map +1 -0
- package/dist/write/instructions.d.ts +16 -0
- package/dist/write/instructions.d.ts.map +1 -0
- package/dist/write/instructions.js +89 -0
- package/dist/write/instructions.js.map +1 -0
- package/dist/write/send.d.ts +115 -0
- package/dist/write/send.d.ts.map +1 -0
- package/dist/write/send.js +720 -0
- package/dist/write/send.js.map +1 -0
- package/dist/write/signer.d.ts +94 -0
- package/dist/write/signer.d.ts.map +1 -0
- package/dist/write/signer.js +197 -0
- package/dist/write/signer.js.map +1 -0
- package/dist/write/transaction.d.ts +75 -0
- package/dist/write/transaction.d.ts.map +1 -0
- package/dist/write/transaction.js +133 -0
- package/dist/write/transaction.js.map +1 -0
- package/dist/write/transfer.d.ts +72 -0
- package/dist/write/transfer.d.ts.map +1 -0
- package/dist/write/transfer.js +127 -0
- package/dist/write/transfer.js.map +1 -0
- package/package.json +23 -5
- package/src/address.ts +9 -0
- package/src/client.ts +10 -0
- package/src/index.ts +2 -1
- package/src/layout.ts +17 -0
- package/src/liquidity/amm.ts +353 -0
- package/src/liquidity/clmm.ts +108 -0
- package/src/liquidity/common.ts +285 -0
- package/src/liquidity/index.ts +177 -0
- package/src/liquidity/orca.ts +344 -0
- package/src/liquidity/raydiumClmm.ts +348 -0
- package/src/liquidity/types.ts +158 -0
- package/src/lp.ts +850 -0
- package/src/lpMath.ts +420 -0
- package/src/shortcuts.ts +1 -1
- package/src/subpaths/liquidity.ts +45 -0
- package/src/subpaths/lp.ts +71 -0
- package/src/subpaths/write.ts +29 -0
- package/src/write/batch.ts +78 -0
- package/src/write/collect.ts +286 -0
- package/src/write/instructions.ts +98 -0
- package/src/write/send.ts +876 -0
- package/src/write/signer.ts +314 -0
- package/src/write/transaction.ts +181 -0
- package/src/write/transfer.ts +189 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### 新功能
|
|
6
|
+
|
|
7
|
+
- 添加 / 移除流动性,子路径 `@w3lib/solana-batch-call/liquidity`(不依赖各 DEX 的 SDK):
|
|
8
|
+
- `buildAddLiquidity` / `buildRemoveLiquidity` / `buildCollectFees` 只构建(报价 + 按顺序执行的指令),`addLiquidity` / `removeLiquidity` / `collectFees` 构建后签名发送(钱包同 `/write`)
|
|
9
|
+
- Raydium CLMM、Orca Whirlpool:新建仓位(价格区间 / tick / 全区间,给一边算另一边)、追加、按比例移除、全部移除并关闭仓位、领取手续费和挖矿奖励;Orca 自动初始化缺少的 tick 数组
|
|
10
|
+
- Raydium CPMM、AMM v4:存入(给一边,另一边按储备比例)、按比例取出
|
|
11
|
+
- SOL 自动包装 / 解包,缺少的代币账户自动创建;滑点按价格范围算集中流动性的上下限
|
|
12
|
+
- `createProgramAddress`(按给定种子算 PDA)
|
|
13
|
+
- `/lp` 的数学工具新增 `getLiquidityForAmounts`、`getMintAmounts`、`tickAtSqrtPrice`、`priceToTick`、`getMinAmounts` / `getMaxAmounts` 等
|
|
14
|
+
|
|
15
|
+
## 0.3.0
|
|
16
|
+
|
|
17
|
+
### 新功能
|
|
18
|
+
|
|
19
|
+
- 批量写操作,子路径 `@w3lib/solana-batch-call/write`(只做查询时打包不会带上;不依赖 Solana SDK,私钥用 WebCrypto 的 Ed25519 签名,没有新增依赖):
|
|
20
|
+
- `batchTransfer`:一对多转账(SOL / SPL Token / Token-2022,可混合),多个收款人打包进同一笔交易,收款人没有 ATA 时自动创建
|
|
21
|
+
- `batchCollect`:多钱包归集,`feePayer` 付全部手续费(子钱包不需要 SOL),可选关闭清空的代币账户、扫空 SOL
|
|
22
|
+
- `batchCall`:批量调用程序,指令可以是 web3.js / @solana/kit / 本库格式
|
|
23
|
+
- 每笔先模拟,失败的调用单独剔除;计算单元上限按模拟结果设置,优先费用默认按最近费用自动设置;blockhash 过期未上链时自动换新 blockhash 重发
|
|
24
|
+
- 浏览器钱包:Wallet Standard 钱包、@solana/wallet-adapter 的 adapter / useWallet()、@solana/kit 的 TransactionSigner,可以和私钥混用;同一批交易钱包只确认一次
|
|
25
|
+
- 指令工具:`systemTransfer`、`transferChecked`、`createAssociatedTokenAccountIdempotent`、`closeAccount`、`setComputeUnitLimit`、`setComputeUnitPrice`
|
|
26
|
+
- LP 仓位,子路径 `@w3lib/solana-batch-call/lp`:`getLpPositions` / `lpPositions` 查一个地址的 Raydium CLMM、Orca Whirlpool 仓位 NFT 和 Raydium AMM v4、CPMM 的 LP 代币,两种代币的数量、未领取手续费、可选美元价值(DefiLlama)。账户布局和计算用主网快照与官方 SDK 逐位核对;免费公共节点可以用 `mints` / `pools` 指定代币和池子
|
|
27
|
+
- `parseUnits`(`formatUnits` 的逆运算);`SolanaClient.isNativeMint(mint)`、`SolanaClient.commitment`
|
|
28
|
+
|
|
3
29
|
## 0.2.2
|
|
4
30
|
|
|
5
31
|
- 修复:服务端临时故障(-32000 server busy / overloaded / temporarily unavailable / timeout,或 HTTP 5xx + -32603)不再暂停批量 10 分钟,按节点故障处理、换节点(与限频一样不降级,降级只会加重负载)。批量收到 5xx + -32603 时先重试一次批量(偶发故障这次就成功);仍失败时逐条发送,逐条成功说明节点用 5xx 拒绝批量,才暂停批量。5xx 下的其他错误(方法数量超限、账户数超限、参数错误、minContextSlot 等)照常按类型处理
|
package/README.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# @w3lib/solana-batch-call
|
|
2
2
|
|
|
3
|
-
Solana 批量读取库:余额(SOL / SPL Token / Token-2022)、代币详情、NFT
|
|
3
|
+
Solana 批量读取库:余额(SOL / SPL Token / Token-2022)、代币详情、NFT、[LP 仓位](#lp-仓位)(子路径 `/lp`);[添加 / 移除流动性](#添加--移除流动性)(子路径 `/liquidity`);以及[批量写操作](#批量写操作)(一对多转账、多钱包归集、批量调用程序,子路径 `/write`)。不依赖 Solana SDK,直接发 JSON-RPC。
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
pnpm add @w3lib/solana-batch-call
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
+
**在线 demo**:<https://web3-lib.github.io/libs/solana/>(余额、代币信息、资产列表、NFT、LP 仓位,显示每次查询实际发出的 RPC 调用数)。本地运行:`pnpm --filter @w3lib/solana-batch-call demo`(http://localhost:5175)
|
|
10
|
+
|
|
9
11
|
- **一次请求查一批**:账户读取用 `getMultipleAccounts`(自动去重、按 100 个一组拆分、最多同时 3 个请求);同一 tick 内发起的 RPC 调用合并成一个 JSON-RPC 批量请求
|
|
10
12
|
- **免费节点也能查余额**:指定代币时在本地推导关联代币账户(ATA)地址,和 mint 账户一起用 `getMultipleAccounts` 读完,不需要 `getTokenAccountsByOwner` 这类索引方法
|
|
11
13
|
- **只查主币不读账户数据**:SOL 余额(`getSolBalances`、单币模式里的主币)用带 `dataSlice` 的 `getMultipleAccounts` 只取 lamports,与代币账户分开两组、同一个批量请求发出——钱包是数据很大的程序账户时也不会拖慢或超时
|
|
@@ -87,6 +89,123 @@ await getOwnerNfts(owner) // 某地址持有的全部 NFT(需要支持索
|
|
|
87
89
|
|
|
88
90
|
需要支持 `getTokenAccountsByOwner` 的节点,内置的免费公共节点大多不支持。
|
|
89
91
|
|
|
92
|
+
## LP 仓位
|
|
93
|
+
|
|
94
|
+
查一个地址的流动性仓位(子路径 `@w3lib/solana-batch-call/lp`,不用时打包不会带上,约 14KB / gzip 约 5.5KB):**Raydium CLMM**、**Orca Whirlpool** 的仓位 NFT,**Raydium AMM v4**、**Raydium CPMM** 的 LP 代币。返回两种代币的数量、未领取的手续费(集中流动性),可选美元价值。
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
import { getLpPositions } from '@w3lib/solana-batch-call/lp'
|
|
98
|
+
|
|
99
|
+
// 扫描地址的全部代币账户找仓位 NFT 和 LP 代币(需要支持 getTokenAccountsByOwner 的节点)
|
|
100
|
+
await getLpPositions(owner, { provider: 'https://my-rpc.example' })
|
|
101
|
+
// [
|
|
102
|
+
// { type: 'clmm', protocol: 'raydium-clmm', protocolName: 'Raydium CLMM', pool: '3ucNos…', positionMint: '6MZXir…', position: '18Pfqm…',
|
|
103
|
+
// token0: { mint: So111…, symbol: 'SOL', decimals: 9 }, token1: { mint: EPjF…, symbol: 'USDC', decimals: 6 },
|
|
104
|
+
// amount0: '140261364355', amount0Formatted: '140.261364355', amount1Formatted: '6852.200542',
|
|
105
|
+
// fees0Formatted: '0.546399344', fees1Formatted: '59.504301', fee: 400, tickSpacing: 1, tickLower: -23362, tickUpper: -19392, tick: -22166,
|
|
106
|
+
// inRange: true, liquidity: '357565923571', price: 108.99, priceLower: 96.7, priceUpper: 143.8 },
|
|
107
|
+
// { type: 'amm', protocol: 'raydium-amm', pool: '58oQCh…', lpMint: '8HoQne…', balance, totalSupply, share: 0.18, amount0Formatted, amount1Formatted, … },
|
|
108
|
+
// ]
|
|
109
|
+
|
|
110
|
+
// 免费公共节点:指定仓位 NFT / LP 代币的 mint(按 ATA 读余额),AMM v4 / CPMM 再指定池子
|
|
111
|
+
await getLpPositions(owner, { mints: [positionNft, lpMint], pools: [ammPool] })
|
|
112
|
+
|
|
113
|
+
// 美元价值(DefiLlama,默认不查):valueUsd、feesUsd,结果按价值排序
|
|
114
|
+
await getLpPositions(owner, { provider, prices: true })
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
| 选项 | 说明 |
|
|
118
|
+
| --- | --- |
|
|
119
|
+
| `mints` | 只看这些代币(仓位 NFT 的 mint、LP 代币的 mint),按 ATA 读余额,免费节点也能用。不传时扫描全部代币账户(需要支持 `getTokenAccountsByOwner` 的节点) |
|
|
120
|
+
| `pools` | Raydium AMM v4 / CPMM 的池子地址。LP 代币要找到对应的池子:不在这里的按 LP mint 用 `getProgramAccounts` 查找(免费公共节点大多不支持,这时报错并提示传 `pools`,或用 `protocols` 只查 CLMM / Whirlpool);不是 AMM v4 / CPMM 池子的地址会报错;不持有 Raydium 的 LP 代币时不会用到 |
|
|
121
|
+
| `protocols` | 只查某些协议:`'raydium-clmm'`、`'orca-whirlpool'`、`'raydium-amm'`、`'raydium-cpmm'`,默认全部 |
|
|
122
|
+
| `includeClosed` | 返回已清空的仓位(流动性为 0、手续费也领完,NFT 还在),默认 false |
|
|
123
|
+
| `prices` | `true` 用 DefiLlama,也可以传自己的 `SolanaPriceSource`;默认不查。价格源出错时照样返回仓位,只是 `valueUsd` / `feesUsd` 为 null |
|
|
124
|
+
| `onPriceError` | 价格源出错时调用(传入错误),用来区分“价格服务出错”和“代币没有价格” |
|
|
125
|
+
| `fetch` | 自定义 fetch(如走代理):快捷函数里同时用于节点请求和查价 |
|
|
126
|
+
| `signal` | 取消查询(AbortSignal) |
|
|
127
|
+
|
|
128
|
+
**怎么找仓位**:精度 0、数量 1 的代币按 PDA `["position", mint]` 推导 Raydium / Orca 的仓位账户,存在就是仓位;其他代币读 mint,mint 权限是 AMM v4(`5Q544f…`)或 CPMM 的权限地址时是 Raydium 的 LP 代币。整个查询一般 4~5 次请求(扫描 / 读余额、仓位账户和 mint、池子、tick 数组和金库、代币信息),每次都是批量读取。
|
|
129
|
+
|
|
130
|
+
**数值**(与链上程序的计算逐位一致,测试用主网账户快照与官方 SDK 核对过):
|
|
131
|
+
|
|
132
|
+
- 集中流动性:数量是撤出全部流动性能拿到的数量(向下取整,不含手续费);手续费 = 已记账的 + 流动性 × 区间内手续费增长的变化,与程序领取时的计算相同,不含挖矿奖励。Orca 固定大小和可变大小(DynamicTickArray)的 tick 数组都支持;有流动性却读不到两端的 tick 数据时(极少见)`fees0` / `fees1` 为 null,不会只报已记账的部分
|
|
133
|
+
- AMM v4 / CPMM:LP 份额 × (金库余额 − 不属于 LP 的部分)向下取整,与撤出流动性时一致。AMM v4 扣掉待提取的收益(need_take_pnl),CPMM 扣掉协议 / 基金 / 创建者手续费;总量用池子记录的 LP 数量。AMM v4 的池子还能用 OpenBook 挂单时(status 不是 6 SwapOnly,现在很少见),挂单里的资金没算进来,数量会略少
|
|
134
|
+
- `fee` 是手续费率(百万分之一,400 = 0.04%);价格都是 token1 / token0,按精度换算的浮点数,只用于展示
|
|
135
|
+
- Wrapped SOL 显示为 SOL(按客户端的 `nativeMints` 配置),价格就是 SOL 的价格
|
|
136
|
+
|
|
137
|
+
**局限**:质押在农场里的 LP 代币、Orca 的仓位组合(Position Bundle)、锁仓的 Raydium 仓位(NFT 不在用户名下)查不到;Meteora 等其他 DEX 暂不支持。免费公共节点不支持扫描(`getTokenAccountsByOwner`)和按 LP mint 找池子(`getProgramAccounts`),需要传 `mints` / `pools` 或用自己的节点(官方节点 `api.mainnet-beta.solana.com` 两个方法都支持,但只能在服务端用,且按方法限频:同一个批量请求里有两个 `getTokenAccountsByOwner` 就会被拒,可以用 `new HttpRpc(url, { batch: false })` 关闭合并)。
|
|
138
|
+
|
|
139
|
+
## 添加 / 移除流动性
|
|
140
|
+
|
|
141
|
+
子路径 `@w3lib/solana-batch-call/liquidity`:**Raydium CLMM**、**Orca Whirlpool**(仓位 NFT),**Raydium AMM v4**、**Raydium CPMM**(LP 代币),与 [LP 仓位](#lp-仓位) 相同的四个协议。不依赖各 DEX 的 SDK,指令按程序的格式本地编码。
|
|
142
|
+
|
|
143
|
+
- `buildAddLiquidity` / `buildRemoveLiquidity` / `buildCollectFees`:只读取、不签名,返回预计的数量和按顺序执行的指令(`steps`),可以当作报价,也可以自己组交易发送
|
|
144
|
+
- `addLiquidity` / `removeLiquidity` / `collectFees`:构建后签名发送,钱包与 `/write` 的 `batchCall` 相同(私钥、Keypair、Wallet Standard 钱包、wallet-adapter、@solana/kit 签名器)。准备工作(创建代币账户、初始化 Orca 的 tick 数组)和主指令能放进同一笔交易时合成一笔、原子执行(主指令模拟失败时什么都不发);放不下时先发准备工作。SOL 的包装和解包始终和主指令在同一步里,不会留下包装好的 SOL
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
import { SolanaClient } from '@w3lib/solana-batch-call'
|
|
148
|
+
import { getLpPositions } from '@w3lib/solana-batch-call/lp'
|
|
149
|
+
import { addLiquidity, buildAddLiquidity, collectFees, removeLiquidity } from '@w3lib/solana-batch-call/liquidity'
|
|
150
|
+
|
|
151
|
+
const client = new SolanaClient(rpcUrl)
|
|
152
|
+
|
|
153
|
+
// 报价:新建集中流动性仓位。池子按地址指定,价格是“1 个 token0 值多少个 token1”(池子的方向),给一边的数量
|
|
154
|
+
const plan = await buildAddLiquidity(client, owner, {
|
|
155
|
+
protocol: 'raydium-clmm', pool, priceLower: 140, priceUpper: 160, // 或 fullRange: true,或 tickLower / tickUpper
|
|
156
|
+
amount0Formatted: '1', // 或 amount0(最小单位);也可以两边都给
|
|
157
|
+
})
|
|
158
|
+
// { type: 'clmm', token0: { mint, symbol: 'SOL', decimals: 9 }, token1, tickLower, tickUpper, tick, price, liquidity,
|
|
159
|
+
// amount0Formatted, amount1Formatted, amount0Max, amount1Max, native: 'token0', positionMint,
|
|
160
|
+
// steps: [{ kind: 'setup', instructions }, { kind: 'add', instructions }],
|
|
161
|
+
// signers: [{ address: positionMint, secretKey }] } // 新仓位 NFT 的临时密钥,主指令所在的交易要它签名
|
|
162
|
+
|
|
163
|
+
// 发送:SOL 自动包装 / 解包
|
|
164
|
+
await addLiquidity(client, secretKey, { protocol: 'orca-whirlpool', pool, fullRange: true, amount0Formatted: '0.5' })
|
|
165
|
+
await addLiquidity(client, secretKey, { protocol: 'raydium-cpmm', pool, amount1Formatted: '100' }) // AMM:给一边,另一边按储备比例
|
|
166
|
+
|
|
167
|
+
// 已有仓位:直接用 getLpPositions 的结果(或 { protocol, positionMint } / { protocol, pool })
|
|
168
|
+
const [position] = await getLpPositions(owner, { provider: rpcUrl })
|
|
169
|
+
await addLiquidity(client, secretKey, { position, amount0Formatted: '0.1' }) // 追加
|
|
170
|
+
await removeLiquidity(client, secretKey, { position, percent: 50 }) // 按比例移除(集中流动性同时领取手续费和挖矿奖励)
|
|
171
|
+
await removeLiquidity(client, secretKey, { position, burn: true }) // 全部移除、关闭仓位(退回租金)
|
|
172
|
+
await collectFees(client, secretKey, { position }) // 只领取手续费和奖励
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
| | Raydium CLMM | Orca Whirlpool | Raydium CPMM | Raydium AMM v4 |
|
|
176
|
+
| --- | --- | --- | --- | --- |
|
|
177
|
+
| 新建 / 追加 | `open_position_with_token22_nft`(NFT 用 Token-2022,tick 数组由程序创建)/ `increase_liquidity_v2` | 初始化缺少的 tick 数组 → `open_position_with_token_extensions` → `increase_liquidity_v2` | `deposit`(按 LP 数量,两边按上限) | `deposit`(固定一边,另一边按上限和最小值) |
|
|
178
|
+
| 移除 | `decrease_liquidity_v2`(同时领取手续费、奖励)+ `close_position` | `decrease_liquidity_v2` + `collect_fees_v2` + `collect_reward_v2` + `close_position` | `withdraw` | `withdraw`(带 OpenBook 市场账户) |
|
|
179
|
+
| 领取 | 流动性为 0 的 `decrease_liquidity_v2` | `update_fees_and_rewards` + `collect_fees_v2` + `collect_reward_v2` | 计入 LP 份额 | 计入 LP 份额 |
|
|
180
|
+
|
|
181
|
+
选项(构建和发送都可以传):
|
|
182
|
+
|
|
183
|
+
- `slippage`:价格滑点,默认 `0.005`。集中流动性添加按价格在 `[p × (1 − s), p × (1 + s)]` 内最不利时需要的数量给出 `amount0Max` / `amount1Max`(实际只扣按成交价格算的部分),移除给出 `amount0Min` / `amount1Min`;AMM 按数量 × (1 ± s),两边都给时,按较少的一边算,另一边的上限不超过给的数量
|
|
184
|
+
- `native`:wSOL 那一边用 SOL 支付 / 收取,默认 `true`。用的是 wSOL 的关联代币账户:原来没有时创建、用完关闭(剩下的换回 SOL);原来就有时只补差额、不关闭(收到的留在 wSOL 账户里)
|
|
185
|
+
- `recipient`:新建仓位的 NFT 归谁,默认发送者(Orca 要求是发送者:开仓和加流动性在同一笔交易里,要 NFT 持有者签名)
|
|
186
|
+
- 发送时还有 `/write` 的发送参数(`feePayer`、`priorityFee`、`wait`、`onUpdate`…)和 `checkBalance`(默认 true:代币按预计数量、SOL 按上限减去已有的 wSOL 检查)
|
|
187
|
+
|
|
188
|
+
数值与说明:
|
|
189
|
+
|
|
190
|
+
- **流动性**:集中流动性的 `liquidity` 与程序算出来的逐位一致;CPMM 存入拿到的 LP 与计划一致;AMM v4 的 LP 按储备比例预计(储备随交易变化)
|
|
191
|
+
- **仓位**:往已有仓位追加、移除、领取都要求发送者在关联代币账户里持有仓位 NFT / LP 代币(与 `getLpPositions` 传 `mints` 时相同)
|
|
192
|
+
- **全部移除并关闭**(`burn: true`):同一笔交易里先领取手续费和奖励,再关闭仓位账户和 NFT,退回租金
|
|
193
|
+
- **奖励**:池子有挖矿奖励时一并领取(`rewardMints`),收到发送者的关联代币账户(没有时创建);数量要等交易执行后才知道
|
|
194
|
+
- **Token-2022**:代币按各自的代币程序处理;带转账手续费的代币不支持(程序按扣费前 / 后的数量检查上下限,构建时直接报错);挖矿奖励的代币不限
|
|
195
|
+
|
|
196
|
+
核对方式:在主网上以真实仓位持有人 / 交易所热钱包的身份模拟执行(`simulateTransaction`,取回执行后的账户):Raydium CLMM 和 Orca 的新建、追加、部分移除、全部移除并关闭、领取,AMM v4 和 CPMM 的存入、取出,流动性 / LP 数量与计划逐位核对,收到的数量不少于最小值。
|
|
197
|
+
|
|
198
|
+
**局限**:
|
|
199
|
+
|
|
200
|
+
- 不使用地址查找表(ALT),一步的指令要能放进一笔 legacy 交易(最坏情况:Raydium 移除带 3 个奖励、位图扩展、关闭仓位约 1180 字节,在 1232 以内)
|
|
201
|
+
- 带转账钩子(transfer hook)的 Token-2022 代币不支持
|
|
202
|
+
- 奖励金库余额不足时程序只发放一部分、剩下的继续记账,这时 `burn: true` 关闭仓位会失败(不会扣代币),先不带 `burn` 移除
|
|
203
|
+
- AMM v4 执行前会结算待提取的收益,储备可能比读到的略少:`slippage: 0` 时存入 / 取出可能失败
|
|
204
|
+
- 新建集中流动性仓位需要 NFT mint 的临时密钥一起签名:会修改交易的钱包(如自动加优先费用)不能用于新建,追加 / 移除不受影响
|
|
205
|
+
- `dryRun: true` 时如果准备工作和主指令放不进一笔交易,主指令的模拟看不到准备工作的结果,会报失败
|
|
206
|
+
|
|
207
|
+
打包:在已经用到 `SolanaClient` 的基础上,只用 `build*` 约增加 43KB(minify,gzip 约 14KB,含 `/lp` 的仓位查询),加上发送约 66KB(gzip 约 22KB,含 `/write` 的发送代码)。
|
|
208
|
+
|
|
90
209
|
## 余额的三种模式
|
|
91
210
|
|
|
92
211
|
| | 指定 mints(默认,`accounts: 'ata'`) | 指定 mints + `accounts: 'all'` | 扫描(不传 mints,或 `scan: true`) |
|
|
@@ -239,6 +358,86 @@ new SolanaClient(provider?, {
|
|
|
239
358
|
|
|
240
359
|
在 Node 里通过代理访问节点时:Node 自带的 `fetch` 默认不读 `HTTPS_PROXY`,Node 24+ 可以设置 `NODE_USE_ENV_PROXY=1`,或者通过 `fetch` 选项传入自定义实现。
|
|
241
360
|
|
|
361
|
+
## 批量写操作
|
|
362
|
+
|
|
363
|
+
子路径 `@w3lib/solana-batch-call/write`:只做查询时打包不会带上这部分代码。不依赖 Solana SDK,私钥签名用运行环境的 WebCrypto(Ed25519)。
|
|
364
|
+
|
|
365
|
+
```ts
|
|
366
|
+
import { NATIVE_MINT, SolanaClient } from '@w3lib/solana-batch-call'
|
|
367
|
+
import { batchCall, batchCollect, batchTransfer } from '@w3lib/solana-batch-call/write'
|
|
368
|
+
|
|
369
|
+
const client = new SolanaClient('https://my-rpc.example')
|
|
370
|
+
|
|
371
|
+
// 一对多转账:多个收款人打包进同一笔交易(按 1232 字节上限自动分笔);代币收款人没有 ATA 时自动创建
|
|
372
|
+
await batchTransfer(client, secretKey, [
|
|
373
|
+
{ to: a, formatted: '0.5' }, // 默认 SOL(options.token)
|
|
374
|
+
{ to: b, token: USDC, formatted: '20' },
|
|
375
|
+
])
|
|
376
|
+
|
|
377
|
+
// 归集:多个钱包 → 一个地址。feePayer 付所有手续费,子钱包不需要有 SOL,多个钱包的转账打包进同一笔交易
|
|
378
|
+
const { results } = await batchCollect(client, [key1, key2, key3], hotWallet, {
|
|
379
|
+
tokens: [USDC, NATIVE_MINT], // 包含 SOL:代币归集确认后扫空 SOL
|
|
380
|
+
feePayer: gasKey,
|
|
381
|
+
closeAccounts: true, // 关闭清空的代币账户,租金(约 0.00204 SOL)退回钱包后一起扫走
|
|
382
|
+
})
|
|
383
|
+
|
|
384
|
+
// 批量调用程序:每个调用是一组原子执行的指令(web3.js / @solana/kit / 本库格式都可以)
|
|
385
|
+
await batchCall(client, [
|
|
386
|
+
{ from: key1, instructions: [ix1, ix2] },
|
|
387
|
+
{ from: key2, instructions: ix3, signers: [newAccountKeypair] },
|
|
388
|
+
], { feePayer: gasKey })
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
**钱包**:base58 私钥(Phantom 等导出的 64 字节格式或 32 字节种子)、solana-keygen 的 JSON 数组、`Uint8Array`(64 字节,或 32 字节种子)、web3.js 的 `Keypair`、@solana/kit 的 `KeyPairSigner`,或自定义 `{ address, sign(message) }`(KMS / 硬件钱包,或运行环境的 WebCrypto 不支持 Ed25519 时自己用 @noble/curves 签名)。错误信息里不会带出私钥。32 字节的 base58 字符串不接受(和地址长得一样,传错成地址时会悄悄变成另一个钱包),32 字节种子请传 `Uint8Array`。
|
|
392
|
+
|
|
393
|
+
**浏览器钱包**:`from`、`feePayer`、`signers` 都可以直接传浏览器钱包,可以和私钥混用(如浏览器钱包当 `feePayer` 给一批子钱包付手续费):
|
|
394
|
+
|
|
395
|
+
```ts
|
|
396
|
+
// @solana/wallet-adapter(React):传 useWallet() 的返回值,或 wallet.adapter
|
|
397
|
+
const wallet = useWallet()
|
|
398
|
+
await batchTransfer(client, wallet, recipients)
|
|
399
|
+
|
|
400
|
+
// 直接用 Wallet Standard(Phantom / Solflare / Backpack / OKX 等都实现了)
|
|
401
|
+
import { getWallets } from '@wallet-standard/app'
|
|
402
|
+
const phantom = getWallets().get().find((w) => w.name === 'Phantom') // 已连接;指定账户传 { wallet: phantom, account }
|
|
403
|
+
await batchCollect(client, [key1, key2], hotWallet, { tokens: [USDC], feePayer: phantom })
|
|
404
|
+
|
|
405
|
+
// @solana/kit 的 TransactionSigner(如 @solana/react 的 useWalletAccountTransactionSigner)
|
|
406
|
+
await batchCall(client, [{ from: signer, instructions }])
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
- **一次确认**:同一批交易先全部模拟,再让钱包一次签完(Wallet Standard 的 `signTransaction` 一次传多笔),然后发送。所以同一批里依赖前面交易结果的调用模拟会失败(钱包签名前还没有交易发出):这类调用分成两次调用。例外:交易过期没上链时自动重发,每笔会再请求一次签名;同一个钱包出现在多个手续费支付者分组里时(如 batchCall 里不同调用的付款方不同),每组请求一次
|
|
410
|
+
- 钱包先签、本地私钥后签(有的钱包只在交易没有其他签名时才会往里加指令)。钱包改了交易(如加了优先费用)时:只有它一个签名者就接受(用户在钱包里确认过,这时 `fee` 为 null);还有其他签名者时这笔失败,不让本地私钥去签钱包改过的内容
|
|
411
|
+
- 用户拒绝时这批交易都是 `failed`,`error` 为 `'rejected by user'`
|
|
412
|
+
- 钱包换了交易的 blockhash 时,不知道新 blockhash 的有效期,这笔不会自动重发(误判过期再发一笔可能两笔都上链),等不到确认时为 `pending`
|
|
413
|
+
- 钱包需要支持 Wallet Standard(主流钱包都支持);不支持的 adapter(如部分硬件钱包 adapter)可以包成 @solana/kit 的 `TransactionPartialSigner`:`{ address, signTransactions: (txs) => … }`,`txs` 里是消息字节,返回 `{ [address]: 签名 }`
|
|
414
|
+
|
|
415
|
+
**打包与发送**:
|
|
416
|
+
- 同一手续费支付者的相邻调用打包进同一笔交易(`mode: 'pack'`,默认;`'tx'` 每个调用一笔)。Solana 一笔交易本来就能放多条指令,不需要 EVM 上 Disperse 那样的合约
|
|
417
|
+
- 每笔先模拟:失败的调用(余额不足、账户冻结、SOL 转给新地址但低于免租下限等)单独标记 `failed`,其余重新模拟后照常发送;模拟失败且同一支付者还有未确认的交易时,先等它们确认再模拟一次(后一笔依赖前一笔的结果时自动正确处理)。节点暂时的问题(限频、高度落后)会重试,不当成调用失败
|
|
418
|
+
- 计算单元上限按模拟结果设置(× 1.1 + 1000),优先费用默认 `'auto'`:按这笔交易可写账户的最近费用取 75 分位,不超过 `maxPriorityFee`(默认 1,000,000 micro-lamports / CU)。调用里自带的 SetComputeUnitLimit / SetComputeUnitPrice 指令会被去掉(和库加的重复会让交易失败),优先费用用 `priorityFee` 指定
|
|
419
|
+
- 交易发出后不等确认就发下一笔;等待期间每两次轮询重发一次原交易,一次 `getSignatureStatuses` 查所有交易。blockhash 过期仍没上链时换新 blockhash 重新模拟、重发,最多 `retries` 次(默认 2)。判断过期时,再查一次历史的那个节点的数据必须不早于看到过期的那个 slot(多节点 / 负载均衡时落后的节点可能还没看到已上链的交易),否则这一轮先不判断,避免重复执行
|
|
420
|
+
- Token-2022:有转账手续费的代币,`amount` 是转出的数量,收款方实际收到的更少;带 transfer hook 的代币,TransferChecked 需要额外的账户,本库不支持(模拟会失败,这一项 `failed`)
|
|
421
|
+
- 同一笔交易上链后才失败时一起回滚,里面的调用都是 `reverted`
|
|
422
|
+
|
|
423
|
+
**结果**:与输入一一对应,可以直接 `JSON.stringify`:
|
|
424
|
+
|
|
425
|
+
```ts
|
|
426
|
+
{ index: 0, from, status: 'confirmed', signature: '5x…', slot: 123, fee: '5000', computeUnits: 450, error: null }
|
|
427
|
+
// batchTransfer 另有 to / token / native / amount / formatted / createdAccount;
|
|
428
|
+
// batchCollect 另有 to / token / native / amount / formatted / close(关闭代币账户的结果)
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
`status` 与 EVM 版相同:`confirmed` / `reverted`(上链但失败,手续费已扣)/ `failed`(没有发出去,不花手续费)/ `sent`(`wait: false`;或广播时节点都连不上,交易可能已发出,`error` 里有说明)/ `pending`(等到 `timeout` 还没确认)/ `skipped` / `simulated`(`dryRun`)。`fee` 是整笔交易的手续费(每个签名 5000 lamports + 优先费用),同一笔交易里的调用相同,不含新建账户的租金。
|
|
432
|
+
|
|
433
|
+
**归集流程**(`batchCollect`):一次读出所有钱包的余额 → 归集地址没有该代币的 ATA 时创建(传了 `feePayer` 时随第一批转账创建;不传时先由第一个有这种代币的钱包单独创建,其他钱包只需付得起手续费)→ 打包发送代币转账(`closeAccounts` 时随后关闭代币账户)→ 包含 SOL 时等代币归集确认,按最新余额扫空 SOL:传了 `feePayer` 时整个余额转走,否则扣掉这笔的手续费后转走(余额归零)。代币没有全部归集成功的钱包不扫 SOL;余额为 0、低于 `minAmount`、钱包就是归集地址或 `feePayer` 的项为 `skipped`。Solana 上不需要先给子钱包补 gas,传 `feePayer` 即可;不传时没有 SOL 的钱包对应的项失败。`dryRun` 时代币转账照常模拟,扫 SOL 的金额要等归集之后才知道,只标记 `simulated`、不做模拟。
|
|
434
|
+
|
|
435
|
+
**共同选项**(`SendOptions`):`feePayer`、`priorityFee` / `maxPriorityFee`、`wait`(默认 true)、`timeout`(默认 120 秒)、`pollInterval`(默认 2 秒)、`retries`(默认 2)、`commitment`(`'confirmed'` / `'finalized'`)、`concurrency`(不同手续费支付者并发数,默认 8)、`dryRun`、`signal`、`onUpdate`。
|
|
436
|
+
|
|
437
|
+
**指令工具**:`systemTransfer`、`transferChecked`、`createAssociatedTokenAccountIdempotent`、`closeAccount`、`setComputeUnitLimit`、`setComputeUnitPrice`,生成本库格式的指令,可直接放进 `batchCall`。
|
|
438
|
+
|
|
439
|
+
**体积**(esbuild 打包、minify,对比只用 `SolanaClient`):引入 `batchTransfer` 增加约 22KB(gzip 约 8KB),三个函数都引入增加约 28KB(gzip 约 10KB),含浏览器钱包适配;没有新增依赖。
|
|
440
|
+
|
|
242
441
|
## 工具函数
|
|
243
442
|
|
|
244
443
|
```ts
|
|
@@ -251,19 +450,23 @@ import {
|
|
|
251
450
|
parseMint, parseTokenAccount, parseMetaplexMetadata, // 账户数据解析
|
|
252
451
|
parseTransferFeeConfig, // Token-2022 转账手续费扩展
|
|
253
452
|
formatUnits, // 按精度换算:formatUnits(1_500_000_000n, 9) === '1.5'(formatAmount 是同一个函数的旧名字,已不推荐)
|
|
453
|
+
parseUnits, // 反过来:parseUnits('1.5', 9) === 1_500_000_000n
|
|
254
454
|
TOKEN_PROGRAM_ID, TOKEN_2022_PROGRAM_ID, NATIVE_MINT, GENESIS_HASHES,
|
|
255
455
|
} from '@w3lib/solana-batch-call'
|
|
256
456
|
```
|
|
257
457
|
|
|
258
458
|
## 运行环境
|
|
259
459
|
|
|
260
|
-
Node 20.19+(依赖的 `@noble/hashes` 2.x
|
|
460
|
+
Node 20.19+(依赖的 `@noble/hashes` 2.x 要求)、现代浏览器。写操作用私钥签名时需要 WebCrypto 支持 Ed25519(Node 20+、Chrome 137+、Firefox 129+、Safari 17+);不支持的环境(如 React Native)传自定义 `{ address, sign }`。
|
|
261
461
|
|
|
262
462
|
## 开发
|
|
263
463
|
|
|
264
464
|
```bash
|
|
265
465
|
pnpm test # 单元测试(模拟节点,不需要网络)
|
|
266
466
|
pnpm test:live # 连真实节点(SOLANA_RPC 指定支持索引方法的节点;需要代理时加 NODE_USE_ENV_PROXY=1)
|
|
467
|
+
pnpm test:live:lp # LP 仓位连主网核对
|
|
468
|
+
pnpm test:live:liquidity # 加减流动性在主网上模拟(simulateTransaction,不发送)
|
|
469
|
+
pnpm demo # 本地运行 demo(demo/,直接用 src 的源码)
|
|
267
470
|
pnpm build
|
|
268
471
|
```
|
|
269
472
|
|
package/dist/address.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export declare function isOnCurve(bytes: Uint8Array): boolean;
|
|
|
13
13
|
* seeds 每项不超过 32 字节、最多 15 个(加上 bump 共 16 个,链上上限),超出时抛错。
|
|
14
14
|
*/
|
|
15
15
|
export declare function findProgramAddress(seeds: Uint8Array[], programId: string): string;
|
|
16
|
+
/** createProgramAddress:用给定的种子(含 bump / nonce)算 PDA;落在曲线上时报错(与 web3.js PublicKey.createProgramAddressSync 相同) */
|
|
17
|
+
export declare function createProgramAddress(seeds: Uint8Array[], programId: string): string;
|
|
16
18
|
/** 关联代币账户(ATA)地址 */
|
|
17
19
|
export declare function getAssociatedTokenAddress(owner: string, mint: string, tokenProgram: string): string;
|
|
18
20
|
/** Metaplex Token Metadata 账户地址 */
|
package/dist/address.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AAKA,qCAAqC;AACrC,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CASzD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAMzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEvD;AA4BD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAoBpD;AAoBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA0BjF;AAED,oBAAoB;AACpB,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEnG;AAED,mCAAmC;AACnC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD"}
|
|
1
|
+
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AAKA,qCAAqC;AACrC,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CASzD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAMzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEvD;AA4BD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAoBpD;AAoBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA0BjF;AAED,iHAAiH;AACjH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMnF;AAED,oBAAoB;AACpB,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEnG;AAED,mCAAmC;AACnC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD"}
|
package/dist/address.js
CHANGED
|
@@ -118,6 +118,14 @@ export function findProgramAddress(seeds, programId) {
|
|
|
118
118
|
}
|
|
119
119
|
throw new Error('Unable to find a viable program address bump seed');
|
|
120
120
|
}
|
|
121
|
+
/** createProgramAddress:用给定的种子(含 bump / nonce)算 PDA;落在曲线上时报错(与 web3.js PublicKey.createProgramAddressSync 相同) */
|
|
122
|
+
export function createProgramAddress(seeds, programId) {
|
|
123
|
+
const hash = sha256(concat([...seeds, decodeAddress(programId), PDA_MARKER]));
|
|
124
|
+
if (isOnCurve(hash)) {
|
|
125
|
+
throw new Error('Invalid seeds: address is on the ed25519 curve');
|
|
126
|
+
}
|
|
127
|
+
return encodeAddress(hash);
|
|
128
|
+
}
|
|
121
129
|
/** 关联代币账户(ATA)地址 */
|
|
122
130
|
export function getAssociatedTokenAddress(owner, mint, tokenProgram) {
|
|
123
131
|
return findProgramAddress([decodeAddress(owner), decodeAddress(tokenProgram), decodeAddress(mint)], ASSOCIATED_TOKEN_PROGRAM_ID);
|
package/dist/address.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.js","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -129,6 +129,10 @@ export declare class SolanaClient {
|
|
|
129
129
|
constructor(provider?: RpcSource | readonly RpcSource[], config?: ClientConfig);
|
|
130
130
|
/** 节点所在网络(按创世区块哈希识别);不是 mainnet / devnet / testnet 时为 null */
|
|
131
131
|
getCluster(): Promise<Cluster | null>;
|
|
132
|
+
/** 默认的 commitment(ClientConfig.commitment,默认 'confirmed') */
|
|
133
|
+
get commitment(): Commitment;
|
|
134
|
+
/** 是否按原生 SOL 处理这个 mint(ClientConfig.nativeMints) */
|
|
135
|
+
isNativeMint(mint: string): boolean;
|
|
132
136
|
/** 直接发 JSON-RPC 调用(同样参与自动合并与故障切换) */
|
|
133
137
|
request<T = unknown>(method: string, params?: readonly unknown[], options?: RequestOptions): Promise<T>;
|
|
134
138
|
/**
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -274,6 +274,14 @@ export class SolanaClient {
|
|
|
274
274
|
async getCluster() {
|
|
275
275
|
return this.#cluster ?? clusterOfGenesis(await this.#genesis());
|
|
276
276
|
}
|
|
277
|
+
/** 默认的 commitment(ClientConfig.commitment,默认 'confirmed') */
|
|
278
|
+
get commitment() {
|
|
279
|
+
return this.#commitment;
|
|
280
|
+
}
|
|
281
|
+
/** 是否按原生 SOL 处理这个 mint(ClientConfig.nativeMints) */
|
|
282
|
+
isNativeMint(mint) {
|
|
283
|
+
return this.#nativeMints.has(mint);
|
|
284
|
+
}
|
|
277
285
|
/** 直接发 JSON-RPC 调用(同样参与自动合并与故障切换) */
|
|
278
286
|
request(method, params, options = {}) {
|
|
279
287
|
return abortable(options.signal, () => this.transport.request(method, params));
|