From 27dde60e931b426e1593b7b1dfa5e086fed63aaf Mon Sep 17 00:00:00 2001 From: samlior Date: Wed, 7 Jan 2026 12:18:24 +0800 Subject: [PATCH] chore: add entry contract and improve axiom parse --- pkg/shreder/tx.go | 1 + pkg/shreder/txparser.go | 37 ++++++++++++++++--------------------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/pkg/shreder/tx.go b/pkg/shreder/tx.go index ffc5c4b..a20c993 100644 --- a/pkg/shreder/tx.go +++ b/pkg/shreder/tx.go @@ -28,6 +28,7 @@ type TxSignal struct { IsToken2022 bool `json:"is_token2022"` IsMayhemMode bool `json:"is_mayhem_mode"` TxFee decimal.Decimal `json:"tx_fee"` + EntryContract string `json:"entry_contract"` ExactSOL bool `json:"exact_in"` diff --git a/pkg/shreder/txparser.go b/pkg/shreder/txparser.go index f835b55..dcbd5c9 100644 --- a/pkg/shreder/txparser.go +++ b/pkg/shreder/txparser.go @@ -161,16 +161,6 @@ type pumpAmmBuyArgs struct { MaxSolCost uint64 } -type _6hb1BuyArgs struct { - SolAmount uint64 - TokenNumber uint64 -} - -type _8rsrBuyArgs struct { - SolIn uint64 - TokenOut uint64 -} - type boboBuyArgs struct { Placeholder1 uint64 Placeholder2 uint64 @@ -215,46 +205,47 @@ func ParseTransaction(update *SubscribeUpdateTransaction) []*TxSignal { switch programID { case pumpProgramID: txRes, err := parsePumpInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "pump") + parsed = appendParsed(parsed, txRes, err, txHash, "pump", pumpProgramID.String()) case azczProgramID: txRes, err := parseAzczInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "azcz") + parsed = appendParsed(parsed, txRes, err, txHash, "azcz", azczProgramID.String()) case f5tfProgramID: txRes, err := parseF5tfInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "f5tf") + parsed = appendParsed(parsed, txRes, err, txHash, "f5tf", f5tfProgramID.String()) case flasProgramID: txRes, err := parseFlasInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "flas") + parsed = appendParsed(parsed, txRes, err, txHash, "flas", flasProgramID.String()) case photonProgramID: txRes, err := parsePhotonInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "photon") + parsed = appendParsed(parsed, txRes, err, txHash, "photon", photonProgramID.String()) case pumpAmmProgramID: txRes, err := parsePumpAmmInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "pumpamm") + parsed = appendParsed(parsed, txRes, err, txHash, "pumpamm", pumpAmmProgramID.String()) case boboProgramID: txRes, err := parseBoboInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "bobo") + parsed = appendParsed(parsed, txRes, err, txHash, "bobo", boboProgramID.String()) case qtkvProgramID: txRes, err := parseQtkvInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "qtkv") + parsed = appendParsed(parsed, txRes, err, txHash, "qtkv", qtkvProgramID.String()) case fjszProgramID: txRes, err := parseFjszInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "fjsz") + parsed = appendParsed(parsed, txRes, err, txHash, "fjsz", fjszProgramID.String()) case terminalProgramID: txRes, err := parseTermInstruction(versioned, i) - parsed = appendParsed(parsed, txRes, err, txHash, "terminal") + parsed = appendParsed(parsed, txRes, err, txHash, "terminal", terminalProgramID.String()) } } return parsed } -func appendParsed(list []*TxSignal, parsed *TxSignal, err error, txHash [64]byte, label string) []*TxSignal { +func appendParsed(list []*TxSignal, parsed *TxSignal, err error, txHash [64]byte, label string, entryContract string) []*TxSignal { if err != nil { slog.Error("txparser: failed to parse", "label", label, "instruction", err, "tx_hash", base58.Encode(txHash[:])) return list } if parsed != nil { + parsed.EntryContract = entryContract list = append(list, parsed) } return list @@ -859,6 +850,10 @@ func parseFlasBuy(tx *versionedTransaction, instructionIndex int) (*TxSignal, er return nil, err } + if len(instruction.Data) > 20 { + instruction.Data = instruction.Data[:20] + } + var args flasBuyArgs if err := borsh.Deserialize(&args, instruction.Data[1:]); err != nil { return nil, fmt.Errorf("failed to parse buy tokens args: %w", err)