fix: term sell

This commit is contained in:
2026-03-30 11:59:42 +08:00
parent 6b35f61d95
commit cddfcc3eef
3 changed files with 55 additions and 4 deletions

View File

@@ -15,7 +15,7 @@ import (
const (
rpcURL = "https://staked.helius-rpc.com?api-key=5adcf1f9-5719-43d1-bf3f-c2d4e1e5f94d"
txSignature = "PDynKmdiRG61ZZQoTSmdoTvra2Q8MG91YRdce7vo7EhpoYwr5WjJLbEuJbocPunk2zb4ZCZjXSGNU5bXwJRL7Gu"
txSignature = "4oSnHnDSscjmc6XX1rjXCEBavoLR9wkdZvGCAUn928iLWqrCwt2a6mgJpjP4NHqrCboUC82ugrjjEbNGNYAagkue"
labelFilter = ""
)

View File

@@ -11,7 +11,7 @@ import (
var terminalProgramID = solana.MustPublicKeyFromBase58("term9YPb9mzAsABaqN71A4xdbxHmpBNZavpBiQKZzN3")
var (
terminalBuyTokensIX = []byte{0x14, 0xfe, 0x38, 0xc9, 0x3d, 0x37, 0x17, 0x27}
terminalSellTokensIX = []byte{0xbe, 0x84, 0xa2, 0x96, 0x93, 0x7c, 0xf8, 0x6b}
terminalSellTokensIX = []byte{0xcd, 0xaa, 0x10, 0x49, 0x20, 0xd6, 0x62, 0xd6}
terminalAmmSellTokensIX = []byte{0x40, 0x64, 0x97, 0xb9, 0x16, 0xfa, 0xec, 0xb1}
)
@@ -144,7 +144,7 @@ func parseTermSell(tx VersionedTransaction, instruction Instructions) (*TxSignal
Token0Amount: formatTokenAmount(tokenAmount),
Token1Amount: formatSolAmount(solAmount),
Program: "Pump",
Event: "buy",
Event: "sell",
IsToken2022: false,
IsMayhemMode: false,
ExactSOL: false,

View File

@@ -189,7 +189,58 @@ func TestParseTermBuy(t *testing.T) {
t.Fatalf("expected token0 amount 6952026214256, got %d", signal.Token0AmountUint64)
}
if signal.Token1AmountUint64 != 250000000 {
t.Fatalf("expected token1 amount 653333333, got %d", signal.Token1AmountUint64)
t.Fatalf("expected token1 amount 250000000, got %d", signal.Token1AmountUint64)
}
}
func TestParseTermSell(t *testing.T) {
rpcUrl := os.Getenv("SOL_RPC_URL")
if rpcUrl == "" {
t.Fatalf("SOL_RPC_URL is not set")
}
client := rpc.New(rpcUrl)
ch := make(chan TxSignal)
closed := make(chan struct{})
go func() {
ParseTransactionForSubscribe(
context.Background(),
getTransaction(t, client, "4oSnHnDSscjmc6XX1rjXCEBavoLR9wkdZvGCAUn928iLWqrCwt2a6mgJpjP4NHqrCboUC82ugrjjEbNGNYAagkue"),
nil,
ch,
closed,
)
}()
go func() {
<-closed
close(ch)
}()
signals := make([]TxSignal, 0)
for signal := range ch {
signals = append(signals, signal)
}
if len(signals) != 1 {
t.Fatalf("expected 1 signal, got %d", len(signals))
}
signal := signals[0]
if signal.Label != "terminal" {
t.Fatalf("expected terminal signal, got %s", signal.Label)
}
if signal.Event != "sell" {
t.Fatalf("expected sell event, got %s", signal.Event)
}
if signal.Maker != "DjAj23BSiaRJKJziKHwtLexEHRDgL4tEjx4Ye4Gkug2E" {
t.Fatalf("expected maker DjAj23BSiaRJKJziKHwtLexEHRDgL4tEjx4Ye4Gkug2E, got %s", signal.Maker)
}
if signal.Token0Address != "5J6TKpfP5SHDaUNAdDg23c31wS3KnfZ3JTfFErt4pump" {
t.Fatalf("expected token0 address 5J6TKpfP5SHDaUNAdDg23c31wS3KnfZ3JTfFErt4pump, got %s", signal.Token0Address)
}
if signal.Token0AmountUint64 != 6384819151429 {
t.Fatalf("expected token0 amount 6384819151429, got %d", signal.Token0AmountUint64)
}
if signal.Token1AmountUint64 != 243633622 {
t.Fatalf("expected token1 amount 243633622, got %d", signal.Token1AmountUint64)
}
}