github.com/ethereum-optimism/optimism@v1.7.2/op-node/p2p/signer_test.go (about)

     1  package p2p
     2  
     3  import (
     4  	"math/big"
     5  	"testing"
     6  
     7  	"github.com/ethereum-optimism/optimism/op-node/rollup"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestSigningHash_DifferentDomain(t *testing.T) {
    12  	cfg := &rollup.Config{
    13  		L2ChainID: big.NewInt(100),
    14  	}
    15  
    16  	payloadBytes := []byte("arbitraryData")
    17  	hash, err := SigningHash(SigningDomainBlocksV1, cfg.L2ChainID, payloadBytes)
    18  	require.NoError(t, err, "creating first signing hash")
    19  
    20  	hash2, err := SigningHash([32]byte{3}, cfg.L2ChainID, payloadBytes)
    21  	require.NoError(t, err, "creating second signing hash")
    22  
    23  	require.NotEqual(t, hash, hash2, "signing hash should be different when domain is different")
    24  }
    25  
    26  func TestSigningHash_DifferentChainID(t *testing.T) {
    27  	cfg1 := &rollup.Config{
    28  		L2ChainID: big.NewInt(100),
    29  	}
    30  	cfg2 := &rollup.Config{
    31  		L2ChainID: big.NewInt(101),
    32  	}
    33  
    34  	payloadBytes := []byte("arbitraryData")
    35  	hash, err := SigningHash(SigningDomainBlocksV1, cfg1.L2ChainID, payloadBytes)
    36  	require.NoError(t, err, "creating first signing hash")
    37  
    38  	hash2, err := SigningHash(SigningDomainBlocksV1, cfg2.L2ChainID, payloadBytes)
    39  	require.NoError(t, err, "creating second signing hash")
    40  
    41  	require.NotEqual(t, hash, hash2, "signing hash should be different when chain ID is different")
    42  }
    43  
    44  func TestSigningHash_DifferentMessage(t *testing.T) {
    45  	cfg := &rollup.Config{
    46  		L2ChainID: big.NewInt(100),
    47  	}
    48  
    49  	hash, err := SigningHash(SigningDomainBlocksV1, cfg.L2ChainID, []byte("msg1"))
    50  	require.NoError(t, err, "creating first signing hash")
    51  
    52  	hash2, err := SigningHash(SigningDomainBlocksV1, cfg.L2ChainID, []byte("msg2"))
    53  	require.NoError(t, err, "creating second signing hash")
    54  
    55  	require.NotEqual(t, hash, hash2, "signing hash should be different when message is different")
    56  }
    57  
    58  func TestSigningHash_LimitChainID(t *testing.T) {
    59  	// ChainID with bitlen 257
    60  	chainID := big.NewInt(1)
    61  	chainID = chainID.SetBit(chainID, 256, 1)
    62  	cfg := &rollup.Config{
    63  		L2ChainID: chainID,
    64  	}
    65  	_, err := SigningHash(SigningDomainBlocksV1, cfg.L2ChainID, []byte("arbitraryData"))
    66  	require.ErrorContains(t, err, "chain_id is too large")
    67  }