Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: extend solana withdraw and call unit tests #3561

Merged
merged 35 commits into from
Feb 24, 2025
Merged
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
c736747
sol withdraw and call and e2e test
skosito Feb 2, 2025
a6d9699
fmt
skosito Feb 2, 2025
2014293
Merge branch 'develop' into sol-withdraw-and-call
skosito Feb 9, 2025
602a1e8
fix solana e2e tests
skosito Feb 9, 2025
2006117
fix msg hash unit tests
skosito Feb 10, 2025
de553da
cleanup
skosito Feb 10, 2025
48de032
bump gateway.so
skosito Feb 10, 2025
1b9a46d
Merge branch 'develop' into sol-withdraw-and-call
skosito Feb 10, 2025
01ddf51
cleanup unused function
skosito Feb 10, 2025
3d6c2c1
cleanup
skosito Feb 10, 2025
76c4f8c
Merge branch 'develop' into sol-withdraw-and-call
skosito Feb 11, 2025
0767f9e
PR comments
skosito Feb 11, 2025
33a63dc
linter
skosito Feb 11, 2025
0f1bdd7
spl withdraw and call
skosito Feb 11, 2025
93e9b1d
bump gateway and changelog
skosito Feb 11, 2025
f88a71d
bump gateway to fix e2e tests
skosito Feb 12, 2025
f7e9c29
sol withdraw and call revert
skosito Feb 13, 2025
03ec3a1
revert for spl withdraw and call
skosito Feb 13, 2025
259e0b5
generate
skosito Feb 13, 2025
816ca0a
revert gas limit changes
skosito Feb 13, 2025
08ec2ff
bump gateway
skosito Feb 13, 2025
5bb5813
changelog
skosito Feb 13, 2025
fe346fe
Merge branch 'develop' into sol-withdraw-and-call-revert
skosito Feb 14, 2025
dd91087
Merge branch 'develop' into sol-withdraw-and-call-revert
skosito Feb 18, 2025
67e717d
cleanup
skosito Feb 18, 2025
c0e1912
PR comments
skosito Feb 19, 2025
89d356a
use callOnRevert in e2e test
skosito Feb 19, 2025
5b8f8b0
Merge branch 'develop' into sol-withdraw-and-call-revert
skosito Feb 19, 2025
5b1f34a
use inst discriminator instead of artificial failed func
skosito Feb 20, 2025
822ba22
Merge branch 'develop' into sol-withdraw-and-call-revert
skosito Feb 20, 2025
075a3eb
Merge branch 'develop' into sol-withdraw-and-call-revert
skosito Feb 20, 2025
cd7db53
add missing gateway msg tests
skosito Feb 20, 2025
9219b11
add outbound tests and data
skosito Feb 20, 2025
bd184f6
generate
skosito Feb 21, 2025
279f2a1
Merge branch 'develop' into extend-sol-unit-tests
skosito Feb 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@
* [3455](https://github.com/zeta-chain/node/pull/3455) - add `track-cctx` command to zetatools
* [3506](https://github.com/zeta-chain/node/pull/3506) - define `ConfirmationMode` enum and add it to `InboundParams`, `OutboundParams`, `MsgVoteInbound` and `MsgVoteOutbound`
* [3469](https://github.com/zeta-chain/node/pull/3469) - add `MsgRemoveInboundTracker` to remove inbound trackers. This message can be triggered by the emergency policy.
* [3450](https://github.com/zeta-chain/node/pull/3450) - SOL withdraw and call integration
* [3450](https://github.com/zeta-chain/node/pull/3450) - integrate SOL withdraw and call
* [3538](https://github.com/zeta-chain/node/pull/3538) - implement `MsgUpdateOperationalChainParams` for updating operational-related chain params with operational policy
* [3534] (https://github.com/zeta-chain/node/pull/3534) - Add Sui deposit & depositAndCall
* [3541](https://github.com/zeta-chain/node/pull/3541) - implement `MsgUpdateZRC20Name` to update the name or symbol of a ZRC20 token
* [3520](https://github.com/zeta-chain/node/pull/3520) - SPL withdraw and call integration
* [3439](https://github.com/zeta-chain/node/pull/3439) - use protocol contracts V2 with TON deposits
* [3520](https://github.com/zeta-chain/node/pull/3520) - integrate SPL withdraw and call
* [3527](https://github.com/zeta-chain/node/pull/3527) - integrate SOL/SPL withdraw and call revert
* [3522](https://github.com/zeta-chain/node/pull/3522) - add `MsgDisableFastConfirmation` to disable fast confirmation. This message can be triggered by the emergency policy.

### Refactor
Expand Down
2 changes: 2 additions & 0 deletions cmd/zetae2e/local/local.go
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,7 @@ func localE2ETest(cmd *cobra.Command, _ []string) {
e2etests.TestSolanaDepositName,
e2etests.TestSolanaWithdrawName,
e2etests.TestSolanaWithdrawAndCallName,
e2etests.TestSolanaWithdrawAndCallRevertWithCallName,
e2etests.TestSolanaDepositAndCallName,
e2etests.TestSolanaDepositAndCallRevertName,
e2etests.TestSolanaDepositAndCallRevertWithDustName,
Expand All @@ -416,6 +417,7 @@ func localE2ETest(cmd *cobra.Command, _ []string) {
e2etests.TestSPLDepositAndCallName,
e2etests.TestSPLWithdrawName,
e2etests.TestSPLWithdrawAndCallName,
e2etests.TestSPLWithdrawAndCallRevertName,
e2etests.TestSPLWithdrawAndCreateReceiverAtaName,
e2etests.TestSolanaWhitelistSPLName,
}
Expand Down
Binary file modified contrib/localnet/solana/connected.so
Binary file not shown.
Binary file modified contrib/localnet/solana/connected_spl.so
Binary file not shown.
44 changes: 31 additions & 13 deletions e2e/e2etests/e2etests.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,21 @@ const (
/*
* Solana tests
*/
TestSolanaDepositName = "solana_deposit"
TestSolanaWithdrawName = "solana_withdraw"
TestSolanaWithdrawAndCallName = "solana_withdraw_and_call"
TestSolanaDepositAndCallName = "solana_deposit_and_call"
TestSolanaDepositAndCallRevertName = "solana_deposit_and_call_revert"
TestSolanaDepositAndCallRevertWithDustName = "solana_deposit_and_call_revert_with_dust"
TestSolanaDepositRestrictedName = "solana_deposit_restricted"
TestSolanaWithdrawRestrictedName = "solana_withdraw_restricted"
TestSPLDepositName = "spl_deposit"
TestSPLDepositAndCallName = "spl_deposit_and_call"
TestSPLWithdrawName = "spl_withdraw"
TestSPLWithdrawAndCallName = "spl_withdraw_and_call"
TestSPLWithdrawAndCreateReceiverAtaName = "spl_withdraw_and_create_receiver_ata"
TestSolanaDepositName = "solana_deposit"
TestSolanaWithdrawName = "solana_withdraw"
TestSolanaWithdrawAndCallName = "solana_withdraw_and_call"
TestSolanaWithdrawAndCallRevertWithCallName = "solana_withdraw_and_call_revert_with_call"
TestSolanaDepositAndCallName = "solana_deposit_and_call"
TestSolanaDepositAndCallRevertName = "solana_deposit_and_call_revert"
TestSolanaDepositAndCallRevertWithDustName = "solana_deposit_and_call_revert_with_dust"
TestSolanaDepositRestrictedName = "solana_deposit_restricted"
TestSolanaWithdrawRestrictedName = "solana_withdraw_restricted"
TestSPLDepositName = "spl_deposit"
TestSPLDepositAndCallName = "spl_deposit_and_call"
TestSPLWithdrawName = "spl_withdraw"
TestSPLWithdrawAndCallName = "spl_withdraw_and_call"
TestSPLWithdrawAndCallRevertName = "spl_withdraw_and_call_revert"
TestSPLWithdrawAndCreateReceiverAtaName = "spl_withdraw_and_create_receiver_ata"

/**
* TON tests
Expand Down Expand Up @@ -535,6 +537,14 @@ var AllE2ETests = []runner.E2ETest{
},
TestSolanaWithdrawAndCall,
),
runner.NewE2ETest(
TestSolanaWithdrawAndCallRevertWithCallName,
"withdraw SOL from ZEVM and call solana program that reverts",
[]runner.ArgDefinition{
{Description: "amount in lamport", DefaultValue: "1000000"},
},
TestSolanaWithdrawAndCallRevertWithCall,
),
runner.NewE2ETest(
TestSPLWithdrawAndCallName,
"withdraw SPL from ZEVM and call solana program",
Expand All @@ -543,6 +553,14 @@ var AllE2ETests = []runner.E2ETest{
},
TestSPLWithdrawAndCall,
),
runner.NewE2ETest(
TestSPLWithdrawAndCallRevertName,
"withdraw SPL from ZEVM and call solana program that reverts",
[]runner.ArgDefinition{
{Description: "amount in lamport", DefaultValue: "1000000"},
},
TestSPLWithdrawAndCallRevert,
),
runner.NewE2ETest(
TestSolanaDepositAndCallName,
"deposit SOL into ZEVM and call a contract",
Expand Down
11 changes: 10 additions & 1 deletion e2e/e2etests/test_solana_withdraw_and_call.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/gagliardetto/solana-go"
"github.com/near/borsh-go"
"github.com/stretchr/testify/require"
"github.com/zeta-chain/protocol-contracts/pkg/gatewayzevm.sol"

"github.com/zeta-chain/node/e2e/runner"
"github.com/zeta-chain/node/e2e/utils"
Expand Down Expand Up @@ -55,7 +56,15 @@ func TestSolanaWithdrawAndCall(r *runner.E2ERunner, args []string) {
require.NoError(r, err)

// withdraw and call
tx := r.WithdrawAndCallSOLZRC20(runner.ConnectedProgramID, withdrawAmount, approvedAmount, []byte("hello"))
tx := r.WithdrawAndCallSOLZRC20(
runner.ConnectedProgramID,
withdrawAmount,
approvedAmount,
[]byte("hello"),
gatewayzevm.RevertOptions{
OnRevertGasLimit: big.NewInt(0),
},
)

// wait for the cctx to be mined
cctx := utils.WaitCctxMinedByInboundHash(r.Ctx, tx.Hash().Hex(), r.CctxClient, r.Logger, r.CctxTimeout)
Expand Down
87 changes: 87 additions & 0 deletions e2e/e2etests/test_solana_withdraw_and_call_revert_with_call.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package e2etests

import (
"math/big"

"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/gagliardetto/solana-go"
"github.com/stretchr/testify/require"
"github.com/zeta-chain/protocol-contracts/pkg/gatewayzevm.sol"

"github.com/zeta-chain/node/e2e/runner"
"github.com/zeta-chain/node/e2e/utils"
crosschaintypes "github.com/zeta-chain/node/x/crosschain/types"
)

// TestSolanaWithdrawAndCallRevertWithCall executes withdrawAndCall on zevm and calls connected program on solana
// execution is reverted in connected program on_call function and onRevert is called on ZEVM TestDapp contract
func TestSolanaWithdrawAndCallRevertWithCall(r *runner.E2ERunner, args []string) {
require.Len(r, args, 1)

withdrawAmount := utils.ParseBigInt(r, args[0])

// get ZRC20 SOL balance before withdraw
balanceBefore, err := r.SOLZRC20.BalanceOf(&bind.CallOpts{}, r.EVMAddress())
require.NoError(r, err)
r.Logger.Info("runner balance of SOL before withdraw: %d", balanceBefore)

require.Equal(r, 1, balanceBefore.Cmp(withdrawAmount), "Insufficient balance for withdrawal")

// parse withdraw amount (in lamports), approve amount is 1 SOL
approvedAmount := new(big.Int).SetUint64(solana.LAMPORTS_PER_SOL)
require.Equal(
r,
-1,
withdrawAmount.Cmp(approvedAmount),
"Withdrawal amount must be less than the approved amount: %v",
approvedAmount,
)

// use a random address to get the revert amount
revertAddress := r.TestDAppV2ZEVMAddr
balance, err := r.SOLZRC20.BalanceOf(&bind.CallOpts{}, revertAddress)
require.NoError(r, err)
require.EqualValues(r, int64(0), balance.Int64())

payload := randomPayload(r)
r.AssertTestDAppEVMCalled(false, payload, withdrawAmount)

// withdraw and call
tx := r.WithdrawAndCallSOLZRC20(
runner.ConnectedProgramID,
withdrawAmount,
approvedAmount,
[]byte("revert"),
gatewayzevm.RevertOptions{
CallOnRevert: true,
RevertAddress: revertAddress,
RevertMessage: []byte(payload),
OnRevertGasLimit: big.NewInt(0),
},
)

// wait for the cctx to be mined
cctx := utils.WaitCctxMinedByInboundHash(r.Ctx, tx.Hash().Hex(), r.CctxClient, r.Logger, r.CctxTimeout)
utils.RequireCCTXStatus(r, cctx, crosschaintypes.CctxStatus_Reverted)

// get ZRC20 SOL balance after withdraw
balanceAfter, err := r.SOLZRC20.BalanceOf(&bind.CallOpts{}, r.EVMAddress())
require.NoError(r, err)
r.Logger.Info("runner balance of SOL after withdraw: %d", balanceAfter)

r.AssertTestDAppZEVMCalled(true, payload, big.NewInt(0))

// check expected sender was used
senderForMsg, err := r.TestDAppV2ZEVM.SenderWithMessage(
&bind.CallOpts{},
[]byte(payload),
)
require.NoError(r, err)
require.Equal(r, r.ZEVMAuth.From, senderForMsg)

// check the balance of revert address is equal to withdraw amount
balance, err = r.SOLZRC20.BalanceOf(&bind.CallOpts{}, revertAddress)
require.NoError(r, err)

require.Equal(r, withdrawAmount.Int64(), balance.Int64())
}
11 changes: 10 additions & 1 deletion e2e/e2etests/test_spl_withdraw_and_call.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/gagliardetto/solana-go/rpc"
"github.com/near/borsh-go"
"github.com/stretchr/testify/require"
"github.com/zeta-chain/protocol-contracts/pkg/gatewayzevm.sol"

"github.com/zeta-chain/node/e2e/runner"
"github.com/zeta-chain/node/e2e/utils"
Expand Down Expand Up @@ -65,7 +66,15 @@ func TestSPLWithdrawAndCall(r *runner.E2ERunner, args []string) {
r.Logger.Info("connected pda balance of SPL before withdraw: %s", connectedPdaBalanceBefore.Value.Amount)

// withdraw
tx := r.WithdrawAndCallSPLZRC20(runner.ConnectedSPLProgramID, withdrawAmount, approvedAmount, []byte("hello"))
tx := r.WithdrawAndCallSPLZRC20(
runner.ConnectedSPLProgramID,
withdrawAmount,
approvedAmount,
[]byte("hello"),
gatewayzevm.RevertOptions{
OnRevertGasLimit: big.NewInt(0),
},
)

// wait for the cctx to be mined
cctx := utils.WaitCctxMinedByInboundHash(r.Ctx, tx.Hash().Hex(), r.CctxClient, r.Logger, r.CctxTimeout)
Expand Down
101 changes: 101 additions & 0 deletions e2e/e2etests/test_spl_withdraw_and_call_revert.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
package e2etests

import (
"math/big"

"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/gagliardetto/solana-go"
"github.com/gagliardetto/solana-go/rpc"
"github.com/stretchr/testify/require"
"github.com/zeta-chain/protocol-contracts/pkg/gatewayzevm.sol"

"github.com/zeta-chain/node/e2e/runner"
"github.com/zeta-chain/node/e2e/utils"
solanacontract "github.com/zeta-chain/node/pkg/contracts/solana"
"github.com/zeta-chain/node/testutil/sample"
crosschaintypes "github.com/zeta-chain/node/x/crosschain/types"
)

// TestSPLWithdrawAndCall executes withdrawAndCall on zevm and calls connected program on solana
// execution is reverted in connected program on_call function
func TestSPLWithdrawAndCallRevert(r *runner.E2ERunner, args []string) {
require.Len(r, args, 1)

withdrawAmount := utils.ParseBigInt(r, args[0])

// get SPL ZRC20 balance before withdraw
zrc20BalanceBefore, err := r.SPLZRC20.BalanceOf(&bind.CallOpts{}, r.EVMAddress())
require.NoError(r, err)
r.Logger.Info("runner balance of SPL before withdraw: %d", zrc20BalanceBefore)

require.Equal(r, 1, zrc20BalanceBefore.Cmp(withdrawAmount), "Insufficient balance for withdrawal")

// parse withdraw amount (in lamports), approve amount is 1 SOL
approvedAmount := new(big.Int).SetUint64(solana.LAMPORTS_PER_SOL)
require.Equal(
r,
-1,
withdrawAmount.Cmp(approvedAmount),
"Withdrawal amount must be less than the %v",
approvedAmount,
)

// load deployer private key
privkey := r.GetSolanaPrivKey()

// get receiver ata balance before withdraw
receiverAta := r.ResolveSolanaATA(privkey, privkey.PublicKey(), r.SPLAddr)
receiverBalanceBefore, err := r.SolanaClient.GetTokenAccountBalance(r.Ctx, receiverAta, rpc.CommitmentConfirmed)
require.NoError(r, err)
r.Logger.Info("receiver balance of SPL before withdraw: %s", receiverBalanceBefore.Value.Amount)

connected := solana.MustPublicKeyFromBase58(runner.ConnectedSPLProgramID.String())
connectedPda, err := solanacontract.ComputeConnectedSPLPdaAddress(connected)
require.NoError(r, err)

connectedPdaAta := r.ResolveSolanaATA(privkey, connectedPda, r.SPLAddr)
connectedPdaBalanceBefore, err := r.SolanaClient.GetTokenAccountBalance(
r.Ctx,
connectedPdaAta,
rpc.CommitmentConfirmed,
)
require.NoError(r, err)
r.Logger.Info("connected pda balance of SPL before withdraw: %s", connectedPdaBalanceBefore.Value.Amount)

// use a random address to get the revert amount
revertAddress := sample.EthAddress()
balance, err := r.SPLZRC20.BalanceOf(&bind.CallOpts{}, revertAddress)
require.NoError(r, err)
require.EqualValues(r, int64(0), balance.Int64())

// withdraw
tx := r.WithdrawAndCallSPLZRC20(
runner.ConnectedSPLProgramID,
withdrawAmount,
approvedAmount,
[]byte("revert"),
gatewayzevm.RevertOptions{
RevertAddress: revertAddress,
OnRevertGasLimit: big.NewInt(0),
},
)

// wait for the cctx to be mined
cctx := utils.WaitCctxMinedByInboundHash(r.Ctx, tx.Hash().Hex(), r.CctxClient, r.Logger, r.CctxTimeout)
utils.RequireCCTXStatus(r, cctx, crosschaintypes.CctxStatus_Reverted)

// get SPL ZRC20 balance after withdraw
zrc20BalanceAfter, err := r.SPLZRC20.BalanceOf(&bind.CallOpts{}, r.EVMAddress())
require.NoError(r, err)
r.Logger.Info("runner balance of SPL after withdraw: %d", zrc20BalanceAfter)

balanceAfter, err := r.SPLZRC20.BalanceOf(&bind.CallOpts{}, r.EVMAddress())
require.NoError(r, err)
r.Logger.Info("runner balance of SOL after withdraw: %d", balanceAfter)

// check the balance of revert address is equal to withdraw amount
balance, err = r.SPLZRC20.BalanceOf(&bind.CallOpts{}, revertAddress)
require.NoError(r, err)

require.Equal(r, withdrawAmount.Int64(), balance.Int64())
}
6 changes: 4 additions & 2 deletions e2e/runner/solana.go
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,7 @@ func (r *E2ERunner) WithdrawAndCallSOLZRC20(
amount *big.Int,
approveAmount *big.Int,
data []byte,
revertOptions gatewayzevm.RevertOptions,
) *ethtypes.Transaction {
// approve
tx, err := r.SOLZRC20.Approve(r.ZEVMAuth, r.GatewayZEVMAddr, approveAmount)
Expand Down Expand Up @@ -516,7 +517,7 @@ func (r *E2ERunner) WithdrawAndCallSOLZRC20(
r.SOLZRC20Addr,
msgEncoded,
gatewayzevm.CallOptions{GasLimit: big.NewInt(250000)},
gatewayzevm.RevertOptions{OnRevertGasLimit: big.NewInt(0)},
revertOptions,
)
require.NoError(r, err)
r.Logger.EVMTransaction(*tx, "withdraw_and_call")
Expand Down Expand Up @@ -560,6 +561,7 @@ func (r *E2ERunner) WithdrawAndCallSPLZRC20(
amount *big.Int,
approveAmount *big.Int,
data []byte,
revertOptions gatewayzevm.RevertOptions,
) *ethtypes.Transaction {
// approve
tx, err := r.SOLZRC20.Approve(r.ZEVMAuth, r.GatewayZEVMAddr, approveAmount)
Expand Down Expand Up @@ -607,7 +609,7 @@ func (r *E2ERunner) WithdrawAndCallSPLZRC20(
r.SPLZRC20Addr,
msgEncoded,
gatewayzevm.CallOptions{GasLimit: big.NewInt(250000)},
gatewayzevm.RevertOptions{OnRevertGasLimit: big.NewInt(0)},
revertOptions,
)
require.NoError(r, err)
r.Logger.EVMTransaction(*tx, "withdraw_and_call")
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ require (
github.com/montanaflynn/stats v0.7.1
github.com/showa-93/go-mask v0.6.2
github.com/tonkeeper/tongo v1.9.3
github.com/zeta-chain/protocol-contracts-solana/go-idl v0.0.0-20250211174435-9680e27af84a
github.com/zeta-chain/protocol-contracts-solana/go-idl v0.0.0-20250212192042-34095b214e51
)

require (
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1404,8 +1404,8 @@ github.com/zeta-chain/go-tss v0.0.0-20241216161449-be92b20f8102 h1:jMb9ydfDFjgdl
github.com/zeta-chain/go-tss v0.0.0-20241216161449-be92b20f8102/go.mod h1:nqelgf4HKkqlXaVg8X38a61WfyYB+ivCt6nnjoTIgCc=
github.com/zeta-chain/protocol-contracts v1.0.2-athens3.0.20250124151021-87b63e845f1c h1:iD7O6gFot1QHM6ggrt96N9eXnZ7vqkg2mFVm7OTaisw=
github.com/zeta-chain/protocol-contracts v1.0.2-athens3.0.20250124151021-87b63e845f1c/go.mod h1:SjT7QirtJE8stnAe1SlNOanxtfSfijJm3MGJ+Ax7w7w=
github.com/zeta-chain/protocol-contracts-solana/go-idl v0.0.0-20250211174435-9680e27af84a h1:+TVuNWQK8j7yc9TkH+JOplMae7Ym/yADoIMnO1yIQzo=
github.com/zeta-chain/protocol-contracts-solana/go-idl v0.0.0-20250211174435-9680e27af84a/go.mod h1:DcDY828o773soiU/h0XpC+naxitrIMFVZqEvq/EJxMA=
github.com/zeta-chain/protocol-contracts-solana/go-idl v0.0.0-20250212192042-34095b214e51 h1:r3cG+whGN8MFwfLG2Y2Irs2x1zyMznUDJHcOgV2X4UM=
github.com/zeta-chain/protocol-contracts-solana/go-idl v0.0.0-20250212192042-34095b214e51/go.mod h1:DcDY828o773soiU/h0XpC+naxitrIMFVZqEvq/EJxMA=
github.com/zeta-chain/tss-lib v0.0.0-20240916163010-2e6b438bd901 h1:9whtN5fjYHfk4yXIuAsYP2EHxImwDWDVUOnZJ2pfL3w=
github.com/zeta-chain/tss-lib v0.0.0-20240916163010-2e6b438bd901/go.mod h1:d2iTC62s9JwKiCMPhcDDXbIZmuzAyJ4lwso0H5QyRbk=
github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U=
Expand Down
Loading