Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

simulators/eth2/common: create client interfaces, update mock builder #738

Merged
merged 11 commits into from
Apr 13, 2023

Conversation

marioevz
Copy link
Member

@marioevz marioevz commented Mar 3, 2023

This PR introduces the interfaces Client and ManagedClient which are now used by the ExecutionClient, BeaconClient and ValidatorClient structures to communicate with the clients.

Previously, the structures directly used hivesim.Client, which required a client launched and managed by hive.

hivesim.Client is now abstracted through ManagedClient to allow instantiation of ExecutionClient, BeaconClient or ValidatorClient and use an external client.

With this change, modules like the mock builder can now be imported by other non-hive modules, and even compiled separately as standalone commands.

Changes Included

Testnet Clients

  • Client/ManagedClient interfaces
  • Execution and Beacon clients now have separate configuration structures, ExecutionClientConfig and BeaconClientConfig respectively
  • Beacon client structure can now automatically fetch the beacon spec from the client itself
  • Beacon client subnets are now possible: If a beacon client is started with a specific subnet, their ENR will only be passed to the clients of the same subnet (useful to test forks and re-orgs)
  • Testnet creation now uses configuration structs

Withdrawals Test Suite

  • Tests now use the mock builder functionality to invalidate payloads

Mock builder

  • Support to invalidate payloads, used in testnets to verify the circuit breaker behavior
  • Support to create invalid outdated (from a previous fork) payloads.
  • Mock builder behavior can now be altered while running by using the REST API (see builder/mock/README.md)

@holgerd77
Copy link
Contributor

Hi @marioevz, thanks for all these extensive restructuring/refactoring works and efforts, really appreciated by "the users"!! 🤗 🤩 ❤️

@marioevz marioevz requested a review from fjl March 13, 2023 14:35
@marioevz
Copy link
Member Author

We could first merge #741 and then I could update the ManagedClient interface in this PR to include pause/unpause feature, which would allow to construct beacon chain tests which pause the beacon and validator clients. But let me know what you think @fjl

@marioevz
Copy link
Member Author

I've been running these changes locally for quite some time now, and they are required to introduce more tests into the branch, so I will be merging now.

@marioevz marioevz merged commit 28a27c9 into ethereum:master Apr 13, 2023
mattsse pushed a commit to paradigmxyz/hive that referenced this pull request May 12, 2023
* simulators/ethereum/engine: send `eth_` requests to port 8545 (ethereum#752)

simulators/ethereum/engine: send `eth_` requests to 8545

* clients/ethereumjs: Update branch (ethereum#753)

* clients/ethereumjs: Change git branch

* clients/ethereumjs: Fix bash script issues

* simulators/ethereum/engine: node: unsubscribe from events

* simulators/ethereum/engine: clmock: add extra logs

* simulators/ethereum/engine: correctly stop secondary clients

* simulators/eth2/common: create client interfaces, update mock builder (ethereum#738)

* simulators/eth2/common: refactor clients

* simulators/eth2/engine: fixes due to refactor

* simulators/eth2/common: builder: invalidate payloads

* simulators/eth2/common: builder readme

* simulators/eth2/common: builder: add option to build a payload on an outdated version

* simulators/eth2/withdrawals: add invalid built payload version test

* simulators/eth2/common: builder: remove check to build invalid payload

* simulators/eth2/withdrawals: Fix check

* simulators/eth2/withdrawals: test case validation

* simulators/eth2/common: builder: fix invalidation

* simulators/eth2/withdrawals: fix verifications again

* simulators/ethereum/pyspec: Comment Dockerfile to run local fixtures (ethereum#755)

simulators/ethereum/pyspec: Add Dockerfile comment to run locally generated fixtures

* clients/besu: add --data-storage-format=BONSAI  (ethereum#758)

* simulators/ethereum/engine: Unique Payload ID Tests (ethereum#757)

* simulators/ethereum/engine: expose generic fcu, np

* simulators/ethereum/engine: Unique payload id test

* simulators/ethereum/engine: Add payload id test

* simulators/ethereum/engine: Parallel getPayloadBodies Test (ethereum#749)

* simulators/ethereum/engine: parallel getpayloadbodies

* simulators/ethereum/withdrawals: readme

* clients/erigon: --externalcl flag is not supported anymore (ethereum#760)

* graphql: consistent rule for Long outputs and args (ethereum#746)

* simulators/eth2: Verify block signatures on blocks sent to builder (ethereum#756)

* simulators/eth2/common/builder: interfaces changes

* simulators/eth2/common/builder: verify signatures

* simulators/eth2/withdrawals: Verify block signatures

* simulators/eth2/withdrawals: Update README

* simulators/eth2/withdrawals: minor nit comment

* clients/erigon: explicit --db.size.limit value (ethereum#766)

* clients/nethermind: Cancun support (ethereum#762)

* clients/nethermind: Cancun Support

* clients/nethermind: Dockerfile args

* clients/besu: Cancun Support (ethereum#769)

* clients/ethereumjs: Cancun Support (ethereum#768)

clients/ethereumjs: Cancun Support.

* clients/go-ethereum: remove deprecated PoW (ethereum#773)

Remove ethash-related flags and utils from go-ethereum, since they were
deprecated upstream.

---------

Co-authored-by: Martin Holst Swende <[email protected]>

* clients/nethermind: Add excessDataGas to genesis mapper. (ethereum#771)

* sim/pyspec: bubble error (ethereum#777)

* simulators/devp2p: fix issue causing ethereumjs to crash (ethereum#778)

sim/devp2p: fix issue causing ethereumjs to crash

It seems ethereumjs crashes if the chainid is not present in the genesis.

---------

Co-authored-by: Mario Vega <[email protected]>
Co-authored-by: Gabriel Fukushima <[email protected]>
Co-authored-by: Andrew Ashikhmin <[email protected]>
Co-authored-by: Sina Mahmoodi <[email protected]>
Co-authored-by: Spencer Taylor-Brown <[email protected]>
Co-authored-by: Martin Holst Swende <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants