Skip to content

Conversation

@meyer9
Copy link

@meyer9 meyer9 commented Dec 30, 2025

📝 Summary

Implements the Block-STM paper with some slight changes:

  • Cancellation: execution can be cancelled midway through if the block deadline is reached. In this case, execution tasks will stop, but validation tasks will continue until validation_idx is reached so we know which transactions can be safely committed.
  • Balance increments: For the fee beneficiary, balance increments are recorded separately instead of reading/writing the balance. Balance increments are still added to the write set, but not the read set. If a tx needs to read the balance of the fee beneficiary address, a read dependency is created and won't be resolved until all txs that previously wrote to the balance are resolved. At the end of the block, all fee increments are applied to the state at once. This prevents every tx from conflicting with the next one due to the read/write conflict on the fee beneficiary balance.

💡 Motivation and Context

Make op-rbuilder faster.

Open questions

  • Limit checking: I think we can implement this with a two-phase resumable execution.
    • All txs will conflict on a GasUsed state key, but if they only conflict on that key, we can just recheck limits without rerunning the EVM.
  • GAS opcode: This currently returns an incorrect value. We should mark this as a separate read from limit checking since it can affect EVM execution. All previous txs will need to be executed before this one can be re-executed. Nvm, this only applies to the tx gas left not the block.

✅ I have completed the following steps:

  • Run make lint
  • Run make test
  • Added tests (if applicable)

@meyer9 meyer9 changed the title Meyer9/wip stm feat: implement Block-STM execution Dec 30, 2025
@meyer9 meyer9 force-pushed the meyer9/wip-stm branch 2 times, most recently from a835405 to b61ec5b Compare January 4, 2026 00:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants