Jonny Rhea
98b13f342f
miner: add OpenTelemetry spans for block building path ( #33773 )
...
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
Instruments the block building path with OpenTelemetry tracing spans.
- added spans in forkchoiceUpdated -> buildPayload -> background payload
loop -> generateWork iterations. Spans should look something like this:
```
jsonrpc.engine/forkchoiceUpdatedV3
|- rpc.runMethod
| |- engine.forkchoiceUpdated
| |- miner.buildPayload [payload.id, parent.hash, timestamp]
| |- miner.generateWork [txs.count, gas.used, fees] (empty block)
| | |- miner.prepareWork
| | |- miner.FinalizeAndAssemble
| | |- consensus.beacon.FinalizeAndAssemble [block.number, txs.count, withdrawals.count]
| | |- consensus.beacon.Finalize
| | |- consensus.beacon.IntermediateRoot
| | |- consensus.beacon.NewBlock
| |- miner.background [block.number, iterations.total, exit.reason, empty.delivered]
| |- miner.buildIteration [iteration, update.accepted]
| | |- miner.generateWork [txs.count, gas.used, fees]
| | |- miner.prepareWork
| | |- miner.fillTransactions [pending.plain.count, pending.blob.count]
| | | |- miner.commitTransactions.priority (if prio txs exist)
| | | | |- miner.commitTransactions
| | | | |- miner.commitTransaction (per tx)
| | | |- miner.commitTransactions.normal (if normal txs exist)
| | | |- miner.commitTransactions
| | | |- miner.commitTransaction (per tx)
| | |- miner.FinalizeAndAssemble
| | |- consensus.beacon.FinalizeAndAssemble [block.number, txs.count, withdrawals.count]
| | |- consensus.beacon.Finalize
| | |- consensus.beacon.IntermediateRoot
| | |- consensus.beacon.NewBlock
| |- miner.buildIteration [iteration, update.accepted]
| | |- ...
| |- ...
```
- added simulated server spans in SimulatedBeacon.sealBlock so dev mode
(geth --dev) produces traces that mirror production Engine API calls
from a real consensus client.
---------
Co-authored-by: Felix Lange <fjl@twurst.com>
2026-03-16 19:24:41 +01:00
Jonny Rhea
c709c19b40
eth/catalyst: add initial OpenTelemetry tracing for newPayload ( #33521 )
...
This PR adds initial OpenTelemetry tracing to the Engine API, focusing
on engine_newPayload*.
```
jsonrpc.engine/newPayloadV4
| |- engine.newPayload [block.number, block.hash, tx.count]
| |- core.blockchain.InsertBlockWithoutSetHead
| |- bc.processor.Process
| | |- core.ApplyTransactionWithEVM [tx.hash, tx.index]
| | |- core.ApplyTransactionWithEVM [tx.hash, tx.index]
| | |- ... (one per transaction)
| | |- core.postExecution
| |- bc.validator.ValidateState
```
---------
Co-authored-by: Felix Lange <fjl@twurst.com>
2026-02-17 17:08:57 +01:00