This commit is contained in:
thloyi
2026-01-07 13:19:48 +08:00
2 changed files with 17 additions and 23 deletions

View File

@@ -45,6 +45,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"`

View File

@@ -171,16 +171,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
@@ -254,44 +244,44 @@ func ParseTransaction(update *SubscribeUpdateTransaction, loader *AddressTables)
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())
case jupiterV6ProgramID:
txRes, err := parseJupiterV6Instruction(versioned, i)
parsed = appendParsed(parsed, txRes, err, txHash, "jupiterv6")
parsed = appendParsed(parsed, txRes, err, txHash, "jupiterv6", jupiterV6ProgramID.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 {
if !strings.HasPrefix(err.Error(), "account index") {
logger.Debug("txparser: failed to parse", "label", label, "instruction", err, "tx_hash", base58.Encode(txHash[:]))
@@ -299,6 +289,7 @@ func appendParsed(list []*TxSignal, parsed *TxSignal, err error, txHash [64]byte
return list
}
if parsed != nil {
parsed.EntryContract = entryContract
list = append(list, parsed)
}
return list
@@ -915,7 +906,9 @@ func parseFlasBuy(tx *versionedTransaction, instructionIndex int) (*TxSignal, er
if err != nil {
return nil, err
}
if len(instruction.Data) > 20 {
instruction.Data = instruction.Data[:20]
}
var args flasArgs
if err := borsh.Deserialize(&args, instruction.Data[1:]); err != nil {
return nil, fmt.Errorf("failed to parse buy tokens args: %w", err)