github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/e2e/ethtransfer_test.go (about) 1 package e2e 2 3 import ( 4 "context" 5 "math/big" 6 "testing" 7 "time" 8 9 "github.com/0xPolygon/supernets2-node/log" 10 "github.com/0xPolygon/supernets2-node/test/operations" 11 "github.com/ethereum/go-ethereum" 12 "github.com/ethereum/go-ethereum/common" 13 "github.com/ethereum/go-ethereum/core/types" 14 "github.com/ethereum/go-ethereum/ethclient" 15 "github.com/stretchr/testify/require" 16 ) 17 18 func TestEthTransfer(t *testing.T) { 19 if testing.Short() { 20 t.Skip() 21 } 22 23 ctx := context.Background() 24 defer func() { require.NoError(t, operations.Teardown()) }() 25 26 err := operations.Teardown() 27 require.NoError(t, err) 28 opsCfg := operations.GetDefaultOperationsConfig() 29 opsCfg.State.MaxCumulativeGasUsed = 80000000000 30 opsman, err := operations.NewManager(ctx, opsCfg) 31 require.NoError(t, err) 32 err = opsman.Setup() 33 require.NoError(t, err) 34 time.Sleep(5 * time.Second) 35 // Load account with balance on local genesis 36 auth, err := operations.GetAuth(operations.DefaultSequencerPrivateKey, operations.DefaultL2ChainID) 37 require.NoError(t, err) 38 // Load eth client 39 client, err := ethclient.Dial(operations.DefaultL2NetworkURL) 40 require.NoError(t, err) 41 // Send txs 42 nTxs := 10 43 amount := big.NewInt(10000) 44 toAddress := common.HexToAddress("0x70997970C51812dc3A010C7d01b50e0d17dc79C8") 45 senderBalance, err := client.BalanceAt(ctx, auth.From, nil) 46 require.NoError(t, err) 47 senderNonce, err := client.PendingNonceAt(ctx, auth.From) 48 require.NoError(t, err) 49 50 log.Infof("Receiver Addr: %v", toAddress.String()) 51 log.Infof("Sender Addr: %v", auth.From.String()) 52 log.Infof("Sender Balance: %v", senderBalance.String()) 53 log.Infof("Sender Nonce: %v", senderNonce) 54 55 gasLimit, err := client.EstimateGas(ctx, ethereum.CallMsg{From: auth.From, To: &toAddress, Value: amount}) 56 require.NoError(t, err) 57 58 gasPrice, err := client.SuggestGasPrice(ctx) 59 require.NoError(t, err) 60 61 nonce, err := client.PendingNonceAt(ctx, auth.From) 62 require.NoError(t, err) 63 64 txs := make([]*types.Transaction, 0, nTxs) 65 for i := 0; i < nTxs; i++ { 66 tx := types.NewTransaction(nonce+uint64(i), toAddress, amount, gasLimit, gasPrice, nil) 67 txs = append(txs, tx) 68 } 69 70 _, err = operations.ApplyL2Txs(ctx, txs, auth, client, operations.VerifiedConfirmationLevel) 71 require.NoError(t, err) 72 }