fix juo v6 pump swap percent
This commit is contained in:
@@ -1119,9 +1119,11 @@ func pumpRoutePlanStatsV2(in uint64, out uint64, plan []RoutePlanStepV2, include
|
||||
|
||||
func parseJupiterPumpAmmRoute(tx VersionedTransaction, instruction Instructions, in uint64, out uint64, plan []RoutePlanStep) (*TxSignal, bool, error) {
|
||||
var (
|
||||
isBuy bool
|
||||
isSell bool
|
||||
count int
|
||||
isBuy bool
|
||||
isSell bool
|
||||
count int
|
||||
sellPercent uint8
|
||||
buyPercent uint8
|
||||
)
|
||||
for _, step := range plan {
|
||||
if !isInputIdx0(step.InputIdx) {
|
||||
@@ -1130,9 +1132,11 @@ func parseJupiterPumpAmmRoute(tx VersionedTransaction, instruction Instructions,
|
||||
if isPumpSwapSellKind(step.Swap.Kind) {
|
||||
isSell = true
|
||||
count++
|
||||
sellPercent = step.Percent
|
||||
} else if isPumpSwapBuyKind(step.Swap.Kind) {
|
||||
isBuy = true
|
||||
count++
|
||||
buyPercent = step.Percent
|
||||
}
|
||||
}
|
||||
if count == 0 {
|
||||
@@ -1154,6 +1158,9 @@ func parseJupiterPumpAmmRoute(tx VersionedTransaction, instruction Instructions,
|
||||
if in > 0 {
|
||||
token0Amount = formatTokenAmount(in)
|
||||
}
|
||||
if sellPercent > 0 && sellPercent < 100 {
|
||||
token0Amount = token0Amount.Mul(decimal.NewFromInt(int64(sellPercent))).Div(decimal.NewFromInt(100))
|
||||
}
|
||||
return &TxSignal{
|
||||
TxHash: tx.Signatures[0].String(),
|
||||
Maker: tx.StaticAccountKeys[0].String(),
|
||||
@@ -1189,6 +1196,10 @@ func parseJupiterPumpAmmRoute(tx VersionedTransaction, instruction Instructions,
|
||||
if in > 0 {
|
||||
token1Amount = formatSolAmount(in)
|
||||
}
|
||||
if buyPercent > 0 && buyPercent < 100 {
|
||||
token1Amount = token1Amount.Mul(decimal.NewFromInt(int64(buyPercent))).Div(decimal.NewFromInt(100))
|
||||
token0Amount = token0Amount.Mul(decimal.NewFromInt(int64(buyPercent))).Div(decimal.NewFromInt(100))
|
||||
}
|
||||
return &TxSignal{
|
||||
TxHash: tx.Signatures[0].String(),
|
||||
Maker: tx.StaticAccountKeys[0].String(),
|
||||
|
||||
@@ -67,6 +67,10 @@ func TestDecodeRouteArg(t *testing.T) {
|
||||
name: "Jupiter V6 RouteArg Test 1",
|
||||
hexData: "e517cb977ae3ad2a03000000646400017ab0b6c3d206f46577050000000c0000526401025f00640203bb628e2902000000338c430100000000320000",
|
||||
},
|
||||
{
|
||||
name: "Jupiter V6 RouteArg Test 2",
|
||||
hexData: "e517cb977ae3ad2a04000000642300024b00000000410002761acfb15ea9fdcd0501200204769358e96343759bf8014402046196591e1e020000f5bf6fe101000000d00700",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user