chore: filter wsol for bonk

This commit is contained in:
2026-03-23 16:08:55 +08:00
parent a1f9f4f9a9
commit c7e9354e07
2 changed files with 48 additions and 11 deletions

View File

@@ -229,7 +229,11 @@ func parseFlasBonkBuy(tx VersionedTransaction, instructionIndex int) (*TxSignal,
return nil, fmt.Errorf("accounts too short") return nil, fmt.Errorf("accounts too short")
} }
mint, err := tx.GetAccount(int(instruction.Accounts[15])) base, err := tx.GetAccount(int(instruction.Accounts[15]))
if err != nil {
return nil, err
}
quote, err := tx.GetAccount(int(instruction.Accounts[16]))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -237,6 +241,12 @@ func parseFlasBonkBuy(tx VersionedTransaction, instructionIndex int) (*TxSignal,
if err != nil { if err != nil {
return nil, err return nil, err
} }
if !quote.Equals(wrappedSOL) {
// just ignore this
return nil, nil
}
if len(instruction.Data) > 20 { if len(instruction.Data) > 20 {
instruction.Data = instruction.Data[:20] instruction.Data = instruction.Data[:20]
} }
@@ -249,7 +259,7 @@ func parseFlasBonkBuy(tx VersionedTransaction, instructionIndex int) (*TxSignal,
TxHash: tx.Signatures[0].String(), TxHash: tx.Signatures[0].String(),
Label: "flas", Label: "flas",
Maker: user.String(), Maker: user.String(),
Token0Address: mint.String(), Token0Address: base.String(),
Token1Address: wsolMint, Token1Address: wsolMint,
Token0Amount: formatTokenAmount(args.Amount2), Token0Amount: formatTokenAmount(args.Amount2),
Token1Amount: formatSolAmount(args.Amount1), Token1Amount: formatSolAmount(args.Amount1),
@@ -268,7 +278,11 @@ func parseFlasBonkSell(tx VersionedTransaction, instructionIndex int) (*TxSignal
return nil, fmt.Errorf("accounts too short") return nil, fmt.Errorf("accounts too short")
} }
mint, err := tx.GetAccount(int(instruction.Accounts[15])) base, err := tx.GetAccount(int(instruction.Accounts[15]))
if err != nil {
return nil, err
}
quote, err := tx.GetAccount(int(instruction.Accounts[16]))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -277,6 +291,11 @@ func parseFlasBonkSell(tx VersionedTransaction, instructionIndex int) (*TxSignal
return nil, err return nil, err
} }
if !quote.Equals(wrappedSOL) {
// just ignore this
return nil, nil
}
var args flasArgs var args flasArgs
if err := borsh.Deserialize(&args, instruction.Data[1:]); err != nil { if err := borsh.Deserialize(&args, instruction.Data[1:]); err != nil {
return nil, fmt.Errorf("failed to parse buy tokens args: %w", err) return nil, fmt.Errorf("failed to parse buy tokens args: %w", err)
@@ -286,7 +305,7 @@ func parseFlasBonkSell(tx VersionedTransaction, instructionIndex int) (*TxSignal
TxHash: tx.Signatures[0].String(), TxHash: tx.Signatures[0].String(),
Label: "flas", Label: "flas",
Maker: user.String(), Maker: user.String(),
Token0Address: mint.String(), Token0Address: base.String(),
Token1Address: wsolMint, Token1Address: wsolMint,
Token0Amount: formatTokenAmount(args.Amount1), Token0Amount: formatTokenAmount(args.Amount1),
Token1Amount: formatSolAmount(args.Amount2), Token1Amount: formatSolAmount(args.Amount2),

View File

@@ -59,7 +59,11 @@ func parseRaydiumLaunchLabCreate(tx VersionedTransaction, instruction Instructio
return nil, fmt.Errorf("accounts too short") return nil, fmt.Errorf("accounts too short")
} }
mint, err := tx.GetAccount(int(instruction.Accounts[6])) base, err := tx.GetAccount(int(instruction.Accounts[6]))
if err != nil {
return nil, err
}
quote, err := tx.GetAccount(int(instruction.Accounts[7]))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -68,11 +72,16 @@ func parseRaydiumLaunchLabCreate(tx VersionedTransaction, instruction Instructio
return nil, err return nil, err
} }
if !quote.Equals(wrappedSOL) {
// just ignore this
return nil, nil
}
return &TxSignal{ return &TxSignal{
TxHash: tx.Signatures[0].String(), TxHash: tx.Signatures[0].String(),
Label: "raydiumlaunchlab", Label: "raydiumlaunchlab",
Maker: creator.String(), Maker: creator.String(),
Token0Address: mint.String(), Token0Address: base.String(),
Token1Address: wsolMint, Token1Address: wsolMint,
Token0Amount: decimal.Zero, Token0Amount: decimal.Zero,
Token1Amount: decimal.Zero, Token1Amount: decimal.Zero,
@@ -94,7 +103,11 @@ func parseRaydiumLaunchLabSwap(tx VersionedTransaction, instruction Instructions
return nil, fmt.Errorf("data too short for raydium launch lab swap args, len=%d", len(instruction.Data)) return nil, fmt.Errorf("data too short for raydium launch lab swap args, len=%d", len(instruction.Data))
} }
mint, err := tx.GetAccount(int(instruction.Accounts[9])) base, err := tx.GetAccount(int(instruction.Accounts[9]))
if err != nil {
return nil, err
}
quote, err := tx.GetAccount(int(instruction.Accounts[10]))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -103,6 +116,11 @@ func parseRaydiumLaunchLabSwap(tx VersionedTransaction, instruction Instructions
return nil, err return nil, err
} }
if !quote.Equals(wrappedSOL) {
// just ignore this
return nil, nil
}
amountA := binary.LittleEndian.Uint64(instruction.Data[8:16]) amountA := binary.LittleEndian.Uint64(instruction.Data[8:16])
amountB := binary.LittleEndian.Uint64(instruction.Data[16:24]) amountB := binary.LittleEndian.Uint64(instruction.Data[16:24])
@@ -112,7 +130,7 @@ func parseRaydiumLaunchLabSwap(tx VersionedTransaction, instruction Instructions
TxHash: tx.Signatures[0].String(), TxHash: tx.Signatures[0].String(),
Label: "raydiumlaunchlab", Label: "raydiumlaunchlab",
Maker: user.String(), Maker: user.String(),
Token0Address: mint.String(), Token0Address: base.String(),
Token1Address: wsolMint, Token1Address: wsolMint,
Token0Amount: formatTokenAmount(amountB), Token0Amount: formatTokenAmount(amountB),
Token1Amount: formatSolAmount(amountA), Token1Amount: formatSolAmount(amountA),
@@ -130,7 +148,7 @@ func parseRaydiumLaunchLabSwap(tx VersionedTransaction, instruction Instructions
TxHash: tx.Signatures[0].String(), TxHash: tx.Signatures[0].String(),
Label: "raydiumlaunchlab", Label: "raydiumlaunchlab",
Maker: user.String(), Maker: user.String(),
Token0Address: mint.String(), Token0Address: base.String(),
Token1Address: wsolMint, Token1Address: wsolMint,
Token0Amount: formatTokenAmount(amountA), Token0Amount: formatTokenAmount(amountA),
Token1Amount: formatSolAmount(amountB), Token1Amount: formatSolAmount(amountB),
@@ -150,7 +168,7 @@ func parseRaydiumLaunchLabSwap(tx VersionedTransaction, instruction Instructions
TxHash: tx.Signatures[0].String(), TxHash: tx.Signatures[0].String(),
Label: "raydiumlaunchlab", Label: "raydiumlaunchlab",
Maker: user.String(), Maker: user.String(),
Token0Address: mint.String(), Token0Address: base.String(),
Token1Address: wsolMint, Token1Address: wsolMint,
Token0Amount: formatTokenAmount(amountA), Token0Amount: formatTokenAmount(amountA),
Token1Amount: formatSolAmount(amountB), Token1Amount: formatSolAmount(amountB),
@@ -168,7 +186,7 @@ func parseRaydiumLaunchLabSwap(tx VersionedTransaction, instruction Instructions
TxHash: tx.Signatures[0].String(), TxHash: tx.Signatures[0].String(),
Label: "raydiumlaunchlab", Label: "raydiumlaunchlab",
Maker: user.String(), Maker: user.String(),
Token0Address: mint.String(), Token0Address: base.String(),
Token1Address: wsolMint, Token1Address: wsolMint,
Token0Amount: formatTokenAmount(amountB), Token0Amount: formatTokenAmount(amountB),
Token1Amount: formatSolAmount(amountA), Token1Amount: formatSolAmount(amountA),