Skip to content

Commit

Permalink
Implement beacon chain push withdrawals (EIP-4895) (#4731)
Browse files Browse the repository at this point in the history
* More test fixes

* Fix for init and meter

* Make withdrawals decoding optional

* include 4895 in chainspecParameters

* introduce WithdrawalTimestamp

* Fix `PayloadAttributes` handling when null

* Fix withdrawals length calculation

* Refactor and add checks for withdrawals for RPC methods of v1

* Add engine_getPayloadV2

* Format whitespaces

* Refactor and remove redundant "V1"

* started adding Enginge V2 tests - V2_processing_block_should_serialize_valid_responses

* formatting

* formatting

* Implement withdrawal root validation

* working on tests and fixes

* fix block for processing

* BlockValidator WithdrawalRoot

* Fix withdrawal trie proof validation

* add WithdrawalApplier

* Remove redundant withdrawals hash check

* Remove withdrawal check for null

* Add withdrawals test chain spec

* Reformat whitespaces

* add withdrawalApplier to blockchainProcessor

* add withdrawals to ExecutionPayload

* test fixes

* fix EVM.test

* fix EthereumTests

* fix Benchmarks.sln

* Revise withdrawals representation according to the spec and refactor

* Rename `IWithdrawalApplier` to `IWithdrawalProcessor`

* Add tests for withdrawal encoding/decoding

* Rename `Recipient` to `Address`

* Reformat whitespaces

* Revise withdrawals length calculation in block encoding

* HasBody?

* Remove redundant withdrawals hash check

* fix withdrawals_test chainspec && added IReleaseSpec.WithdrawalsEnabled

* Fixes

* fix GenesisLoader

* fix extra-data

* Refactor withdrawal validation by implementing `IWithdrawalValidator`

* Fix failing tests

* Reformat whitespaces

* fix withdrawalsTimestamp

* temporary change validation

* null handling?

* Applying Marek's suggestion. Not sure about this one

* Fix Ethereum tests

* Fix test cases

* Fix benchmark build

* Fix payload attributes validation

* Remove "V1" from `IForkchoiceUpdatedHandler` name

* Update tests

* hack AuRa tests for now

* fix more tests

* fix more tests

* fix build

* + fix one more tests

* fix Synchronization tests

* Update tests to 0aa59689101f64cab8fa1526d9cf6e647ddba946

* fixed withdrawal chainspec

* withdrawals block validator tests

* Implement Engine API tests

* Reformat code

* fix chainspec?

* Fix withdrawals decoding

* fix chainspec timestamp

* Add and fix Engine API tests

* Revise block decoder tests

* Revise file headers

* Revise file headers

* Add missing file headers

* fix AuRa test

* adjusting comments

* load genesis tests

* Lukasz suggestions

* formating

* Fix build

* withdrawals_hivetests.json + cosmetic

* Add more unit tests

* spacing

* Try on fixing timestamp activation with same value as genesis timestamp

* Fix gnosis and chiado ForkId Calculations

* fix tests

* Cleanup and more tests

* Janky but working solution to very rare edge case?

* Fix flakiness of caused by Parallelizable

* adding engine tests

* working on more tests

* add loop in test

* Can_apply_withdrawals_correctly test

* more test cases

* Update withdrawals hive tests configuration

* Refactor and fix some null reference warnings

* Expose withdrawals to JSON-RPC modules

* Fix broken tests

* Revise `ForkchoiceUpdatedHandler` string output

* fix Can_apply_withdrawals_correctly

* fix whitespaces

* fix whitespaces

* more whitespaces fixes

* work on Withdrawals_transition test cases

* adjust CustomSpecProvider

* Introduce IEip1995Spec

* small changes in tests

* Fix license

* add comments

* Apply Marek Suggestion

* Adjust Lic to Rubo

* Marek Suggestions

* Fix

* fix withdrawals in ChainLevelHelper

* fix hive sync tests

* fix?

* Revise withdrawals root hash encoding/decoding and its tests

* fix PayloadAttributes ToString

* add more temp logs to investigate hive tests

* more logs

* revert not needed logs

* fix test

* ignore incorrect tests

* Fix tests broken by withdrawals decoding revision

* Revise file headers

* Final appraoch, removed GetSpec complexity

* Forgotten changes

* SecondsPerSlot to BlocksConfig

* Minor + config changes

* Typo fix

* remove empty line

* Move BlocksConfig to Nethermind.Config project

* Benchmark build fix

* Rename `ExecutionPayloadV1` to `ExecutionPayloadV2`

* Revise withdrawals check

* Refactor tests

* Optimize withdrawals root hash decoding in block header

* Implements ForkId tests that are ub EIP-6122

* Spacing

* Fix build

* Fix ForkId Test case

* Removing 3675 and using MergeForkId Transition

* Final test fix

* Fix tests

* Rename `ExecutionPayloadV2` to `ExecutionPayload`

* add one more line in Nlog (temp)

* Revert NLog for jsonRpc

* fix missing body?

* adjust TxPool logs

* Add more test cases for `BlockBodiesMessageSerializer`

* Add tests for `BlockHeader.HasBody`

* Revise `null` handling for `BlockHeader.HasBody`

* fix BlockBody empty

* cosmetic

* fix CI

* Revise tests

* Update null checks with pattern matching

* Refactor block body initialization and add tests

* Revise whitespaces

* cosmetic

* ForkId calculation polish (#5068)

* Refactor - mainly ChainSpecBasedSpecProvider

* fixes

* Better warning message

* Simplify sanity check

* one more simplification

* Revise Clique block production according to withdrawals rules

* Add withdrawals to `eth_getBlockByNumber` tests

* SecondsPerSlot move to BlocksConfig (#4944)

Co-authored-by: MarekM25 <marekm2504@gmail.com>
Co-authored-by: lukasz.rozmej <lukasz.rozmej@gmail.com>
Resolves #4871

* fix build

* removed duplicated NSubstitute

* Add missing file headers

* resolved some review comments

* more review comments

* more review related changes

* fix Benchmarks build

* Refactor tests

* refactor tests - review comment

* cosmetic

* Revise suggested block validation messages

* Refactor patricia tries

* fix InvalidBlockInterceptor for Withdrawals

* fix whitespaces

* fix tests

Co-authored-by: smartprogrammer <smartprogrammer@windowslive.com>
Co-authored-by: MarekM25 <marekm2504@gmail.com>
Co-authored-by: Lukasz Rozmej <lukasz.rozmej@gmail.com>
Co-authored-by: Ahmad Bitar <33181301+smartprogrammer93@users.noreply.github.com>
  • Loading branch information
5 people committed Jan 11, 2023
1 parent b8db6c1 commit 193c1c3
Show file tree
Hide file tree
Showing 160 changed files with 7,271 additions and 4,144 deletions.
1 change: 1 addition & 0 deletions src/Nethermind/Chains/shandong.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
"eip3670TransitionTimestamp": "0x0",
"eip3855TransitionTimestamp": "0x0",
"eip3860TransitionTimestamp": "0x0",
"eip4895TransitionTimestamp": "0x0",
"terminalTotalDifficulty": "0x0"
},
"genesis": {
Expand Down
Loading

0 comments on commit 193c1c3

Please sign in to comment.