Skip to content

Commit 61b6ecc

Browse files
committed
Release sol-parser-sdk v0.4.11
1 parent e9487d3 commit 61b6ecc

15 files changed

Lines changed: 1486 additions & 288 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "sol-parser-sdk"
3-
version = "0.4.10"
3+
version = "0.4.11"
44
edition = "2021"
55
authors = ["William <byteblock6@gmail.com>", "sgxiang <sgxiang@gmail.com>", "wei <1415121722@qq.com>"]
66
repository = "https://github.com/0xfnzero/sol-parser-sdk"

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,13 @@ sol-parser-sdk = { path = "../sol-parser-sdk", default-features = false, feature
108108

109109
```toml
110110
# Add to your Cargo.toml
111-
sol-parser-sdk = "0.4.10"
111+
sol-parser-sdk = "0.4.11"
112112
```
113113

114114
Or with the zero-copy parser (maximum performance):
115115

116116
```toml
117-
sol-parser-sdk = { version = "0.4.10", default-features = false, features = ["parse-zero-copy"] }
117+
sol-parser-sdk = { version = "0.4.11", default-features = false, features = ["parse-zero-copy"] }
118118
```
119119

120120
### Performance Testing

README_CN.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,13 @@ sol-parser-sdk = { path = "../sol-parser-sdk", default-features = false, feature
108108

109109
```toml
110110
# 在 Cargo.toml 中添加
111-
sol-parser-sdk = "0.4.10"
111+
sol-parser-sdk = "0.4.11"
112112
```
113113

114114
或使用零拷贝解析器(最高性能):
115115

116116
```toml
117-
sol-parser-sdk = { version = "0.4.10", default-features = false, features = ["parse-zero-copy"] }
117+
sol-parser-sdk = { version = "0.4.11", default-features = false, features = ["parse-zero-copy"] }
118118
```
119119

120120
### 性能测试

docs/PUMP_PUMP_AMM_PARSER_ACCOUNTS.md

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Pump / Pump AMM 解析账号与数据说明
22

3-
本文档说明 sol-parser-sdk 中 Pump(pumpfun)与 Pump AMM(pumpswap)交易解析所依赖的 IDL、账号索引及已覆盖/曾遗漏的账号与数据。IDL 已与 sol-trade-sdk 同步。
3+
本文档说明 sol-parser-sdk 中 Pump(pumpfun)与 Pump AMM(pumpswap)交易解析所依赖的 IDL、升级后 remaining accounts、账号索引及已覆盖/曾遗漏的账号与数据。IDL 已与 sol-trade-sdk 同步。
44

55
## IDL 同步
66

@@ -13,9 +13,9 @@
1313

1414
## Pump(Bonding Curve)Buy / Sell
1515

16-
### 账号索引(与 pump.json 一致
16+
### 账号索引(IDL 固定账户 + 升级后 remaining accounts
1717

18-
**Buy:共 15 个固定账户**
18+
**Buy:16 个 IDL 固定账户,升级后交易共 18 个账户**
1919

2020
| 索引 | 账户名 |
2121
|-----|--------|
@@ -34,10 +34,13 @@
3434
| 12 | global_volume_accumulator |
3535
| 13 | user_volume_accumulator |
3636
| 14 | fee_config |
37+
| 15 | fee_program |
38+
| 16 | bonding_curve_v2(remaining,升级后实际位置) |
39+
| 17 | buyback_fee_recipient(remaining,8 个新增 fee recipient 之一,mutable) |
3740

38-
remaining_accounts 可能含 bonding_curve_v2
41+
说明:旧 IDL/文档容易只看到账户 0–15;升级后的 `bonding_curve_v2``buyback_fee_recipient` 都在 remaining accounts,分别是 16/17
3942

40-
**Sell:14 个固定账户**
43+
**Sell:14 个 IDL 固定账户,升级后非 cashback 交易共 16 个账户,cashback 交易共 17 个账户**
4144

4245
| 索引 | 账户名 |
4346
|-----|--------|
@@ -55,24 +58,28 @@ remaining_accounts 可能含 bonding_curve_v2 等。
5558
| 11 | program |
5659
| 12 | fee_config |
5760
| 13 | fee_program |
61+
| 14 | bonding_curve_v2(remaining,非 cashback) / user_volume_accumulator(remaining,cashback) |
62+
| 15 | buyback_fee_recipient(remaining,非 cashback) / bonding_curve_v2(remaining,cashback) |
63+
| 16 | buyback_fee_recipient(remaining,cashback) |
5864

59-
remaining_accounts 可能含 user_volume_accumulator(返现)、bonding_curve_v2
65+
说明:non-cashback sell 的 `bonding_curve_v2` / `buyback_fee_recipient` 分别在 14/15;cashback sell 多一个 `user_volume_accumulator`,因此 `bonding_curve_v2` / `buyback_fee_recipient` 分别后移到 15/16
6066

6167
### 解析与填充
6268

6369
- **日志解析**(logs/pump.rs, pump_inner.rs): TradeEvent 含 `creator``creator_fee` 等;**creator_vault 不在事件数据中**,在日志解析里置为 `Pubkey::default()`
64-
- **账户填充**(account_fillers/pumpfun.rs): 根据指令账户补全 `creator_vault``token_program` 等;Buy 使用索引 9 的 creator_vault,Sell 使用索引 8。**必须通过指令账户填充才能得到正确的 creator_vault**(对 Creator Rewards Sharing 的币,该地址可能为 sharing config PDA)。
65-
- **指令解析**(instr/pump.rs): Buy/Sell 的完整解析当前未用于主路径(事件来自日志),注释已按 IDL 更新为包含 7–9 及 creator_vault 位置
70+
- **账户填充**(account_fillers/pumpfun.rs): 根据指令账户补全 `creator_vault``token_program``bonding_curve_v2``buyback_fee_recipient` 等;Buy 使用索引 9 的 creator_vault,Sell 使用索引 8。**必须通过指令账户填充才能得到正确的 creator_vault**(对 Creator Rewards Sharing 的币,该地址可能为 sharing config PDA)。
71+
- **指令解析**(instr/pump.rs): Buy/Sell 解析会同时读取固定账户和升级后的 remaining accounts;日志优先路径会通过 merger/filler 补全这些账户字段
6672

6773
### 曾遗漏 / 注意点
6874

6975
- **creator_vault**:事件数据中无此字段,若不做账户填充会一直为 default。sol-trade-sdk 卖出时需要最新 creator_vault(见 README Creator Rewards Sharing)。确保在 gRPC/RPC 解析链路中调用 `fill_trade_accounts`,以便从指令账户 8/9 填入 creator_vault。
76+
- **bonding_curve_v2、buyback_fee_recipient**:升级后 buy/sell 都需要从 remaining accounts 解析。`buyback_fee_recipient` 是 8 个新增 fee recipient 之一,需 mutable;旧 IDL 不包含这两个字段,不能只按 IDL 固定账户数判断。
7077

7178
## Pump AMM(PumpSwap)Buy / Sell
7279

73-
### 账号索引(与 pump_amm.json 一致
80+
### 账号索引(IDL 固定账户 + 升级后 remaining accounts
7481

75-
**Buy:23 个固定账户**
82+
**Buy:23 个 IDL 固定账户,升级后非 cashback 交易共 26 个账户,cashback 交易共 27 个账户**
7683

7784
| 索引 | 账户名 |
7885
|-----|--------|
@@ -99,8 +106,14 @@ remaining_accounts 可能含 user_volume_accumulator(返现)、bonding_curve
99106
| 20 | user_volume_accumulator |
100107
| 21 | fee_config |
101108
| 22 | fee_program |
109+
| 23 | pool_v2(remaining,非 cashback) / cashback extra account(remaining,cashback) |
110+
| 24 | fee_recipient(remaining,非 cashback,只读) / pool_v2(remaining,cashback) |
111+
| 25 | fee_recipient_quote_token_account(remaining,非 cashback,mutable) / fee_recipient(remaining,cashback,只读) |
112+
| 26 | fee_recipient_quote_token_account(remaining,cashback,mutable) |
102113

103-
**Sell:共 21 个固定账户**
114+
说明:cashback buy 在 `pool_v2` 前多一个额外账户,因此三项升级账户整体后移一位。解析器只暴露 `pool_v2``fee_recipient``fee_recipient_quote_token_account`
115+
116+
**Sell:21 个 IDL 固定账户,升级后非 cashback 交易共 24 个账户,cashback 交易共 26 个账户**
104117

105118
| 索引 | 账户名 |
106119
|-----|--------|
@@ -125,27 +138,41 @@ remaining_accounts 可能含 user_volume_accumulator(返现)、bonding_curve
125138
| 18 | coin_creator_vault_authority |
126139
| 19 | fee_config |
127140
| 20 | fee_program |
141+
| 21 | pool_v2(remaining,非 cashback) / cashback extra account(remaining,cashback) |
142+
| 22 | fee_recipient(remaining,非 cashback,只读) / cashback extra account(remaining,cashback) |
143+
| 23 | fee_recipient_quote_token_account(remaining,非 cashback,mutable) / pool_v2(remaining,cashback) |
144+
| 24 | fee_recipient(remaining,cashback,只读) |
145+
| 25 | fee_recipient_quote_token_account(remaining,cashback,mutable) |
146+
147+
说明:cashback sell 在 `pool_v2` 前多两个额外账户,因此三项升级账户整体后移两位。
128148

129149
### 解析与填充
130150

131-
- **指令解析**(instr/pump_amm.rs): 已按 IDL 补全 17、18;当 `accounts.len() >= 19` 时,从 17、18 读取并写入 `coin_creator_vault_ata``coin_creator_vault_authority`0–12 的解析保持不变
132-
- **账户填充**(account_fillers/pumpswap.rs): 仍从 17、18 填充 `coin_creator_vault_ata``coin_creator_vault_authority`(与 IDL 一致)。
151+
- **指令解析**(instr/pump_amm.rs): 已按 IDL 补全 17、18;当 `accounts.len() >= 19` 时,从 17、18 读取并写入 `coin_creator_vault_ata``coin_creator_vault_authority`升级后的 `pool_v2``fee_recipient``fee_recipient_quote_token_account` 会根据 26/27 buy、24/26 sell 账户数读取
152+
- **账户填充**(account_fillers/pumpswap.rs): 仍从 17、18 填充 `coin_creator_vault_ata``coin_creator_vault_authority`(与 IDL 一致),并从升级后的 remaining account 尾部填充 `pool_v2``fee_recipient``fee_recipient_quote_token_account`
133153
- **日志解析**(logs/pump_amm.rs): 事件数据中含 `coin_creator``coin_creator_fee` 等;`coin_creator_vault_ata` / `coin_creator_vault_authority` 需由指令账户或填充器提供。
134154

135155
### 曾遗漏 / 已修复
136156

137157
- **coin_creator_vault_ata、coin_creator_vault_authority**:原先指令解析只用到 0–12,未读 17、18。现已在 `parse_buy_instruction``parse_buy_exact_quote_in_instruction``parse_sell_instruction` 中在 `accounts.len() >= 19` 时写入上述两字段。
158+
- **pool_v2、fee_recipient、fee_recipient_quote_token_account**:升级后 PumpSwap buy/sell 都必须带这三个尾部账户,其中 `fee_recipient` 是 8 个新增 fee recipient 之一,`fee_recipient_quote_token_account` 是该 fee recipient 的 quote mint ATA。
138159

139160
## 数据字段小结
140161

141162
| 程序 | 字段 | 来源 | 说明 |
142163
|------|------|------|------|
143164
| Pump | creator_vault | 指令账户 8(sell)/9(buy),经 fill_trade_accounts | 必填;Creator Rewards Sharing 时需最新值 |
165+
| Pump | bonding_curve_v2 | remaining account,buy 16;sell 非 cashback 14 / cashback 15 | 升级后必填 |
166+
| Pump | buyback_fee_recipient | remaining account,buy 17;sell 非 cashback 15 / cashback 16 | 8 个新增 fee recipient 之一,mutable |
144167
| Pump | creator, creator_fee 等 | 日志 TradeEvent | 已有 |
145168
| Pump AMM | coin_creator_vault_ata, coin_creator_vault_authority | 指令账户 17、18 | 已补全到指令解析与填充器 |
169+
| Pump AMM | pool_v2 | remaining account,buy 非 cashback 23 / cashback 24;sell 非 cashback 21 / cashback 23 | 升级后必填 |
170+
| Pump AMM | fee_recipient | remaining account,buy 非 cashback 24 / cashback 25;sell 非 cashback 22 / cashback 24 | 8 个新增 fee recipient 之一,只读 |
171+
| Pump AMM | fee_recipient_quote_token_account | remaining account,buy 非 cashback 25 / cashback 26;sell 非 cashback 23 / cashback 25 | fee recipient 的 quote mint ATA,mutable |
146172
| Pump AMM | coin_creator, coin_creator_fee 等 | 日志事件 | 已有 |
147173

148174
## 建议
149175

150176
1. 使用 Pump 事件构建卖出参数时,务必在合并/下发前调用 **fill_trade_accounts**,以便 `creator_vault` 来自当前指令账户,避免 2006 seeds 错误。
151-
2. 保持 IDL 与 sol-trade-sdk 定期同步(复制 `idl/*.json``idls/`),以便新指令或新账户加入时解析与注释仍正确。
177+
2. 不要只依赖 IDL 固定账户数判断升级后交易是否完整;Pump/PumpSwap 的新增账户都在 remaining accounts。
178+
3. 保持 IDL 与 sol-trade-sdk 定期同步(复制 `idl/*.json``idls/`),以便新指令或新账户加入时解析与注释仍正确。

0 commit comments

Comments
 (0)