diff --git a/pkg/shreder/tx.go b/pkg/shreder/tx.go index 041794d..b263f72 100644 --- a/pkg/shreder/tx.go +++ b/pkg/shreder/tx.go @@ -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"` diff --git a/pkg/shreder/txparser.go b/pkg/shreder/txparser.go index 8d91e5f..2e11c1f 100644 --- a/pkg/shreder/txparser.go +++ b/pkg/shreder/txparser.go @@ -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)