github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/state/helper_test.go (about) 1 package state_test 2 3 import ( 4 "encoding/hex" 5 "fmt" 6 "math/big" 7 "testing" 8 9 "github.com/0xPolygon/supernets2-node/log" 10 "github.com/0xPolygon/supernets2-node/state" 11 "github.com/ethereum/go-ethereum/core/types" 12 "github.com/stretchr/testify/assert" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func init() { 17 log.Init(log.Config{ 18 Level: "debug", 19 Outputs: []string{"stderr"}, 20 }) 21 } 22 23 func TestDecodeRandomBatchL2Data(t *testing.T) { 24 randomData := []byte("Random data") 25 txs, _, err := state.DecodeTxs(randomData) 26 require.Error(t, err) 27 assert.Equal(t, []types.Transaction{}, txs) 28 t.Log("Txs decoded 1: ", txs) 29 30 randomData = []byte("Esto es autentica basura") 31 txs, _, err = state.DecodeTxs(randomData) 32 require.Error(t, err) 33 assert.Equal(t, []types.Transaction{}, txs) 34 t.Log("Txs decoded 2: ", txs) 35 36 randomData = []byte("beef") 37 txs, _, err = state.DecodeTxs(randomData) 38 require.Error(t, err) 39 assert.Equal(t, []types.Transaction{}, txs) 40 t.Log("Txs decoded 3: ", txs) 41 } 42 43 func TestDecodePre155BatchL2Data(t *testing.T) { 44 pre155, err := hex.DecodeString("e480843b9aca00826163941275fbb540c8efc58b812ba83b0d0b8b9917ae98808464fbb77cb7d2a666860f3c6b8f5ef96f86c7ec5562e97fd04c2e10f3755ff3a0456f9feb246df95217bf9082f84f9e40adb0049c6664a5bb4c9cbe34ab1a73e77bab26ed1b") 45 require.NoError(t, err) 46 txs, _, err := state.DecodeTxs(pre155) 47 require.NoError(t, err) 48 t.Log("Txs decoded: ", txs, len(txs)) 49 assert.Equal(t, 1, len(txs)) 50 v, r, s := txs[0].RawSignatureValues() 51 assert.Equal(t, "0x1275fbb540c8efC58b812ba83B0D0B8b9917AE98", txs[0].To().String()) 52 assert.Equal(t, "1b", fmt.Sprintf("%x", v)) 53 assert.Equal(t, "b7d2a666860f3c6b8f5ef96f86c7ec5562e97fd04c2e10f3755ff3a0456f9feb", fmt.Sprintf("%x", r)) 54 assert.Equal(t, "246df95217bf9082f84f9e40adb0049c6664a5bb4c9cbe34ab1a73e77bab26ed", fmt.Sprintf("%x", s)) 55 assert.Equal(t, uint64(24931), txs[0].Gas()) 56 assert.Equal(t, "64fbb77c", hex.EncodeToString(txs[0].Data())) 57 assert.Equal(t, uint64(0), txs[0].Nonce()) 58 assert.Equal(t, new(big.Int).SetUint64(1000000000), txs[0].GasPrice()) 59 60 pre155, err = hex.DecodeString("e580843b9aca00830186a0941275fbb540c8efc58b812ba83b0d0b8b9917ae988084159278193d7bcd98c00060650f12c381cc2d4f4cc8abf54059aecd2c7aabcfcdd191ba6827b1e72f0eb0b8d5daae64962f4aafde7853e1c102de053edbedf066e6e3c2dc1b") 61 require.NoError(t, err) 62 txs, _, err = state.DecodeTxs(pre155) 63 require.NoError(t, err) 64 t.Log("Txs decoded: ", txs) 65 assert.Equal(t, 1, len(txs)) 66 assert.Equal(t, "0x1275fbb540c8efC58b812ba83B0D0B8b9917AE98", txs[0].To().String()) 67 assert.Equal(t, uint64(0), txs[0].Nonce()) 68 assert.Equal(t, big.NewInt(0), txs[0].Value()) 69 assert.Equal(t, "15927819", hex.EncodeToString(txs[0].Data())) 70 assert.Equal(t, uint64(100000), txs[0].Gas()) 71 assert.Equal(t, new(big.Int).SetUint64(1000000000), txs[0].GasPrice()) 72 } 73 74 func TestDecodePre155Tx(t *testing.T) { 75 pre155 := "0xf86780843b9aca00826163941275fbb540c8efc58b812ba83b0d0b8b9917ae98808464fbb77c1ba0b7d2a666860f3c6b8f5ef96f86c7ec5562e97fd04c2e10f3755ff3a0456f9feba0246df95217bf9082f84f9e40adb0049c6664a5bb4c9cbe34ab1a73e77bab26ed" 76 tx, err := state.DecodeTx(pre155) 77 require.NoError(t, err) 78 t.Log("Txs decoded: ", tx) 79 v, r, s := tx.RawSignatureValues() 80 assert.Equal(t, "0x1275fbb540c8efC58b812ba83B0D0B8b9917AE98", tx.To().String()) 81 assert.Equal(t, "1b", fmt.Sprintf("%x", v)) 82 assert.Equal(t, "b7d2a666860f3c6b8f5ef96f86c7ec5562e97fd04c2e10f3755ff3a0456f9feb", fmt.Sprintf("%x", r)) 83 assert.Equal(t, "246df95217bf9082f84f9e40adb0049c6664a5bb4c9cbe34ab1a73e77bab26ed", fmt.Sprintf("%x", s)) 84 assert.Equal(t, uint64(24931), tx.Gas()) 85 assert.Equal(t, "64fbb77c", hex.EncodeToString(tx.Data())) 86 assert.Equal(t, uint64(0), tx.Nonce()) 87 assert.Equal(t, new(big.Int).SetUint64(1000000000), tx.GasPrice()) 88 } 89 90 func TestEncodePre155BatchL2Data(t *testing.T) { 91 pre155, err := hex.DecodeString("e480843b9aca00826163941275fbb540c8efc58b812ba83b0d0b8b9917ae98808464fbb77cb7d2a666860f3c6b8f5ef96f86c7ec5562e97fd04c2e10f3755ff3a0456f9feb246df95217bf9082f84f9e40adb0049c6664a5bb4c9cbe34ab1a73e77bab26ed1b") 92 require.NoError(t, err) 93 txs, _, err := state.DecodeTxs(pre155) 94 require.NoError(t, err) 95 rawtxs, err := state.EncodeTransactions(txs) 96 require.NoError(t, err) 97 t.Log("Txs decoded: ", txs, len(txs)) 98 assert.Equal(t, pre155, rawtxs) 99 }