From e8456cb9c7ab4950ef70b621a89fd0cf719a254c Mon Sep 17 00:00:00 2001 From: Arya Tabaie <15056835+Tabaie@users.noreply.github.com> Date: Thu, 12 Sep 2024 09:50:27 -0500 Subject: [PATCH] test ToStd --- prover/lib/compressor/blob/encode/encode.go | 28 +++++++++++++- prover/lib/compressor/blob/v1/encode_test.go | 40 ++++++++++++++------ 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/prover/lib/compressor/blob/encode/encode.go b/prover/lib/compressor/blob/encode/encode.go index 420145134..49cbb0b3f 100644 --- a/prover/lib/compressor/blob/encode/encode.go +++ b/prover/lib/compressor/blob/encode/encode.go @@ -270,5 +270,31 @@ func (d *DecodedBlockData) ToStd() *types.Block { } } - return types.NewBlock(&header, &body, nil, nil) + return types.NewBlock(&header, &body, nil, emptyTrieHasher{}) +} + +type fixedTrieHasher common.Hash + +func (e fixedTrieHasher) Reset() { +} + +func (e fixedTrieHasher) Update(_, _ []byte) error { + return nil +} + +func (e fixedTrieHasher) Hash() common.Hash { + return common.Hash(e) +} + +type emptyTrieHasher struct{} + +func (h emptyTrieHasher) Reset() { +} + +func (h emptyTrieHasher) Update(_, _ []byte) error { + return nil +} + +func (h emptyTrieHasher) Hash() common.Hash { + return common.Hash{} } diff --git a/prover/lib/compressor/blob/v1/encode_test.go b/prover/lib/compressor/blob/v1/encode_test.go index bd1872a09..819fd93f1 100644 --- a/prover/lib/compressor/blob/v1/encode_test.go +++ b/prover/lib/compressor/blob/v1/encode_test.go @@ -8,13 +8,11 @@ import ( "fmt" "testing" - "github.com/consensys/linea-monorepo/prover/lib/compressor/blob/encode" + "github.com/consensys/linea-monorepo/prover/backend/ethereum" v1 "github.com/consensys/linea-monorepo/prover/lib/compressor/blob/v1" "github.com/consensys/linea-monorepo/prover/lib/compressor/blob/v1/test_utils" - "github.com/consensys/linea-monorepo/prover/utils/types" - - "github.com/consensys/linea-monorepo/prover/backend/ethereum" "github.com/consensys/linea-monorepo/prover/utils" + "github.com/consensys/linea-monorepo/prover/utils/types" "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/rlp" @@ -35,10 +33,6 @@ func TestEncodeDecode(t *testing.T) { } var buf bytes.Buffer - expected := encode.DecodedBlockData{ - BlockHash: block.Hash(), - Timestamp: block.Time(), - } if err := v1.EncodeBlockForCompression(&block, &buf); err != nil { t.Fatalf("failed encoding the block: %s", err.Error()) @@ -53,16 +47,40 @@ func TestEncodeDecode(t *testing.T) { assert.NotZero(t, size, "scanned a block size of zero") require.NoError(t, err) - assert.Equal(t, expected.BlockHash, decoded.BlockHash) - assert.Equal(t, expected.Timestamp, decoded.Timestamp) + assert.Equal(t, block.Hash(), decoded.BlockHash) + assert.Equal(t, block.Time(), decoded.Timestamp) assert.Equal(t, len(block.Transactions()), len(decoded.Txs)) - for i := range expected.Txs { + for i := range block.Transactions() { checkSameTx(t, block.Transactions()[i], ethtypes.NewTx(decoded.Txs[i]), decoded.Froms[i]) if t.Failed() { return } } + + t.Log("attempting RLP serialization") + + encoded, err = rlp.EncodeToBytes(decoded.ToStd()) + assert.NoError(t, err) + + var blockBack ethtypes.Block + assert.NoError(t, rlp.Decode(bytes.NewReader(encoded), &blockBack)) + + assert.Equal(t, block.Hash(), blockBack.ParentHash()) + assert.Equal(t, block.Time(), blockBack.Time()) + assert.Equal(t, len(block.Transactions()), len(blockBack.Transactions())) + + for i := range block.Transactions() { + tx := blockBack.Transactions()[i] + _, fromInt, _ := tx.RawSignatureValues() + var from common.Address + fromInt.FillBytes(from[:]) + checkSameTx(t, block.Transactions()[i], ethtypes.NewTx(decoded.Txs[i]), from) + if t.Failed() { + return + } + } + }) }