From d8166f53efd197df5fddf54b381fc10927c212b5 Mon Sep 17 00:00:00 2001 From: Michael Buntarman Date: Fri, 9 Jan 2026 10:49:41 +0700 Subject: [PATCH 1/3] chore: fetch unclaimed withdrawal proof --- go.mod | 4 ++-- go.sum | 4 ++++ .../erc20-bridge/004-withdrawal-proof-action.sql | 6 +++++- .../erc20/erc20_bridge_withdrawal_proof_test.go | 16 ++++++++++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index aba33ca19..217d06ae9 100644 --- a/go.mod +++ b/go.mod @@ -19,8 +19,8 @@ require ( github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.37.0 - github.com/trufnetwork/kwil-db v0.10.3-0.20260108163022-4af0579f0ecf - github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108163022-4af0579f0ecf + github.com/trufnetwork/kwil-db v0.10.3-0.20260109033107-1229f5f7af8c + github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109033107-1229f5f7af8c github.com/trufnetwork/sdk-go v0.3.2-0.20250630062504-841b40cdb709 go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa diff --git a/go.sum b/go.sum index 6b8f9d1b1..fc6568d34 100644 --- a/go.sum +++ b/go.sum @@ -1220,6 +1220,8 @@ github.com/trufnetwork/kwil-db v0.10.3-0.20260108143501-5a4b71722836 h1:imLAq+R1 github.com/trufnetwork/kwil-db v0.10.3-0.20260108143501-5a4b71722836/go.mod h1:LiBAC48uZl2B0IiLtD2hpOce7RNfpuDdghVAOc3u1Qo= github.com/trufnetwork/kwil-db v0.10.3-0.20260108163022-4af0579f0ecf h1:m0mJy0kSyUn/POcTonSBmqVuhak5l8rRqBmJvP/7+Y8= github.com/trufnetwork/kwil-db v0.10.3-0.20260108163022-4af0579f0ecf/go.mod h1:LiBAC48uZl2B0IiLtD2hpOce7RNfpuDdghVAOc3u1Qo= +github.com/trufnetwork/kwil-db v0.10.3-0.20260109033107-1229f5f7af8c h1:6FTG3G0Eki4xvLNtZ3L6u4nut8qwOMLM/6au7fjuBdk= +github.com/trufnetwork/kwil-db v0.10.3-0.20260109033107-1229f5f7af8c/go.mod h1:LiBAC48uZl2B0IiLtD2hpOce7RNfpuDdghVAOc3u1Qo= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260107154136-b8af58932e24 h1:5RcJ0Cyt9UaXwv71d9jYgwGL2zwyTJdP9m4wkk6B6Z8= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260107154136-b8af58932e24/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108132315-b1fcfb33a848 h1:/0naLqfmAqfL5XWdN1yulk5auImOP14Taw0B1baq3GU= @@ -1228,6 +1230,8 @@ github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108143501-5a4b71722836 h1:GbT+ github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108143501-5a4b71722836/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108163022-4af0579f0ecf h1:ysL3QbwQtONB4vS2iQ8YsxpdrrDa8ivpneRTWBi4daM= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108163022-4af0579f0ecf/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= +github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109033107-1229f5f7af8c h1:mTZhP+rSfmlCH6Cb6dCONbT+44g0Ek8tWTvD3wtkA9k= +github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109033107-1229f5f7af8c/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= github.com/trufnetwork/openzeppelin-merkle-tree-go v0.0.2 h1:DCq8MzbWH0wZmICNmMVsSzUHUPl+2vqRhluEABjxl88= github.com/trufnetwork/openzeppelin-merkle-tree-go v0.0.2/go.mod h1:Y0MJpPp9QXU5vC6Gpoilql2NkgmGNcbHm9HYC2v2N8s= github.com/trufnetwork/sdk-go v0.3.2-0.20250630062504-841b40cdb709 h1:d9EqPXIjbq/atzEncK5dM3Z9oStx1BxCGuL/sjefeCw= diff --git a/internal/migrations/erc20-bridge/004-withdrawal-proof-action.sql b/internal/migrations/erc20-bridge/004-withdrawal-proof-action.sql index 925d0533d..797355c5d 100644 --- a/internal/migrations/erc20-bridge/004-withdrawal-proof-action.sql +++ b/internal/migrations/erc20-bridge/004-withdrawal-proof-action.sql @@ -1,6 +1,8 @@ -- Withdrawal Proof Action for Hoodi Non-Custodial Bridge -- This action exposes the list_wallet_rewards precompile as a public action. -- Returns merkle proofs AND validator signatures - everything needed for withdrawal. +-- Returns ALL confirmed epochs, not just first one (uses RETURN NEXT) +-- Epochs filtered by withdrawals table (only unclaimed epochs returned) CREATE OR REPLACE ACTION hoodi_get_withdrawal_proof($wallet_address TEXT) PUBLIC VIEW RETURNS TABLE ( chain TEXT, @@ -15,8 +17,10 @@ PUBLIC VIEW RETURNS TABLE ( signatures BYTEA[] ) { -- with_pending = false means only return confirmed epochs (ready for withdrawal) + -- Returns ALL confirmed epochs ordered by height DESC (newest first) FOR $row IN hoodi_bridge.list_wallet_rewards($wallet_address, false) { - RETURN $row.chain, $row.chain_id, $row.contract, $row.created_at, + -- Return each row (don't exit loop!) + RETURN NEXT $row.chain, $row.chain_id, $row.contract, $row.created_at, $row.param_recipient, $row.param_amount, $row.param_block_hash, $row.param_root, $row.param_proofs, $row.param_signatures; } diff --git a/tests/extensions/erc20/erc20_bridge_withdrawal_proof_test.go b/tests/extensions/erc20/erc20_bridge_withdrawal_proof_test.go index 0efc00795..58afd3933 100644 --- a/tests/extensions/erc20/erc20_bridge_withdrawal_proof_test.go +++ b/tests/extensions/erc20/erc20_bridge_withdrawal_proof_test.go @@ -98,6 +98,14 @@ func TestHoodiGetWithdrawalProofAction(t *testing.T) { ) require.NoError(t, err, "failed to finalize epoch") + // Add validator signature for the epoch (required for withdrawal proofs) + err = erc20shim.ForTestingAddValidatorSignatureToEpoch( + ctx, platform, + MigrationHoodiChain, + MigrationHoodiEscrow, + ) + require.NoError(t, err, "failed to add validator signature") + // Call the PUBLIC ACTION hoodi_get_withdrawal_proof // This is the action users will call in production engineCtx = engCtx(ctx, platform, "0x0000000000000000000000000000000000000000", 3, false) @@ -384,6 +392,14 @@ func TestHoodiGetWithdrawalProofMultipleUsers(t *testing.T) { ) require.NoError(t, err) + // Add validator signature for the epoch + err = erc20shim.ForTestingAddValidatorSignatureToEpoch( + ctx, platform, + MigrationHoodiChain, + MigrationHoodiEscrow, + ) + require.NoError(t, err) + // Call public action for User A engineCtx = engCtx(ctx, platform, "0x0000000000000000000000000000000000000000", 4, false) var proofRowsA int From f36b8c2c13e98d55cf08c47e16425c637ebe1506 Mon Sep 17 00:00:00 2001 From: Michael Buntarman Date: Fri, 9 Jan 2026 11:55:09 +0700 Subject: [PATCH 2/3] chore: update go.mod --- go.mod | 4 ++-- go.sum | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 217d06ae9..a9b03212f 100644 --- a/go.mod +++ b/go.mod @@ -19,8 +19,8 @@ require ( github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.37.0 - github.com/trufnetwork/kwil-db v0.10.3-0.20260109033107-1229f5f7af8c - github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109033107-1229f5f7af8c + github.com/trufnetwork/kwil-db v0.10.3-0.20260109045323-5526d81c5ac1 + github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109045323-5526d81c5ac1 github.com/trufnetwork/sdk-go v0.3.2-0.20250630062504-841b40cdb709 go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa diff --git a/go.sum b/go.sum index fc6568d34..893c546b9 100644 --- a/go.sum +++ b/go.sum @@ -1222,6 +1222,8 @@ github.com/trufnetwork/kwil-db v0.10.3-0.20260108163022-4af0579f0ecf h1:m0mJy0kS github.com/trufnetwork/kwil-db v0.10.3-0.20260108163022-4af0579f0ecf/go.mod h1:LiBAC48uZl2B0IiLtD2hpOce7RNfpuDdghVAOc3u1Qo= github.com/trufnetwork/kwil-db v0.10.3-0.20260109033107-1229f5f7af8c h1:6FTG3G0Eki4xvLNtZ3L6u4nut8qwOMLM/6au7fjuBdk= github.com/trufnetwork/kwil-db v0.10.3-0.20260109033107-1229f5f7af8c/go.mod h1:LiBAC48uZl2B0IiLtD2hpOce7RNfpuDdghVAOc3u1Qo= +github.com/trufnetwork/kwil-db v0.10.3-0.20260109045323-5526d81c5ac1 h1:+A3uD4W++XxCt3sRuF0icVZhPLz8bipinpFL5rBYZ0c= +github.com/trufnetwork/kwil-db v0.10.3-0.20260109045323-5526d81c5ac1/go.mod h1:LiBAC48uZl2B0IiLtD2hpOce7RNfpuDdghVAOc3u1Qo= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260107154136-b8af58932e24 h1:5RcJ0Cyt9UaXwv71d9jYgwGL2zwyTJdP9m4wkk6B6Z8= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260107154136-b8af58932e24/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108132315-b1fcfb33a848 h1:/0naLqfmAqfL5XWdN1yulk5auImOP14Taw0B1baq3GU= @@ -1232,6 +1234,8 @@ github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108163022-4af0579f0ecf h1:ysL3 github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108163022-4af0579f0ecf/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109033107-1229f5f7af8c h1:mTZhP+rSfmlCH6Cb6dCONbT+44g0Ek8tWTvD3wtkA9k= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109033107-1229f5f7af8c/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= +github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109045323-5526d81c5ac1 h1:KsZIAXNTnbukp6p89y2I9bCjGBFvJXFU6u66y91dYkk= +github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109045323-5526d81c5ac1/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= github.com/trufnetwork/openzeppelin-merkle-tree-go v0.0.2 h1:DCq8MzbWH0wZmICNmMVsSzUHUPl+2vqRhluEABjxl88= github.com/trufnetwork/openzeppelin-merkle-tree-go v0.0.2/go.mod h1:Y0MJpPp9QXU5vC6Gpoilql2NkgmGNcbHm9HYC2v2N8s= github.com/trufnetwork/sdk-go v0.3.2-0.20250630062504-841b40cdb709 h1:d9EqPXIjbq/atzEncK5dM3Z9oStx1BxCGuL/sjefeCw= From 965a379affdeb66e2e415adab762ad2ccda65aca Mon Sep 17 00:00:00 2001 From: Michael Buntarman Date: Fri, 9 Jan 2026 12:15:46 +0700 Subject: [PATCH 3/3] update go.mod --- go.mod | 4 ++-- go.sum | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index a9b03212f..cf6d8eb03 100644 --- a/go.mod +++ b/go.mod @@ -19,8 +19,8 @@ require ( github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.37.0 - github.com/trufnetwork/kwil-db v0.10.3-0.20260109045323-5526d81c5ac1 - github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109045323-5526d81c5ac1 + github.com/trufnetwork/kwil-db v0.10.3-0.20260109051031-0955c8d87ef6 + github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109051031-0955c8d87ef6 github.com/trufnetwork/sdk-go v0.3.2-0.20250630062504-841b40cdb709 go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa diff --git a/go.sum b/go.sum index 893c546b9..40b11ad19 100644 --- a/go.sum +++ b/go.sum @@ -1224,6 +1224,8 @@ github.com/trufnetwork/kwil-db v0.10.3-0.20260109033107-1229f5f7af8c h1:6FTG3G0E github.com/trufnetwork/kwil-db v0.10.3-0.20260109033107-1229f5f7af8c/go.mod h1:LiBAC48uZl2B0IiLtD2hpOce7RNfpuDdghVAOc3u1Qo= github.com/trufnetwork/kwil-db v0.10.3-0.20260109045323-5526d81c5ac1 h1:+A3uD4W++XxCt3sRuF0icVZhPLz8bipinpFL5rBYZ0c= github.com/trufnetwork/kwil-db v0.10.3-0.20260109045323-5526d81c5ac1/go.mod h1:LiBAC48uZl2B0IiLtD2hpOce7RNfpuDdghVAOc3u1Qo= +github.com/trufnetwork/kwil-db v0.10.3-0.20260109051031-0955c8d87ef6 h1:BNp/U5QongrNhxc+wfcnmX+F0rLZKh3liKA8/cKWpjQ= +github.com/trufnetwork/kwil-db v0.10.3-0.20260109051031-0955c8d87ef6/go.mod h1:LiBAC48uZl2B0IiLtD2hpOce7RNfpuDdghVAOc3u1Qo= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260107154136-b8af58932e24 h1:5RcJ0Cyt9UaXwv71d9jYgwGL2zwyTJdP9m4wkk6B6Z8= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260107154136-b8af58932e24/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260108132315-b1fcfb33a848 h1:/0naLqfmAqfL5XWdN1yulk5auImOP14Taw0B1baq3GU= @@ -1236,6 +1238,8 @@ github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109033107-1229f5f7af8c h1:mTZh github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109033107-1229f5f7af8c/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109045323-5526d81c5ac1 h1:KsZIAXNTnbukp6p89y2I9bCjGBFvJXFU6u66y91dYkk= github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109045323-5526d81c5ac1/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= +github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109051031-0955c8d87ef6 h1:SF9daN+N00xe5MYAgENF8dj+9bsaVZO2BhN2CQVHH5Q= +github.com/trufnetwork/kwil-db/core v0.4.3-0.20260109051031-0955c8d87ef6/go.mod h1:HnOsh9+BN13LJCjiH0+XKaJzyjWKf+H9AofFFp90KwQ= github.com/trufnetwork/openzeppelin-merkle-tree-go v0.0.2 h1:DCq8MzbWH0wZmICNmMVsSzUHUPl+2vqRhluEABjxl88= github.com/trufnetwork/openzeppelin-merkle-tree-go v0.0.2/go.mod h1:Y0MJpPp9QXU5vC6Gpoilql2NkgmGNcbHm9HYC2v2N8s= github.com/trufnetwork/sdk-go v0.3.2-0.20250630062504-841b40cdb709 h1:d9EqPXIjbq/atzEncK5dM3Z9oStx1BxCGuL/sjefeCw=