Add dflow pumpfun parse

This commit is contained in:
bijianing97
2026-01-27 14:48:18 +08:00
parent 5f97972194
commit 35c5c83f4b
3 changed files with 2158 additions and 57 deletions

View File

@@ -360,7 +360,7 @@ func ParseTransaction(update *SubscribeUpdateTransaction, loader *AddressTables,
parsed = appendParsed(now, parsed, txRes, err, txHash, "okxdexroutev2")
case dflowProgramID:
txRes, err := parseDFlowInstruction(versioned, i)
parsed = appendParsed(now, parsed, txRes, err, txHash, "dflow")
parsed = appendParsedBatch(now, parsed, txRes, err, txHash, "dflow")
case gmgnProgramID:
txRes, err := parseGMGNInstruction(versioned, i)
parsed = appendParsed(now, parsed, txRes, err, txHash, "gmgn")
@@ -397,6 +397,34 @@ func appendParsed(start time.Time, list []*TxSignal, parsed *TxSignal, err error
return list
}
func appendParsedBatch(start time.Time, list []*TxSignal, parsed []*TxSignal, err error, txHash [64]byte, label 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[:]))
}
return list
}
if len(parsed) == 0 {
return list
}
var end time.Time
if !start.IsZero() {
end = time.Now()
}
for _, sig := range parsed {
if sig == nil {
continue
}
sig.Label = label
if !start.IsZero() {
sig.ParseEnd = end
sig.ParseStart = start
}
list = append(list, sig)
}
return list
}
func toVersionedTransaction(update *SubscribeUpdateTransaction) (*versionedTransaction, error) {
if update == nil || update.Transaction == nil || update.Transaction.Message == nil {
return nil, fmt.Errorf("transaction is nil")