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  }