Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implementing Execution Layer Requests EIP-7685 and Deposit Requests EIP-6110.
Needs to be rebased to master after #2747 gets merged.KEVM Implementation for EIPs 7685/6110
Configuration & Structure Changes
Add
requests.md
file with execution layer request implementationAdd configuration cells:
<requestsRoot>
in block header<requests>
and<depositRequests>
in network sectionAdd execution flow logic:
#filterLogs
function to process transaction logs. After all transactions in a block have finished executing, rules for#filterLogs
will parse each log item to look for various requests (only Deposit implemented so far).#parseDepositRequest
: Validates and extracts deposit requests by filtering logs from the deposit contract with the correct event signature#extractDepositData
: Extracts the five deposit fields (pubkey, withdrawal_credentials, amount, signature, index) from raw log data according to EIP-6110 field offsets#isValidDepositEventData
: Validates deposit log structure by checking data length (576 bytes) and verifying all expected field offsets and sizes#computeRequestsHash
: Calculates the final 32-byte commitment hash that goes into the block header by processing all non-empty requests#computeRequestsHashIntermediate
: Builds the intermediate hash list by skipping empty requests, hashing valid requests, and concatenating results in request-type orderAdd protocol features:
Ghasrequests
flag (activated in Prague)EVMC_INVALID_BLOCK
status codeUpdate block hash calculations:
Update state management:
clearBLOCK
Updated K proof files