fix axios parser

This commit is contained in:
thloyi
2026-01-07 13:16:22 +08:00
parent 122d474524
commit 214d9e984e
3 changed files with 92 additions and 31 deletions

View File

@@ -148,9 +148,9 @@ type f5tfBuyArgs struct {
TokenAmount uint64
}
type flasBuyArgs struct {
SolAmount uint64
TokenAmount uint64
type flasArgs struct {
Amount1 uint64
Amount2 uint64
Placeholder [3]uint8
}
@@ -766,10 +766,10 @@ func parseFlasInstruction(tx *versionedTransaction, instructionIndex int) (*TxSi
return nil, fmt.Errorf("data too short for args flas instruction, len: %d", len(instruction.Data))
}
methodData := instruction.Data[17:20]
if !matchMethod(methodData, flasBuyTokensIX) {
return nil, nil
}
if matchMethod(methodData, f5tfBuyTokensIX) {
//if !matchMethod(methodData, flasBuyTokensIX) {
// return nil, nil
//}
if matchMethod(methodData, flasBuyTokensIX) {
return parseFlasBuy(tx, instructionIndex)
} else if matchMethod(methodData, flasSellTokensIX) {
return parseFlasSell(tx, instructionIndex)
@@ -797,7 +797,7 @@ func parseFlasAmmSell(tx *versionedTransaction, instructionIndex int) (*TxSignal
return nil, err
}
var args flasBuyArgs
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)
}
@@ -808,16 +808,16 @@ func parseFlasAmmSell(tx *versionedTransaction, instructionIndex int) (*TxSignal
Maker: user.String(),
Token0Address: mint.String(),
Token1Address: wsolMint,
Token0Amount: decimal.Zero,
Token1Amount: formatSolAmount(args.TokenAmount),
Program: "Pump",
Token0Amount: formatSolAmount(args.Amount1),
Token1Amount: formatSolAmount(args.Amount2),
Program: "PumpAMM",
Event: "sell",
IsToken2022: false,
IsMayhemMode: false,
ExactSOL: true,
ExactSOL: false,
Block: tx.Block,
Token0AmountUint64: 0,
Token1AmountUint64: args.TokenAmount,
Token0AmountUint64: args.Amount1,
Token1AmountUint64: args.Amount2,
}, nil
}
@@ -837,7 +837,7 @@ func parseFlasAmmBuy(tx *versionedTransaction, instructionIndex int) (*TxSignal,
return nil, err
}
var args flasBuyArgs
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)
}
@@ -849,15 +849,15 @@ func parseFlasAmmBuy(tx *versionedTransaction, instructionIndex int) (*TxSignal,
Token0Address: mint.String(),
Token1Address: wsolMint,
Token0Amount: decimal.Zero,
Token1Amount: formatSolAmount(args.TokenAmount),
Program: "Pump",
Event: "sell",
Token1Amount: formatSolAmount(args.Amount1),
Program: "PumpAMM",
Event: "buy",
IsToken2022: false,
IsMayhemMode: false,
ExactSOL: true,
Block: tx.Block,
Token0AmountUint64: 0,
Token1AmountUint64: args.TokenAmount,
Token1AmountUint64: args.Amount1,
}, nil
}
@@ -877,7 +877,7 @@ func parseFlasSell(tx *versionedTransaction, instructionIndex int) (*TxSignal, e
return nil, err
}
var args flasBuyArgs
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)
}
@@ -888,15 +888,15 @@ func parseFlasSell(tx *versionedTransaction, instructionIndex int) (*TxSignal, e
Maker: user.String(),
Token0Address: mint.String(),
Token1Address: wsolMint,
Token0Amount: formatTokenAmount(args.TokenAmount),
Token1Amount: formatSolAmount(args.SolAmount),
Token0Amount: formatTokenAmount(args.Amount1),
Token1Amount: formatSolAmount(args.Amount2),
Program: "Pump",
Event: "sell",
IsToken2022: false,
IsMayhemMode: false,
Block: tx.Block,
Token0AmountUint64: args.TokenAmount,
Token1AmountUint64: args.SolAmount,
Token0AmountUint64: args.Amount1,
Token1AmountUint64: args.Amount2,
}, nil
}
@@ -916,7 +916,7 @@ func parseFlasBuy(tx *versionedTransaction, instructionIndex int) (*TxSignal, er
return nil, err
}
var args flasBuyArgs
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)
}
@@ -927,16 +927,16 @@ func parseFlasBuy(tx *versionedTransaction, instructionIndex int) (*TxSignal, er
Maker: user.String(),
Token0Address: mint.String(),
Token1Address: wsolMint,
Token0Amount: formatTokenAmount(args.TokenAmount),
Token1Amount: formatSolAmount(args.SolAmount),
Token0Amount: formatTokenAmount(args.Amount2),
Token1Amount: formatSolAmount(args.Amount1),
Program: "Pump",
Event: "buy",
IsToken2022: false,
IsMayhemMode: false,
ExactSOL: true,
Block: tx.Block,
Token0AmountUint64: args.TokenAmount,
Token1AmountUint64: args.SolAmount,
Token0AmountUint64: args.Amount2,
Token1AmountUint64: args.Amount1,
}, nil
}