fix: populate Pump creation transaction version on Shred paths

This commit is contained in:
0xfnzero
2026-10-28 01:30:16 +08:00
parent 325753931c
commit b2b3ed7859
4 changed files with 8 additions and 4 deletions
+1 -1
View File
@@ -301,7 +301,7 @@ instruction args, while log-only `CreatePoolEvent` payloads keep the default
account value is also available from
`PumpSwapPoolAccountEvent.pool.is_cashback_coin`.
`PumpFunCreateTokenEvent.transaction_version` reports the transaction message version as `Some(YellowstoneMessageVersion::Legacy)`, `V0` or `V1` on gRPC/RPC. JSON uses `"legacy"`, `"v0"` and `"v1"`. It remains `None` without transaction context (including standalone Shred parsing). This is independent of the Pump instruction name in `ix_name`.
`PumpFunCreateTokenEvent.transaction_version` reports the transaction message version as `Some(YellowstoneMessageVersion::Legacy)`, `V0` or `V1` on Shred/gRPC/RPC. JSON uses `"legacy"`, `"v0"` and `"v1"`. It remains `None` without transaction context (for example, parsing an isolated event log). This is independent of the Pump instruction name in `ix_name`.
<a id="trade-provenance-and-parsing-boundaries"></a>
+1 -1
View File
@@ -281,7 +281,7 @@ log-only 的 `CreatePoolEvent` payload 因为 IDL 不包含该字段,会保持
`false`。账户里的权威值也可通过
`PumpSwapPoolAccountEvent.pool.is_cashback_coin` 读取。
`PumpFunCreateTokenEvent.transaction_version` 在 gRPC/RPC 路径下表示交易消息版本:`Some(YellowstoneMessageVersion::Legacy)`、`V0` 或 `V1`,JSON 分别为 `"legacy"`、`"v0"`、`"v1"`。缺少交易上下文时(包括独立 Shred 解析)为 `None`。该字段与 `ix_name` 表示的 Pump 指令版本相互独立。
`PumpFunCreateTokenEvent.transaction_version` 在 Shred/gRPC/RPC 路径下表示交易消息版本:`Some(YellowstoneMessageVersion::Legacy)`、`V0` 或 `V1`,JSON 分别为 `"legacy"`、`"v0"`、`"v1"`。缺少交易上下文时(例如单独解析一条事件日志)为 `None`。该字段与 `ix_name` 表示的 Pump 指令版本相互独立。
<a id="交易来源与解析边界"></a>
+5 -1
View File
@@ -533,7 +533,11 @@ mod tests {
async fn shred_transaction_preserves_unknown_tx_index() {
let event = parse_single_shred_create(None).await;
assert!(matches!(event, DexEvent::PumpFunCreateTokenEvent(_)));
let DexEvent::PumpFunCreateTokenEvent(create) = &event else { panic!("create callback") };
assert_eq!(
create.transaction_version,
Some(sol_parser_sdk::YellowstoneMessageVersion::V0)
);
assert_eq!(event.metadata().tx_index, None);
}
@@ -7,7 +7,7 @@ use crate::streaming::event_parser::protocols::pumpfun::types::{BondingCurve, Gl
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize, BorshDeserialize)]
pub struct PumpFunCreateTokenEvent {
/// Transaction message version from gRPC/RPC context, independent of create/create_v2.
/// Transaction message version from Shred/gRPC/RPC context, independent of create/create_v2.
#[borsh(skip)]
#[serde(default)]
pub transaction_version: Option<sol_parser_sdk::grpc::YellowstoneMessageVersion>,