From 064fd7812495b52b5c750bee2bdc521eb873e03a Mon Sep 17 00:00:00 2001 From: Charles Billette Date: Mon, 3 Mar 2025 12:24:12 -0500 Subject: [PATCH] Add handling for DepositNonce in transaction traces This change ensures that the `DepositNonce` is included in transaction traces when present and the transaction type is `DepositTxType`. It also updates relevant test data to reflect this new behavior. --- eth/tracers/firehose.go | 4 + .../fh3.0/block.3515443.golden.json | 1 + .../fh3.0/block.120096000.golden.json | 1 + .../reorder-ordinals-empty.golden.json | 180 +++++++++--------- 4 files changed, 96 insertions(+), 90 deletions(-) diff --git a/eth/tracers/firehose.go b/eth/tracers/firehose.go index 6ac6cfdd7639..1ba986470814 100644 --- a/eth/tracers/firehose.go +++ b/eth/tracers/firehose.go @@ -691,6 +691,10 @@ func (f *Firehose) OnTxEnd(receipt *types.Receipt, err error) { trxTrace := f.completeTransaction(receipt) + if receipt.DepositNonce != nil && trxTrace.Type == types.DepositTxType { + trxTrace.Nonce = *receipt.DepositNonce + } + // In this case, we are in some kind of parallel processing and we must simply add the transaction // to a transient storage (and not in the block directly). Adding it to the block will be done by the // `OnTxCommit` callback. diff --git a/eth/tracers/internal/tracetest/firehose/testdata/TestFirehosePrestate/deposit_nonce_check_base_before_canyon/fh3.0/block.3515443.golden.json b/eth/tracers/internal/tracetest/firehose/testdata/TestFirehosePrestate/deposit_nonce_check_base_before_canyon/fh3.0/block.3515443.golden.json index ff92329221ba..32cf201f6510 100644 --- a/eth/tracers/internal/tracetest/firehose/testdata/TestFirehosePrestate/deposit_nonce_check_base_before_canyon/fh3.0/block.3515443.golden.json +++ b/eth/tracers/internal/tracetest/firehose/testdata/TestFirehosePrestate/deposit_nonce_check_base_before_canyon/fh3.0/block.3515443.golden.json @@ -141,6 +141,7 @@ "gasUsed": "46913", "hash": "yNJzEOjgK41KcflFasAQNzocYbLFT2K9dQGGZlD68Uo=", "input": "AV2OuQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABE5uuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGT1pMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3esaL70gTp8sbSmFY7otMGzOHZQ7UMR3irPyaq9mKKDXiVFrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAABQUPaal4bwgVCSNPGn9GhLXlt2yQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKb+A=", + "nonce": "3515442", "receipt": { "cumulativeGasUsed": "46913", "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" diff --git a/eth/tracers/internal/tracetest/firehose/testdata/TestFirehosePrestate/deposit_nonce_check_optimism_after_canyon/fh3.0/block.120096000.golden.json b/eth/tracers/internal/tracetest/firehose/testdata/TestFirehosePrestate/deposit_nonce_check_optimism_after_canyon/fh3.0/block.120096000.golden.json index f7018c9e5afa..bb050605fdb4 100644 --- a/eth/tracers/internal/tracetest/firehose/testdata/TestFirehosePrestate/deposit_nonce_check_optimism_after_canyon/fh3.0/block.120096000.golden.json +++ b/eth/tracers/internal/tracetest/firehose/testdata/TestFirehosePrestate/deposit_nonce_check_optimism_after_canyon/fh3.0/block.120096000.golden.json @@ -141,6 +141,7 @@ "gasUsed": "43851", "hash": "t35W1ZGqsnUCVI1Nha/2wfg1weToILI2B1EglRamNHI=", "input": "RApeIAAABVgADF/FAAAAAAAAAAIAAAAAZkTjZwAAAAABL0rvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAodeWi0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASlartG4yoQGWqCNAkPe4NbplETUlEXltGYtoJDMKn/nAAAAAAAAAAAAAAAAaIckZmijuH9U3rO5S6R6b2PzKYU=", + "nonce": "14860937", "receipt": { "cumulativeGasUsed": "43851", "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" diff --git a/eth/tracers/testdata/firehose/reorder-ordinals-empty.golden.json b/eth/tracers/testdata/firehose/reorder-ordinals-empty.golden.json index 16b356624632..084489928815 100755 --- a/eth/tracers/testdata/firehose/reorder-ordinals-empty.golden.json +++ b/eth/tracers/testdata/firehose/reorder-ordinals-empty.golden.json @@ -1,119 +1,119 @@ { - "hash": "sr0uqeYWyrLV1vijvIG6fe+0mu8LRG6FLMHv5UmUxK8=", - "number": "1", - "size": "501", - "header": { - "parentHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=", - "coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "transactionsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", - "receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", - "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "difficulty": { - "bytes": "AA==" + "hash": "sr0uqeYWyrLV1vijvIG6fe+0mu8LRG6FLMHv5UmUxK8=", + "number": "1", + "size": "501", + "header": { + "parentHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=", + "coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "transactionsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", + "receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=", + "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "difficulty": { + "bytes": "AA==" }, - "number": "1", - "timestamp": "1970-01-01T00:00:00Z", - "mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "hash": "sr0uqeYWyrLV1vijvIG6fe+0mu8LRG6FLMHv5UmUxK8=" + "number": "1", + "timestamp": "1970-01-01T00:00:00Z", + "mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", + "hash": "sr0uqeYWyrLV1vijvIG6fe+0mu8LRG6FLMHv5UmUxK8=" }, - "transactionTraces": [ + "transactionTraces": [ { - "to": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", - "gasPrice": { - "bytes": "AQ==" + "to": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", + "gasPrice": { + "bytes": "AQ==" }, - "gasLimit": "1", - "value": { - "bytes": "AQ==" + "gasLimit": "1", + "value": { + "bytes": "AQ==" }, - "v": "AQ==", - "r": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "s": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKo=", - "from": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "beginOrdinal": "1", - "endOrdinal": "4", - "status": "SUCCEEDED", - "receipt": { - "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + "v": "AQ==", + "r": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "s": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKo=", + "from": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "beginOrdinal": "1", + "endOrdinal": "4", + "status": "SUCCEEDED", + "receipt": { + "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" }, - "calls": [ + "calls": [ { - "index": 1, - "callType": "CALL", - "caller": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "address": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", - "beginOrdinal": "2", - "endOrdinal": "3" + "index": 1, + "callType": "CALL", + "caller": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "address": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", + "beginOrdinal": "2", + "endOrdinal": "3" } ] }, { - "to": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", - "gasPrice": { - "bytes": "AQ==" + "to": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", + "gasPrice": { + "bytes": "AQ==" }, - "gasLimit": "1", - "value": { - "bytes": "AQ==" + "gasLimit": "1", + "value": { + "bytes": "AQ==" }, - "v": "AQ==", - "r": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "s": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "index": 1, - "hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALs=", - "from": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "beginOrdinal": "5", - "endOrdinal": "8", - "status": "SUCCEEDED", - "receipt": { - "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + "v": "AQ==", + "r": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "s": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "index": 1, + "hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALs=", + "from": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "beginOrdinal": "5", + "endOrdinal": "8", + "status": "SUCCEEDED", + "receipt": { + "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" }, - "calls": [ + "calls": [ { - "index": 1, - "callType": "CALL", - "caller": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "address": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", - "beginOrdinal": "6", - "endOrdinal": "7" + "index": 1, + "callType": "CALL", + "caller": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "address": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", + "beginOrdinal": "6", + "endOrdinal": "7" } ] }, { - "to": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", - "gasPrice": { - "bytes": "AQ==" + "to": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", + "gasPrice": { + "bytes": "AQ==" }, - "gasLimit": "1", - "value": { - "bytes": "AQ==" + "gasLimit": "1", + "value": { + "bytes": "AQ==" }, - "v": "AQ==", - "r": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "s": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "index": 2, - "hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMw=", - "from": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "beginOrdinal": "9", - "endOrdinal": "12", - "status": "SUCCEEDED", - "receipt": { - "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + "v": "AQ==", + "r": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "s": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "index": 2, + "hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMw=", + "from": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "beginOrdinal": "9", + "endOrdinal": "12", + "status": "SUCCEEDED", + "receipt": { + "logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" }, - "calls": [ + "calls": [ { - "index": 1, - "callType": "CALL", - "caller": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", - "address": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", - "beginOrdinal": "10", - "endOrdinal": "11" + "index": 1, + "callType": "CALL", + "caller": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=", + "address": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=", + "beginOrdinal": "10", + "endOrdinal": "11" } ] } ], - "ver": 4 + "ver": 4 } \ No newline at end of file