nethermind
nethermind copied to clipboard
Staging branch for devnet 4
Closes #7525 Closes #7524 Closes #7522 Resolves #7521
Changes
Implements changes from
- Update EIP-6110: change request to flat encoding EIPs#8856
- Update EIP-7685: change requests hash to flat hash EIPs#8854
- ~engine: unified list of opaque requests execution-apis#577~
- engine: Make execution requests a sidecar, take 2 execution-apis#591
Types of changes
- PR modifies two existing engine APIs :
engine_getPayloadV4andengine_getPayloadV4, It incorporates suggestions from pectra-devnet4 doc, which was to exchangerequestsas a side car and remove them from the block body - It removes two engine APIs:
engine_getPayloadBodiesByRangeV2andengine_getPayloadBodiesByHashV2and all related objects and handlers, which are now obsolete. - It introduces a new processor called
IExecutionRequestsProcessand gets rid of all kinds of exiting requests processors. - Add support for flat request encoding and therefore, a new way for
RequestsHashcalculation, more info at: https://eips.ethereum.org/EIPS/eip-7685
What types of changes does your code introduce?
- [ ] Bugfix (a non-breaking change that fixes an issue)
- [ ] New feature (a non-breaking change that adds functionality)
- [x] Breaking change (a change that causes existing functionality not to work as expected)
- [x] Optimization
- [x] Refactoring
- [ ] Documentation update
- [ ] Build-related changes
Testing
Requires testing
- [x] Yes
- [ ] No
If yes, did you write tests?
- [x] Yes
- [ ] No
Notes on testing
Few more tests are yet to be written after a few rounds of discussions.
Documentation
Requires documentation update
- [ ] Yes
- [x] No
Remarks
Please verify the requestsHash calculation, which should be done as follow:
def compute_requests_hash(requests):
m = sha256()
for r in requests:
m.update(sha256(r))
return m.digest()
block.header.requests_hash = compute_requests_hash(requests)