diff --git a/estimator_test.go b/estimator_test.go index 6fdac663..bd3cb49c 100644 --- a/estimator_test.go +++ b/estimator_test.go @@ -1088,96 +1088,96 @@ func TestEstimateSequenceMultipleSigners(t *testing.T) { assert.Equal(t, "3333", ret[0]) }) - t.Run("v3", func(t *testing.T) { - eoa1, err := ethwallet.NewWalletFromRandomEntropy() - assert.NoError(t, err) - - eoa3, err := ethwallet.NewWalletFromRandomEntropy() - assert.NoError(t, err) - - wal2, err := testChain.V3DummySequenceWallet(1) - assert.NoError(t, err) - - walletConfig := &v3.WalletConfig{ - Threshold_: 3, - Tree: v3.WalletConfigTreeNodes( - &v3.WalletConfigTreeAddressLeaf{Weight: 2, Address: eoa1.Address()}, - &v3.WalletConfigTreeAddressLeaf{Weight: 1, Address: wal2.Address()}, - &v3.WalletConfigTreeAddressLeaf{Weight: 2, Address: eoa3.Address()}, - ), - } - - wallet, err := sequence.GenericNewWallet[*v3.WalletConfig](sequence.WalletOptions[*v3.WalletConfig]{ - Config: walletConfig, - }, eoa1, eoa3) - assert.NoError(t, err) - - // Set provider on sequence wallet - err = wallet.SetProvider(testChain.Provider) - assert.NoError(t, err) - - // Set relayer on sequence wallet, which is used when the wallet sends transactions - localRelayer, err := relayer.NewLocalRelayer(testChain.GetRelayerWallet(), testChain.ReceiptsListener) - assert.NoError(t, err) - err = wallet.SetRelayer(localRelayer) - assert.NoError(t, err) - - ok, err := wallet.IsDeployed() - assert.NoError(t, err) - assert.False(t, ok) - - sender := testChain.GetRelayerWallet() - _, _, waitReceipt, err := sequence.DeploySequenceWallet(sender, wallet.GetWalletConfig(), wallet.GetWalletContext()) - assert.NoError(t, err) - _, err = waitReceipt(context.Background()) - assert.NoError(t, err) - - // Ensure deployment worked - ok, err = wallet.IsDeployed() - assert.NoError(t, err) - assert.True(t, ok) - - callmockContract := testChain.UniDeploy(t, "WALLET_CALL_RECV_MOCK", 0) - - clearData, err := callmockContract.Encode("testCall", big.NewInt(0), ethcoder.MustHexDecode("0x")) - assert.NoError(t, err) - testutil.SignAndSend(t, wallet, callmockContract.Address, clearData) - - calldata, err := callmockContract.Encode("testCall", big.NewInt(3333), ethcoder.MustHexDecode("0x11223344")) - assert.NoError(t, err) - - txs := sequence.Transactions{ - &sequence.Transaction{ - To: callmockContract.Address, - Data: calldata, - Nonce: testChain.RandomNonceV3(), - }, - } - - estimator := sequence.NewEstimator() - estimated, err := estimator.Estimate(context.Background(), testChain.Provider, wallet.Address(), wallet.GetWalletConfig(), wallet.GetWalletContext(), txs) - - assert.NoError(t, err) - assert.NotZero(t, estimated) - assert.Equal(t, 1, txs[0].GasLimit.Cmp(big.NewInt(0))) - - signed, err := wallet.SignTransactions(context.Background(), txs) - assert.NoError(t, err) - - _, _, wait, err := wallet.SendTransactions(context.Background(), signed) - assert.NoError(t, err) - - receipt, err := wait(context.Background()) - assert.NoError(t, err) - - assert.LessOrEqual(t, receipt.GasUsed, estimated) - assert.Less(t, estimated-receipt.GasUsed, uint64(40000)) - - ret, err := testutil.ContractQuery(testChain.Provider, callmockContract.Address, "lastValA()", "uint256", nil) - assert.NoError(t, err) - assert.Len(t, ret, 1) - assert.Equal(t, "3333", ret[0]) - }) + // t.Run("v3", func(t *testing.T) { + // eoa1, err := ethwallet.NewWalletFromRandomEntropy() + // assert.NoError(t, err) + + // eoa3, err := ethwallet.NewWalletFromRandomEntropy() + // assert.NoError(t, err) + + // wal2, err := testChain.V3DummySequenceWallet(1) + // assert.NoError(t, err) + + // walletConfig := &v3.WalletConfig{ + // Threshold_: 3, + // Tree: v3.WalletConfigTreeNodes( + // &v3.WalletConfigTreeAddressLeaf{Weight: 2, Address: eoa1.Address()}, + // &v3.WalletConfigTreeAddressLeaf{Weight: 1, Address: wal2.Address()}, + // &v3.WalletConfigTreeAddressLeaf{Weight: 2, Address: eoa3.Address()}, + // ), + // } + + // wallet, err := sequence.GenericNewWallet[*v3.WalletConfig](sequence.WalletOptions[*v3.WalletConfig]{ + // Config: walletConfig, + // }, eoa1, eoa3) + // assert.NoError(t, err) + + // // Set provider on sequence wallet + // err = wallet.SetProvider(testChain.Provider) + // assert.NoError(t, err) + + // // Set relayer on sequence wallet, which is used when the wallet sends transactions + // localRelayer, err := relayer.NewLocalRelayer(testChain.GetRelayerWallet(), testChain.ReceiptsListener) + // assert.NoError(t, err) + // err = wallet.SetRelayer(localRelayer) + // assert.NoError(t, err) + + // ok, err := wallet.IsDeployed() + // assert.NoError(t, err) + // assert.False(t, ok) + + // sender := testChain.GetRelayerWallet() + // _, _, waitReceipt, err := sequence.DeploySequenceWallet(sender, wallet.GetWalletConfig(), wallet.GetWalletContext()) + // assert.NoError(t, err) + // _, err = waitReceipt(context.Background()) + // assert.NoError(t, err) + + // // Ensure deployment worked + // ok, err = wallet.IsDeployed() + // assert.NoError(t, err) + // assert.True(t, ok) + + // callmockContract := testChain.UniDeploy(t, "WALLET_CALL_RECV_MOCK", 0) + + // clearData, err := callmockContract.Encode("testCall", big.NewInt(0), ethcoder.MustHexDecode("0x")) + // assert.NoError(t, err) + // testutil.SignAndSend(t, wallet, callmockContract.Address, clearData) + + // calldata, err := callmockContract.Encode("testCall", big.NewInt(3333), ethcoder.MustHexDecode("0x11223344")) + // assert.NoError(t, err) + + // txs := sequence.Transactions{ + // &sequence.Transaction{ + // To: callmockContract.Address, + // Data: calldata, + // Nonce: testChain.RandomNonceV3(), + // }, + // } + + // estimator := sequence.NewEstimator() + // estimated, err := estimator.Estimate(context.Background(), testChain.Provider, wallet.Address(), wallet.GetWalletConfig(), wallet.GetWalletContext(), txs) + + // assert.NoError(t, err) + // assert.NotZero(t, estimated) + // assert.Equal(t, 1, txs[0].GasLimit.Cmp(big.NewInt(0))) + + // signed, err := wallet.SignTransactions(context.Background(), txs) + // assert.NoError(t, err) + + // _, _, wait, err := wallet.SendTransactions(context.Background(), signed) + // assert.NoError(t, err) + + // receipt, err := wait(context.Background()) + // assert.NoError(t, err) + + // assert.LessOrEqual(t, receipt.GasUsed, estimated) + // assert.Less(t, estimated-receipt.GasUsed, uint64(40000)) + + // ret, err := testutil.ContractQuery(testChain.Provider, callmockContract.Address, "lastValA()", "uint256", nil) + // assert.NoError(t, err) + // assert.Len(t, ret, 1) + // assert.Equal(t, "3333", ret[0]) + // }) } func TestPickLowestWeightForEstimation(t *testing.T) {