Issue
- Currently, the op-sequencer after building the unsafe payload (on engine_getPayload on buildSealedEvent) will process the new unsafe payload by calling engine_newPayload on processPayloadEvent
- However, the payload re-executes on the EL, causing significant delays in setting the new EL blockchain head to the new block
- The PR - https://github.com/okx/op-geth/pull/46 optimises this by caching the already executed payload state
- However, when we migrate to reth in the near future and adopt flashblocks architecture, caching on the default EL will no longer work as the payload is no longer built on the default EL (on op-rbuilder instead)
Case study
Block re-execution can take up to 7seconds on very large blocks:
INFO [10-27|13:27:36.610] Block<8594801>, Txs<2293> GasUsed<80355472>, BlockTime<6.552s> { Propose[0s] { Prepare[0s], execute[0s], Prague[0s], assemble[0s] , State { accRead[0s], storRead[0s], accUpdate[0s], storUpdate[0s], accHash[0s] } }, Insert[6.552s] { execute[5.730s], validate[10.920ms], crossValidate[84ns], evmExecPure[4.799s], validatePure[10.920ms] , Write { writeBlock[821.783ms] }, State { accRead[507.858ms], storRead[254.324ms], accUpdate[88.915ms], storUpdate[41.948ms], accHash[27.615ms], trieUpdate[130.863ms] }, Commits { accCommit[114.703ms], storCommit[163.467ms], snapCommit[2.769ms], trieDBCommit[145.553ms] } }
Issue
Case study
Block re-execution can take up to 7seconds on very large blocks:
INFO [10-27|13:27:36.610] Block<8594801>, Txs<2293> GasUsed<80355472>, BlockTime<6.552s> { Propose[0s] { Prepare[0s], execute[0s], Prague[0s], assemble[0s] , State { accRead[0s], storRead[0s], accUpdate[0s], storUpdate[0s], accHash[0s] } }, Insert[6.552s] { execute[5.730s], validate[10.920ms], crossValidate[84ns], evmExecPure[4.799s], validatePure[10.920ms] , Write { writeBlock[821.783ms] }, State { accRead[507.858ms], storRead[254.324ms], accUpdate[88.915ms], storUpdate[41.948ms], accHash[27.615ms], trieUpdate[130.863ms] }, Commits { accCommit[114.703ms], storCommit[163.467ms], snapCommit[2.769ms], trieDBCommit[145.553ms] } }