From 5366176a042233b39154ebeffd835a684d51a569 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 29 Jan 2025 14:38:49 +0100 Subject: [PATCH 1/8] use v2 for deposits --- pkg/contracts/solana/inbound.go | 56 ++++--- zetaclient/chains/solana/observer/inbound.go | 158 +++--------------- .../chains/solana/observer/inbound_test.go | 17 -- zetaclient/types/event.go | 3 + 4 files changed, 61 insertions(+), 173 deletions(-) diff --git a/pkg/contracts/solana/inbound.go b/pkg/contracts/solana/inbound.go index 1ab4543694..2d37366de7 100644 --- a/pkg/contracts/solana/inbound.go +++ b/pkg/contracts/solana/inbound.go @@ -12,12 +12,14 @@ const ( MaxSignaturesPerTicker = 100 ) +// Deposit represents a deposit instruction from a Solana transaction to ZetaChain type Deposit struct { - Sender string - Amount uint64 - Memo []byte - Slot uint64 - Asset string + Sender string + Amount uint64 + Memo []byte + Slot uint64 + Asset string + IsCrossChainCall bool } // ParseInboundAsDeposit tries to parse an instruction as a 'deposit' or 'deposit_and_call'. @@ -64,11 +66,12 @@ func tryParseAsDeposit( } return &Deposit{ - Sender: sender, - Amount: inst.Amount, - Memo: inst.Receiver[:], - Slot: slot, - Asset: "", // no asset for gas token SOL + Sender: sender, + Amount: inst.Amount, + Memo: []byte{}, + Slot: slot, + Asset: "", // no asset for gas token SOL + IsCrossChainCall: false, }, nil } @@ -99,11 +102,12 @@ func tryParseAsDepositAndCall( return nil, err } return &Deposit{ - Sender: sender, - Amount: instDepositAndCall.Amount, - Memo: append(instDepositAndCall.Receiver[:], instDepositAndCall.Memo...), - Slot: slot, - Asset: "", // no asset for gas token SOL + Sender: sender, + Amount: instDepositAndCall.Amount, + Memo: instDepositAndCall.Memo, + Slot: slot, + Asset: "", // no asset for gas token SOL + IsCrossChainCall: true, }, nil } @@ -151,11 +155,12 @@ func tryParseAsDepositSPL( } return &Deposit{ - Sender: sender, - Amount: inst.Amount, - Memo: inst.Receiver[:], - Slot: slot, - Asset: spl, + Sender: sender, + Amount: inst.Amount, + Memo: []byte{}, + Slot: slot, + Asset: spl, + IsCrossChainCall: false, }, nil } @@ -186,11 +191,12 @@ func tryParseAsDepositSPLAndCall( return nil, err } return &Deposit{ - Sender: sender, - Amount: instDepositAndCall.Amount, - Memo: append(instDepositAndCall.Receiver[:], instDepositAndCall.Memo...), - Slot: slot, - Asset: spl, + Sender: sender, + Amount: instDepositAndCall.Amount, + Memo: instDepositAndCall.Memo, + Slot: slot, + Asset: spl, + IsCrossChainCall: true, }, nil } diff --git a/zetaclient/chains/solana/observer/inbound.go b/zetaclient/chains/solana/observer/inbound.go index 4e76aed643..302df71663 100644 --- a/zetaclient/chains/solana/observer/inbound.go +++ b/zetaclient/chains/solana/observer/inbound.go @@ -14,7 +14,6 @@ import ( "github.com/zeta-chain/node/pkg/coin" solanacontracts "github.com/zeta-chain/node/pkg/contracts/solana" crosschaintypes "github.com/zeta-chain/node/x/crosschain/types" - "github.com/zeta-chain/node/zetaclient/chains/base" solanarpc "github.com/zeta-chain/node/zetaclient/chains/solana/rpc" "github.com/zeta-chain/node/zetaclient/compliance" zctx "github.com/zeta-chain/node/zetaclient/context" @@ -227,17 +226,18 @@ func FilterInboundEvents( } else if deposit != nil { seenDeposit = true events = append(events, &clienttypes.InboundEvent{ - SenderChainID: senderChainID, - Sender: deposit.Sender, - Receiver: "", // receiver will be pulled out from memo later - TxOrigin: deposit.Sender, - Amount: deposit.Amount, - Memo: deposit.Memo, - BlockNumber: deposit.Slot, // instead of using block, Solana explorer uses slot for indexing - TxHash: tx.Signatures[0].String(), - Index: 0, // hardcode to 0 for Solana, not a EVM smart contract call - CoinType: coin.CoinType_Gas, - Asset: deposit.Asset, + SenderChainID: senderChainID, + Sender: deposit.Sender, + Receiver: "", // receiver will be pulled out from memo later + TxOrigin: deposit.Sender, + Amount: deposit.Amount, + Memo: deposit.Memo, + BlockNumber: deposit.Slot, // instead of using block, Solana explorer uses slot for indexing + TxHash: tx.Signatures[0].String(), + Index: 0, // hardcode to 0 for Solana, not a EVM smart contract call + CoinType: coin.CoinType_Gas, + Asset: deposit.Asset, + IsCrossChainCall: deposit.IsCrossChainCall, }) logger.Info().Msgf("FilterInboundEvents: deposit detected in sig %s instruction %d", tx.Signatures[0], i) } @@ -253,17 +253,18 @@ func FilterInboundEvents( } else if deposit != nil { seenDepositSPL = true events = append(events, &clienttypes.InboundEvent{ - SenderChainID: senderChainID, - Sender: deposit.Sender, - Receiver: "", // receiver will be pulled out from memo later - TxOrigin: deposit.Sender, - Amount: deposit.Amount, - Memo: deposit.Memo, - BlockNumber: deposit.Slot, // instead of using block, Solana explorer uses slot for indexing - TxHash: tx.Signatures[0].String(), - Index: 0, // hardcode to 0 for Solana, not a EVM smart contract call - CoinType: coin.CoinType_ERC20, - Asset: deposit.Asset, + SenderChainID: senderChainID, + Sender: deposit.Sender, + Receiver: "", // receiver will be pulled out from memo later + TxOrigin: deposit.Sender, + Amount: deposit.Amount, + Memo: deposit.Memo, + BlockNumber: deposit.Slot, // instead of using block, Solana explorer uses slot for indexing + TxHash: tx.Signatures[0].String(), + Index: 0, // hardcode to 0 for Solana, not a EVM smart contract call + CoinType: coin.CoinType_ERC20, + Asset: deposit.Asset, + IsCrossChainCall: deposit.IsCrossChainCall, }) logger.Info().Msgf("FilterInboundEvents: SPL deposit detected in sig %s instruction %d", tx.Signatures[0], i) } @@ -275,112 +276,6 @@ func FilterInboundEvents( return events, nil } -// FilterSolanaInboundEvents filters inbound events from a tx result. -// Note: for consistency with EVM chains, this method -// - takes at one event (the first) per token (SOL or SPL) per transaction. -// - takes at most two events (one SOL + one SPL) per transaction. -// - ignores exceeding events. -func FilterSolanaInboundEvents(txResult *rpc.GetTransactionResult, - logger *base.ObserverLogger, - gatewayID solana.PublicKey, - senderChainID int64) ([]*clienttypes.InboundEvent, error) { - if logger == nil { - return nil, errors.New("logger is nil") - } - // unmarshal transaction - tx, err := txResult.Transaction.GetTransaction() - if err != nil { - return nil, errors.Wrap(err, "error unmarshaling transaction") - } - - // there should be at least one instruction and one account, otherwise skip - if len(tx.Message.Instructions) <= 0 { - return nil, nil - } - - // create event array to collect all events in the transaction - seenDeposit := false - seenDepositSPL := false - events := make([]*clienttypes.InboundEvent, 0) - - // loop through instruction list to filter the 1st valid event - for i, instruction := range tx.Message.Instructions { - // get the program ID - programPk, err := tx.Message.Program(instruction.ProgramIDIndex) - if err != nil { - logger. - Inbound.Err(err). - Msgf("no program found at index %d for sig %s", instruction.ProgramIDIndex, tx.Signatures[0]) - continue - } - - // skip instructions that are irrelevant to the gateway program invocation - if !programPk.Equals(gatewayID) { - continue - } - - // try parsing the instruction as a 'deposit' if not seen yet - if !seenDeposit { - deposit, err := solanacontracts.ParseInboundAsDeposit(tx, i, txResult.Slot) - if err != nil { - return nil, errors.Wrap(err, "error ParseInboundAsDeposit") - } else if deposit != nil { - seenDeposit = true - events = append(events, &clienttypes.InboundEvent{ - SenderChainID: senderChainID, - Sender: deposit.Sender, - Receiver: "", // receiver will be pulled out from memo later - TxOrigin: deposit.Sender, - Amount: deposit.Amount, - Memo: deposit.Memo, - BlockNumber: deposit.Slot, // instead of using block, Solana explorer uses slot for indexing - TxHash: tx.Signatures[0].String(), - Index: 0, // hardcode to 0 for Solana, not a EVM smart contract call - CoinType: coin.CoinType_Gas, - Asset: deposit.Asset, - }) - logger.Inbound.Info().Msg("FilterInboundEvents: deposit detected") - - logger.Inbound.Info(). - Msgf("FilterInboundEvents: deposit detected in sig %s instruction %d", tx.Signatures[0], i) - } - } else { - logger.Inbound.Warn(). - Msgf("FilterInboundEvents: multiple deposits detected in sig %s instruction %d", tx.Signatures[0], i) - } - - // try parsing the instruction as a 'deposit_spl_token' if not seen yet - if !seenDepositSPL { - deposit, err := solanacontracts.ParseInboundAsDepositSPL(tx, i, txResult.Slot) - if err != nil { - return nil, errors.Wrap(err, "error ParseInboundAsDepositSPL") - } else if deposit != nil { - seenDepositSPL = true - events = append(events, &clienttypes.InboundEvent{ - SenderChainID: senderChainID, - Sender: deposit.Sender, - Receiver: "", // receiver will be pulled out from memo later - TxOrigin: deposit.Sender, - Amount: deposit.Amount, - Memo: deposit.Memo, - BlockNumber: deposit.Slot, // instead of using block, Solana explorer uses slot for indexing - TxHash: tx.Signatures[0].String(), - Index: 0, // hardcode to 0 for Solana, not a EVM smart contract call - CoinType: coin.CoinType_ERC20, - Asset: deposit.Asset, - }) - logger.Inbound.Info(). - Msgf("FilterInboundEvents: SPL deposit detected in sig %s instruction %d", tx.Signatures[0], i) - } - } else { - logger.Inbound.Warn(). - Msgf("FilterInboundEvents: multiple SPL deposits detected in sig %s instruction %d", tx.Signatures[0], i) - } - } - - return events, nil -} - // BuildInboundVoteMsgFromEvent builds a MsgVoteInbound from an inbound event func (ob *Observer) BuildInboundVoteMsgFromEvent(event *clienttypes.InboundEvent) *crosschaintypes.MsgVoteInbound { // prepare logger fields @@ -417,9 +312,10 @@ func (ob *Observer) BuildInboundVoteMsgFromEvent(event *clienttypes.InboundEvent event.CoinType, event.Asset, 0, // not a smart contract call - crosschaintypes.ProtocolContractVersion_V1, - false, // not relevant for v1 + crosschaintypes.ProtocolContractVersion_V2, + false, // not used crosschaintypes.InboundStatus_SUCCESS, + crosschaintypes.WithCrossChainCall(event.IsCrossChainCall), ) } diff --git a/zetaclient/chains/solana/observer/inbound_test.go b/zetaclient/chains/solana/observer/inbound_test.go index c71e7cd87b..c162aa461c 100644 --- a/zetaclient/chains/solana/observer/inbound_test.go +++ b/zetaclient/chains/solana/observer/inbound_test.go @@ -98,23 +98,6 @@ func Test_FilterInboundEvents(t *testing.T) { }) } -func Test_FilterSolanaInboundEvents(t *testing.T) { - // load archived inbound deposit tx result - // https://explorer.solana.com/tx/MS3MPLN7hkbyCZFwKqXcg8fmEvQMD74fN6Ps2LSWXJoRxPW5ehaxBorK9q1JFVbqnAvu9jXm6ertj7kT7HpYw1j?cluster=devnet - txHash := "24GzWsxYCFcwwJ2rzAsWwWC85aYKot6Rz3jWnBP1GvoAg5A9f1WinYyvyKseYM52q6i3EkotZdJuQomGGq5oxRYr" - chain := chains.SolanaDevnet - txResult := testutils.LoadSolanaInboundTxResult(t, TestDataDir, chain.ChainId, txHash, false) - - // parse gateway ID - gatewayID, _, err := contracts.ParseGatewayWithPDA(testutils.OldSolanaGatewayAddressDevnet) - require.NoError(t, err) - - t.Run("should return early if logger is empty", func(t *testing.T) { - _, err = observer.FilterSolanaInboundEvents(txResult, nil, gatewayID, chain.ChainId) - require.ErrorContains(t, err, "logger is nil") - }) -} - func Test_BuildInboundVoteMsgFromEvent(t *testing.T) { // create test observer chain := chains.SolanaDevnet diff --git a/zetaclient/types/event.go b/zetaclient/types/event.go index fefdc39681..15df13ce52 100644 --- a/zetaclient/types/event.go +++ b/zetaclient/types/event.go @@ -67,6 +67,9 @@ type InboundEvent struct { // Asset is the asset of the inbound Asset string + + // IsCrossChainCall is true if the inbound is a cross-chain call + IsCrossChainCall bool } // DecodeMemo decodes the receiver from the memo bytes From 01f0fd9eaa3a7095f8c34427f961eedb67cdfc92 Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 29 Jan 2025 15:03:24 +0100 Subject: [PATCH 2/8] add receiver field --- pkg/contracts/solana/inbound.go | 36 ++++++++++++++++++++ pkg/contracts/solana/inbound_test.go | 12 +++---- zetaclient/chains/solana/observer/inbound.go | 17 ++------- 3 files changed, 44 insertions(+), 21 deletions(-) diff --git a/pkg/contracts/solana/inbound.go b/pkg/contracts/solana/inbound.go index 2d37366de7..999674f87b 100644 --- a/pkg/contracts/solana/inbound.go +++ b/pkg/contracts/solana/inbound.go @@ -3,6 +3,7 @@ package solana import ( "fmt" + ethcommon "github.com/ethereum/go-ethereum/common" "github.com/gagliardetto/solana-go" "github.com/near/borsh-go" ) @@ -15,6 +16,7 @@ const ( // Deposit represents a deposit instruction from a Solana transaction to ZetaChain type Deposit struct { Sender string + Receiver string Amount uint64 Memo []byte Slot uint64 @@ -65,8 +67,14 @@ func tryParseAsDeposit( return nil, err } + receiver, err := parseReceiver(inst.Receiver) + if err != nil { + return nil, err + } + return &Deposit{ Sender: sender, + Receiver: receiver, Amount: inst.Amount, Memo: []byte{}, Slot: slot, @@ -96,6 +104,11 @@ func tryParseAsDepositAndCall( return nil, nil } + receiver, err := parseReceiver(instDepositAndCall.Receiver) + if err != nil { + return nil, err + } + // get the sender address (skip if unable to parse signer address) sender, err := getSignerDeposit(tx, &instruction) if err != nil { @@ -103,6 +116,7 @@ func tryParseAsDepositAndCall( } return &Deposit{ Sender: sender, + Receiver: receiver, Amount: instDepositAndCall.Amount, Memo: instDepositAndCall.Memo, Slot: slot, @@ -154,8 +168,14 @@ func tryParseAsDepositSPL( return nil, err } + receiver, err := parseReceiver(inst.Receiver) + if err != nil { + return nil, err + } + return &Deposit{ Sender: sender, + Receiver: receiver, Amount: inst.Amount, Memo: []byte{}, Slot: slot, @@ -185,6 +205,11 @@ func tryParseAsDepositSPLAndCall( return nil, nil } + receiver, err := parseReceiver(instDepositAndCall.Receiver) + if err != nil { + return nil, err + } + // get the sender and spl addresses sender, spl, err := getSignerAndSPLFromDepositSPLAccounts(tx, &instruction) if err != nil { @@ -192,6 +217,7 @@ func tryParseAsDepositSPLAndCall( } return &Deposit{ Sender: sender, + Receiver: receiver, Amount: instDepositAndCall.Amount, Memo: instDepositAndCall.Memo, Slot: slot, @@ -250,3 +276,13 @@ func getSignerAndSPLFromDepositSPLAccounts( return signer, spl, nil } + +// parseReceiver parses the receiver bytes into a Ethereum address string +func parseReceiver(receiver [20]byte) (string, error) { + addr := ethcommon.BytesToAddress(receiver[:ethcommon.AddressLength]) + if addr == (ethcommon.Address{}) { + return "", fmt.Errorf("invalid receiver address: %v", receiver) + } + + return addr.Hex(), nil +} diff --git a/pkg/contracts/solana/inbound_test.go b/pkg/contracts/solana/inbound_test.go index bce251d977..fdaf4e8fca 100644 --- a/pkg/contracts/solana/inbound_test.go +++ b/pkg/contracts/solana/inbound_test.go @@ -55,14 +55,14 @@ func Test_ParseInboundAsDeposit(t *testing.T) { // solana e2e deployer account sender := "37yGiHAnLvWZUNVwu9esp74YQFqxU1qHCbABkDvRddUQ" // solana e2e user evm account - expectedMemo, err := hex.DecodeString("103fd9224f00ce3013e95629e52dfc31d805d68d") require.NoError(t, err) expectedDeposit := &Deposit{ - Sender: sender, - Amount: 12000000, - Memo: expectedMemo, - Slot: txResult.Slot, - Asset: "", + Sender: sender, + Amount: 12000000, + Memo: []byte{}, + Slot: txResult.Slot, + Asset: "", + IsCrossChainCall: false, } t.Run("should parse inbound event deposit SOL", func(t *testing.T) { diff --git a/zetaclient/chains/solana/observer/inbound.go b/zetaclient/chains/solana/observer/inbound.go index 302df71663..ef62dbf365 100644 --- a/zetaclient/chains/solana/observer/inbound.go +++ b/zetaclient/chains/solana/observer/inbound.go @@ -228,7 +228,7 @@ func FilterInboundEvents( events = append(events, &clienttypes.InboundEvent{ SenderChainID: senderChainID, Sender: deposit.Sender, - Receiver: "", // receiver will be pulled out from memo later + Receiver: deposit.Receiver, TxOrigin: deposit.Sender, Amount: deposit.Amount, Memo: deposit.Memo, @@ -255,7 +255,7 @@ func FilterInboundEvents( events = append(events, &clienttypes.InboundEvent{ SenderChainID: senderChainID, Sender: deposit.Sender, - Receiver: "", // receiver will be pulled out from memo later + Receiver: deposit.Receiver, TxOrigin: deposit.Sender, Amount: deposit.Amount, Memo: deposit.Memo, @@ -278,19 +278,6 @@ func FilterInboundEvents( // BuildInboundVoteMsgFromEvent builds a MsgVoteInbound from an inbound event func (ob *Observer) BuildInboundVoteMsgFromEvent(event *clienttypes.InboundEvent) *crosschaintypes.MsgVoteInbound { - // prepare logger fields - lf := map[string]any{ - logs.FieldMethod: "BuildInboundVoteMsgFromEvent", - logs.FieldTx: event.TxHash, - } - - // decode event memo bytes to get the receiver - err := event.DecodeMemo() - if err != nil { - ob.Logger().Inbound.Info().Fields(lf).Msgf("invalid memo bytes: %s", hex.EncodeToString(event.Memo)) - return nil - } - // check if the event is processable if !ob.IsEventProcessable(*event) { return nil From d9fd09006126be0a702d3a6fa019eb73c716552f Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 29 Jan 2025 15:11:15 +0100 Subject: [PATCH 3/8] add onCall to example --- testutil/contracts/Dapp.bin | 2 +- testutil/contracts/Dapp.go | 7 +++-- testutil/contracts/Dapp.json | 2 +- testutil/contracts/DappReverter.bin | 2 +- testutil/contracts/DappReverter.go | 7 +++-- testutil/contracts/DappReverter.json | 2 +- testutil/contracts/Depositor.bin | 2 +- testutil/contracts/Depositor.go | 7 +++-- testutil/contracts/Depositor.json | 2 +- testutil/contracts/Example.abi | 45 ++++++++++++++++++++++++++ testutil/contracts/Example.bin | 2 +- testutil/contracts/Example.go | 25 +++++++++++++-- testutil/contracts/Example.json | 47 +++++++++++++++++++++++++++- testutil/contracts/Example.sol | 9 ++++++ testutil/contracts/Reverter.bin | 2 +- testutil/contracts/Reverter.go | 7 +++-- testutil/contracts/Reverter.json | 2 +- testutil/contracts/Withdrawer.bin | 2 +- testutil/contracts/Withdrawer.go | 7 +++-- testutil/contracts/Withdrawer.json | 2 +- 20 files changed, 154 insertions(+), 29 deletions(-) diff --git a/testutil/contracts/Dapp.bin b/testutil/contracts/Dapp.bin index 52bfd6c0ac..0f1b9da0e4 100644 --- a/testutil/contracts/Dapp.bin +++ b/testutil/contracts/Dapp.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50604051806020016040528060008152506000908161002f91906102fe565b5060006001819055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600381905550600060048190555060405180602001604052806000815250600590816100a891906102fe565b506103d0565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061012f57607f821691505b602082108103610142576101416100e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026101aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261016d565b6101b4868361016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006101fb6101f66101f1846101cc565b6101d6565b6101cc565b9050919050565b6000819050919050565b610215836101e0565b61022961022182610202565b84845461017a565b825550505050565b600090565b61023e610231565b61024981848461020c565b505050565b5b8181101561026d57610262600082610236565b60018101905061024f565b5050565b601f8211156102b25761028381610148565b61028c8461015d565b8101602085101561029b578190505b6102af6102a78561015d565b83018261024e565b50505b505050565b600082821c905092915050565b60006102d5600019846008026102b7565b1980831691505092915050565b60006102ee83836102c4565b9150826002028217905092915050565b610307826100ae565b67ffffffffffffffff8111156103205761031f6100b9565b5b61032a8254610117565b610335828285610271565b600060209050601f8311600181146103685760008415610356578287015190505b61036085826102e2565b8655506103c8565b601f19841661037686610148565b60005b8281101561039e57848901518255600182019150602085019450602081019050610379565b868310156103bb57848901516103b7601f8916826102c4565b8355505b6001600288020188555050505b505050505050565b610c2c806103df6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b07506111161005b578063b075061114610101578063ca3254691461011f578063e21f37ce1461013d578063ed6b866b1461015b57610088565b8063050337a21461008d5780631544298e146100ab5780633749c51a146100c95780633ff0693c146100e5575b600080fd5b610095610179565b6040516100a29190610480565b60405180910390f35b6100b361017f565b6040516100c09190610480565b60405180910390f35b6100e360048036038101906100de91906104c9565b610185565b005b6100ff60048036038101906100fa9190610531565b610231565b005b61010961031f565b6040516101169190610480565b60405180910390f35b610127610325565b60405161013491906105bb565b60405180910390f35b61014561034b565b6040516101529190610666565b60405180910390f35b6101636103d9565b6040516101709190610666565b60405180910390f35b60045481565b60015481565b8080600001906101959190610697565b600091826101a4929190610940565b5080602001356001819055508060400160208101906101c39190610a3c565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806060013560048190555080806080019061021e9190610697565b6005918261022d929190610940565b5050565b8060000160208101906102449190610a3c565b6040516020016102549190610ab1565b604051602081830303815290604052600090816102719190610acc565b50806020013560018190555080806040019061028d9190610697565b60405161029b929190610bdd565b604051809103902060001c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001356003819055508060800135600481905550808060a0019061030c9190610697565b6005918261031b929190610940565b5050565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005805461035890610763565b80601f016020809104026020016040519081016040528092919081815260200182805461038490610763565b80156103d15780601f106103a6576101008083540402835291602001916103d1565b820191906000526020600020905b8154815290600101906020018083116103b457829003601f168201915b505050505081565b600080546103e690610763565b80601f016020809104026020016040519081016040528092919081815260200182805461041290610763565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b505050505081565b6000819050919050565b61047a81610467565b82525050565b60006020820190506104956000830184610471565b92915050565b600080fd5b600080fd5b600080fd5b600060a082840312156104c0576104bf6104a5565b5b81905092915050565b6000602082840312156104df576104de61049b565b5b600082013567ffffffffffffffff8111156104fd576104fc6104a0565b5b610509848285016104aa565b91505092915050565b600060c08284031215610528576105276104a5565b5b81905092915050565b6000602082840312156105475761054661049b565b5b600082013567ffffffffffffffff811115610565576105646104a0565b5b61057184828501610512565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105a58261057a565b9050919050565b6105b58161059a565b82525050565b60006020820190506105d060008301846105ac565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156106105780820151818401526020810190506105f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000610638826105d6565b61064281856105e1565b93506106528185602086016105f2565b61065b8161061c565b840191505092915050565b60006020820190508181036000830152610680818461062d565b905092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126106b4576106b3610688565b5b80840192508235915067ffffffffffffffff8211156106d6576106d561068d565b5b6020830192506001820236038313156106f2576106f1610692565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061077b57607f821691505b60208210810361078e5761078d610734565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026107f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107b9565b61080086836107b9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061083d61083861083384610467565b610818565b610467565b9050919050565b6000819050919050565b61085783610822565b61086b61086382610844565b8484546107c6565b825550505050565b600090565b610880610873565b61088b81848461084e565b505050565b5b818110156108af576108a4600082610878565b600181019050610891565b5050565b601f8211156108f4576108c581610794565b6108ce846107a9565b810160208510156108dd578190505b6108f16108e9856107a9565b830182610890565b50505b505050565b600082821c905092915050565b6000610917600019846008026108f9565b1980831691505092915050565b60006109308383610906565b9150826002028217905092915050565b61094a83836106fa565b67ffffffffffffffff81111561096357610962610705565b5b61096d8254610763565b6109788282856108b3565b6000601f8311600181146109a75760008415610995578287013590505b61099f8582610924565b865550610a07565b601f1984166109b586610794565b60005b828110156109dd578489013582556001820191506020850194506020810190506109b8565b868310156109fa57848901356109f6601f891682610906565b8355505b6001600288020188555050505b50505050505050565b610a198161059a565b8114610a2457600080fd5b50565b600081359050610a3681610a10565b92915050565b600060208284031215610a5257610a5161049b565b5b6000610a6084828501610a27565b91505092915050565b60008160601b9050919050565b6000610a8182610a69565b9050919050565b6000610a9382610a76565b9050919050565b610aab610aa68261059a565b610a88565b82525050565b6000610abd8284610a9a565b60148201915081905092915050565b610ad5826105d6565b67ffffffffffffffff811115610aee57610aed610705565b5b610af88254610763565b610b038282856108b3565b600060209050601f831160018114610b365760008415610b24578287015190505b610b2e8582610924565b865550610b96565b601f198416610b4486610794565b60005b82811015610b6c57848901518255600182019150602085019450602081019050610b47565b86831015610b895784890151610b85601f891682610906565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b82818337600083830152505050565b6000610bc48385610b9e565b9350610bd1838584610ba9565b82840190509392505050565b6000610bea828486610bb8565b9150819050939250505056fea26469706673582212207c5ed9b805f7e22d563799330b1c6e310dd5b1625dc35c9598846e17a8a5686664736f6c63430008190033 +608060405234801561001057600080fd5b50604051806020016040528060008152506000908161002f91906102fe565b5060006001819055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600381905550600060048190555060405180602001604052806000815250600590816100a891906102fe565b506103d0565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061012f57607f821691505b602082108103610142576101416100e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026101aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261016d565b6101b4868361016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006101fb6101f66101f1846101cc565b6101d6565b6101cc565b9050919050565b6000819050919050565b610215836101e0565b61022961022182610202565b84845461017a565b825550505050565b600090565b61023e610231565b61024981848461020c565b505050565b5b8181101561026d57610262600082610236565b60018101905061024f565b5050565b601f8211156102b25761028381610148565b61028c8461015d565b8101602085101561029b578190505b6102af6102a78561015d565b83018261024e565b50505b505050565b600082821c905092915050565b60006102d5600019846008026102b7565b1980831691505092915050565b60006102ee83836102c4565b9150826002028217905092915050565b610307826100ae565b67ffffffffffffffff8111156103205761031f6100b9565b5b61032a8254610117565b610335828285610271565b600060209050601f8311600181146103685760008415610356578287015190505b61036085826102e2565b8655506103c8565b601f19841661037686610148565b60005b8281101561039e57848901518255600182019150602085019450602081019050610379565b868310156103bb57848901516103b7601f8916826102c4565b8355505b6001600288020188555050505b505050505050565b610c2c806103df6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b07506111161005b578063b075061114610101578063ca3254691461011f578063e21f37ce1461013d578063ed6b866b1461015b57610088565b8063050337a21461008d5780631544298e146100ab5780633749c51a146100c95780633ff0693c146100e5575b600080fd5b610095610179565b6040516100a29190610480565b60405180910390f35b6100b361017f565b6040516100c09190610480565b60405180910390f35b6100e360048036038101906100de91906104c9565b610185565b005b6100ff60048036038101906100fa9190610531565b610231565b005b61010961031f565b6040516101169190610480565b60405180910390f35b610127610325565b60405161013491906105bb565b60405180910390f35b61014561034b565b6040516101529190610666565b60405180910390f35b6101636103d9565b6040516101709190610666565b60405180910390f35b60045481565b60015481565b8080600001906101959190610697565b600091826101a4929190610940565b5080602001356001819055508060400160208101906101c39190610a3c565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806060013560048190555080806080019061021e9190610697565b6005918261022d929190610940565b5050565b8060000160208101906102449190610a3c565b6040516020016102549190610ab1565b604051602081830303815290604052600090816102719190610acc565b50806020013560018190555080806040019061028d9190610697565b60405161029b929190610bdd565b604051809103902060001c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001356003819055508060800135600481905550808060a0019061030c9190610697565b6005918261031b929190610940565b5050565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005805461035890610763565b80601f016020809104026020016040519081016040528092919081815260200182805461038490610763565b80156103d15780601f106103a6576101008083540402835291602001916103d1565b820191906000526020600020905b8154815290600101906020018083116103b457829003601f168201915b505050505081565b600080546103e690610763565b80601f016020809104026020016040519081016040528092919081815260200182805461041290610763565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b505050505081565b6000819050919050565b61047a81610467565b82525050565b60006020820190506104956000830184610471565b92915050565b600080fd5b600080fd5b600080fd5b600060a082840312156104c0576104bf6104a5565b5b81905092915050565b6000602082840312156104df576104de61049b565b5b600082013567ffffffffffffffff8111156104fd576104fc6104a0565b5b610509848285016104aa565b91505092915050565b600060c08284031215610528576105276104a5565b5b81905092915050565b6000602082840312156105475761054661049b565b5b600082013567ffffffffffffffff811115610565576105646104a0565b5b61057184828501610512565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105a58261057a565b9050919050565b6105b58161059a565b82525050565b60006020820190506105d060008301846105ac565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156106105780820151818401526020810190506105f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000610638826105d6565b61064281856105e1565b93506106528185602086016105f2565b61065b8161061c565b840191505092915050565b60006020820190508181036000830152610680818461062d565b905092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126106b4576106b3610688565b5b80840192508235915067ffffffffffffffff8211156106d6576106d561068d565b5b6020830192506001820236038313156106f2576106f1610692565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061077b57607f821691505b60208210810361078e5761078d610734565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026107f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107b9565b61080086836107b9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061083d61083861083384610467565b610818565b610467565b9050919050565b6000819050919050565b61085783610822565b61086b61086382610844565b8484546107c6565b825550505050565b600090565b610880610873565b61088b81848461084e565b505050565b5b818110156108af576108a4600082610878565b600181019050610891565b5050565b601f8211156108f4576108c581610794565b6108ce846107a9565b810160208510156108dd578190505b6108f16108e9856107a9565b830182610890565b50505b505050565b600082821c905092915050565b6000610917600019846008026108f9565b1980831691505092915050565b60006109308383610906565b9150826002028217905092915050565b61094a83836106fa565b67ffffffffffffffff81111561096357610962610705565b5b61096d8254610763565b6109788282856108b3565b6000601f8311600181146109a75760008415610995578287013590505b61099f8582610924565b865550610a07565b601f1984166109b586610794565b60005b828110156109dd578489013582556001820191506020850194506020810190506109b8565b868310156109fa57848901356109f6601f891682610906565b8355505b6001600288020188555050505b50505050505050565b610a198161059a565b8114610a2457600080fd5b50565b600081359050610a3681610a10565b92915050565b600060208284031215610a5257610a5161049b565b5b6000610a6084828501610a27565b91505092915050565b60008160601b9050919050565b6000610a8182610a69565b9050919050565b6000610a9382610a76565b9050919050565b610aab610aa68261059a565b610a88565b82525050565b6000610abd8284610a9a565b60148201915081905092915050565b610ad5826105d6565b67ffffffffffffffff811115610aee57610aed610705565b5b610af88254610763565b610b038282856108b3565b600060209050601f831160018114610b365760008415610b24578287015190505b610b2e8582610924565b865550610b96565b601f198416610b4486610794565b60005b82811015610b6c57848901518255600182019150602085019450602081019050610b47565b86831015610b895784890151610b85601f891682610906565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b82818337600083830152505050565b6000610bc48385610b9e565b9350610bd1838584610ba9565b82840190509392505050565b6000610bea828486610bb8565b9150819050939250505056fea2646970667358221220b5c3d474ece2d04357014c6153b994833ac21400c3f28ff64e448685f91008ff64736f6c634300081a0033 diff --git a/testutil/contracts/Dapp.go b/testutil/contracts/Dapp.go index 075e1d24dc..cfd07f12e4 100644 --- a/testutil/contracts/Dapp.go +++ b/testutil/contracts/Dapp.go @@ -26,6 +26,7 @@ var ( _ = common.Big1 _ = types.BloomLookup _ = event.NewSubscription + _ = abi.ConvertType ) // ZetaInterfacesZetaMessage is an auto generated low-level Go binding around an user-defined struct. @@ -50,7 +51,7 @@ type ZetaInterfacesZetaRevert struct { // DappMetaData contains all meta data concerning the Dapp contract. var DappMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"destinationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"destinationChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"message\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sourceChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaTxSenderAddress\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50604051806020016040528060008152506000908161002f91906102fe565b5060006001819055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600381905550600060048190555060405180602001604052806000815250600590816100a891906102fe565b506103d0565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061012f57607f821691505b602082108103610142576101416100e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026101aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261016d565b6101b4868361016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006101fb6101f66101f1846101cc565b6101d6565b6101cc565b9050919050565b6000819050919050565b610215836101e0565b61022961022182610202565b84845461017a565b825550505050565b600090565b61023e610231565b61024981848461020c565b505050565b5b8181101561026d57610262600082610236565b60018101905061024f565b5050565b601f8211156102b25761028381610148565b61028c8461015d565b8101602085101561029b578190505b6102af6102a78561015d565b83018261024e565b50505b505050565b600082821c905092915050565b60006102d5600019846008026102b7565b1980831691505092915050565b60006102ee83836102c4565b9150826002028217905092915050565b610307826100ae565b67ffffffffffffffff8111156103205761031f6100b9565b5b61032a8254610117565b610335828285610271565b600060209050601f8311600181146103685760008415610356578287015190505b61036085826102e2565b8655506103c8565b601f19841661037686610148565b60005b8281101561039e57848901518255600182019150602085019450602081019050610379565b868310156103bb57848901516103b7601f8916826102c4565b8355505b6001600288020188555050505b505050505050565b610c2c806103df6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b07506111161005b578063b075061114610101578063ca3254691461011f578063e21f37ce1461013d578063ed6b866b1461015b57610088565b8063050337a21461008d5780631544298e146100ab5780633749c51a146100c95780633ff0693c146100e5575b600080fd5b610095610179565b6040516100a29190610480565b60405180910390f35b6100b361017f565b6040516100c09190610480565b60405180910390f35b6100e360048036038101906100de91906104c9565b610185565b005b6100ff60048036038101906100fa9190610531565b610231565b005b61010961031f565b6040516101169190610480565b60405180910390f35b610127610325565b60405161013491906105bb565b60405180910390f35b61014561034b565b6040516101529190610666565b60405180910390f35b6101636103d9565b6040516101709190610666565b60405180910390f35b60045481565b60015481565b8080600001906101959190610697565b600091826101a4929190610940565b5080602001356001819055508060400160208101906101c39190610a3c565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806060013560048190555080806080019061021e9190610697565b6005918261022d929190610940565b5050565b8060000160208101906102449190610a3c565b6040516020016102549190610ab1565b604051602081830303815290604052600090816102719190610acc565b50806020013560018190555080806040019061028d9190610697565b60405161029b929190610bdd565b604051809103902060001c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001356003819055508060800135600481905550808060a0019061030c9190610697565b6005918261031b929190610940565b5050565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005805461035890610763565b80601f016020809104026020016040519081016040528092919081815260200182805461038490610763565b80156103d15780601f106103a6576101008083540402835291602001916103d1565b820191906000526020600020905b8154815290600101906020018083116103b457829003601f168201915b505050505081565b600080546103e690610763565b80601f016020809104026020016040519081016040528092919081815260200182805461041290610763565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b505050505081565b6000819050919050565b61047a81610467565b82525050565b60006020820190506104956000830184610471565b92915050565b600080fd5b600080fd5b600080fd5b600060a082840312156104c0576104bf6104a5565b5b81905092915050565b6000602082840312156104df576104de61049b565b5b600082013567ffffffffffffffff8111156104fd576104fc6104a0565b5b610509848285016104aa565b91505092915050565b600060c08284031215610528576105276104a5565b5b81905092915050565b6000602082840312156105475761054661049b565b5b600082013567ffffffffffffffff811115610565576105646104a0565b5b61057184828501610512565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105a58261057a565b9050919050565b6105b58161059a565b82525050565b60006020820190506105d060008301846105ac565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156106105780820151818401526020810190506105f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000610638826105d6565b61064281856105e1565b93506106528185602086016105f2565b61065b8161061c565b840191505092915050565b60006020820190508181036000830152610680818461062d565b905092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126106b4576106b3610688565b5b80840192508235915067ffffffffffffffff8211156106d6576106d561068d565b5b6020830192506001820236038313156106f2576106f1610692565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061077b57607f821691505b60208210810361078e5761078d610734565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026107f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107b9565b61080086836107b9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061083d61083861083384610467565b610818565b610467565b9050919050565b6000819050919050565b61085783610822565b61086b61086382610844565b8484546107c6565b825550505050565b600090565b610880610873565b61088b81848461084e565b505050565b5b818110156108af576108a4600082610878565b600181019050610891565b5050565b601f8211156108f4576108c581610794565b6108ce846107a9565b810160208510156108dd578190505b6108f16108e9856107a9565b830182610890565b50505b505050565b600082821c905092915050565b6000610917600019846008026108f9565b1980831691505092915050565b60006109308383610906565b9150826002028217905092915050565b61094a83836106fa565b67ffffffffffffffff81111561096357610962610705565b5b61096d8254610763565b6109788282856108b3565b6000601f8311600181146109a75760008415610995578287013590505b61099f8582610924565b865550610a07565b601f1984166109b586610794565b60005b828110156109dd578489013582556001820191506020850194506020810190506109b8565b868310156109fa57848901356109f6601f891682610906565b8355505b6001600288020188555050505b50505050505050565b610a198161059a565b8114610a2457600080fd5b50565b600081359050610a3681610a10565b92915050565b600060208284031215610a5257610a5161049b565b5b6000610a6084828501610a27565b91505092915050565b60008160601b9050919050565b6000610a8182610a69565b9050919050565b6000610a9382610a76565b9050919050565b610aab610aa68261059a565b610a88565b82525050565b6000610abd8284610a9a565b60148201915081905092915050565b610ad5826105d6565b67ffffffffffffffff811115610aee57610aed610705565b5b610af88254610763565b610b038282856108b3565b600060209050601f831160018114610b365760008415610b24578287015190505b610b2e8582610924565b865550610b96565b601f198416610b4486610794565b60005b82811015610b6c57848901518255600182019150602085019450602081019050610b47565b86831015610b895784890151610b85601f891682610906565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b82818337600083830152505050565b6000610bc48385610b9e565b9350610bd1838584610ba9565b82840190509392505050565b6000610bea828486610bb8565b9150819050939250505056fea26469706673582212207c5ed9b805f7e22d563799330b1c6e310dd5b1625dc35c9598846e17a8a5686664736f6c63430008190033", + Bin: "0x608060405234801561001057600080fd5b50604051806020016040528060008152506000908161002f91906102fe565b5060006001819055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600381905550600060048190555060405180602001604052806000815250600590816100a891906102fe565b506103d0565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061012f57607f821691505b602082108103610142576101416100e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026101aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261016d565b6101b4868361016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006101fb6101f66101f1846101cc565b6101d6565b6101cc565b9050919050565b6000819050919050565b610215836101e0565b61022961022182610202565b84845461017a565b825550505050565b600090565b61023e610231565b61024981848461020c565b505050565b5b8181101561026d57610262600082610236565b60018101905061024f565b5050565b601f8211156102b25761028381610148565b61028c8461015d565b8101602085101561029b578190505b6102af6102a78561015d565b83018261024e565b50505b505050565b600082821c905092915050565b60006102d5600019846008026102b7565b1980831691505092915050565b60006102ee83836102c4565b9150826002028217905092915050565b610307826100ae565b67ffffffffffffffff8111156103205761031f6100b9565b5b61032a8254610117565b610335828285610271565b600060209050601f8311600181146103685760008415610356578287015190505b61036085826102e2565b8655506103c8565b601f19841661037686610148565b60005b8281101561039e57848901518255600182019150602085019450602081019050610379565b868310156103bb57848901516103b7601f8916826102c4565b8355505b6001600288020188555050505b505050505050565b610c2c806103df6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b07506111161005b578063b075061114610101578063ca3254691461011f578063e21f37ce1461013d578063ed6b866b1461015b57610088565b8063050337a21461008d5780631544298e146100ab5780633749c51a146100c95780633ff0693c146100e5575b600080fd5b610095610179565b6040516100a29190610480565b60405180910390f35b6100b361017f565b6040516100c09190610480565b60405180910390f35b6100e360048036038101906100de91906104c9565b610185565b005b6100ff60048036038101906100fa9190610531565b610231565b005b61010961031f565b6040516101169190610480565b60405180910390f35b610127610325565b60405161013491906105bb565b60405180910390f35b61014561034b565b6040516101529190610666565b60405180910390f35b6101636103d9565b6040516101709190610666565b60405180910390f35b60045481565b60015481565b8080600001906101959190610697565b600091826101a4929190610940565b5080602001356001819055508060400160208101906101c39190610a3c565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806060013560048190555080806080019061021e9190610697565b6005918261022d929190610940565b5050565b8060000160208101906102449190610a3c565b6040516020016102549190610ab1565b604051602081830303815290604052600090816102719190610acc565b50806020013560018190555080806040019061028d9190610697565b60405161029b929190610bdd565b604051809103902060001c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001356003819055508060800135600481905550808060a0019061030c9190610697565b6005918261031b929190610940565b5050565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005805461035890610763565b80601f016020809104026020016040519081016040528092919081815260200182805461038490610763565b80156103d15780601f106103a6576101008083540402835291602001916103d1565b820191906000526020600020905b8154815290600101906020018083116103b457829003601f168201915b505050505081565b600080546103e690610763565b80601f016020809104026020016040519081016040528092919081815260200182805461041290610763565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b505050505081565b6000819050919050565b61047a81610467565b82525050565b60006020820190506104956000830184610471565b92915050565b600080fd5b600080fd5b600080fd5b600060a082840312156104c0576104bf6104a5565b5b81905092915050565b6000602082840312156104df576104de61049b565b5b600082013567ffffffffffffffff8111156104fd576104fc6104a0565b5b610509848285016104aa565b91505092915050565b600060c08284031215610528576105276104a5565b5b81905092915050565b6000602082840312156105475761054661049b565b5b600082013567ffffffffffffffff811115610565576105646104a0565b5b61057184828501610512565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105a58261057a565b9050919050565b6105b58161059a565b82525050565b60006020820190506105d060008301846105ac565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156106105780820151818401526020810190506105f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000610638826105d6565b61064281856105e1565b93506106528185602086016105f2565b61065b8161061c565b840191505092915050565b60006020820190508181036000830152610680818461062d565b905092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126106b4576106b3610688565b5b80840192508235915067ffffffffffffffff8211156106d6576106d561068d565b5b6020830192506001820236038313156106f2576106f1610692565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061077b57607f821691505b60208210810361078e5761078d610734565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026107f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107b9565b61080086836107b9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061083d61083861083384610467565b610818565b610467565b9050919050565b6000819050919050565b61085783610822565b61086b61086382610844565b8484546107c6565b825550505050565b600090565b610880610873565b61088b81848461084e565b505050565b5b818110156108af576108a4600082610878565b600181019050610891565b5050565b601f8211156108f4576108c581610794565b6108ce846107a9565b810160208510156108dd578190505b6108f16108e9856107a9565b830182610890565b50505b505050565b600082821c905092915050565b6000610917600019846008026108f9565b1980831691505092915050565b60006109308383610906565b9150826002028217905092915050565b61094a83836106fa565b67ffffffffffffffff81111561096357610962610705565b5b61096d8254610763565b6109788282856108b3565b6000601f8311600181146109a75760008415610995578287013590505b61099f8582610924565b865550610a07565b601f1984166109b586610794565b60005b828110156109dd578489013582556001820191506020850194506020810190506109b8565b868310156109fa57848901356109f6601f891682610906565b8355505b6001600288020188555050505b50505050505050565b610a198161059a565b8114610a2457600080fd5b50565b600081359050610a3681610a10565b92915050565b600060208284031215610a5257610a5161049b565b5b6000610a6084828501610a27565b91505092915050565b60008160601b9050919050565b6000610a8182610a69565b9050919050565b6000610a9382610a76565b9050919050565b610aab610aa68261059a565b610a88565b82525050565b6000610abd8284610a9a565b60148201915081905092915050565b610ad5826105d6565b67ffffffffffffffff811115610aee57610aed610705565b5b610af88254610763565b610b038282856108b3565b600060209050601f831160018114610b365760008415610b24578287015190505b610b2e8582610924565b865550610b96565b601f198416610b4486610794565b60005b82811015610b6c57848901518255600182019150602085019450602081019050610b47565b86831015610b895784890151610b85601f891682610906565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b82818337600083830152505050565b6000610bc48385610b9e565b9350610bd1838584610ba9565b82840190509392505050565b6000610bea828486610bb8565b9150819050939250505056fea2646970667358221220b5c3d474ece2d04357014c6153b994833ac21400c3f28ff64e448685f91008ff64736f6c634300081a0033", } // DappABI is the input ABI used to generate the binding from. @@ -175,11 +176,11 @@ func NewDappFilterer(address common.Address, filterer bind.ContractFilterer) (*D // bindDapp binds a generic wrapper to an already deployed contract. func bindDapp(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(DappABI)) + parsed, err := DappMetaData.GetAbi() if err != nil { return nil, err } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } // Call invokes the (constant) contract method with params as input values and diff --git a/testutil/contracts/Dapp.json b/testutil/contracts/Dapp.json index b2bbb3a299..450c5e3850 100644 --- a/testutil/contracts/Dapp.json +++ b/testutil/contracts/Dapp.json @@ -169,5 +169,5 @@ "type": "function" } ], - "bin": "608060405234801561001057600080fd5b50604051806020016040528060008152506000908161002f91906102fe565b5060006001819055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600381905550600060048190555060405180602001604052806000815250600590816100a891906102fe565b506103d0565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061012f57607f821691505b602082108103610142576101416100e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026101aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261016d565b6101b4868361016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006101fb6101f66101f1846101cc565b6101d6565b6101cc565b9050919050565b6000819050919050565b610215836101e0565b61022961022182610202565b84845461017a565b825550505050565b600090565b61023e610231565b61024981848461020c565b505050565b5b8181101561026d57610262600082610236565b60018101905061024f565b5050565b601f8211156102b25761028381610148565b61028c8461015d565b8101602085101561029b578190505b6102af6102a78561015d565b83018261024e565b50505b505050565b600082821c905092915050565b60006102d5600019846008026102b7565b1980831691505092915050565b60006102ee83836102c4565b9150826002028217905092915050565b610307826100ae565b67ffffffffffffffff8111156103205761031f6100b9565b5b61032a8254610117565b610335828285610271565b600060209050601f8311600181146103685760008415610356578287015190505b61036085826102e2565b8655506103c8565b601f19841661037686610148565b60005b8281101561039e57848901518255600182019150602085019450602081019050610379565b868310156103bb57848901516103b7601f8916826102c4565b8355505b6001600288020188555050505b505050505050565b610c2c806103df6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b07506111161005b578063b075061114610101578063ca3254691461011f578063e21f37ce1461013d578063ed6b866b1461015b57610088565b8063050337a21461008d5780631544298e146100ab5780633749c51a146100c95780633ff0693c146100e5575b600080fd5b610095610179565b6040516100a29190610480565b60405180910390f35b6100b361017f565b6040516100c09190610480565b60405180910390f35b6100e360048036038101906100de91906104c9565b610185565b005b6100ff60048036038101906100fa9190610531565b610231565b005b61010961031f565b6040516101169190610480565b60405180910390f35b610127610325565b60405161013491906105bb565b60405180910390f35b61014561034b565b6040516101529190610666565b60405180910390f35b6101636103d9565b6040516101709190610666565b60405180910390f35b60045481565b60015481565b8080600001906101959190610697565b600091826101a4929190610940565b5080602001356001819055508060400160208101906101c39190610a3c565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806060013560048190555080806080019061021e9190610697565b6005918261022d929190610940565b5050565b8060000160208101906102449190610a3c565b6040516020016102549190610ab1565b604051602081830303815290604052600090816102719190610acc565b50806020013560018190555080806040019061028d9190610697565b60405161029b929190610bdd565b604051809103902060001c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001356003819055508060800135600481905550808060a0019061030c9190610697565b6005918261031b929190610940565b5050565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005805461035890610763565b80601f016020809104026020016040519081016040528092919081815260200182805461038490610763565b80156103d15780601f106103a6576101008083540402835291602001916103d1565b820191906000526020600020905b8154815290600101906020018083116103b457829003601f168201915b505050505081565b600080546103e690610763565b80601f016020809104026020016040519081016040528092919081815260200182805461041290610763565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b505050505081565b6000819050919050565b61047a81610467565b82525050565b60006020820190506104956000830184610471565b92915050565b600080fd5b600080fd5b600080fd5b600060a082840312156104c0576104bf6104a5565b5b81905092915050565b6000602082840312156104df576104de61049b565b5b600082013567ffffffffffffffff8111156104fd576104fc6104a0565b5b610509848285016104aa565b91505092915050565b600060c08284031215610528576105276104a5565b5b81905092915050565b6000602082840312156105475761054661049b565b5b600082013567ffffffffffffffff811115610565576105646104a0565b5b61057184828501610512565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105a58261057a565b9050919050565b6105b58161059a565b82525050565b60006020820190506105d060008301846105ac565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156106105780820151818401526020810190506105f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000610638826105d6565b61064281856105e1565b93506106528185602086016105f2565b61065b8161061c565b840191505092915050565b60006020820190508181036000830152610680818461062d565b905092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126106b4576106b3610688565b5b80840192508235915067ffffffffffffffff8211156106d6576106d561068d565b5b6020830192506001820236038313156106f2576106f1610692565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061077b57607f821691505b60208210810361078e5761078d610734565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026107f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107b9565b61080086836107b9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061083d61083861083384610467565b610818565b610467565b9050919050565b6000819050919050565b61085783610822565b61086b61086382610844565b8484546107c6565b825550505050565b600090565b610880610873565b61088b81848461084e565b505050565b5b818110156108af576108a4600082610878565b600181019050610891565b5050565b601f8211156108f4576108c581610794565b6108ce846107a9565b810160208510156108dd578190505b6108f16108e9856107a9565b830182610890565b50505b505050565b600082821c905092915050565b6000610917600019846008026108f9565b1980831691505092915050565b60006109308383610906565b9150826002028217905092915050565b61094a83836106fa565b67ffffffffffffffff81111561096357610962610705565b5b61096d8254610763565b6109788282856108b3565b6000601f8311600181146109a75760008415610995578287013590505b61099f8582610924565b865550610a07565b601f1984166109b586610794565b60005b828110156109dd578489013582556001820191506020850194506020810190506109b8565b868310156109fa57848901356109f6601f891682610906565b8355505b6001600288020188555050505b50505050505050565b610a198161059a565b8114610a2457600080fd5b50565b600081359050610a3681610a10565b92915050565b600060208284031215610a5257610a5161049b565b5b6000610a6084828501610a27565b91505092915050565b60008160601b9050919050565b6000610a8182610a69565b9050919050565b6000610a9382610a76565b9050919050565b610aab610aa68261059a565b610a88565b82525050565b6000610abd8284610a9a565b60148201915081905092915050565b610ad5826105d6565b67ffffffffffffffff811115610aee57610aed610705565b5b610af88254610763565b610b038282856108b3565b600060209050601f831160018114610b365760008415610b24578287015190505b610b2e8582610924565b865550610b96565b601f198416610b4486610794565b60005b82811015610b6c57848901518255600182019150602085019450602081019050610b47565b86831015610b895784890151610b85601f891682610906565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b82818337600083830152505050565b6000610bc48385610b9e565b9350610bd1838584610ba9565b82840190509392505050565b6000610bea828486610bb8565b9150819050939250505056fea26469706673582212207c5ed9b805f7e22d563799330b1c6e310dd5b1625dc35c9598846e17a8a5686664736f6c63430008190033" + "bin": "608060405234801561001057600080fd5b50604051806020016040528060008152506000908161002f91906102fe565b5060006001819055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600381905550600060048190555060405180602001604052806000815250600590816100a891906102fe565b506103d0565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061012f57607f821691505b602082108103610142576101416100e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026101aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261016d565b6101b4868361016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006101fb6101f66101f1846101cc565b6101d6565b6101cc565b9050919050565b6000819050919050565b610215836101e0565b61022961022182610202565b84845461017a565b825550505050565b600090565b61023e610231565b61024981848461020c565b505050565b5b8181101561026d57610262600082610236565b60018101905061024f565b5050565b601f8211156102b25761028381610148565b61028c8461015d565b8101602085101561029b578190505b6102af6102a78561015d565b83018261024e565b50505b505050565b600082821c905092915050565b60006102d5600019846008026102b7565b1980831691505092915050565b60006102ee83836102c4565b9150826002028217905092915050565b610307826100ae565b67ffffffffffffffff8111156103205761031f6100b9565b5b61032a8254610117565b610335828285610271565b600060209050601f8311600181146103685760008415610356578287015190505b61036085826102e2565b8655506103c8565b601f19841661037686610148565b60005b8281101561039e57848901518255600182019150602085019450602081019050610379565b868310156103bb57848901516103b7601f8916826102c4565b8355505b6001600288020188555050505b505050505050565b610c2c806103df6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b07506111161005b578063b075061114610101578063ca3254691461011f578063e21f37ce1461013d578063ed6b866b1461015b57610088565b8063050337a21461008d5780631544298e146100ab5780633749c51a146100c95780633ff0693c146100e5575b600080fd5b610095610179565b6040516100a29190610480565b60405180910390f35b6100b361017f565b6040516100c09190610480565b60405180910390f35b6100e360048036038101906100de91906104c9565b610185565b005b6100ff60048036038101906100fa9190610531565b610231565b005b61010961031f565b6040516101169190610480565b60405180910390f35b610127610325565b60405161013491906105bb565b60405180910390f35b61014561034b565b6040516101529190610666565b60405180910390f35b6101636103d9565b6040516101709190610666565b60405180910390f35b60045481565b60015481565b8080600001906101959190610697565b600091826101a4929190610940565b5080602001356001819055508060400160208101906101c39190610a3c565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806060013560048190555080806080019061021e9190610697565b6005918261022d929190610940565b5050565b8060000160208101906102449190610a3c565b6040516020016102549190610ab1565b604051602081830303815290604052600090816102719190610acc565b50806020013560018190555080806040019061028d9190610697565b60405161029b929190610bdd565b604051809103902060001c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001356003819055508060800135600481905550808060a0019061030c9190610697565b6005918261031b929190610940565b5050565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005805461035890610763565b80601f016020809104026020016040519081016040528092919081815260200182805461038490610763565b80156103d15780601f106103a6576101008083540402835291602001916103d1565b820191906000526020600020905b8154815290600101906020018083116103b457829003601f168201915b505050505081565b600080546103e690610763565b80601f016020809104026020016040519081016040528092919081815260200182805461041290610763565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b505050505081565b6000819050919050565b61047a81610467565b82525050565b60006020820190506104956000830184610471565b92915050565b600080fd5b600080fd5b600080fd5b600060a082840312156104c0576104bf6104a5565b5b81905092915050565b6000602082840312156104df576104de61049b565b5b600082013567ffffffffffffffff8111156104fd576104fc6104a0565b5b610509848285016104aa565b91505092915050565b600060c08284031215610528576105276104a5565b5b81905092915050565b6000602082840312156105475761054661049b565b5b600082013567ffffffffffffffff811115610565576105646104a0565b5b61057184828501610512565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105a58261057a565b9050919050565b6105b58161059a565b82525050565b60006020820190506105d060008301846105ac565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156106105780820151818401526020810190506105f5565b60008484015250505050565b6000601f19601f8301169050919050565b6000610638826105d6565b61064281856105e1565b93506106528185602086016105f2565b61065b8161061c565b840191505092915050565b60006020820190508181036000830152610680818461062d565b905092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126106b4576106b3610688565b5b80840192508235915067ffffffffffffffff8211156106d6576106d561068d565b5b6020830192506001820236038313156106f2576106f1610692565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061077b57607f821691505b60208210810361078e5761078d610734565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026107f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107b9565b61080086836107b9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061083d61083861083384610467565b610818565b610467565b9050919050565b6000819050919050565b61085783610822565b61086b61086382610844565b8484546107c6565b825550505050565b600090565b610880610873565b61088b81848461084e565b505050565b5b818110156108af576108a4600082610878565b600181019050610891565b5050565b601f8211156108f4576108c581610794565b6108ce846107a9565b810160208510156108dd578190505b6108f16108e9856107a9565b830182610890565b50505b505050565b600082821c905092915050565b6000610917600019846008026108f9565b1980831691505092915050565b60006109308383610906565b9150826002028217905092915050565b61094a83836106fa565b67ffffffffffffffff81111561096357610962610705565b5b61096d8254610763565b6109788282856108b3565b6000601f8311600181146109a75760008415610995578287013590505b61099f8582610924565b865550610a07565b601f1984166109b586610794565b60005b828110156109dd578489013582556001820191506020850194506020810190506109b8565b868310156109fa57848901356109f6601f891682610906565b8355505b6001600288020188555050505b50505050505050565b610a198161059a565b8114610a2457600080fd5b50565b600081359050610a3681610a10565b92915050565b600060208284031215610a5257610a5161049b565b5b6000610a6084828501610a27565b91505092915050565b60008160601b9050919050565b6000610a8182610a69565b9050919050565b6000610a9382610a76565b9050919050565b610aab610aa68261059a565b610a88565b82525050565b6000610abd8284610a9a565b60148201915081905092915050565b610ad5826105d6565b67ffffffffffffffff811115610aee57610aed610705565b5b610af88254610763565b610b038282856108b3565b600060209050601f831160018114610b365760008415610b24578287015190505b610b2e8582610924565b865550610b96565b601f198416610b4486610794565b60005b82811015610b6c57848901518255600182019150602085019450602081019050610b47565b86831015610b895784890151610b85601f891682610906565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b82818337600083830152505050565b6000610bc48385610b9e565b9350610bd1838584610ba9565b82840190509392505050565b6000610bea828486610bb8565b9150819050939250505056fea2646970667358221220b5c3d474ece2d04357014c6153b994833ac21400c3f28ff64e448685f91008ff64736f6c634300081a0033" } diff --git a/testutil/contracts/DappReverter.bin b/testutil/contracts/DappReverter.bin index 8971240dc6..9cc5274cc2 100644 --- a/testutil/contracts/DappReverter.bin +++ b/testutil/contracts/DappReverter.bin @@ -1 +1 @@ -6080604052348015600f57600080fd5b50608180601d6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063705847b71460375780639a19074914603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea26469706673582212202ae32d3809d629fd01d309562a51297d761f547f4633bf45c73bf33c9955651164736f6c63430008190033 +6080604052348015600f57600080fd5b50608180601d6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063705847b71460375780639a19074914603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea26469706673582212203f2101e4f3eedc7d132d603655b2788dd769162db0d6c7d36058cb6cb2be4c3964736f6c634300081a0033 diff --git a/testutil/contracts/DappReverter.go b/testutil/contracts/DappReverter.go index 590b28f515..450f44173c 100644 --- a/testutil/contracts/DappReverter.go +++ b/testutil/contracts/DappReverter.go @@ -26,12 +26,13 @@ var ( _ = common.Big1 _ = types.BloomLookup _ = event.NewSubscription + _ = abi.ConvertType ) // DappReverterMetaData contains all meta data concerning the DappReverter contract. var DappReverterMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600f57600080fd5b50608180601d6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063705847b71460375780639a19074914603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea26469706673582212202ae32d3809d629fd01d309562a51297d761f547f4633bf45c73bf33c9955651164736f6c63430008190033", + Bin: "0x6080604052348015600f57600080fd5b50608180601d6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063705847b71460375780639a19074914603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea26469706673582212203f2101e4f3eedc7d132d603655b2788dd769162db0d6c7d36058cb6cb2be4c3964736f6c634300081a0033", } // DappReverterABI is the input ABI used to generate the binding from. @@ -156,11 +157,11 @@ func NewDappReverterFilterer(address common.Address, filterer bind.ContractFilte // bindDappReverter binds a generic wrapper to an already deployed contract. func bindDappReverter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(DappReverterABI)) + parsed, err := DappReverterMetaData.GetAbi() if err != nil { return nil, err } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } // Call invokes the (constant) contract method with params as input values and diff --git a/testutil/contracts/DappReverter.json b/testutil/contracts/DappReverter.json index 25f594b048..adfd1e6c9a 100644 --- a/testutil/contracts/DappReverter.json +++ b/testutil/contracts/DappReverter.json @@ -15,5 +15,5 @@ "type": "function" } ], - "bin": "6080604052348015600f57600080fd5b50608180601d6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063705847b71460375780639a19074914603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea26469706673582212202ae32d3809d629fd01d309562a51297d761f547f4633bf45c73bf33c9955651164736f6c63430008190033" + "bin": "6080604052348015600f57600080fd5b50608180601d6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063705847b71460375780639a19074914603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea26469706673582212203f2101e4f3eedc7d132d603655b2788dd769162db0d6c7d36058cb6cb2be4c3964736f6c634300081a0033" } diff --git a/testutil/contracts/Depositor.bin b/testutil/contracts/Depositor.bin index ecf83280fc..7b37bb3e46 100644 --- a/testutil/contracts/Depositor.bin +++ b/testutil/contracts/Depositor.bin @@ -1 +1 @@ -60a060405234801561001057600080fd5b5060405161073c38038061073c833981810160405281019061003291906100cf565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506100fc565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061009c82610071565b9050919050565b6100ac81610091565b81146100b757600080fd5b50565b6000815190506100c9816100a3565b92915050565b6000602082840312156100e5576100e461006c565b5b60006100f3848285016100ba565b91505092915050565b60805161061f61011d6000396000818160e4015261016b015261061f6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633d496c9314610030575b600080fd5b61004a6004803603810190610045919061032a565b61004c565b005b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd333084886100769190610415565b6040518463ffffffff1660e01b815260040161009493929190610475565b600060405180830381600087803b1580156100ae57600080fd5b505af11580156100c2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838761010f9190610415565b6040518363ffffffff1660e01b815260040161012c9291906104ac565b600060405180830381600087803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060005b8181101561020b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e609055e8989898989896040518763ffffffff1660e01b81526004016101cc96959493929190610592565b600060405180830381600087803b1580156101e657600080fd5b505af11580156101fa573d6000803e3d6000fd5b505050508080600101915050610161565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126102445761024361021f565b5b8235905067ffffffffffffffff81111561026157610260610224565b5b60208301915083600182028301111561027d5761027c610229565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102af82610284565b9050919050565b60006102c1826102a4565b9050919050565b6102d1816102b6565b81146102dc57600080fd5b50565b6000813590506102ee816102c8565b92915050565b6000819050919050565b610307816102f4565b811461031257600080fd5b50565b600081359050610324816102fe565b92915050565b600080600080600080600060a0888a03121561034957610348610215565b5b600088013567ffffffffffffffff8111156103675761036661021a565b5b6103738a828b0161022e565b975097505060206103868a828b016102df565b95505060406103978a828b01610315565b945050606088013567ffffffffffffffff8111156103b8576103b761021a565b5b6103c48a828b0161022e565b935093505060806103d78a828b01610315565b91505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610420826102f4565b915061042b836102f4565b9250828202610439816102f4565b915082820484148315176104505761044f6103e6565b5b5092915050565b610460816102a4565b82525050565b61046f816102f4565b82525050565b600060608201905061048a6000830186610457565b6104976020830185610457565b6104a46040830184610466565b949350505050565b60006040820190506104c16000830185610457565b6104ce6020830184610466565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061051283856104d5565b935061051f8385846104e6565b610528836104f5565b840190509392505050565b6000819050919050565b600061055861055361054e84610284565b610533565b610284565b9050919050565b600061056a8261053d565b9050919050565b600061057c8261055f565b9050919050565b61058c81610571565b82525050565b600060808201905081810360008301526105ad81888a610506565b90506105bc6020830187610583565b6105c96040830186610466565b81810360608301526105dc818486610506565b905097965050505050505056fea2646970667358221220a5a92c8f323a5a31ee98d3f743848cbaba73616e237bfd5f78b15847c3c0abb864736f6c63430008190033 +60a060405234801561001057600080fd5b5060405161073c38038061073c833981810160405281019061003291906100cf565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506100fc565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061009c82610071565b9050919050565b6100ac81610091565b81146100b757600080fd5b50565b6000815190506100c9816100a3565b92915050565b6000602082840312156100e5576100e461006c565b5b60006100f3848285016100ba565b91505092915050565b60805161061f61011d6000396000818160e4015261016b015261061f6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633d496c9314610030575b600080fd5b61004a6004803603810190610045919061032a565b61004c565b005b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd333084886100769190610415565b6040518463ffffffff1660e01b815260040161009493929190610475565b600060405180830381600087803b1580156100ae57600080fd5b505af11580156100c2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838761010f9190610415565b6040518363ffffffff1660e01b815260040161012c9291906104ac565b600060405180830381600087803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060005b8181101561020b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e609055e8989898989896040518763ffffffff1660e01b81526004016101cc96959493929190610592565b600060405180830381600087803b1580156101e657600080fd5b505af11580156101fa573d6000803e3d6000fd5b505050508080600101915050610161565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126102445761024361021f565b5b8235905067ffffffffffffffff81111561026157610260610224565b5b60208301915083600182028301111561027d5761027c610229565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102af82610284565b9050919050565b60006102c1826102a4565b9050919050565b6102d1816102b6565b81146102dc57600080fd5b50565b6000813590506102ee816102c8565b92915050565b6000819050919050565b610307816102f4565b811461031257600080fd5b50565b600081359050610324816102fe565b92915050565b600080600080600080600060a0888a03121561034957610348610215565b5b600088013567ffffffffffffffff8111156103675761036661021a565b5b6103738a828b0161022e565b975097505060206103868a828b016102df565b95505060406103978a828b01610315565b945050606088013567ffffffffffffffff8111156103b8576103b761021a565b5b6103c48a828b0161022e565b935093505060806103d78a828b01610315565b91505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610420826102f4565b915061042b836102f4565b9250828202610439816102f4565b915082820484148315176104505761044f6103e6565b5b5092915050565b610460816102a4565b82525050565b61046f816102f4565b82525050565b600060608201905061048a6000830186610457565b6104976020830185610457565b6104a46040830184610466565b949350505050565b60006040820190506104c16000830185610457565b6104ce6020830184610466565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061051283856104d5565b935061051f8385846104e6565b610528836104f5565b840190509392505050565b6000819050919050565b600061055861055361054e84610284565b610533565b610284565b9050919050565b600061056a8261053d565b9050919050565b600061057c8261055f565b9050919050565b61058c81610571565b82525050565b600060808201905081810360008301526105ad81888a610506565b90506105bc6020830187610583565b6105c96040830186610466565b81810360608301526105dc818486610506565b905097965050505050505056fea2646970667358221220228a2792d46a7120b8563a7f501b848c2d4e48097ddbfd9d997d323e87e9d15b64736f6c634300081a0033 diff --git a/testutil/contracts/Depositor.go b/testutil/contracts/Depositor.go index 6c85c24c5e..b545be3e03 100644 --- a/testutil/contracts/Depositor.go +++ b/testutil/contracts/Depositor.go @@ -26,12 +26,13 @@ var ( _ = common.Big1 _ = types.BloomLookup _ = event.NewSubscription + _ = abi.ConvertType ) // DepositorMetaData contains all meta data concerning the Depositor contract. var DepositorMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custody_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"runDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561001057600080fd5b5060405161073c38038061073c833981810160405281019061003291906100cf565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506100fc565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061009c82610071565b9050919050565b6100ac81610091565b81146100b757600080fd5b50565b6000815190506100c9816100a3565b92915050565b6000602082840312156100e5576100e461006c565b5b60006100f3848285016100ba565b91505092915050565b60805161061f61011d6000396000818160e4015261016b015261061f6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633d496c9314610030575b600080fd5b61004a6004803603810190610045919061032a565b61004c565b005b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd333084886100769190610415565b6040518463ffffffff1660e01b815260040161009493929190610475565b600060405180830381600087803b1580156100ae57600080fd5b505af11580156100c2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838761010f9190610415565b6040518363ffffffff1660e01b815260040161012c9291906104ac565b600060405180830381600087803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060005b8181101561020b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e609055e8989898989896040518763ffffffff1660e01b81526004016101cc96959493929190610592565b600060405180830381600087803b1580156101e657600080fd5b505af11580156101fa573d6000803e3d6000fd5b505050508080600101915050610161565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126102445761024361021f565b5b8235905067ffffffffffffffff81111561026157610260610224565b5b60208301915083600182028301111561027d5761027c610229565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102af82610284565b9050919050565b60006102c1826102a4565b9050919050565b6102d1816102b6565b81146102dc57600080fd5b50565b6000813590506102ee816102c8565b92915050565b6000819050919050565b610307816102f4565b811461031257600080fd5b50565b600081359050610324816102fe565b92915050565b600080600080600080600060a0888a03121561034957610348610215565b5b600088013567ffffffffffffffff8111156103675761036661021a565b5b6103738a828b0161022e565b975097505060206103868a828b016102df565b95505060406103978a828b01610315565b945050606088013567ffffffffffffffff8111156103b8576103b761021a565b5b6103c48a828b0161022e565b935093505060806103d78a828b01610315565b91505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610420826102f4565b915061042b836102f4565b9250828202610439816102f4565b915082820484148315176104505761044f6103e6565b5b5092915050565b610460816102a4565b82525050565b61046f816102f4565b82525050565b600060608201905061048a6000830186610457565b6104976020830185610457565b6104a46040830184610466565b949350505050565b60006040820190506104c16000830185610457565b6104ce6020830184610466565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061051283856104d5565b935061051f8385846104e6565b610528836104f5565b840190509392505050565b6000819050919050565b600061055861055361054e84610284565b610533565b610284565b9050919050565b600061056a8261053d565b9050919050565b600061057c8261055f565b9050919050565b61058c81610571565b82525050565b600060808201905081810360008301526105ad81888a610506565b90506105bc6020830187610583565b6105c96040830186610466565b81810360608301526105dc818486610506565b905097965050505050505056fea2646970667358221220a5a92c8f323a5a31ee98d3f743848cbaba73616e237bfd5f78b15847c3c0abb864736f6c63430008190033", + Bin: "0x60a060405234801561001057600080fd5b5060405161073c38038061073c833981810160405281019061003291906100cf565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506100fc565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061009c82610071565b9050919050565b6100ac81610091565b81146100b757600080fd5b50565b6000815190506100c9816100a3565b92915050565b6000602082840312156100e5576100e461006c565b5b60006100f3848285016100ba565b91505092915050565b60805161061f61011d6000396000818160e4015261016b015261061f6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633d496c9314610030575b600080fd5b61004a6004803603810190610045919061032a565b61004c565b005b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd333084886100769190610415565b6040518463ffffffff1660e01b815260040161009493929190610475565b600060405180830381600087803b1580156100ae57600080fd5b505af11580156100c2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838761010f9190610415565b6040518363ffffffff1660e01b815260040161012c9291906104ac565b600060405180830381600087803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060005b8181101561020b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e609055e8989898989896040518763ffffffff1660e01b81526004016101cc96959493929190610592565b600060405180830381600087803b1580156101e657600080fd5b505af11580156101fa573d6000803e3d6000fd5b505050508080600101915050610161565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126102445761024361021f565b5b8235905067ffffffffffffffff81111561026157610260610224565b5b60208301915083600182028301111561027d5761027c610229565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102af82610284565b9050919050565b60006102c1826102a4565b9050919050565b6102d1816102b6565b81146102dc57600080fd5b50565b6000813590506102ee816102c8565b92915050565b6000819050919050565b610307816102f4565b811461031257600080fd5b50565b600081359050610324816102fe565b92915050565b600080600080600080600060a0888a03121561034957610348610215565b5b600088013567ffffffffffffffff8111156103675761036661021a565b5b6103738a828b0161022e565b975097505060206103868a828b016102df565b95505060406103978a828b01610315565b945050606088013567ffffffffffffffff8111156103b8576103b761021a565b5b6103c48a828b0161022e565b935093505060806103d78a828b01610315565b91505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610420826102f4565b915061042b836102f4565b9250828202610439816102f4565b915082820484148315176104505761044f6103e6565b5b5092915050565b610460816102a4565b82525050565b61046f816102f4565b82525050565b600060608201905061048a6000830186610457565b6104976020830185610457565b6104a46040830184610466565b949350505050565b60006040820190506104c16000830185610457565b6104ce6020830184610466565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061051283856104d5565b935061051f8385846104e6565b610528836104f5565b840190509392505050565b6000819050919050565b600061055861055361054e84610284565b610533565b610284565b9050919050565b600061056a8261053d565b9050919050565b600061057c8261055f565b9050919050565b61058c81610571565b82525050565b600060808201905081810360008301526105ad81888a610506565b90506105bc6020830187610583565b6105c96040830186610466565b81810360608301526105dc818486610506565b905097965050505050505056fea2646970667358221220228a2792d46a7120b8563a7f501b848c2d4e48097ddbfd9d997d323e87e9d15b64736f6c634300081a0033", } // DepositorABI is the input ABI used to generate the binding from. @@ -156,11 +157,11 @@ func NewDepositorFilterer(address common.Address, filterer bind.ContractFilterer // bindDepositor binds a generic wrapper to an already deployed contract. func bindDepositor(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(DepositorABI)) + parsed, err := DepositorMetaData.GetAbi() if err != nil { return nil, err } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } // Call invokes the (constant) contract method with params as input values and diff --git a/testutil/contracts/Depositor.json b/testutil/contracts/Depositor.json index f54b3e932f..045652b02d 100644 --- a/testutil/contracts/Depositor.json +++ b/testutil/contracts/Depositor.json @@ -45,5 +45,5 @@ "type": "function" } ], - "bin": "60a060405234801561001057600080fd5b5060405161073c38038061073c833981810160405281019061003291906100cf565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506100fc565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061009c82610071565b9050919050565b6100ac81610091565b81146100b757600080fd5b50565b6000815190506100c9816100a3565b92915050565b6000602082840312156100e5576100e461006c565b5b60006100f3848285016100ba565b91505092915050565b60805161061f61011d6000396000818160e4015261016b015261061f6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633d496c9314610030575b600080fd5b61004a6004803603810190610045919061032a565b61004c565b005b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd333084886100769190610415565b6040518463ffffffff1660e01b815260040161009493929190610475565b600060405180830381600087803b1580156100ae57600080fd5b505af11580156100c2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838761010f9190610415565b6040518363ffffffff1660e01b815260040161012c9291906104ac565b600060405180830381600087803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060005b8181101561020b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e609055e8989898989896040518763ffffffff1660e01b81526004016101cc96959493929190610592565b600060405180830381600087803b1580156101e657600080fd5b505af11580156101fa573d6000803e3d6000fd5b505050508080600101915050610161565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126102445761024361021f565b5b8235905067ffffffffffffffff81111561026157610260610224565b5b60208301915083600182028301111561027d5761027c610229565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102af82610284565b9050919050565b60006102c1826102a4565b9050919050565b6102d1816102b6565b81146102dc57600080fd5b50565b6000813590506102ee816102c8565b92915050565b6000819050919050565b610307816102f4565b811461031257600080fd5b50565b600081359050610324816102fe565b92915050565b600080600080600080600060a0888a03121561034957610348610215565b5b600088013567ffffffffffffffff8111156103675761036661021a565b5b6103738a828b0161022e565b975097505060206103868a828b016102df565b95505060406103978a828b01610315565b945050606088013567ffffffffffffffff8111156103b8576103b761021a565b5b6103c48a828b0161022e565b935093505060806103d78a828b01610315565b91505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610420826102f4565b915061042b836102f4565b9250828202610439816102f4565b915082820484148315176104505761044f6103e6565b5b5092915050565b610460816102a4565b82525050565b61046f816102f4565b82525050565b600060608201905061048a6000830186610457565b6104976020830185610457565b6104a46040830184610466565b949350505050565b60006040820190506104c16000830185610457565b6104ce6020830184610466565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061051283856104d5565b935061051f8385846104e6565b610528836104f5565b840190509392505050565b6000819050919050565b600061055861055361054e84610284565b610533565b610284565b9050919050565b600061056a8261053d565b9050919050565b600061057c8261055f565b9050919050565b61058c81610571565b82525050565b600060808201905081810360008301526105ad81888a610506565b90506105bc6020830187610583565b6105c96040830186610466565b81810360608301526105dc818486610506565b905097965050505050505056fea2646970667358221220a5a92c8f323a5a31ee98d3f743848cbaba73616e237bfd5f78b15847c3c0abb864736f6c63430008190033" + "bin": "60a060405234801561001057600080fd5b5060405161073c38038061073c833981810160405281019061003291906100cf565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506100fc565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061009c82610071565b9050919050565b6100ac81610091565b81146100b757600080fd5b50565b6000815190506100c9816100a3565b92915050565b6000602082840312156100e5576100e461006c565b5b60006100f3848285016100ba565b91505092915050565b60805161061f61011d6000396000818160e4015261016b015261061f6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80633d496c9314610030575b600080fd5b61004a6004803603810190610045919061032a565b61004c565b005b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd333084886100769190610415565b6040518463ffffffff1660e01b815260040161009493929190610475565b600060405180830381600087803b1580156100ae57600080fd5b505af11580156100c2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838761010f9190610415565b6040518363ffffffff1660e01b815260040161012c9291906104ac565b600060405180830381600087803b15801561014657600080fd5b505af115801561015a573d6000803e3d6000fd5b5050505060005b8181101561020b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e609055e8989898989896040518763ffffffff1660e01b81526004016101cc96959493929190610592565b600060405180830381600087803b1580156101e657600080fd5b505af11580156101fa573d6000803e3d6000fd5b505050508080600101915050610161565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126102445761024361021f565b5b8235905067ffffffffffffffff81111561026157610260610224565b5b60208301915083600182028301111561027d5761027c610229565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102af82610284565b9050919050565b60006102c1826102a4565b9050919050565b6102d1816102b6565b81146102dc57600080fd5b50565b6000813590506102ee816102c8565b92915050565b6000819050919050565b610307816102f4565b811461031257600080fd5b50565b600081359050610324816102fe565b92915050565b600080600080600080600060a0888a03121561034957610348610215565b5b600088013567ffffffffffffffff8111156103675761036661021a565b5b6103738a828b0161022e565b975097505060206103868a828b016102df565b95505060406103978a828b01610315565b945050606088013567ffffffffffffffff8111156103b8576103b761021a565b5b6103c48a828b0161022e565b935093505060806103d78a828b01610315565b91505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610420826102f4565b915061042b836102f4565b9250828202610439816102f4565b915082820484148315176104505761044f6103e6565b5b5092915050565b610460816102a4565b82525050565b61046f816102f4565b82525050565b600060608201905061048a6000830186610457565b6104976020830185610457565b6104a46040830184610466565b949350505050565b60006040820190506104c16000830185610457565b6104ce6020830184610466565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b600061051283856104d5565b935061051f8385846104e6565b610528836104f5565b840190509392505050565b6000819050919050565b600061055861055361054e84610284565b610533565b610284565b9050919050565b600061056a8261053d565b9050919050565b600061057c8261055f565b9050919050565b61058c81610571565b82525050565b600060808201905081810360008301526105ad81888a610506565b90506105bc6020830187610583565b6105c96040830186610466565b81810360608301526105dc818486610506565b905097965050505050505056fea2646970667358221220228a2792d46a7120b8563a7f501b848c2d4e48097ddbfd9d997d323e87e9d15b64736f6c634300081a0033" } diff --git a/testutil/contracts/Example.abi b/testutil/contracts/Example.abi index ccf6aa55a9..ee94a37127 100644 --- a/testutil/contracts/Example.abi +++ b/testutil/contracts/Example.abi @@ -63,6 +63,51 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "origin", + "type": "bytes" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "chainID", + "type": "uint256" + } + ], + "internalType": "struct Example.zContext", + "name": "context", + "type": "tuple" + }, + { + "internalType": "address", + "name": "zrc20", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "onCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/testutil/contracts/Example.bin b/testutil/contracts/Example.bin index e7a2293644..7ddabaa4a3 100644 --- a/testutil/contracts/Example.bin +++ b/testutil/contracts/Example.bin @@ -1 +1 @@ -6080604052348015600f57600080fd5b50600080819055506108e0806100266000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063dd8e556c1161005b578063dd8e556c146100b4578063de43156e146100be578063fd5ad965146100da578063febb0f7e146100e45761007d565b80633297071014610082578063afc874d2146100a0578063d720cb45146100aa575b600080fd5b61008a610102565b6040516100979190610300565b60405180910390f35b6100a8610190565b005b6100b26101c2565b005b6100bc6101fd565b005b6100d860048036038101906100d39190610449565b610240565b005b6100e2610260565b005b6100ec61026a565b6040516100f991906104fc565b60405180910390f35b6001805461010f90610546565b80601f016020809104026020016040519081016040528092919081815260200182805461013b90610546565b80156101885780601f1061015d57610100808354040283529160200191610188565b820191906000526020600020905b81548152906001019060200180831161016b57829003601f168201915b505050505081565b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f4906105d4565b60405180910390fd5b600061023e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610235906105d4565b60405180910390fd5b565b826000819055508181600191826102589291906107da565b505050505050565b6001600081905550565b60005481565b600081519050919050565b600082825260208201905092915050565b60005b838110156102aa57808201518184015260208101905061028f565b60008484015250505050565b6000601f19601f8301169050919050565b60006102d282610270565b6102dc818561027b565b93506102ec81856020860161028c565b6102f5816102b6565b840191505092915050565b6000602082019050818103600083015261031a81846102c7565b905092915050565b600080fd5b600080fd5b600080fd5b6000606082840312156103475761034661032c565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061037b82610350565b9050919050565b61038b81610370565b811461039657600080fd5b50565b6000813590506103a881610382565b92915050565b6000819050919050565b6103c1816103ae565b81146103cc57600080fd5b50565b6000813590506103de816103b8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610409576104086103e4565b5b8235905067ffffffffffffffff811115610426576104256103e9565b5b602083019150836001820283011115610442576104416103ee565b5b9250929050565b60008060008060006080868803121561046557610464610322565b5b600086013567ffffffffffffffff81111561048357610482610327565b5b61048f88828901610331565b95505060206104a088828901610399565b94505060406104b1888289016103cf565b935050606086013567ffffffffffffffff8111156104d2576104d1610327565b5b6104de888289016103f3565b92509250509295509295909350565b6104f6816103ae565b82525050565b600060208201905061051160008301846104ed565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061055e57607f821691505b60208210810361057157610570610517565b5b50919050565b600082825260208201905092915050565b7f666f6f0000000000000000000000000000000000000000000000000000000000600082015250565b60006105be600383610577565b91506105c982610588565b602082019050919050565b600060208201905081810360008301526105ed816105b1565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610653565b61069a8683610653565b95508019841693508086168417925050509392505050565b6000819050919050565b60006106d76106d26106cd846103ae565b6106b2565b6103ae565b9050919050565b6000819050919050565b6106f1836106bc565b6107056106fd826106de565b848454610660565b825550505050565b600090565b61071a61070d565b6107258184846106e8565b505050565b5b818110156107495761073e600082610712565b60018101905061072b565b5050565b601f82111561078e5761075f8161062e565b61076884610643565b81016020851015610777578190505b61078b61078385610643565b83018261072a565b50505b505050565b600082821c905092915050565b60006107b160001984600802610793565b1980831691505092915050565b60006107ca83836107a0565b9150826002028217905092915050565b6107e483836105f4565b67ffffffffffffffff8111156107fd576107fc6105ff565b5b6108078254610546565b61081282828561074d565b6000601f831160018114610841576000841561082f578287013590505b61083985826107be565b8655506108a1565b601f19841661084f8661062e565b60005b8281101561087757848901358255600182019150602085019450602081019050610852565b868310156108945784890135610890601f8916826107a0565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212202506bee512af2f3acd98556baafd9afc04b2d8c95f09bbb5e387fce570c9a32764736f6c634300081a0033 +6080604052348015600f57600080fd5b506000808190555061091b806100266000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063dd8e556c1161005b578063dd8e556c146100db578063de43156e146100e5578063fd5ad96514610101578063febb0f7e1461010b57610088565b8063329707101461008d5780635bcfd616146100ab578063afc874d2146100c7578063d720cb45146100d1575b600080fd5b610095610129565b6040516100a2919061033b565b60405180910390f35b6100c560048036038101906100c09190610484565b6101b7565b005b6100cf6101d7565b005b6100d9610209565b005b6100e3610244565b005b6100ff60048036038101906100fa9190610484565b610287565b005b61010961029b565b005b6101136102a5565b6040516101209190610537565b60405180910390f35b6001805461013690610581565b80601f016020809104026020016040519081016040528092919081815260200182805461016290610581565b80156101af5780601f10610184576101008083540402835291602001916101af565b820191906000526020600020905b81548152906001019060200180831161019257829003601f168201915b505050505081565b826000819055508181600191826101cf929190610798565b505050505050565b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023b906108c5565b60405180910390fd5b6000610285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027c906108c5565b60405180910390fd5b565b61029485858585856101b7565b5050505050565b6001600081905550565b60005481565b600081519050919050565b600082825260208201905092915050565b60005b838110156102e55780820151818401526020810190506102ca565b60008484015250505050565b6000601f19601f8301169050919050565b600061030d826102ab565b61031781856102b6565b93506103278185602086016102c7565b610330816102f1565b840191505092915050565b600060208201905081810360008301526103558184610302565b905092915050565b600080fd5b600080fd5b600080fd5b60006060828403121561038257610381610367565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103b68261038b565b9050919050565b6103c6816103ab565b81146103d157600080fd5b50565b6000813590506103e3816103bd565b92915050565b6000819050919050565b6103fc816103e9565b811461040757600080fd5b50565b600081359050610419816103f3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126104445761044361041f565b5b8235905067ffffffffffffffff81111561046157610460610424565b5b60208301915083600182028301111561047d5761047c610429565b5b9250929050565b6000806000806000608086880312156104a05761049f61035d565b5b600086013567ffffffffffffffff8111156104be576104bd610362565b5b6104ca8882890161036c565b95505060206104db888289016103d4565b94505060406104ec8882890161040a565b935050606086013567ffffffffffffffff81111561050d5761050c610362565b5b6105198882890161042e565b92509250509295509295909350565b610531816103e9565b82525050565b600060208201905061054c6000830184610528565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061059957607f821691505b6020821081036105ac576105ab610552565b5b50919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261064e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610611565b6106588683610611565b95508019841693508086168417925050509392505050565b6000819050919050565b600061069561069061068b846103e9565b610670565b6103e9565b9050919050565b6000819050919050565b6106af8361067a565b6106c36106bb8261069c565b84845461061e565b825550505050565b600090565b6106d86106cb565b6106e38184846106a6565b505050565b5b81811015610707576106fc6000826106d0565b6001810190506106e9565b5050565b601f82111561074c5761071d816105ec565b61072684610601565b81016020851015610735578190505b61074961074185610601565b8301826106e8565b50505b505050565b600082821c905092915050565b600061076f60001984600802610751565b1980831691505092915050565b6000610788838361075e565b9150826002028217905092915050565b6107a283836105b2565b67ffffffffffffffff8111156107bb576107ba6105bd565b5b6107c58254610581565b6107d082828561070b565b6000601f8311600181146107ff57600084156107ed578287013590505b6107f7858261077c565b86555061085f565b601f19841661080d866105ec565b60005b8281101561083557848901358255600182019150602085019450602081019050610810565b86831015610852578489013561084e601f89168261075e565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b7f666f6f0000000000000000000000000000000000000000000000000000000000600082015250565b60006108af600383610868565b91506108ba82610879565b602082019050919050565b600060208201905081810360008301526108de816108a2565b905091905056fea26469706673582212209cfc763a2051af7ae03bd5c8a8765e80a09469a9bb8875cda4c3917306b2238264736f6c634300081a0033 diff --git a/testutil/contracts/Example.go b/testutil/contracts/Example.go index 62ff9a3530..1ded198bc4 100644 --- a/testutil/contracts/Example.go +++ b/testutil/contracts/Example.go @@ -38,8 +38,8 @@ type ExamplezContext struct { // ExampleMetaData contains all meta data concerning the Example contract. var ExampleMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Foo\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"bar\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doRevertWithRequire\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doSucceed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structExample.zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600f57600080fd5b50600080819055506108e0806100266000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063dd8e556c1161005b578063dd8e556c146100b4578063de43156e146100be578063fd5ad965146100da578063febb0f7e146100e45761007d565b80633297071014610082578063afc874d2146100a0578063d720cb45146100aa575b600080fd5b61008a610102565b6040516100979190610300565b60405180910390f35b6100a8610190565b005b6100b26101c2565b005b6100bc6101fd565b005b6100d860048036038101906100d39190610449565b610240565b005b6100e2610260565b005b6100ec61026a565b6040516100f991906104fc565b60405180910390f35b6001805461010f90610546565b80601f016020809104026020016040519081016040528092919081815260200182805461013b90610546565b80156101885780601f1061015d57610100808354040283529160200191610188565b820191906000526020600020905b81548152906001019060200180831161016b57829003601f168201915b505050505081565b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f4906105d4565b60405180910390fd5b600061023e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610235906105d4565b60405180910390fd5b565b826000819055508181600191826102589291906107da565b505050505050565b6001600081905550565b60005481565b600081519050919050565b600082825260208201905092915050565b60005b838110156102aa57808201518184015260208101905061028f565b60008484015250505050565b6000601f19601f8301169050919050565b60006102d282610270565b6102dc818561027b565b93506102ec81856020860161028c565b6102f5816102b6565b840191505092915050565b6000602082019050818103600083015261031a81846102c7565b905092915050565b600080fd5b600080fd5b600080fd5b6000606082840312156103475761034661032c565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061037b82610350565b9050919050565b61038b81610370565b811461039657600080fd5b50565b6000813590506103a881610382565b92915050565b6000819050919050565b6103c1816103ae565b81146103cc57600080fd5b50565b6000813590506103de816103b8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610409576104086103e4565b5b8235905067ffffffffffffffff811115610426576104256103e9565b5b602083019150836001820283011115610442576104416103ee565b5b9250929050565b60008060008060006080868803121561046557610464610322565b5b600086013567ffffffffffffffff81111561048357610482610327565b5b61048f88828901610331565b95505060206104a088828901610399565b94505060406104b1888289016103cf565b935050606086013567ffffffffffffffff8111156104d2576104d1610327565b5b6104de888289016103f3565b92509250509295509295909350565b6104f6816103ae565b82525050565b600060208201905061051160008301846104ed565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061055e57607f821691505b60208210810361057157610570610517565b5b50919050565b600082825260208201905092915050565b7f666f6f0000000000000000000000000000000000000000000000000000000000600082015250565b60006105be600383610577565b91506105c982610588565b602082019050919050565b600060208201905081810360008301526105ed816105b1565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610653565b61069a8683610653565b95508019841693508086168417925050509392505050565b6000819050919050565b60006106d76106d26106cd846103ae565b6106b2565b6103ae565b9050919050565b6000819050919050565b6106f1836106bc565b6107056106fd826106de565b848454610660565b825550505050565b600090565b61071a61070d565b6107258184846106e8565b505050565b5b818110156107495761073e600082610712565b60018101905061072b565b5050565b601f82111561078e5761075f8161062e565b61076884610643565b81016020851015610777578190505b61078b61078385610643565b83018261072a565b50505b505050565b600082821c905092915050565b60006107b160001984600802610793565b1980831691505092915050565b60006107ca83836107a0565b9150826002028217905092915050565b6107e483836105f4565b67ffffffffffffffff8111156107fd576107fc6105ff565b5b6108078254610546565b61081282828561074d565b6000601f831160018114610841576000841561082f578287013590505b61083985826107be565b8655506108a1565b601f19841661084f8661062e565b60005b8281101561087757848901358255600182019150602085019450602081019050610852565b868310156108945784890135610890601f8916826107a0565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212202506bee512af2f3acd98556baafd9afc04b2d8c95f09bbb5e387fce570c9a32764736f6c634300081a0033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Foo\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"bar\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doRevertWithRequire\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"doSucceed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structExample.zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structExample.zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052348015600f57600080fd5b506000808190555061091b806100266000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063dd8e556c1161005b578063dd8e556c146100db578063de43156e146100e5578063fd5ad96514610101578063febb0f7e1461010b57610088565b8063329707101461008d5780635bcfd616146100ab578063afc874d2146100c7578063d720cb45146100d1575b600080fd5b610095610129565b6040516100a2919061033b565b60405180910390f35b6100c560048036038101906100c09190610484565b6101b7565b005b6100cf6101d7565b005b6100d9610209565b005b6100e3610244565b005b6100ff60048036038101906100fa9190610484565b610287565b005b61010961029b565b005b6101136102a5565b6040516101209190610537565b60405180910390f35b6001805461013690610581565b80601f016020809104026020016040519081016040528092919081815260200182805461016290610581565b80156101af5780601f10610184576101008083540402835291602001916101af565b820191906000526020600020905b81548152906001019060200180831161019257829003601f168201915b505050505081565b826000819055508181600191826101cf929190610798565b505050505050565b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023b906108c5565b60405180910390fd5b6000610285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027c906108c5565b60405180910390fd5b565b61029485858585856101b7565b5050505050565b6001600081905550565b60005481565b600081519050919050565b600082825260208201905092915050565b60005b838110156102e55780820151818401526020810190506102ca565b60008484015250505050565b6000601f19601f8301169050919050565b600061030d826102ab565b61031781856102b6565b93506103278185602086016102c7565b610330816102f1565b840191505092915050565b600060208201905081810360008301526103558184610302565b905092915050565b600080fd5b600080fd5b600080fd5b60006060828403121561038257610381610367565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103b68261038b565b9050919050565b6103c6816103ab565b81146103d157600080fd5b50565b6000813590506103e3816103bd565b92915050565b6000819050919050565b6103fc816103e9565b811461040757600080fd5b50565b600081359050610419816103f3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126104445761044361041f565b5b8235905067ffffffffffffffff81111561046157610460610424565b5b60208301915083600182028301111561047d5761047c610429565b5b9250929050565b6000806000806000608086880312156104a05761049f61035d565b5b600086013567ffffffffffffffff8111156104be576104bd610362565b5b6104ca8882890161036c565b95505060206104db888289016103d4565b94505060406104ec8882890161040a565b935050606086013567ffffffffffffffff81111561050d5761050c610362565b5b6105198882890161042e565b92509250509295509295909350565b610531816103e9565b82525050565b600060208201905061054c6000830184610528565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061059957607f821691505b6020821081036105ac576105ab610552565b5b50919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261064e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610611565b6106588683610611565b95508019841693508086168417925050509392505050565b6000819050919050565b600061069561069061068b846103e9565b610670565b6103e9565b9050919050565b6000819050919050565b6106af8361067a565b6106c36106bb8261069c565b84845461061e565b825550505050565b600090565b6106d86106cb565b6106e38184846106a6565b505050565b5b81811015610707576106fc6000826106d0565b6001810190506106e9565b5050565b601f82111561074c5761071d816105ec565b61072684610601565b81016020851015610735578190505b61074961074185610601565b8301826106e8565b50505b505050565b600082821c905092915050565b600061076f60001984600802610751565b1980831691505092915050565b6000610788838361075e565b9150826002028217905092915050565b6107a283836105b2565b67ffffffffffffffff8111156107bb576107ba6105bd565b5b6107c58254610581565b6107d082828561070b565b6000601f8311600181146107ff57600084156107ed578287013590505b6107f7858261077c565b86555061085f565b601f19841661080d866105ec565b60005b8281101561083557848901358255600182019150602085019450602081019050610810565b86831015610852578489013561084e601f89168261075e565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b7f666f6f0000000000000000000000000000000000000000000000000000000000600082015250565b60006108af600383610868565b91506108ba82610879565b602082019050919050565b600060208201905081810360008301526108de816108a2565b905091905056fea26469706673582212209cfc763a2051af7ae03bd5c8a8765e80a09469a9bb8875cda4c3917306b2238264736f6c634300081a0033", } // ExampleABI is the input ABI used to generate the binding from. @@ -355,6 +355,27 @@ func (_Example *ExampleTransactorSession) DoSucceed() (*types.Transaction, error return _Example.Contract.DoSucceed(&_Example.TransactOpts) } +// OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. +// +// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Example *ExampleTransactor) OnCall(opts *bind.TransactOpts, context ExamplezContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Example.contract.Transact(opts, "onCall", context, zrc20, amount, message) +} + +// OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. +// +// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Example *ExampleSession) OnCall(context ExamplezContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Example.Contract.OnCall(&_Example.TransactOpts, context, zrc20, amount, message) +} + +// OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. +// +// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Example *ExampleTransactorSession) OnCall(context ExamplezContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Example.Contract.OnCall(&_Example.TransactOpts, context, zrc20, amount, message) +} + // OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. // // Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() diff --git a/testutil/contracts/Example.json b/testutil/contracts/Example.json index c41132ea94..8334c4f97f 100644 --- a/testutil/contracts/Example.json +++ b/testutil/contracts/Example.json @@ -64,6 +64,51 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "origin", + "type": "bytes" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "chainID", + "type": "uint256" + } + ], + "internalType": "struct Example.zContext", + "name": "context", + "type": "tuple" + }, + { + "internalType": "address", + "name": "zrc20", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "onCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -110,5 +155,5 @@ "type": "function" } ], - "bin": "6080604052348015600f57600080fd5b50600080819055506108e0806100266000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063dd8e556c1161005b578063dd8e556c146100b4578063de43156e146100be578063fd5ad965146100da578063febb0f7e146100e45761007d565b80633297071014610082578063afc874d2146100a0578063d720cb45146100aa575b600080fd5b61008a610102565b6040516100979190610300565b60405180910390f35b6100a8610190565b005b6100b26101c2565b005b6100bc6101fd565b005b6100d860048036038101906100d39190610449565b610240565b005b6100e2610260565b005b6100ec61026a565b6040516100f991906104fc565b60405180910390f35b6001805461010f90610546565b80601f016020809104026020016040519081016040528092919081815260200182805461013b90610546565b80156101885780601f1061015d57610100808354040283529160200191610188565b820191906000526020600020905b81548152906001019060200180831161016b57829003601f168201915b505050505081565b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f4906105d4565b60405180910390fd5b600061023e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610235906105d4565b60405180910390fd5b565b826000819055508181600191826102589291906107da565b505050505050565b6001600081905550565b60005481565b600081519050919050565b600082825260208201905092915050565b60005b838110156102aa57808201518184015260208101905061028f565b60008484015250505050565b6000601f19601f8301169050919050565b60006102d282610270565b6102dc818561027b565b93506102ec81856020860161028c565b6102f5816102b6565b840191505092915050565b6000602082019050818103600083015261031a81846102c7565b905092915050565b600080fd5b600080fd5b600080fd5b6000606082840312156103475761034661032c565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061037b82610350565b9050919050565b61038b81610370565b811461039657600080fd5b50565b6000813590506103a881610382565b92915050565b6000819050919050565b6103c1816103ae565b81146103cc57600080fd5b50565b6000813590506103de816103b8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610409576104086103e4565b5b8235905067ffffffffffffffff811115610426576104256103e9565b5b602083019150836001820283011115610442576104416103ee565b5b9250929050565b60008060008060006080868803121561046557610464610322565b5b600086013567ffffffffffffffff81111561048357610482610327565b5b61048f88828901610331565b95505060206104a088828901610399565b94505060406104b1888289016103cf565b935050606086013567ffffffffffffffff8111156104d2576104d1610327565b5b6104de888289016103f3565b92509250509295509295909350565b6104f6816103ae565b82525050565b600060208201905061051160008301846104ed565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061055e57607f821691505b60208210810361057157610570610517565b5b50919050565b600082825260208201905092915050565b7f666f6f0000000000000000000000000000000000000000000000000000000000600082015250565b60006105be600383610577565b91506105c982610588565b602082019050919050565b600060208201905081810360008301526105ed816105b1565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610653565b61069a8683610653565b95508019841693508086168417925050509392505050565b6000819050919050565b60006106d76106d26106cd846103ae565b6106b2565b6103ae565b9050919050565b6000819050919050565b6106f1836106bc565b6107056106fd826106de565b848454610660565b825550505050565b600090565b61071a61070d565b6107258184846106e8565b505050565b5b818110156107495761073e600082610712565b60018101905061072b565b5050565b601f82111561078e5761075f8161062e565b61076884610643565b81016020851015610777578190505b61078b61078385610643565b83018261072a565b50505b505050565b600082821c905092915050565b60006107b160001984600802610793565b1980831691505092915050565b60006107ca83836107a0565b9150826002028217905092915050565b6107e483836105f4565b67ffffffffffffffff8111156107fd576107fc6105ff565b5b6108078254610546565b61081282828561074d565b6000601f831160018114610841576000841561082f578287013590505b61083985826107be565b8655506108a1565b601f19841661084f8661062e565b60005b8281101561087757848901358255600182019150602085019450602081019050610852565b868310156108945784890135610890601f8916826107a0565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212202506bee512af2f3acd98556baafd9afc04b2d8c95f09bbb5e387fce570c9a32764736f6c634300081a0033" + "bin": "6080604052348015600f57600080fd5b506000808190555061091b806100266000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063dd8e556c1161005b578063dd8e556c146100db578063de43156e146100e5578063fd5ad96514610101578063febb0f7e1461010b57610088565b8063329707101461008d5780635bcfd616146100ab578063afc874d2146100c7578063d720cb45146100d1575b600080fd5b610095610129565b6040516100a2919061033b565b60405180910390f35b6100c560048036038101906100c09190610484565b6101b7565b005b6100cf6101d7565b005b6100d9610209565b005b6100e3610244565b005b6100ff60048036038101906100fa9190610484565b610287565b005b61010961029b565b005b6101136102a5565b6040516101209190610537565b60405180910390f35b6001805461013690610581565b80601f016020809104026020016040519081016040528092919081815260200182805461016290610581565b80156101af5780601f10610184576101008083540402835291602001916101af565b820191906000526020600020905b81548152906001019060200180831161019257829003601f168201915b505050505081565b826000819055508181600191826101cf929190610798565b505050505050565b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023b906108c5565b60405180910390fd5b6000610285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027c906108c5565b60405180910390fd5b565b61029485858585856101b7565b5050505050565b6001600081905550565b60005481565b600081519050919050565b600082825260208201905092915050565b60005b838110156102e55780820151818401526020810190506102ca565b60008484015250505050565b6000601f19601f8301169050919050565b600061030d826102ab565b61031781856102b6565b93506103278185602086016102c7565b610330816102f1565b840191505092915050565b600060208201905081810360008301526103558184610302565b905092915050565b600080fd5b600080fd5b600080fd5b60006060828403121561038257610381610367565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103b68261038b565b9050919050565b6103c6816103ab565b81146103d157600080fd5b50565b6000813590506103e3816103bd565b92915050565b6000819050919050565b6103fc816103e9565b811461040757600080fd5b50565b600081359050610419816103f3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126104445761044361041f565b5b8235905067ffffffffffffffff81111561046157610460610424565b5b60208301915083600182028301111561047d5761047c610429565b5b9250929050565b6000806000806000608086880312156104a05761049f61035d565b5b600086013567ffffffffffffffff8111156104be576104bd610362565b5b6104ca8882890161036c565b95505060206104db888289016103d4565b94505060406104ec8882890161040a565b935050606086013567ffffffffffffffff81111561050d5761050c610362565b5b6105198882890161042e565b92509250509295509295909350565b610531816103e9565b82525050565b600060208201905061054c6000830184610528565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061059957607f821691505b6020821081036105ac576105ab610552565b5b50919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261064e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610611565b6106588683610611565b95508019841693508086168417925050509392505050565b6000819050919050565b600061069561069061068b846103e9565b610670565b6103e9565b9050919050565b6000819050919050565b6106af8361067a565b6106c36106bb8261069c565b84845461061e565b825550505050565b600090565b6106d86106cb565b6106e38184846106a6565b505050565b5b81811015610707576106fc6000826106d0565b6001810190506106e9565b5050565b601f82111561074c5761071d816105ec565b61072684610601565b81016020851015610735578190505b61074961074185610601565b8301826106e8565b50505b505050565b600082821c905092915050565b600061076f60001984600802610751565b1980831691505092915050565b6000610788838361075e565b9150826002028217905092915050565b6107a283836105b2565b67ffffffffffffffff8111156107bb576107ba6105bd565b5b6107c58254610581565b6107d082828561070b565b6000601f8311600181146107ff57600084156107ed578287013590505b6107f7858261077c565b86555061085f565b601f19841661080d866105ec565b60005b8281101561083557848901358255600182019150602085019450602081019050610810565b86831015610852578489013561084e601f89168261075e565b8355505b6001600288020188555050505b50505050505050565b600082825260208201905092915050565b7f666f6f0000000000000000000000000000000000000000000000000000000000600082015250565b60006108af600383610868565b91506108ba82610879565b602082019050919050565b600060208201905081810360008301526108de816108a2565b905091905056fea26469706673582212209cfc763a2051af7ae03bd5c8a8765e80a09469a9bb8875cda4c3917306b2238264736f6c634300081a0033" } diff --git a/testutil/contracts/Example.sol b/testutil/contracts/Example.sol index 7109ebc60a..365a37c295 100644 --- a/testutil/contracts/Example.sol +++ b/testutil/contracts/Example.sol @@ -40,6 +40,15 @@ contract Example { uint256 amount, bytes calldata message ) external { + onCall(context, zrc20, amount, message); + } + + function onCall( + zContext calldata context, + address zrc20, + uint256 amount, + bytes calldata message + ) public { bar = amount; lastMessage = message; } diff --git a/testutil/contracts/Reverter.bin b/testutil/contracts/Reverter.bin index 582d94be71..cc4c1254cb 100644 --- a/testutil/contracts/Reverter.bin +++ b/testutil/contracts/Reverter.bin @@ -1 +1 @@ -6080604052348015600f57600080fd5b5061027f8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a600480360381019061004591906101a5565b61004c565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600080fd5b6000606082840312156100a3576100a2610088565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d7826100ac565b9050919050565b6100e7816100cc565b81146100f257600080fd5b50565b600081359050610104816100de565b92915050565b6000819050919050565b61011d8161010a565b811461012857600080fd5b50565b60008135905061013a81610114565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261016557610164610140565b5b8235905067ffffffffffffffff81111561018257610181610145565b5b60208301915083600182028301111561019e5761019d61014a565b5b9250929050565b6000806000806000608086880312156101c1576101c061007e565b5b600086013567ffffffffffffffff8111156101df576101de610083565b5b6101eb8882890161008d565b95505060206101fc888289016100f5565b945050604061020d8882890161012b565b935050606086013567ffffffffffffffff81111561022e5761022d610083565b5b61023a8882890161014f565b9250925050929550929590935056fea26469706673582212209d6fef8c2cffe61b2d6b1a5bf4d6f71d1ade0e1a1e6a8c8e9f09fe1c28a520d164736f6c63430008190033 +6080604052348015600f57600080fd5b5061027f8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a600480360381019061004591906101a5565b61004c565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600080fd5b6000606082840312156100a3576100a2610088565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d7826100ac565b9050919050565b6100e7816100cc565b81146100f257600080fd5b50565b600081359050610104816100de565b92915050565b6000819050919050565b61011d8161010a565b811461012857600080fd5b50565b60008135905061013a81610114565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261016557610164610140565b5b8235905067ffffffffffffffff81111561018257610181610145565b5b60208301915083600182028301111561019e5761019d61014a565b5b9250929050565b6000806000806000608086880312156101c1576101c061007e565b5b600086013567ffffffffffffffff8111156101df576101de610083565b5b6101eb8882890161008d565b95505060206101fc888289016100f5565b945050604061020d8882890161012b565b935050606086013567ffffffffffffffff81111561022e5761022d610083565b5b61023a8882890161014f565b9250925050929550929590935056fea2646970667358221220bc9e93b2d3f5e1969fc6b9d1d00d7fb28bdcb33a4e9f24aeb392acacc895146464736f6c634300081a0033 diff --git a/testutil/contracts/Reverter.go b/testutil/contracts/Reverter.go index 1e551e9362..806ebeed0f 100644 --- a/testutil/contracts/Reverter.go +++ b/testutil/contracts/Reverter.go @@ -26,6 +26,7 @@ var ( _ = common.Big1 _ = types.BloomLookup _ = event.NewSubscription + _ = abi.ConvertType ) // ReverterzContext is an auto generated low-level Go binding around an user-defined struct. @@ -38,7 +39,7 @@ type ReverterzContext struct { // ReverterMetaData contains all meta data concerning the Reverter contract. var ReverterMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"Foo\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structReverter.zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600f57600080fd5b5061027f8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a600480360381019061004591906101a5565b61004c565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600080fd5b6000606082840312156100a3576100a2610088565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d7826100ac565b9050919050565b6100e7816100cc565b81146100f257600080fd5b50565b600081359050610104816100de565b92915050565b6000819050919050565b61011d8161010a565b811461012857600080fd5b50565b60008135905061013a81610114565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261016557610164610140565b5b8235905067ffffffffffffffff81111561018257610181610145565b5b60208301915083600182028301111561019e5761019d61014a565b5b9250929050565b6000806000806000608086880312156101c1576101c061007e565b5b600086013567ffffffffffffffff8111156101df576101de610083565b5b6101eb8882890161008d565b95505060206101fc888289016100f5565b945050604061020d8882890161012b565b935050606086013567ffffffffffffffff81111561022e5761022d610083565b5b61023a8882890161014f565b9250925050929550929590935056fea26469706673582212209d6fef8c2cffe61b2d6b1a5bf4d6f71d1ade0e1a1e6a8c8e9f09fe1c28a520d164736f6c63430008190033", + Bin: "0x6080604052348015600f57600080fd5b5061027f8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a600480360381019061004591906101a5565b61004c565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600080fd5b6000606082840312156100a3576100a2610088565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d7826100ac565b9050919050565b6100e7816100cc565b81146100f257600080fd5b50565b600081359050610104816100de565b92915050565b6000819050919050565b61011d8161010a565b811461012857600080fd5b50565b60008135905061013a81610114565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261016557610164610140565b5b8235905067ffffffffffffffff81111561018257610181610145565b5b60208301915083600182028301111561019e5761019d61014a565b5b9250929050565b6000806000806000608086880312156101c1576101c061007e565b5b600086013567ffffffffffffffff8111156101df576101de610083565b5b6101eb8882890161008d565b95505060206101fc888289016100f5565b945050604061020d8882890161012b565b935050606086013567ffffffffffffffff81111561022e5761022d610083565b5b61023a8882890161014f565b9250925050929550929590935056fea2646970667358221220bc9e93b2d3f5e1969fc6b9d1d00d7fb28bdcb33a4e9f24aeb392acacc895146464736f6c634300081a0033", } // ReverterABI is the input ABI used to generate the binding from. @@ -163,11 +164,11 @@ func NewReverterFilterer(address common.Address, filterer bind.ContractFilterer) // bindReverter binds a generic wrapper to an already deployed contract. func bindReverter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(ReverterABI)) + parsed, err := ReverterMetaData.GetAbi() if err != nil { return nil, err } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } // Call invokes the (constant) contract method with params as input values and diff --git a/testutil/contracts/Reverter.json b/testutil/contracts/Reverter.json index c6ac51dde4..2e935c52bb 100644 --- a/testutil/contracts/Reverter.json +++ b/testutil/contracts/Reverter.json @@ -51,5 +51,5 @@ "type": "function" } ], - "bin": "6080604052348015600f57600080fd5b5061027f8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a600480360381019061004591906101a5565b61004c565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600080fd5b6000606082840312156100a3576100a2610088565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d7826100ac565b9050919050565b6100e7816100cc565b81146100f257600080fd5b50565b600081359050610104816100de565b92915050565b6000819050919050565b61011d8161010a565b811461012857600080fd5b50565b60008135905061013a81610114565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261016557610164610140565b5b8235905067ffffffffffffffff81111561018257610181610145565b5b60208301915083600182028301111561019e5761019d61014a565b5b9250929050565b6000806000806000608086880312156101c1576101c061007e565b5b600086013567ffffffffffffffff8111156101df576101de610083565b5b6101eb8882890161008d565b95505060206101fc888289016100f5565b945050604061020d8882890161012b565b935050606086013567ffffffffffffffff81111561022e5761022d610083565b5b61023a8882890161014f565b9250925050929550929590935056fea26469706673582212209d6fef8c2cffe61b2d6b1a5bf4d6f71d1ade0e1a1e6a8c8e9f09fe1c28a520d164736f6c63430008190033" + "bin": "6080604052348015600f57600080fd5b5061027f8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a600480360381019061004591906101a5565b61004c565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600080fd5b6000606082840312156100a3576100a2610088565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d7826100ac565b9050919050565b6100e7816100cc565b81146100f257600080fd5b50565b600081359050610104816100de565b92915050565b6000819050919050565b61011d8161010a565b811461012857600080fd5b50565b60008135905061013a81610114565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261016557610164610140565b5b8235905067ffffffffffffffff81111561018257610181610145565b5b60208301915083600182028301111561019e5761019d61014a565b5b9250929050565b6000806000806000608086880312156101c1576101c061007e565b5b600086013567ffffffffffffffff8111156101df576101de610083565b5b6101eb8882890161008d565b95505060206101fc888289016100f5565b945050604061020d8882890161012b565b935050606086013567ffffffffffffffff81111561022e5761022d610083565b5b61023a8882890161014f565b9250925050929550929590935056fea2646970667358221220bc9e93b2d3f5e1969fc6b9d1d00d7fb28bdcb33a4e9f24aeb392acacc895146464736f6c634300081a0033" } diff --git a/testutil/contracts/Withdrawer.bin b/testutil/contracts/Withdrawer.bin index b618dfb11d..7f7647be18 100644 --- a/testutil/contracts/Withdrawer.bin +++ b/testutil/contracts/Withdrawer.bin @@ -1 +1 @@ -6080604052348015600f57600080fd5b506107568061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e3be6f6814610030575b600080fd5b61004a600480360381019061004591906103ff565b61004c565b005b6000808473ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b815260040160408051808303816000875af115801561009b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bf91906104c8565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd33306001876100ee9190610537565b856100f9919061056b565b6040518463ffffffff1660e01b8152600401610117939291906105cb565b600060405180830381600087803b15801561013157600080fd5b505af1158015610145573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3866001866101739190610537565b8461017e919061056b565b6040518363ffffffff1660e01b815260040161019b929190610602565b600060405180830381600087803b1580156101b557600080fd5b505af11580156101c9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff166323b872dd333086886101f7919061056b565b6040518463ffffffff1660e01b8152600401610215939291906105cb565b600060405180830381600087803b15801561022f57600080fd5b505af1158015610243573d6000803e3d6000fd5b5050505060005b838110156102e0578573ffffffffffffffffffffffffffffffffffffffff1663c70126268989886040518463ffffffff1660e01b815260040161028f93929190610689565b6020604051808303816000875af11580156102ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d291906106f3565b50808060010191505061024a565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610319576103186102f4565b5b8235905067ffffffffffffffff811115610336576103356102f9565b5b602083019150836001820283011115610352576103516102fe565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061038482610359565b9050919050565b600061039682610379565b9050919050565b6103a68161038b565b81146103b157600080fd5b50565b6000813590506103c38161039d565b92915050565b6000819050919050565b6103dc816103c9565b81146103e757600080fd5b50565b6000813590506103f9816103d3565b92915050565b60008060008060006080868803121561041b5761041a6102ea565b5b600086013567ffffffffffffffff811115610439576104386102ef565b5b61044588828901610303565b95509550506020610458888289016103b4565b9350506040610469888289016103ea565b925050606061047a888289016103ea565b9150509295509295909350565b61049081610379565b811461049b57600080fd5b50565b6000815190506104ad81610487565b92915050565b6000815190506104c2816103d3565b92915050565b600080604083850312156104df576104de6102ea565b5b60006104ed8582860161049e565b92505060206104fe858286016104b3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610542826103c9565b915061054d836103c9565b925082820190508082111561056557610564610508565b5b92915050565b6000610576826103c9565b9150610581836103c9565b925082820261058f816103c9565b915082820484148315176105a6576105a5610508565b5b5092915050565b6105b681610379565b82525050565b6105c5816103c9565b82525050565b60006060820190506105e060008301866105ad565b6105ed60208301856105ad565b6105fa60408301846105bc565b949350505050565b600060408201905061061760008301856105ad565b61062460208301846105bc565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610668838561062b565b935061067583858461063c565b61067e8361064b565b840190509392505050565b600060408201905081810360008301526106a481858761065c565b90506106b360208301846105bc565b949350505050565b60008115159050919050565b6106d0816106bb565b81146106db57600080fd5b50565b6000815190506106ed816106c7565b92915050565b600060208284031215610709576107086102ea565b5b6000610717848285016106de565b9150509291505056fea264697066735822122041c37b70ead002476ecfdd58a860341299d12b3a46089a50bd573e25dbb8af3a64736f6c63430008190033 +6080604052348015600f57600080fd5b506107568061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e3be6f6814610030575b600080fd5b61004a600480360381019061004591906103ff565b61004c565b005b6000808473ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b815260040160408051808303816000875af115801561009b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bf91906104c8565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd33306001876100ee9190610537565b856100f9919061056b565b6040518463ffffffff1660e01b8152600401610117939291906105cb565b600060405180830381600087803b15801561013157600080fd5b505af1158015610145573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3866001866101739190610537565b8461017e919061056b565b6040518363ffffffff1660e01b815260040161019b929190610602565b600060405180830381600087803b1580156101b557600080fd5b505af11580156101c9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff166323b872dd333086886101f7919061056b565b6040518463ffffffff1660e01b8152600401610215939291906105cb565b600060405180830381600087803b15801561022f57600080fd5b505af1158015610243573d6000803e3d6000fd5b5050505060005b838110156102e0578573ffffffffffffffffffffffffffffffffffffffff1663c70126268989886040518463ffffffff1660e01b815260040161028f93929190610689565b6020604051808303816000875af11580156102ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d291906106f3565b50808060010191505061024a565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610319576103186102f4565b5b8235905067ffffffffffffffff811115610336576103356102f9565b5b602083019150836001820283011115610352576103516102fe565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061038482610359565b9050919050565b600061039682610379565b9050919050565b6103a68161038b565b81146103b157600080fd5b50565b6000813590506103c38161039d565b92915050565b6000819050919050565b6103dc816103c9565b81146103e757600080fd5b50565b6000813590506103f9816103d3565b92915050565b60008060008060006080868803121561041b5761041a6102ea565b5b600086013567ffffffffffffffff811115610439576104386102ef565b5b61044588828901610303565b95509550506020610458888289016103b4565b9350506040610469888289016103ea565b925050606061047a888289016103ea565b9150509295509295909350565b61049081610379565b811461049b57600080fd5b50565b6000815190506104ad81610487565b92915050565b6000815190506104c2816103d3565b92915050565b600080604083850312156104df576104de6102ea565b5b60006104ed8582860161049e565b92505060206104fe858286016104b3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610542826103c9565b915061054d836103c9565b925082820190508082111561056557610564610508565b5b92915050565b6000610576826103c9565b9150610581836103c9565b925082820261058f816103c9565b915082820484148315176105a6576105a5610508565b5b5092915050565b6105b681610379565b82525050565b6105c5816103c9565b82525050565b60006060820190506105e060008301866105ad565b6105ed60208301856105ad565b6105fa60408301846105bc565b949350505050565b600060408201905061061760008301856105ad565b61062460208301846105bc565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610668838561062b565b935061067583858461063c565b61067e8361064b565b840190509392505050565b600060408201905081810360008301526106a481858761065c565b90506106b360208301846105bc565b949350505050565b60008115159050919050565b6106d0816106bb565b81146106db57600080fd5b50565b6000815190506106ed816106c7565b92915050565b600060208284031215610709576107086102ea565b5b6000610717848285016106de565b9150509291505056fea264697066735822122033078b0e7edd03713aac7b1ea4af78a8bbb265244bacc401ddfadb2e31303c4564736f6c634300081a0033 diff --git a/testutil/contracts/Withdrawer.go b/testutil/contracts/Withdrawer.go index 3fb88de4aa..2e3c6aad5a 100644 --- a/testutil/contracts/Withdrawer.go +++ b/testutil/contracts/Withdrawer.go @@ -26,12 +26,13 @@ var ( _ = common.Big1 _ = types.BloomLookup _ = event.NewSubscription + _ = abi.ConvertType ) // WithdrawerMetaData contains all meta data concerning the Withdrawer contract. var WithdrawerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"contractIZRC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"runWithdraws\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600f57600080fd5b506107568061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e3be6f6814610030575b600080fd5b61004a600480360381019061004591906103ff565b61004c565b005b6000808473ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b815260040160408051808303816000875af115801561009b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bf91906104c8565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd33306001876100ee9190610537565b856100f9919061056b565b6040518463ffffffff1660e01b8152600401610117939291906105cb565b600060405180830381600087803b15801561013157600080fd5b505af1158015610145573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3866001866101739190610537565b8461017e919061056b565b6040518363ffffffff1660e01b815260040161019b929190610602565b600060405180830381600087803b1580156101b557600080fd5b505af11580156101c9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff166323b872dd333086886101f7919061056b565b6040518463ffffffff1660e01b8152600401610215939291906105cb565b600060405180830381600087803b15801561022f57600080fd5b505af1158015610243573d6000803e3d6000fd5b5050505060005b838110156102e0578573ffffffffffffffffffffffffffffffffffffffff1663c70126268989886040518463ffffffff1660e01b815260040161028f93929190610689565b6020604051808303816000875af11580156102ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d291906106f3565b50808060010191505061024a565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610319576103186102f4565b5b8235905067ffffffffffffffff811115610336576103356102f9565b5b602083019150836001820283011115610352576103516102fe565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061038482610359565b9050919050565b600061039682610379565b9050919050565b6103a68161038b565b81146103b157600080fd5b50565b6000813590506103c38161039d565b92915050565b6000819050919050565b6103dc816103c9565b81146103e757600080fd5b50565b6000813590506103f9816103d3565b92915050565b60008060008060006080868803121561041b5761041a6102ea565b5b600086013567ffffffffffffffff811115610439576104386102ef565b5b61044588828901610303565b95509550506020610458888289016103b4565b9350506040610469888289016103ea565b925050606061047a888289016103ea565b9150509295509295909350565b61049081610379565b811461049b57600080fd5b50565b6000815190506104ad81610487565b92915050565b6000815190506104c2816103d3565b92915050565b600080604083850312156104df576104de6102ea565b5b60006104ed8582860161049e565b92505060206104fe858286016104b3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610542826103c9565b915061054d836103c9565b925082820190508082111561056557610564610508565b5b92915050565b6000610576826103c9565b9150610581836103c9565b925082820261058f816103c9565b915082820484148315176105a6576105a5610508565b5b5092915050565b6105b681610379565b82525050565b6105c5816103c9565b82525050565b60006060820190506105e060008301866105ad565b6105ed60208301856105ad565b6105fa60408301846105bc565b949350505050565b600060408201905061061760008301856105ad565b61062460208301846105bc565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610668838561062b565b935061067583858461063c565b61067e8361064b565b840190509392505050565b600060408201905081810360008301526106a481858761065c565b90506106b360208301846105bc565b949350505050565b60008115159050919050565b6106d0816106bb565b81146106db57600080fd5b50565b6000815190506106ed816106c7565b92915050565b600060208284031215610709576107086102ea565b5b6000610717848285016106de565b9150509291505056fea264697066735822122041c37b70ead002476ecfdd58a860341299d12b3a46089a50bd573e25dbb8af3a64736f6c63430008190033", + Bin: "0x6080604052348015600f57600080fd5b506107568061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e3be6f6814610030575b600080fd5b61004a600480360381019061004591906103ff565b61004c565b005b6000808473ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b815260040160408051808303816000875af115801561009b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bf91906104c8565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd33306001876100ee9190610537565b856100f9919061056b565b6040518463ffffffff1660e01b8152600401610117939291906105cb565b600060405180830381600087803b15801561013157600080fd5b505af1158015610145573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3866001866101739190610537565b8461017e919061056b565b6040518363ffffffff1660e01b815260040161019b929190610602565b600060405180830381600087803b1580156101b557600080fd5b505af11580156101c9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff166323b872dd333086886101f7919061056b565b6040518463ffffffff1660e01b8152600401610215939291906105cb565b600060405180830381600087803b15801561022f57600080fd5b505af1158015610243573d6000803e3d6000fd5b5050505060005b838110156102e0578573ffffffffffffffffffffffffffffffffffffffff1663c70126268989886040518463ffffffff1660e01b815260040161028f93929190610689565b6020604051808303816000875af11580156102ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d291906106f3565b50808060010191505061024a565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610319576103186102f4565b5b8235905067ffffffffffffffff811115610336576103356102f9565b5b602083019150836001820283011115610352576103516102fe565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061038482610359565b9050919050565b600061039682610379565b9050919050565b6103a68161038b565b81146103b157600080fd5b50565b6000813590506103c38161039d565b92915050565b6000819050919050565b6103dc816103c9565b81146103e757600080fd5b50565b6000813590506103f9816103d3565b92915050565b60008060008060006080868803121561041b5761041a6102ea565b5b600086013567ffffffffffffffff811115610439576104386102ef565b5b61044588828901610303565b95509550506020610458888289016103b4565b9350506040610469888289016103ea565b925050606061047a888289016103ea565b9150509295509295909350565b61049081610379565b811461049b57600080fd5b50565b6000815190506104ad81610487565b92915050565b6000815190506104c2816103d3565b92915050565b600080604083850312156104df576104de6102ea565b5b60006104ed8582860161049e565b92505060206104fe858286016104b3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610542826103c9565b915061054d836103c9565b925082820190508082111561056557610564610508565b5b92915050565b6000610576826103c9565b9150610581836103c9565b925082820261058f816103c9565b915082820484148315176105a6576105a5610508565b5b5092915050565b6105b681610379565b82525050565b6105c5816103c9565b82525050565b60006060820190506105e060008301866105ad565b6105ed60208301856105ad565b6105fa60408301846105bc565b949350505050565b600060408201905061061760008301856105ad565b61062460208301846105bc565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610668838561062b565b935061067583858461063c565b61067e8361064b565b840190509392505050565b600060408201905081810360008301526106a481858761065c565b90506106b360208301846105bc565b949350505050565b60008115159050919050565b6106d0816106bb565b81146106db57600080fd5b50565b6000815190506106ed816106c7565b92915050565b600060208284031215610709576107086102ea565b5b6000610717848285016106de565b9150509291505056fea264697066735822122033078b0e7edd03713aac7b1ea4af78a8bbb265244bacc401ddfadb2e31303c4564736f6c634300081a0033", } // WithdrawerABI is the input ABI used to generate the binding from. @@ -156,11 +157,11 @@ func NewWithdrawerFilterer(address common.Address, filterer bind.ContractFiltere // bindWithdrawer binds a generic wrapper to an already deployed contract. func bindWithdrawer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(WithdrawerABI)) + parsed, err := WithdrawerMetaData.GetAbi() if err != nil { return nil, err } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil } // Call invokes the (constant) contract method with params as input values and diff --git a/testutil/contracts/Withdrawer.json b/testutil/contracts/Withdrawer.json index 75e65977fa..93e8a80bfe 100644 --- a/testutil/contracts/Withdrawer.json +++ b/testutil/contracts/Withdrawer.json @@ -29,5 +29,5 @@ "type": "function" } ], - "bin": "6080604052348015600f57600080fd5b506107568061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e3be6f6814610030575b600080fd5b61004a600480360381019061004591906103ff565b61004c565b005b6000808473ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b815260040160408051808303816000875af115801561009b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bf91906104c8565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd33306001876100ee9190610537565b856100f9919061056b565b6040518463ffffffff1660e01b8152600401610117939291906105cb565b600060405180830381600087803b15801561013157600080fd5b505af1158015610145573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3866001866101739190610537565b8461017e919061056b565b6040518363ffffffff1660e01b815260040161019b929190610602565b600060405180830381600087803b1580156101b557600080fd5b505af11580156101c9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff166323b872dd333086886101f7919061056b565b6040518463ffffffff1660e01b8152600401610215939291906105cb565b600060405180830381600087803b15801561022f57600080fd5b505af1158015610243573d6000803e3d6000fd5b5050505060005b838110156102e0578573ffffffffffffffffffffffffffffffffffffffff1663c70126268989886040518463ffffffff1660e01b815260040161028f93929190610689565b6020604051808303816000875af11580156102ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d291906106f3565b50808060010191505061024a565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610319576103186102f4565b5b8235905067ffffffffffffffff811115610336576103356102f9565b5b602083019150836001820283011115610352576103516102fe565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061038482610359565b9050919050565b600061039682610379565b9050919050565b6103a68161038b565b81146103b157600080fd5b50565b6000813590506103c38161039d565b92915050565b6000819050919050565b6103dc816103c9565b81146103e757600080fd5b50565b6000813590506103f9816103d3565b92915050565b60008060008060006080868803121561041b5761041a6102ea565b5b600086013567ffffffffffffffff811115610439576104386102ef565b5b61044588828901610303565b95509550506020610458888289016103b4565b9350506040610469888289016103ea565b925050606061047a888289016103ea565b9150509295509295909350565b61049081610379565b811461049b57600080fd5b50565b6000815190506104ad81610487565b92915050565b6000815190506104c2816103d3565b92915050565b600080604083850312156104df576104de6102ea565b5b60006104ed8582860161049e565b92505060206104fe858286016104b3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610542826103c9565b915061054d836103c9565b925082820190508082111561056557610564610508565b5b92915050565b6000610576826103c9565b9150610581836103c9565b925082820261058f816103c9565b915082820484148315176105a6576105a5610508565b5b5092915050565b6105b681610379565b82525050565b6105c5816103c9565b82525050565b60006060820190506105e060008301866105ad565b6105ed60208301856105ad565b6105fa60408301846105bc565b949350505050565b600060408201905061061760008301856105ad565b61062460208301846105bc565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610668838561062b565b935061067583858461063c565b61067e8361064b565b840190509392505050565b600060408201905081810360008301526106a481858761065c565b90506106b360208301846105bc565b949350505050565b60008115159050919050565b6106d0816106bb565b81146106db57600080fd5b50565b6000815190506106ed816106c7565b92915050565b600060208284031215610709576107086102ea565b5b6000610717848285016106de565b9150509291505056fea264697066735822122041c37b70ead002476ecfdd58a860341299d12b3a46089a50bd573e25dbb8af3a64736f6c63430008190033" + "bin": "6080604052348015600f57600080fd5b506107568061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e3be6f6814610030575b600080fd5b61004a600480360381019061004591906103ff565b61004c565b005b6000808473ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b815260040160408051808303816000875af115801561009b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bf91906104c8565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd33306001876100ee9190610537565b856100f9919061056b565b6040518463ffffffff1660e01b8152600401610117939291906105cb565b600060405180830381600087803b15801561013157600080fd5b505af1158015610145573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3866001866101739190610537565b8461017e919061056b565b6040518363ffffffff1660e01b815260040161019b929190610602565b600060405180830381600087803b1580156101b557600080fd5b505af11580156101c9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff166323b872dd333086886101f7919061056b565b6040518463ffffffff1660e01b8152600401610215939291906105cb565b600060405180830381600087803b15801561022f57600080fd5b505af1158015610243573d6000803e3d6000fd5b5050505060005b838110156102e0578573ffffffffffffffffffffffffffffffffffffffff1663c70126268989886040518463ffffffff1660e01b815260040161028f93929190610689565b6020604051808303816000875af11580156102ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d291906106f3565b50808060010191505061024a565b5050505050505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610319576103186102f4565b5b8235905067ffffffffffffffff811115610336576103356102f9565b5b602083019150836001820283011115610352576103516102fe565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061038482610359565b9050919050565b600061039682610379565b9050919050565b6103a68161038b565b81146103b157600080fd5b50565b6000813590506103c38161039d565b92915050565b6000819050919050565b6103dc816103c9565b81146103e757600080fd5b50565b6000813590506103f9816103d3565b92915050565b60008060008060006080868803121561041b5761041a6102ea565b5b600086013567ffffffffffffffff811115610439576104386102ef565b5b61044588828901610303565b95509550506020610458888289016103b4565b9350506040610469888289016103ea565b925050606061047a888289016103ea565b9150509295509295909350565b61049081610379565b811461049b57600080fd5b50565b6000815190506104ad81610487565b92915050565b6000815190506104c2816103d3565b92915050565b600080604083850312156104df576104de6102ea565b5b60006104ed8582860161049e565b92505060206104fe858286016104b3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610542826103c9565b915061054d836103c9565b925082820190508082111561056557610564610508565b5b92915050565b6000610576826103c9565b9150610581836103c9565b925082820261058f816103c9565b915082820484148315176105a6576105a5610508565b5b5092915050565b6105b681610379565b82525050565b6105c5816103c9565b82525050565b60006060820190506105e060008301866105ad565b6105ed60208301856105ad565b6105fa60408301846105bc565b949350505050565b600060408201905061061760008301856105ad565b61062460208301846105bc565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610668838561062b565b935061067583858461063c565b61067e8361064b565b840190509392505050565b600060408201905081810360008301526106a481858761065c565b90506106b360208301846105bc565b949350505050565b60008115159050919050565b6106d0816106bb565b81146106db57600080fd5b50565b6000815190506106ed816106c7565b92915050565b600060208284031215610709576107086102ea565b5b6000610717848285016106de565b9150509291505056fea264697066735822122033078b0e7edd03713aac7b1ea4af78a8bbb265244bacc401ddfadb2e31303c4564736f6c634300081a0033" } From 2ff38af04059bdfda5d1995a3de027919c772f6f Mon Sep 17 00:00:00 2001 From: lumtis Date: Wed, 29 Jan 2025 15:13:03 +0100 Subject: [PATCH 4/8] add changelogs --- changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index c8cccee224..b9da25d605 100644 --- a/changelog.md +++ b/changelog.md @@ -19,7 +19,7 @@ * [3390](https://github.com/zeta-chain/node/pull/3390) - orchestrator V2: EVM observer-signer * [3326](https://github.com/zeta-chain/node/pull/3326) - improve error messages for cctx status object * [3418](https://github.com/zeta-chain/node/pull/3418) - orchestrator V2: TON observer-signer - +* [3432](https://github.com/zeta-chain/node/pull/3432) - use protocol contracts V2 with Solana deposits ### Fixes From 06a9efb5fef7b9beec002df2ef3ef880e904d45c Mon Sep 17 00:00:00 2001 From: lumtis Date: Thu, 30 Jan 2025 10:31:49 +0100 Subject: [PATCH 5/8] unit tests --- pkg/contracts/solana/inbound_test.go | 64 +++++++------------ .../chains/solana/observer/inbound_test.go | 38 +++++------ 2 files changed, 38 insertions(+), 64 deletions(-) diff --git a/pkg/contracts/solana/inbound_test.go b/pkg/contracts/solana/inbound_test.go index fdaf4e8fca..a69183cde2 100644 --- a/pkg/contracts/solana/inbound_test.go +++ b/pkg/contracts/solana/inbound_test.go @@ -1,7 +1,6 @@ package solana import ( - "encoding/hex" "encoding/json" "fmt" "os" @@ -58,6 +57,7 @@ func Test_ParseInboundAsDeposit(t *testing.T) { require.NoError(t, err) expectedDeposit := &Deposit{ Sender: sender, + Receiver: "0x103FD9224F00ce3013e95629e52DFc31D805D68d", Amount: 12000000, Memo: []byte{}, Slot: txResult.Slot, @@ -159,36 +159,15 @@ func Test_ParseInboundAsDepositAndCall(t *testing.T) { // expected result // solana e2e deployer account sender := "37yGiHAnLvWZUNVwu9esp74YQFqxU1qHCbABkDvRddUQ" - // example contract deployed during e2e test, read from tx result - expectedReceiver := []byte{ - 117, - 160, - 106, - 140, - 37, - 135, - 57, - 218, - 223, - 226, - 53, - 45, - 87, - 151, - 61, - 239, - 158, - 231, - 162, - 186, - } expectedMsg := []byte("hello lamports") expectedDeposit := &Deposit{ - Sender: sender, - Amount: 1200000, - Memo: append(expectedReceiver, expectedMsg...), - Slot: txResult.Slot, - Asset: "", + Sender: sender, + Receiver: "0x75A06a8C258739dADfe2352D57973deF9ee7A2ba", + Amount: 1200000, + Memo: expectedMsg, + Slot: txResult.Slot, + Asset: "", + IsCrossChainCall: true, } t.Run("should parse inbound event deposit SOL and call", func(t *testing.T) { @@ -284,15 +263,15 @@ func Test_ParseInboundAsDepositSPL(t *testing.T) { // expected result // solana e2e deployer account sender := "37yGiHAnLvWZUNVwu9esp74YQFqxU1qHCbABkDvRddUQ" - // solana e2e user evm account - expectedMemo, err := hex.DecodeString("103fd9224f00ce3013e95629e52dfc31d805d68d") require.NoError(t, err) expectedDeposit := &Deposit{ - Sender: sender, - Amount: 12000000, - Memo: expectedMemo, - Slot: txResult.Slot, - Asset: "BTmtL9Dh2DcwhPntEbjo3rSWpmz1EhXsmohSC7CGSEWw", // SPL address + Sender: sender, + Receiver: "0x103FD9224F00ce3013e95629e52DFc31D805D68d", + Amount: 12000000, + Memo: []byte{}, + Slot: txResult.Slot, + Asset: "BTmtL9Dh2DcwhPntEbjo3rSWpmz1EhXsmohSC7CGSEWw", // SPL address + IsCrossChainCall: false, } t.Run("should parse inbound event deposit SPL", func(t *testing.T) { @@ -389,14 +368,15 @@ func Test_ParseInboundAsDepositAndCallSPL(t *testing.T) { // solana e2e deployer account sender := "37yGiHAnLvWZUNVwu9esp74YQFqxU1qHCbABkDvRddUQ" // example contract deployed during e2e test, read from tx result - expectedReceiver := []byte{213, 254, 240, 66, 1, 154, 250, 238, 39, 131, 9, 45, 5, 2, 190, 192, 20, 31, 103, 209} expectedMsg := []byte("hello spl tokens") expectedDeposit := &Deposit{ - Sender: sender, - Amount: 12000000, - Memo: append(expectedReceiver, expectedMsg...), - Slot: txResult.Slot, - Asset: "7d4ehzE4WNgithQZMyQFDhmHyN6rQNTEC7re1bsRN7TX", // SPL address + Sender: sender, + Receiver: "0xd5Fef042019aFAEe2783092d0502bEc0141f67D1", + Amount: 12000000, + Memo: expectedMsg, + Slot: txResult.Slot, + Asset: "7d4ehzE4WNgithQZMyQFDhmHyN6rQNTEC7re1bsRN7TX", // SPL address, + IsCrossChainCall: true, } t.Run("should parse inbound event deposit SPL", func(t *testing.T) { diff --git a/zetaclient/chains/solana/observer/inbound_test.go b/zetaclient/chains/solana/observer/inbound_test.go index c162aa461c..c643eb37bf 100644 --- a/zetaclient/chains/solana/observer/inbound_test.go +++ b/zetaclient/chains/solana/observer/inbound_test.go @@ -2,6 +2,7 @@ package observer_test import ( "context" + "encoding/hex" "testing" "github.com/rs/zerolog" @@ -73,19 +74,19 @@ func Test_FilterInboundEvents(t *testing.T) { // expected result sender := "HgTpiVRvjUPUcWLzdmCgdadu1GceJNgBWLoN9r66p8o3" - expectedMemo := []byte{109, 163, 11, 250, 101, 232, 90, 22, 176, 91, 206, 56, 70, 51, 158, 210, 188, 116, 99, 22} eventExpected := &clienttypes.InboundEvent{ - SenderChainID: chain.ChainId, - Sender: sender, - Receiver: "", - TxOrigin: sender, - Amount: 100000000, - Memo: expectedMemo, - BlockNumber: txResult.Slot, - TxHash: txHash, - Index: 0, // not a EVM smart contract call - CoinType: coin.CoinType_Gas, - Asset: "", // no asset for gas token SOL + SenderChainID: chain.ChainId, + Sender: sender, + Receiver: "0x6dA30bFA65E85a16b05bCE3846339ed2BC746316", + TxOrigin: sender, + Amount: 100000000, + Memo: []byte{}, + BlockNumber: txResult.Slot, + TxHash: txHash, + Index: 0, // not a EVM smart contract call + CoinType: coin.CoinType_Gas, + Asset: "", // no asset for gas token SOL + IsCrossChainCall: false, } t.Run("should filter inbound event deposit SOL", func(t *testing.T) { @@ -120,21 +121,14 @@ func Test_BuildInboundVoteMsgFromEvent(t *testing.T) { t.Run("should return vote msg for valid event", func(t *testing.T) { sender := sample.SolanaAddress(t) receiver := sample.EthAddress() - event := sample.InboundEvent(chain.ChainId, sender, "", 1280, receiver.Bytes()) + message := sample.Bytes() + event := sample.InboundEvent(chain.ChainId, sender, receiver.Hex(), 1280, message) msg := ob.BuildInboundVoteMsgFromEvent(event) require.NotNil(t, msg) require.Equal(t, sender, msg.Sender) require.Equal(t, receiver.Hex(), msg.Receiver) - }) - - t.Run("should return nil if failed to decode memo", func(t *testing.T) { - sender := sample.SolanaAddress(t) - memo := []byte("a memo too short") - event := sample.InboundEvent(chain.ChainId, sender, sender, 1280, memo) - - msg := ob.BuildInboundVoteMsgFromEvent(event) - require.Nil(t, msg) + require.Equal(t, hex.EncodeToString(message), msg.Message) }) t.Run("should return nil if event is not processable", func(t *testing.T) { From 86be6964ac68e8d2d0ab995c2e9fbe31e11f5046 Mon Sep 17 00:00:00 2001 From: lumtis Date: Fri, 31 Jan 2025 16:24:58 +0100 Subject: [PATCH 6/8] rename test --- ...a_deposit_refund.go => test_solana_deposit_and_call_revert.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename e2e/e2etests/{test_solana_deposit_refund.go => test_solana_deposit_and_call_revert.go} (100%) diff --git a/e2e/e2etests/test_solana_deposit_refund.go b/e2e/e2etests/test_solana_deposit_and_call_revert.go similarity index 100% rename from e2e/e2etests/test_solana_deposit_refund.go rename to e2e/e2etests/test_solana_deposit_and_call_revert.go From fa994eebadc19de5589e5a29778637484eabd60b Mon Sep 17 00:00:00 2001 From: lumtis Date: Fri, 31 Jan 2025 18:12:14 +0100 Subject: [PATCH 7/8] fix reverter contract --- testutil/contracts/Reverter.abi | 45 ++++++++++++++++++++++++++++++ testutil/contracts/Reverter.bin | 2 +- testutil/contracts/Reverter.go | 25 +++++++++++++++-- testutil/contracts/Reverter.json | 47 +++++++++++++++++++++++++++++++- testutil/contracts/Reverter.sol | 9 ++++++ 5 files changed, 124 insertions(+), 4 deletions(-) diff --git a/testutil/contracts/Reverter.abi b/testutil/contracts/Reverter.abi index 7183768beb..0f9feacdde 100644 --- a/testutil/contracts/Reverter.abi +++ b/testutil/contracts/Reverter.abi @@ -4,6 +4,51 @@ "name": "Foo", "type": "error" }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "origin", + "type": "bytes" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "chainID", + "type": "uint256" + } + ], + "internalType": "struct Reverter.zContext", + "name": "context", + "type": "tuple" + }, + { + "internalType": "address", + "name": "zrc20", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "onCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/testutil/contracts/Reverter.bin b/testutil/contracts/Reverter.bin index cc4c1254cb..0226dd7916 100644 --- a/testutil/contracts/Reverter.bin +++ b/testutil/contracts/Reverter.bin @@ -1 +1 @@ -6080604052348015600f57600080fd5b5061027f8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a600480360381019061004591906101a5565b61004c565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600080fd5b6000606082840312156100a3576100a2610088565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d7826100ac565b9050919050565b6100e7816100cc565b81146100f257600080fd5b50565b600081359050610104816100de565b92915050565b6000819050919050565b61011d8161010a565b811461012857600080fd5b50565b60008135905061013a81610114565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261016557610164610140565b5b8235905067ffffffffffffffff81111561018257610181610145565b5b60208301915083600182028301111561019e5761019d61014a565b5b9250929050565b6000806000806000608086880312156101c1576101c061007e565b5b600086013567ffffffffffffffff8111156101df576101de610083565b5b6101eb8882890161008d565b95505060206101fc888289016100f5565b945050604061020d8882890161012b565b935050606086013567ffffffffffffffff81111561022e5761022d610083565b5b61023a8882890161014f565b9250925050929550929590935056fea2646970667358221220bc9e93b2d3f5e1969fc6b9d1d00d7fb28bdcb33a4e9f24aeb392acacc895146464736f6c634300081a0033 +6080604052348015600f57600080fd5b506102ba8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635bcfd6161461003b578063de43156e14610057575b600080fd5b610055600480360381019061005091906101e0565b610073565b005b610071600480360381019061006c91906101e0565b6100a5565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100b28585858585610073565b5050505050565b600080fd5b600080fd5b600080fd5b6000606082840312156100de576100dd6100c3565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610112826100e7565b9050919050565b61012281610107565b811461012d57600080fd5b50565b60008135905061013f81610119565b92915050565b6000819050919050565b61015881610145565b811461016357600080fd5b50565b6000813590506101758161014f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126101a05761019f61017b565b5b8235905067ffffffffffffffff8111156101bd576101bc610180565b5b6020830191508360018202830111156101d9576101d8610185565b5b9250929050565b6000806000806000608086880312156101fc576101fb6100b9565b5b600086013567ffffffffffffffff81111561021a576102196100be565b5b610226888289016100c8565b955050602061023788828901610130565b945050604061024888828901610166565b935050606086013567ffffffffffffffff811115610269576102686100be565b5b6102758882890161018a565b9250925050929550929590935056fea2646970667358221220a7ad1881a453cbf7569a6a918894fa032e56cd977fe96c70d0fb9cf9c97d6bc264736f6c634300081a0033 diff --git a/testutil/contracts/Reverter.go b/testutil/contracts/Reverter.go index 806ebeed0f..7d9cb13bc3 100644 --- a/testutil/contracts/Reverter.go +++ b/testutil/contracts/Reverter.go @@ -38,8 +38,8 @@ type ReverterzContext struct { // ReverterMetaData contains all meta data concerning the Reverter contract. var ReverterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"Foo\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structReverter.zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600f57600080fd5b5061027f8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a600480360381019061004591906101a5565b61004c565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600080fd5b6000606082840312156100a3576100a2610088565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d7826100ac565b9050919050565b6100e7816100cc565b81146100f257600080fd5b50565b600081359050610104816100de565b92915050565b6000819050919050565b61011d8161010a565b811461012857600080fd5b50565b60008135905061013a81610114565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261016557610164610140565b5b8235905067ffffffffffffffff81111561018257610181610145565b5b60208301915083600182028301111561019e5761019d61014a565b5b9250929050565b6000806000806000608086880312156101c1576101c061007e565b5b600086013567ffffffffffffffff8111156101df576101de610083565b5b6101eb8882890161008d565b95505060206101fc888289016100f5565b945050604061020d8882890161012b565b935050606086013567ffffffffffffffff81111561022e5761022d610083565b5b61023a8882890161014f565b9250925050929550929590935056fea2646970667358221220bc9e93b2d3f5e1969fc6b9d1d00d7fb28bdcb33a4e9f24aeb392acacc895146464736f6c634300081a0033", + ABI: "[{\"inputs\":[],\"name\":\"Foo\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structReverter.zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structReverter.zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052348015600f57600080fd5b506102ba8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635bcfd6161461003b578063de43156e14610057575b600080fd5b610055600480360381019061005091906101e0565b610073565b005b610071600480360381019061006c91906101e0565b6100a5565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100b28585858585610073565b5050505050565b600080fd5b600080fd5b600080fd5b6000606082840312156100de576100dd6100c3565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610112826100e7565b9050919050565b61012281610107565b811461012d57600080fd5b50565b60008135905061013f81610119565b92915050565b6000819050919050565b61015881610145565b811461016357600080fd5b50565b6000813590506101758161014f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126101a05761019f61017b565b5b8235905067ffffffffffffffff8111156101bd576101bc610180565b5b6020830191508360018202830111156101d9576101d8610185565b5b9250929050565b6000806000806000608086880312156101fc576101fb6100b9565b5b600086013567ffffffffffffffff81111561021a576102196100be565b5b610226888289016100c8565b955050602061023788828901610130565b945050604061024888828901610166565b935050606086013567ffffffffffffffff811115610269576102686100be565b5b6102758882890161018a565b9250925050929550929590935056fea2646970667358221220a7ad1881a453cbf7569a6a918894fa032e56cd977fe96c70d0fb9cf9c97d6bc264736f6c634300081a0033", } // ReverterABI is the input ABI used to generate the binding from. @@ -209,6 +209,27 @@ func (_Reverter *ReverterTransactorRaw) Transact(opts *bind.TransactOpts, method return _Reverter.Contract.contract.Transact(opts, method, params...) } +// OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. +// +// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Reverter *ReverterTransactor) OnCall(opts *bind.TransactOpts, context ReverterzContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Reverter.contract.Transact(opts, "onCall", context, zrc20, amount, message) +} + +// OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. +// +// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Reverter *ReverterSession) OnCall(context ReverterzContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Reverter.Contract.OnCall(&_Reverter.TransactOpts, context, zrc20, amount, message) +} + +// OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. +// +// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Reverter *ReverterTransactorSession) OnCall(context ReverterzContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Reverter.Contract.OnCall(&_Reverter.TransactOpts, context, zrc20, amount, message) +} + // OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. // // Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() diff --git a/testutil/contracts/Reverter.json b/testutil/contracts/Reverter.json index 2e935c52bb..181dc6f30c 100644 --- a/testutil/contracts/Reverter.json +++ b/testutil/contracts/Reverter.json @@ -5,6 +5,51 @@ "name": "Foo", "type": "error" }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "origin", + "type": "bytes" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "chainID", + "type": "uint256" + } + ], + "internalType": "struct Reverter.zContext", + "name": "context", + "type": "tuple" + }, + { + "internalType": "address", + "name": "zrc20", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "onCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -51,5 +96,5 @@ "type": "function" } ], - "bin": "6080604052348015600f57600080fd5b5061027f8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063de43156e14610030575b600080fd5b61004a600480360381019061004591906101a5565b61004c565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b600080fd5b600080fd5b6000606082840312156100a3576100a2610088565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100d7826100ac565b9050919050565b6100e7816100cc565b81146100f257600080fd5b50565b600081359050610104816100de565b92915050565b6000819050919050565b61011d8161010a565b811461012857600080fd5b50565b60008135905061013a81610114565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261016557610164610140565b5b8235905067ffffffffffffffff81111561018257610181610145565b5b60208301915083600182028301111561019e5761019d61014a565b5b9250929050565b6000806000806000608086880312156101c1576101c061007e565b5b600086013567ffffffffffffffff8111156101df576101de610083565b5b6101eb8882890161008d565b95505060206101fc888289016100f5565b945050604061020d8882890161012b565b935050606086013567ffffffffffffffff81111561022e5761022d610083565b5b61023a8882890161014f565b9250925050929550929590935056fea2646970667358221220bc9e93b2d3f5e1969fc6b9d1d00d7fb28bdcb33a4e9f24aeb392acacc895146464736f6c634300081a0033" + "bin": "6080604052348015600f57600080fd5b506102ba8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635bcfd6161461003b578063de43156e14610057575b600080fd5b610055600480360381019061005091906101e0565b610073565b005b610071600480360381019061006c91906101e0565b6100a5565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100b28585858585610073565b5050505050565b600080fd5b600080fd5b600080fd5b6000606082840312156100de576100dd6100c3565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610112826100e7565b9050919050565b61012281610107565b811461012d57600080fd5b50565b60008135905061013f81610119565b92915050565b6000819050919050565b61015881610145565b811461016357600080fd5b50565b6000813590506101758161014f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126101a05761019f61017b565b5b8235905067ffffffffffffffff8111156101bd576101bc610180565b5b6020830191508360018202830111156101d9576101d8610185565b5b9250929050565b6000806000806000608086880312156101fc576101fb6100b9565b5b600086013567ffffffffffffffff81111561021a576102196100be565b5b610226888289016100c8565b955050602061023788828901610130565b945050604061024888828901610166565b935050606086013567ffffffffffffffff811115610269576102686100be565b5b6102758882890161018a565b9250925050929550929590935056fea2646970667358221220a7ad1881a453cbf7569a6a918894fa032e56cd977fe96c70d0fb9cf9c97d6bc264736f6c634300081a0033" } diff --git a/testutil/contracts/Reverter.sol b/testutil/contracts/Reverter.sol index d84eaa0b30..131034ebf9 100644 --- a/testutil/contracts/Reverter.sol +++ b/testutil/contracts/Reverter.sol @@ -17,6 +17,15 @@ contract Reverter { uint256 amount, bytes calldata message ) external { + onCall(context, zrc20, amount, message); + } + + function onCall( + zContext calldata context, + address zrc20, + uint256 amount, + bytes calldata message + ) public { revert Foo(); } } \ No newline at end of file From 421aeff876819685f7a4b38e0c3aabbde75e99b0 Mon Sep 17 00:00:00 2001 From: lumtis Date: Fri, 31 Jan 2025 18:24:03 +0100 Subject: [PATCH 8/8] rebuild bin --- testutil/contracts/Reverter.bin | 1 + testutil/contracts/Reverter.go | 252 +++++++++++++++++++++++++++++++ testutil/contracts/Reverter.json | 100 ++++++++++++ 3 files changed, 353 insertions(+) create mode 100644 testutil/contracts/Reverter.bin create mode 100644 testutil/contracts/Reverter.go create mode 100644 testutil/contracts/Reverter.json diff --git a/testutil/contracts/Reverter.bin b/testutil/contracts/Reverter.bin new file mode 100644 index 0000000000..0226dd7916 --- /dev/null +++ b/testutil/contracts/Reverter.bin @@ -0,0 +1 @@ +6080604052348015600f57600080fd5b506102ba8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635bcfd6161461003b578063de43156e14610057575b600080fd5b610055600480360381019061005091906101e0565b610073565b005b610071600480360381019061006c91906101e0565b6100a5565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100b28585858585610073565b5050505050565b600080fd5b600080fd5b600080fd5b6000606082840312156100de576100dd6100c3565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610112826100e7565b9050919050565b61012281610107565b811461012d57600080fd5b50565b60008135905061013f81610119565b92915050565b6000819050919050565b61015881610145565b811461016357600080fd5b50565b6000813590506101758161014f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126101a05761019f61017b565b5b8235905067ffffffffffffffff8111156101bd576101bc610180565b5b6020830191508360018202830111156101d9576101d8610185565b5b9250929050565b6000806000806000608086880312156101fc576101fb6100b9565b5b600086013567ffffffffffffffff81111561021a576102196100be565b5b610226888289016100c8565b955050602061023788828901610130565b945050604061024888828901610166565b935050606086013567ffffffffffffffff811115610269576102686100be565b5b6102758882890161018a565b9250925050929550929590935056fea2646970667358221220a7ad1881a453cbf7569a6a918894fa032e56cd977fe96c70d0fb9cf9c97d6bc264736f6c634300081a0033 diff --git a/testutil/contracts/Reverter.go b/testutil/contracts/Reverter.go new file mode 100644 index 0000000000..7d9cb13bc3 --- /dev/null +++ b/testutil/contracts/Reverter.go @@ -0,0 +1,252 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package contracts + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ReverterzContext is an auto generated low-level Go binding around an user-defined struct. +type ReverterzContext struct { + Origin []byte + Sender common.Address + ChainID *big.Int +} + +// ReverterMetaData contains all meta data concerning the Reverter contract. +var ReverterMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"Foo\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structReverter.zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"structReverter.zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052348015600f57600080fd5b506102ba8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635bcfd6161461003b578063de43156e14610057575b600080fd5b610055600480360381019061005091906101e0565b610073565b005b610071600480360381019061006c91906101e0565b6100a5565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100b28585858585610073565b5050505050565b600080fd5b600080fd5b600080fd5b6000606082840312156100de576100dd6100c3565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610112826100e7565b9050919050565b61012281610107565b811461012d57600080fd5b50565b60008135905061013f81610119565b92915050565b6000819050919050565b61015881610145565b811461016357600080fd5b50565b6000813590506101758161014f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126101a05761019f61017b565b5b8235905067ffffffffffffffff8111156101bd576101bc610180565b5b6020830191508360018202830111156101d9576101d8610185565b5b9250929050565b6000806000806000608086880312156101fc576101fb6100b9565b5b600086013567ffffffffffffffff81111561021a576102196100be565b5b610226888289016100c8565b955050602061023788828901610130565b945050604061024888828901610166565b935050606086013567ffffffffffffffff811115610269576102686100be565b5b6102758882890161018a565b9250925050929550929590935056fea2646970667358221220a7ad1881a453cbf7569a6a918894fa032e56cd977fe96c70d0fb9cf9c97d6bc264736f6c634300081a0033", +} + +// ReverterABI is the input ABI used to generate the binding from. +// Deprecated: Use ReverterMetaData.ABI instead. +var ReverterABI = ReverterMetaData.ABI + +// ReverterBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ReverterMetaData.Bin instead. +var ReverterBin = ReverterMetaData.Bin + +// DeployReverter deploys a new Ethereum contract, binding an instance of Reverter to it. +func DeployReverter(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Reverter, error) { + parsed, err := ReverterMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ReverterBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Reverter{ReverterCaller: ReverterCaller{contract: contract}, ReverterTransactor: ReverterTransactor{contract: contract}, ReverterFilterer: ReverterFilterer{contract: contract}}, nil +} + +// Reverter is an auto generated Go binding around an Ethereum contract. +type Reverter struct { + ReverterCaller // Read-only binding to the contract + ReverterTransactor // Write-only binding to the contract + ReverterFilterer // Log filterer for contract events +} + +// ReverterCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReverterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReverterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReverterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReverterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReverterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReverterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReverterSession struct { + Contract *Reverter // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReverterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReverterCallerSession struct { + Contract *ReverterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReverterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReverterTransactorSession struct { + Contract *ReverterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReverterRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReverterRaw struct { + Contract *Reverter // Generic contract binding to access the raw methods on +} + +// ReverterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReverterCallerRaw struct { + Contract *ReverterCaller // Generic read-only contract binding to access the raw methods on +} + +// ReverterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReverterTransactorRaw struct { + Contract *ReverterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReverter creates a new instance of Reverter, bound to a specific deployed contract. +func NewReverter(address common.Address, backend bind.ContractBackend) (*Reverter, error) { + contract, err := bindReverter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Reverter{ReverterCaller: ReverterCaller{contract: contract}, ReverterTransactor: ReverterTransactor{contract: contract}, ReverterFilterer: ReverterFilterer{contract: contract}}, nil +} + +// NewReverterCaller creates a new read-only instance of Reverter, bound to a specific deployed contract. +func NewReverterCaller(address common.Address, caller bind.ContractCaller) (*ReverterCaller, error) { + contract, err := bindReverter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReverterCaller{contract: contract}, nil +} + +// NewReverterTransactor creates a new write-only instance of Reverter, bound to a specific deployed contract. +func NewReverterTransactor(address common.Address, transactor bind.ContractTransactor) (*ReverterTransactor, error) { + contract, err := bindReverter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReverterTransactor{contract: contract}, nil +} + +// NewReverterFilterer creates a new log filterer instance of Reverter, bound to a specific deployed contract. +func NewReverterFilterer(address common.Address, filterer bind.ContractFilterer) (*ReverterFilterer, error) { + contract, err := bindReverter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReverterFilterer{contract: contract}, nil +} + +// bindReverter binds a generic wrapper to an already deployed contract. +func bindReverter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReverterMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Reverter *ReverterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Reverter.Contract.ReverterCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Reverter *ReverterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Reverter.Contract.ReverterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Reverter *ReverterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Reverter.Contract.ReverterTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Reverter *ReverterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Reverter.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Reverter *ReverterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Reverter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Reverter *ReverterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Reverter.Contract.contract.Transact(opts, method, params...) +} + +// OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. +// +// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Reverter *ReverterTransactor) OnCall(opts *bind.TransactOpts, context ReverterzContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Reverter.contract.Transact(opts, "onCall", context, zrc20, amount, message) +} + +// OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. +// +// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Reverter *ReverterSession) OnCall(context ReverterzContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Reverter.Contract.OnCall(&_Reverter.TransactOpts, context, zrc20, amount, message) +} + +// OnCall is a paid mutator transaction binding the contract method 0x5bcfd616. +// +// Solidity: function onCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Reverter *ReverterTransactorSession) OnCall(context ReverterzContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Reverter.Contract.OnCall(&_Reverter.TransactOpts, context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Reverter *ReverterTransactor) OnCrossChainCall(opts *bind.TransactOpts, context ReverterzContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Reverter.contract.Transact(opts, "onCrossChainCall", context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Reverter *ReverterSession) OnCrossChainCall(context ReverterzContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Reverter.Contract.OnCrossChainCall(&_Reverter.TransactOpts, context, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0xde43156e. +// +// Solidity: function onCrossChainCall((bytes,address,uint256) context, address zrc20, uint256 amount, bytes message) returns() +func (_Reverter *ReverterTransactorSession) OnCrossChainCall(context ReverterzContext, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Reverter.Contract.OnCrossChainCall(&_Reverter.TransactOpts, context, zrc20, amount, message) +} diff --git a/testutil/contracts/Reverter.json b/testutil/contracts/Reverter.json new file mode 100644 index 0000000000..181dc6f30c --- /dev/null +++ b/testutil/contracts/Reverter.json @@ -0,0 +1,100 @@ +{ + "abi": [ + { + "inputs": [], + "name": "Foo", + "type": "error" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "origin", + "type": "bytes" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "chainID", + "type": "uint256" + } + ], + "internalType": "struct Reverter.zContext", + "name": "context", + "type": "tuple" + }, + { + "internalType": "address", + "name": "zrc20", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "onCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "origin", + "type": "bytes" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "chainID", + "type": "uint256" + } + ], + "internalType": "struct Reverter.zContext", + "name": "context", + "type": "tuple" + }, + { + "internalType": "address", + "name": "zrc20", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + } + ], + "name": "onCrossChainCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bin": "6080604052348015600f57600080fd5b506102ba8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635bcfd6161461003b578063de43156e14610057575b600080fd5b610055600480360381019061005091906101e0565b610073565b005b610071600480360381019061006c91906101e0565b6100a5565b005b6040517fbfb4ebcf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100b28585858585610073565b5050505050565b600080fd5b600080fd5b600080fd5b6000606082840312156100de576100dd6100c3565b5b81905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610112826100e7565b9050919050565b61012281610107565b811461012d57600080fd5b50565b60008135905061013f81610119565b92915050565b6000819050919050565b61015881610145565b811461016357600080fd5b50565b6000813590506101758161014f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126101a05761019f61017b565b5b8235905067ffffffffffffffff8111156101bd576101bc610180565b5b6020830191508360018202830111156101d9576101d8610185565b5b9250929050565b6000806000806000608086880312156101fc576101fb6100b9565b5b600086013567ffffffffffffffff81111561021a576102196100be565b5b610226888289016100c8565b955050602061023788828901610130565b945050604061024888828901610166565b935050606086013567ffffffffffffffff811115610269576102686100be565b5b6102758882890161018a565b9250925050929550929590935056fea2646970667358221220a7ad1881a453cbf7569a6a918894fa032e56cd977fe96c70d0fb9cf9c97d6bc264736f6c634300081a0033" +}