github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/e2e/preEIP155_test.go (about)

     1  package e2e
     2  
     3  import (
     4  	"context"
     5  	"strings"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/0xPolygon/supernets2-node/hex"
    10  	"github.com/0xPolygon/supernets2-node/log"
    11  	"github.com/0xPolygon/supernets2-node/test/operations"
    12  	"github.com/ethereum/go-ethereum"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/crypto"
    16  	"github.com/stretchr/testify/require"
    17  )
    18  
    19  func TestPreEIP155Tx(t *testing.T) {
    20  	if testing.Short() {
    21  		t.Skip()
    22  	}
    23  
    24  	var err error
    25  	err = operations.Teardown()
    26  	require.NoError(t, err)
    27  
    28  	defer func() {
    29  		require.NoError(t, operations.Teardown())
    30  	}()
    31  
    32  	ctx := context.Background()
    33  	opsCfg := operations.GetDefaultOperationsConfig()
    34  	opsMan, err := operations.NewManager(ctx, opsCfg)
    35  	require.NoError(t, err)
    36  	err = opsMan.Setup()
    37  	require.NoError(t, err)
    38  
    39  	for _, network := range networks {
    40  		log.Debugf(network.Name)
    41  		client := operations.MustGetClient(network.URL)
    42  		auth := operations.MustGetAuth(network.PrivateKey, network.ChainID)
    43  
    44  		nonce, err := client.PendingNonceAt(ctx, auth.From)
    45  		require.NoError(t, err)
    46  
    47  		gasPrice, err := client.SuggestGasPrice(ctx)
    48  		require.NoError(t, err)
    49  
    50  		to := common.HexToAddress("0x1275fbb540c8efc58b812ba83b0d0b8b9917ae98")
    51  		data := hex.DecodeBig("0x64fbb77c").Bytes()
    52  
    53  		gas, err := client.EstimateGas(ctx, ethereum.CallMsg{
    54  			From: auth.From,
    55  			To:   &to,
    56  			Data: data,
    57  		})
    58  		require.NoError(t, err)
    59  
    60  		tx := types.NewTx(&types.LegacyTx{
    61  			Nonce:    nonce,
    62  			To:       &to,
    63  			GasPrice: gasPrice,
    64  			Gas:      gas,
    65  			Data:     data,
    66  		})
    67  
    68  		privateKey, err := crypto.HexToECDSA(strings.TrimPrefix(network.PrivateKey, "0x"))
    69  		require.NoError(t, err)
    70  
    71  		signedTx, err := types.SignTx(tx, types.HomesteadSigner{}, privateKey)
    72  		require.NoError(t, err)
    73  
    74  		err = client.SendTransaction(ctx, signedTx)
    75  		require.NoError(t, err)
    76  
    77  		err = operations.WaitTxToBeMined(ctx, client, signedTx, operations.DefaultTimeoutTxToBeMined)
    78  		require.NoError(t, err)
    79  
    80  		receipt, err := client.TransactionReceipt(ctx, signedTx.Hash())
    81  		require.NoError(t, err)
    82  
    83  		// wait for l2 block to be virtualized
    84  		if network.ChainID == operations.DefaultL2ChainID {
    85  			log.Infof("waiting for the block number %v to be virtualized", receipt.BlockNumber.String())
    86  			err = operations.WaitL2BlockToBeVirtualized(receipt.BlockNumber, 4*time.Minute) //nolint:gomnd
    87  			require.NoError(t, err)
    88  		}
    89  	}
    90  }