Skip to content

Conversation

@paulhauner
Copy link
Member

@paulhauner paulhauner commented Nov 3, 2021

Description

This is the canonical branch for the Kintsugi testnet.

For instructions on running the Kintsugi testnet, see #2830.

This PR contains the changes required for Lighthouse to run "the merge" specifications. It does not deliver a production-ready implementation of "the merge" for Lighthouse, instead it provides the necessary components for Lighthouse to run on testnets and progress towards a production implementation.

Where this PR touches code that will run on the pre-merge (i.e., current) Beacon Chain, any changes should be production ready. For post-merge components (e.g., execution_layer), some degree of unfinished-ness is acceptable. After all, "the merge" specification is not yet complete.

TODO

This section lists tasks required before this branch can be merged into unstable.

N/A

@paulhauner paulhauner changed the base branch from stable to unstable November 3, 2021 04:57
@paulhauner paulhauner mentioned this pull request Nov 3, 2021
7 tasks
@realbigsean
Copy link
Member

Upgrade to v1.1.4 spec tests, fixing any consensus changes.

I can work on this

@paulhauner
Copy link
Member Author

paulhauner commented Nov 11, 2021

I just rebased this branch onto unstable. It will fail CI until I push another fix (#2799).

@paulhauner
Copy link
Member Author

paulhauner commented Nov 28, 2021

I just rebased to fix a conflict with unstable and to fix a merge (instead of squash-merge) of #2796.

This will fail CI until we merge #2829.

@michaelsproul michaelsproul added the backwards-incompat Backwards-incompatible API change label Nov 28, 2021
@paulhauner paulhauner mentioned this pull request Nov 28, 2021
12 tasks
Copy link
Member

@michaelsproul michaelsproul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have reviewed the ./consensus changes thoroughly and I'm happy to merge this to unstable.

Copy link
Contributor

@divagant-martian divagant-martian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked ./lighthouse_network and ./network. it looks good to me

ethDreamer and others added 5 commits December 2, 2021 14:26
Added Execution Payload from Rayonism Fork

Updated new Containers to match Merge Spec

Updated BeaconBlockBody for Merge Spec

Completed updating BeaconState and BeaconBlockBody

Modified ExecutionPayload<T> to use Transaction<T>

Mostly Finished Changes for beacon-chain.md

Added some things for fork-choice.md

Update to match new fork-choice.md/fork.md changes

ran cargo fmt

Added Missing Pieces in eth2_libp2p for Merge

fix ef test

Various Changes to Conform Closer to Merge Spec
* Update to v1.1.0-beta.4 (squash of #2548)

* SSZ, cached tree hash, EF tests
* Remove unchecked arith from ssz_derive

* Address clippy lints in block_verfication

* Use safe math for is_valid_gas_limit
pawanjay176 and others added 24 commits December 2, 2021 14:26
* Add payload verification status to fork choice

* Pass payload verification status to import_block

* Add valid back-propagation

* Add head safety status latch to API

* Remove ExecutionLayerStatus

* Add execution info to client notifier

* Update notifier logs

* Change use of "hash" to refer to beacon block

* Shutdown on invalid finalized block

* Tidy, add comments

* Fix failing FC tests

* Allow blocks with unsafe head

* Fix forkchoiceUpdate call on startup
* update initializing from eth1 for merge genesis

* read execution payload header from file lcli

* add `create-payload-header` command to `lcli`

* fix base fee parsing

* Apply suggestions from code review

* default `execution_payload_header` bool to false when deserializing `meta.yml` in EF tests

Co-authored-by: Paul Hauner <[email protected]>
* Freshen Cargo.lock

* Fix gossip worker

* Update map_fork_name_with
* Fix arbitrary check kintsugi

* Add merge chain spec fields, and a function to determine which constant to use based on the state variant

* increment spec test version

* Remove `Transaction` enum wrapper

* Remove Transaction new-type

* Remove gas validations

* Add `--terminal-block-hash-epoch-override` flag

* Increment spec tests version to 1.1.5

* Remove extraneous gossip verification ethereum/consensus-specs#2687

* - Remove unused Error variants
- Require both "terminal-block-hash-epoch-override" and "terminal-block-hash-override" when either flag is used

* - Remove a couple more unused Error variants

Co-authored-by: Paul Hauner <[email protected]>
* Change base_fee_per_gas to Uint256

* Add custom (de)serialization to ExecutionPayload

* Fix errors

* Add a quoted_u256 module

* Remove unused function

* lint

* Add test

* Remove extra line

Co-authored-by: Paul Hauner <[email protected]>
* Fix fork choice after rebase

* Remove paulhauner warp dep

* Fix fork choice test compile errors

* Assume fork choice payloads are valid

* Add comment

* Ignore new tests

* Fix error in test skipping
* Allocate less memory (3GB) in engine tests

* Run cargo format

* Remove tx too large test

Co-authored-by: Michael Sproul <[email protected]>
* Added ForkchoiceUpdatedV1 & GetPayloadV1

* Added ExecutePayloadV1

* Added new geth test vectors

* Separated Json Object/Serialization Code into file

* Deleted code/tests for Requests Removed from spec

* Finally fixed serialization of null '0x'

* Made Naming of JSON Structs Consistent

* Fix clippy lints

* Remove u64 payload id

* Remove unused serde impls

* Swap to [u8; 8] for payload id

* Tidy

* Adjust some block gen return vals

* Tidy

* Add fallback when payload id is unknown

* Remove comment

Co-authored-by: Mark Mackey <[email protected]>
* Unify loading of eth2_network_config

* Apply overrides at lighthouse binary level

* Remove duplicate override values

* Add merge values to existing net configs

* Make override flags global

* Add merge fields to testing config

* Add one to TTD

* Fix failing engine tests

* Fix test compile error

* Remove TTD flags

* Move get_eth2_network_config

* Fix warn

* Address review comments
Fix max packet sizes

Fix max_payload_size function

Add merge block test

Fix max size calculation; fix up test

Clear comments

Add a payload_size_function

Use safe arith for payload calculation

Return an error if block too big in block production

Separate test to check if block is over limit
* Start v1.1.5 updates

* Implement new payload creation logic

* Tidy, add comments

* Remove unused error enums

* Add validate payload for gossip

* Refactor validate_merge_block

* Split payload verification in per block processing

* Add execute_payload

* Tidy

* Tidy

* Start working on new fork choice tests

* Fix failing merge block test

* Skip block_lookup_failed test

* Fix failing terminal block test

* Fixes from self-review

* Address review comments
* Fix makefile

* Return on invalid finalized block

* Fix todo in gossip scoring

* Require --merge for --fee-recipient

* Bump eth2_serde_utils

* Change schema versions

* Swap hash/uint256 test_random impls

* Use default for ExecutionPayload::empty

* Check for DBs before removing

* Remove kintsugi docker image

* Fix CLI default value
* Remove TODOs

* Fix typo
@paulhauner
Copy link
Member Author

I've just rebased to fix a merge conflict.

@paulhauner paulhauner merged commit f3c237c into unstable Dec 2, 2021
@paulhauner paulhauner deleted the kintsugi branch December 2, 2021 05:51
@paulhauner paulhauner restored the kintsugi branch December 2, 2021 05:52
@AgeManning AgeManning deleted the kintsugi branch January 20, 2022 21:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backwards-incompat Backwards-incompatible API change kintsugi 🍵

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants