From 0488cd98e90bac32cf007d951d3f5c1ac80a3c9b Mon Sep 17 00:00:00 2001 From: Matthieu Vachon Date: Fri, 7 Mar 2025 17:37:01 -0500 Subject: [PATCH] Added a test to prove code change at block level works --- .../tracetest/firehose/polygon_test.go | 42 +++++++++++++++++++ .../block.1.golden.json | 37 ++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 eth/tracers/internal/tracetest/firehose/polygon_test.go create mode 100644 eth/tracers/internal/tracetest/firehose/testdata/PolygonBlockLevelCodeChange/block.1.golden.json diff --git a/eth/tracers/internal/tracetest/firehose/polygon_test.go b/eth/tracers/internal/tracetest/firehose/polygon_test.go new file mode 100644 index 0000000000..ca73c4a784 --- /dev/null +++ b/eth/tracers/internal/tracetest/firehose/polygon_test.go @@ -0,0 +1,42 @@ +package firehose_test + +import ( + "math/big" + "path/filepath" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/trie" +) + +func TestPolygon_TracerBlockLevelOnCodeChange(t *testing.T) { + tracer, hooks, onClose := newFirehoseTestTracer(t, tracingModelFirehose2_3) + defer onClose() + + hooks.OnBlockchainInit(params.BorMainnetChainConfig) + hooks.OnBlockStart(tracing.BlockEvent{Block: testBlock()}) + hooks.OnCodeChange(common.Address{}, common.BytesToHash([]byte{0x01}), []byte{0x01}, common.BytesToHash([]byte{0x02}), []byte{0x02}) + hooks.OnBlockEnd(nil) + + assertBlockEquals(t, tracer, filepath.Join("testdata", "PolygonBlockLevelCodeChange"), 1) +} + +func testBlock() *types.Block { + block := types.NewBlock(&types.Header{ + ParentHash: common.Hash{}, + Number: big.NewInt(1), + Difficulty: big.NewInt(0), + Coinbase: common.Address{}, + Time: 1, + GasLimit: 210000, + BaseFee: big.NewInt(1000000000), + ParentBeaconRoot: ptr(common.Hash{}), + }, &types.Body{ + Transactions: []*types.Transaction{}, + }, nil, trie.NewStackTrie(nil)) + + return block +} diff --git a/eth/tracers/internal/tracetest/firehose/testdata/PolygonBlockLevelCodeChange/block.1.golden.json b/eth/tracers/internal/tracetest/firehose/testdata/PolygonBlockLevelCodeChange/block.1.golden.json new file mode 100644 index 0000000000..d857a53012 --- /dev/null +++ b/eth/tracers/internal/tracetest/firehose/testdata/PolygonBlockLevelCodeChange/block.1.golden.json @@ -0,0 +1,37 @@ +{ + "codeChanges": [ + { + "address": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "newCode": "Ag==", + "newHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=", + "oldCode": "AQ==", + "oldHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "ordinal": "1" + } + ], + "hash": "WLGMKK1ccyTrarRdy4zscMOz8v4oSRmSquZyaMFyvTA=", + "header": { + "baseFeePerGas": { + "bytes": "O5rKAA==" + }, + "coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "difficulty": { + "bytes": "AA==" + }, + "gasLimit": "210000", + "hash": "WLGMKK1ccyTrarRdy4zscMOz8v4oSRmSquZyaMFyvTA=", + "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "number": "1", + "parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "parentHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", + "stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "timestamp": "1970-01-01T00:00:01Z", + "transactionsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", + "uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=" + }, + "number": "1", + "size": "545", + "ver": 3 +} \ No newline at end of file