Skip to content

Commit 7ae393d

Browse files
authored
Update external_state_transitions.md
1 parent da0e2e9 commit 7ae393d

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

book/src/external_state_transitions.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# External State Transitions (EIP-4788 & EIP-2935)
22

3-
Some Ethereum Improvement Proposals (EIPs) require state transitions that occur outside of the EVM execution engine, and thus outside of REVM itself. Notably, these are:
3+
Some Ethereum Improvement Proposals (EIPs) require state transitions that are not triggered by regular user transactions, but are instead performed by the client using special system calls (such as `transact_system_call`). These transitions are part of the EVM state changes, but are initiated by the client at specific block boundaries (pre- or post-block hooks), as required by the EIP.
44

55
- [EIP-4788: Beacon block root in the EVM](https://eips.ethereum.org/EIPS/eip-4788)
66
- [EIP-2935: Add `blockHash` and `blockNumber` to the EVM](https://eips.ethereum.org/EIPS/eip-2935)
77

88
## What are external state transitions?
99

10-
External state transitions refer to updates to the Ethereum state that are not performed by the EVM during transaction execution, but are instead performed by the client (or consensus layer) as part of block processing. These are typically required for EIPs that introduce new system contracts or require special state updates at block boundaries.
10+
External state transitions refer to updates to the Ethereum state that are not performed by regular user transactions, but are instead performed by the client using system calls at block boundaries. These are typically required for EIPs that introduce new system contracts or require special state updates at block boundaries.
1111

1212
## EIP-4788: Beacon block root in the EVM
1313

14-
EIP-4788 requires that the root of each beacon chain block is committed to the execution layer and made available in the EVM via a special contract. This is achieved by the client (not the EVM) calling a system contract at a fixed address (`0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02`) with the beacon root as input, at the start of each block. The contract maintains a ring buffer of recent roots.
14+
EIP-4788 requires that the root of each beacon chain block is committed to the execution layer and made available in the EVM via a special contract. This is achieved by the client calling a system contract at a fixed address (`0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02`) with the beacon root as input, at the start of each block. The contract maintains a ring buffer of recent roots.
1515

1616
- The system call is performed by the client, not by EVM transaction execution.
1717
- If the contract does not exist, the call fails silently.
@@ -28,7 +28,8 @@ EIP-2935 introduces a system contract that stores recent block hashes, allowing
2828

2929
## How does this affect REVM users?
3030

31-
- REVM itself does not perform these external state transitions. It expects the state to be updated by the client or test harness before EVM execution.
31+
- To perform these block state transitions, the client or test harness should use the system call mechanism (`transact_system_call`) provided by REVM.
32+
- REVM itself does not automatically perform these transitions; it expects the client to initiate them at the appropriate block boundaries, as specified by the EIPs.
3233
- If you are building a full Ethereum client or a test harness, you are responsible for performing these system calls at the appropriate block boundaries, as specified in the EIPs.
3334
- If you are only using REVM for transaction execution, you may need to ensure that the state of these system contracts is kept up to date externally.
3435

0 commit comments

Comments
 (0)