From 06adc20c45fdb3e51a4c0c85482c2da6391a6843 Mon Sep 17 00:00:00 2001 From: Alexander Hasselbach Date: Wed, 26 Aug 2026 12:04:54 +0300 Subject: [PATCH] fix several traces --- pkg/bath/bath_test.go | 10 +++ pkg/bath/stonfi.go | 5 +- pkg/bath/testdata/deposit-liquid-staking.json | 9 ++- .../ethena-withdraw-stake-request.json | 68 ++++++++++------ .../testdata/new-withdraw-stake-request.json | 4 +- .../testdata/old-withdraw-stake-request.json | 4 +- .../stonfi-v2-swap-failed-payout.json | 78 +++++++++++++++++++ .../testdata/tonstakers-stake-withdraw.json | 4 +- 8 files changed, 150 insertions(+), 32 deletions(-) create mode 100644 pkg/bath/testdata/stonfi-v2-swap-failed-payout.json diff --git a/pkg/bath/bath_test.go b/pkg/bath/bath_test.go index 0be75ae8..a6e5998c 100644 --- a/pkg/bath/bath_test.go +++ b/pkg/bath/bath_test.go @@ -457,6 +457,9 @@ func TestFindActions(t *testing.T) { "9610cbb609a44859d9cb726d9d1f01bc0a702c98270ed5a7e64749470ceeadfa": { tongo.MustParseBlockID("(0,8000000000000000,62729945)"), }, + "a349ed88485f06f15410ddd0add8aa384f1dafc8e131a3732149d8b6d407eca4": { + tongo.MustParseBlockID("(0,8000000000000000,92385315)"), + }, } type Case struct { @@ -1232,6 +1235,13 @@ func TestFindActions(t *testing.T) { filenamePrefix: "swap-snotfi-then-tonco", hash: "9610cbb609a44859d9cb726d9d1f01bc0a702c98270ed5a7e64749470ceeadfa", }, + { + // the pool paid out (stonfi_pay_to_v2 exit code is SwapOk), + // but the router's jetton transfer to the user failed and bounced back + name: "stonfi v2 swap with failed payout", + filenamePrefix: "stonfi-v2-swap-failed-payout", + hash: "a349ed88485f06f15410ddd0add8aa384f1dafc8e131a3732149d8b6d407eca4", + }, } var sharedStorage *litestorage.LiteStorage diff --git a/pkg/bath/stonfi.go b/pkg/bath/stonfi.go index 4f96fe35..ebf801f6 100644 --- a/pkg/bath/stonfi.go +++ b/pkg/bath/stonfi.go @@ -604,9 +604,10 @@ func (s UniversalStonfiStraw) processMultipleRouterSwaps(b *Bubble) stonfiSwapMu if err != nil || outJettonWallet == nil { return nil } - success := srSwaps[0].payoutBody.ExitCode == StonfiExitCode_SwapOk + payoutAgreed := srSwaps[0].payoutBody.ExitCode == StonfiExitCode_SwapOk + success := payoutAgreed && finalTransfer.success var out assetTransfer - if success { + if payoutAgreed { out = assetTransfer{ Amount: big.Int(finalTransfer.amount), IsTon: finalTransfer.isWrappedTon, diff --git a/pkg/bath/testdata/deposit-liquid-staking.json b/pkg/bath/testdata/deposit-liquid-staking.json index 6963c88e..16e48072 100644 --- a/pkg/bath/testdata/deposit-liquid-staking.json +++ b/pkg/bath/testdata/deposit-liquid-staking.json @@ -3,7 +3,14 @@ { "DepositStake": { "Staker": "0:2cf3b5b8c891e517c9addbda1c0386a09ccacbb0e3faf630b51cfc8152325acb", - "Amount": 10000000000, + "Amount": { + "Currency": { + "Type": "native", + "Jetton": null, + "CurrencyID": null + }, + "Amount": 10000000000 + }, "Pool": "0:a45b17f28409229b78360e3290420f13e4fe20f90d7e2bf8c4ac6703259e22fa", "Implementation": "liquidTF" }, diff --git a/pkg/bath/testdata/ethena-withdraw-stake-request.json b/pkg/bath/testdata/ethena-withdraw-stake-request.json index e814e269..b5a76c37 100644 --- a/pkg/bath/testdata/ethena-withdraw-stake-request.json +++ b/pkg/bath/testdata/ethena-withdraw-stake-request.json @@ -1,31 +1,53 @@ { "Actions": [ { - "WithdrawTokenStakeRequest": { - "Staker": "0:4003cbbfb5d1a9085873f956f92040669990d9d371ce843741b5d7936f231238", - "Protocol": { - "Name": "Ethena", - "Image": "https://ethena.fi/shared/usde.png" - }, - "StakeMeta": { - "Currency": { - "Type": "jetton", - "Jetton": "0:d0e545323c7acb7102653c073377f7e3c67f122eb94d430a250739f109d4a57d", - "CurrencyID": null - }, - "Amount": 3561999 - } + "JettonTransfer": { + "Comment": null, + "EncryptedComment": null, + "Jetton": "0:d0e545323c7acb7102653c073377f7e3c67f122eb94d430a250739f109d4a57d", + "Recipient": "0:d0e545323c7acb7102653c073377f7e3c67f122eb94d430a250739f109d4a57d", + "Sender": "0:4003cbbfb5d1a9085873f956f92040669990d9d371ce843741b5d7936f231238", + "RecipientsWallet": "0:d0e545323c7acb7102653c073377f7e3c67f122eb94d430a250739f109d4a57d", + "SendersWallet": "0:98967d18300af880b660d08f6d4dc03b080d81f334a1a9a0fe00587d4ab5dfda", + "Amount": "3561999", + "Refund": null }, "Success": true, - "Type": "WithdrawTokenStakeRequest", + "Type": "JettonTransfer", "BaseTransactions": [ "96dcf17373494225364c5b0c7f7adca6ab8e5bf0f9298b0f7bc395b428594b61", - "68790cea13a1717252d74d16a674a5d77fb969ebab1c27942559ff163da77e5b", "7eae0f164ff92e7ffb65e7cfca93d6fdfb6bbf0695be436699cb26a65a28e409", "80adfa60c6caedb596fb217de7fcdfa37daee309c7ab48f58fdafaee277570c4", - "ff13545fed6064c4ee68e495990314ac07c303e60eace6bcfe7d61aa310b39f5", "88653f902354f5d03ea880f62e932cb8a83b8998e9c7510503b71ecf507f01bf" ] + }, + { + "SmartContractExec": { + "TonAttached": 81416523, + "Executor": "0:a11ae0f5bb47bb2945871f915a621ff281c2d786c746da74873d71d6f2aaa7a5", + "Contract": "0:d0e545323c7acb7102653c073377f7e3c67f122eb94d430a250739f109d4a57d", + "Operation": "JettonMint", + "Payload": "QueryId: 4238277739104\nToAddress: 0:4003cbbfb5d1a9085873f956f92040669990d9d371ce843741b5d7936f231238\nTonAmount: \"35000000\"\n" + }, + "Success": true, + "Type": "SmartContractExec", + "BaseTransactions": [ + "ff13545fed6064c4ee68e495990314ac07c303e60eace6bcfe7d61aa310b39f5" + ] + }, + { + "SmartContractExec": { + "TonAttached": 70066523, + "Executor": "0:d0e545323c7acb7102653c073377f7e3c67f122eb94d430a250739f109d4a57d", + "Contract": "0:98967d18300af880b660d08f6d4dc03b080d81f334a1a9a0fe00587d4ab5dfda", + "Operation": "0xb2583ed5", + "Payload": "" + }, + "Success": true, + "Type": "SmartContractExec", + "BaseTransactions": [ + "68790cea13a1717252d74d16a674a5d77fb969ebab1c27942559ff163da77e5b" + ] } ], "Accounts": [ @@ -50,18 +72,18 @@ "Account": "0:a11ae0f5bb47bb2945871f915a621ff281c2d786c746da74873d71d6f2aaa7a5", "Ton": -5046, "Fee": 18588523, + "Jettons": null + }, + { + "Account": "0:d0e545323c7acb7102653c073377f7e3c67f122eb94d430a250739f109d4a57d", + "Ton": -711, + "Fee": 17078711, "Jettons": [ { "Address": "0:d0e545323c7acb7102653c073377f7e3c67f122eb94d430a250739f109d4a57d", "Quantity": 3561999 } ] - }, - { - "Account": "0:d0e545323c7acb7102653c073377f7e3c67f122eb94d430a250739f109d4a57d", - "Ton": -711, - "Fee": 17078711, - "Jettons": null } ] } \ No newline at end of file diff --git a/pkg/bath/testdata/new-withdraw-stake-request.json b/pkg/bath/testdata/new-withdraw-stake-request.json index 6ef6b50a..41bf43c4 100644 --- a/pkg/bath/testdata/new-withdraw-stake-request.json +++ b/pkg/bath/testdata/new-withdraw-stake-request.json @@ -5,8 +5,8 @@ "Staker": "0:18ad6afae9ec302784e12d298bc152b338ef1ae288dfd72e814fa29ee62a7ff5", "Amount": { "Currency": { - "Type": "native", - "Jetton": null, + "Type": "jetton", + "Jetton": "0:bdf3fa8098d129b54b4f73b5bac5d1e1fd91eb054169c3916dfc8ccd536d1000", "CurrencyID": null }, "Amount": 931632278 diff --git a/pkg/bath/testdata/old-withdraw-stake-request.json b/pkg/bath/testdata/old-withdraw-stake-request.json index 1eb34bab..cacbe712 100644 --- a/pkg/bath/testdata/old-withdraw-stake-request.json +++ b/pkg/bath/testdata/old-withdraw-stake-request.json @@ -5,8 +5,8 @@ "Staker": "0:18ad6afae9ec302784e12d298bc152b338ef1ae288dfd72e814fa29ee62a7ff5", "Amount": { "Currency": { - "Type": "native", - "Jetton": null, + "Type": "jetton", + "Jetton": "0:bdf3fa8098d129b54b4f73b5bac5d1e1fd91eb054169c3916dfc8ccd536d1000", "CurrencyID": null }, "Amount": 934069396 diff --git a/pkg/bath/testdata/stonfi-v2-swap-failed-payout.json b/pkg/bath/testdata/stonfi-v2-swap-failed-payout.json new file mode 100644 index 00000000..3d6305a2 --- /dev/null +++ b/pkg/bath/testdata/stonfi-v2-swap-failed-payout.json @@ -0,0 +1,78 @@ +{ + "Actions": [ + { + "JettonSwap": { + "Dex": "stonfi", + "UserWallet": "0:a7d679668e697f2119ba8532d8eeed98d2663df65d62e42ba92f844346279df1", + "Router": "0:031053133270be82ee6fd94d1963c0186868403a4f537040a0d533aab805b7af", + "In": { + "Amount": 5674986508, + "IsTon": true, + "JettonMaster": "0:671963027f7f85659ab55b821671688601cdcf1ee674fc7fbbb1a776a18d34a3", + "JettonWallet": "0:02bb3d79d6c9e5638e8f29d50e9328827f4cf373132c37a5e62909122998e4bf" + }, + "Out": { + "Amount": 942576906063098, + "IsTon": false, + "JettonMaster": "0:0ae95ed8d7cb16fff962e313728032daa47a58ba270fa9942059ef49e3db2860", + "JettonWallet": "0:f23a0f8d4ffed7c89047d2b359e3820738e14243d10698327011b3ecdcb37f7c" + } + }, + "Success": false, + "Type": "JettonSwap", + "BaseTransactions": [ + "06ac65f01f883306b1f05e77d853767f1b01fdfc2815466e8b21f6212b590900", + "3b6d9e7c111714689b517d314a250f3884380f14068e4f278a4498af9792dbf0", + "912576871fb5299aeac59fcb70980df48bec6b00fe47cc9b9af221ad4df64db2", + "a0797d2d1b6415bd7f240c800157273c980449de545399a89fb1ffc39a9b3afa", + "f0a4d51be9a828fc959c61824d49ec76a0366ae365fb92e57ac8e89a29cd8fcf" + ] + }, + { + "SmartContractExec": { + "TonAttached": 294998650, + "Executor": "0:f23a0f8d4ffed7c89047d2b359e3820738e14243d10698327011b3ecdcb37f7c", + "Contract": "0:031053133270be82ee6fd94d1963c0186868403a4f537040a0d533aab805b7af", + "Operation": "Bounce", + "Payload": "Payload: b5ee9c720101010100220000400f8a7ea53aec2d94f18b2bd67035944c9a8ccfa8014facf2cd1cd2fe4233750a\n" + }, + "Success": true, + "Type": "SmartContractExec", + "BaseTransactions": [ + "65628d3e10104e6020fae4f9a578a0fa15c91e6f1ddd69ca9352c04a67bc8c7c" + ] + } + ], + "Accounts": [ + { + "Account": "0:02bb3d79d6c9e5638e8f29d50e9328827f4cf373132c37a5e62909122998e4bf", + "Ton": 5674986508, + "Fee": 707869, + "Jettons": null + }, + { + "Account": "0:031053133270be82ee6fd94d1963c0186868403a4f537040a0d533aab805b7af", + "Ton": 294895582, + "Fee": 2662475, + "Jettons": null + }, + { + "Account": "0:091e3c26e520136afe5165794d57e2e46483f628be676cd56c18473c3e4d2546", + "Ton": 0, + "Fee": 1224139, + "Jettons": null + }, + { + "Account": "0:a7d679668e697f2119ba8532d8eeed98d2663df65d62e42ba92f844346279df1", + "Ton": -5975629993, + "Fee": 643485, + "Jettons": null + }, + { + "Account": "0:f23a0f8d4ffed7c89047d2b359e3820738e14243d10698327011b3ecdcb37f7c", + "Ton": 44415, + "Fee": 465520, + "Jettons": null + } + ] + } \ No newline at end of file diff --git a/pkg/bath/testdata/tonstakers-stake-withdraw.json b/pkg/bath/testdata/tonstakers-stake-withdraw.json index d97826c8..60d1ebb9 100644 --- a/pkg/bath/testdata/tonstakers-stake-withdraw.json +++ b/pkg/bath/testdata/tonstakers-stake-withdraw.json @@ -5,8 +5,8 @@ "Staker": "0:69ffc859cb1fb57a4cd300bad076a3623b8a7de0d5681aca0919f052df77474a", "Amount": { "Currency": { - "Type": "native", - "Jetton": null, + "Type": "jetton", + "Jetton": "0:bdf3fa8098d129b54b4f73b5bac5d1e1fd91eb054169c3916dfc8ccd536d1000", "CurrencyID": null }, "Amount": 206418586791