Skip to content

Conversation

@marioevz
Copy link
Member

@marioevz marioevz commented Aug 17, 2022

Changes Included

Requires: #604 #636
Supersedes: #631

cc @zilm13 @mkalinin

@marioevz
Copy link
Member Author

Hi @zilm13, this PR adds No viable head due to optimistic sync from this link: https://github.com/txrx-research/TestingTheMerge/blob/main/tests/engine-api.md

Teku is having an unexpected behavior on this test, during step Check that the node stays optimistic, i.e. execution_optimistic flag in Beacon API responses is true; We are querying block BeaconBlock(P10), and test expects execution_optimistic==true, however, the block is not available because the head of the node is further back in the chain:

  • We have a chain that introduces bellatrix in slot 128
  • At slot 130, the first beacon block with an execution payload is introduced, P1 (Test spec describes P0 as transition block, but we are sending 1 payload less)
  • At slot 139 we have P10, which is the last valid payload from the importer's perspective
  • At slot 140 we start spoofing the responses with SYNCING up to slot 161
  • At slot 162 we spoof payload with INVALID and latestValidHash==P10
  • We expect head to re-org to slot 139, but querying head returns slot 128, and test fails here

I have logs for this or if you prefer the test can be run in this branch using

./hive --client go-ethereum,teku-bn,teku-vc --sim eth2/engine --sim.limit "/no-viable-head-due-to-optimistic-sync"

@mkalinin
Copy link

  • We expect head to re-org to slot 139, but querying head returns slot 128, and test fails here

We should remove this expectation from the test. When CL is in this state (there is no viable head) it isn't specified what the head it should return, it leaves a room for implementations to decide which is the most convenient response to getHead. The only thing that is required is to stay optimistic. As long as BN is optimistic (optimistic is a subset of syncing state) it's not serving VC API which is ultimately an expected behaviour when there is no viable head to vote for and to build a block atop of.

@marioevz
Copy link
Member Author

  • We expect head to re-org to slot 139, but querying head returns slot 128, and test fails here

We should remove this expectation from the test. When CL is in this state (there is no viable head) it isn't specified what the head it should return, it leaves a room for implementations to decide which is the most convenient response to getHead. The only thing that is required is to stay optimistic. As long as BN is optimistic (optimistic is a subset of syncing state) it's not serving VC API which is ultimately an expected behaviour when there is no viable head to vote for and to build a block atop of.

I updated the test to only check whether the head is optimistic, now Teku is passing this part but I am having trouble with the clients syncing with each other after this, but the test is still failing.

I think it's safe to merge this test and we could submit a follow up PR if there are any fixes required.

@marioevz marioevz merged commit 1c2fea5 into ethereum:master Aug 19, 2022
racytech pushed a commit to racytech/hive that referenced this pull request Apr 4, 2025
racytech pushed a commit to racytech/hive that referenced this pull request Apr 4, 2025
🤖 I have created a release *beep* *boop*
---


##
[3.1.0](ethpandaops/ethereum-package@3.0.0...3.1.0)
(2024-06-07)


### Features

* add http url to el context
([ethereum#656](ethpandaops/ethereum-package#656))
([4e69a4c](ethpandaops/ethereum-package@4e69a4c))
* add prefunded accounts to output
([ethereum#657](ethpandaops/ethereum-package#657))
([bc06e2a](ethpandaops/ethereum-package@bc06e2a))
* add tracoor
([ethereum#651](ethpandaops/ethereum-package#651))
([b100cb6](ethpandaops/ethereum-package@b100cb6))
* add vc_count to increase the number of validators per participant
([ethereum#633](ethpandaops/ethereum-package#633))
([4272ff3](ethpandaops/ethereum-package@4272ff3))
* allow setting custom dora image & env variables
([ethereum#623](ethpandaops/ethereum-package#623))
([08a65c3](ethpandaops/ethereum-package@08a65c3))
* **apache:** Serve all config files
([ethereum#606](ethpandaops/ethereum-package#606))
([3f1f5e1](ethpandaops/ethereum-package@3f1f5e1))
* **config:** add peerdas vars
([ethereum#619](ethpandaops/ethereum-package#619))
([22f1498](ethpandaops/ethereum-package@22f1498))
* expose network-params
([ethereum#659](ethpandaops/ethereum-package#659))
([b0820dd](ethpandaops/ethereum-package@b0820dd))
* forky
([ethereum#625](ethpandaops/ethereum-package#625))
([ded68bd](ethpandaops/ethereum-package@ded68bd))
* Support participants_matrix
([ethereum#620](ethpandaops/ethereum-package#620))
([3a57467](ethpandaops/ethereum-package@3a57467))
* use `peer-das` image for dora when eip7594 is active
([ethereum#593](ethpandaops/ethereum-package#593))
([1b4bd3d](ethpandaops/ethereum-package@1b4bd3d))


### Bug Fixes

* add additional prefund addresses
([ethereum#655](ethpandaops/ethereum-package#655))
([6d2cdb6](ethpandaops/ethereum-package@6d2cdb6))
* add cl log level to builders
([ethereum#638](ethpandaops/ethereum-package#638))
([ad46dbd](ethpandaops/ethereum-package@ad46dbd))
* Add EIP-7002 & EIP-2935 bytecode to ethereum-genesis-generator
([ethereum#597](ethpandaops/ethereum-package#597))
([3d316ef](ethpandaops/ethereum-package@3d316ef))
* add http to teku endpoint
([ethereum#622](ethpandaops/ethereum-package#622))
([085b6e1](ethpandaops/ethereum-package@085b6e1))
* add peer_das_epoch to egg
([ethereum#603](ethpandaops/ethereum-package#603))
([91694df](ethpandaops/ethereum-package@91694df))
* add sha256 as an image label (if present)
([ethereum#637](ethpandaops/ethereum-package#637))
([3dcf888](ethpandaops/ethereum-package@3dcf888))
* add static port config for apache
([ethereum#608](ethpandaops/ethereum-package#608))
([b96e502](ethpandaops/ethereum-package@b96e502))
* **apache:** only set static port if wanted
([ethereum#610](ethpandaops/ethereum-package#610))
([2c6b7b1](ethpandaops/ethereum-package@2c6b7b1))
* blockscout fix for json variant
([ethereum#662](ethpandaops/ethereum-package#662))
([e79c510](ethpandaops/ethereum-package@e79c510))
* churn adjustments
([ethereum#614](ethpandaops/ethereum-package#614))
([12ca872](ethpandaops/ethereum-package@12ca872))
* default config
([ethereum#632](ethpandaops/ethereum-package#632))
([14be117](ethpandaops/ethereum-package@14be117))
* drop everythign after [@sha](https://github.com/sha) from image labels
([ethereum#636](ethpandaops/ethereum-package#636))
([5d35463](ethpandaops/ethereum-package@5d35463))
* erigon v3 - new default image
([ethereum#629](ethpandaops/ethereum-package#629))
([72cf150](ethpandaops/ethereum-package@72cf150))
* genesis generator bump
([ethereum#611](ethpandaops/ethereum-package#611))
([5460f6f](ethpandaops/ethereum-package@5460f6f))
* nightly tests
([ethereum#595](ethpandaops/ethereum-package#595))
([76c31e9](ethpandaops/ethereum-package@76c31e9))
* pectra example
([ethereum#605](ethpandaops/ethereum-package#605))
([67e3da0](ethpandaops/ethereum-package@67e3da0))
* prysm vc key manager ports
([ethereum#639](ethpandaops/ethereum-package#639))
([81c1ee7](ethpandaops/ethereum-package@81c1ee7))
* re-add images to labels
([ethereum#634](ethpandaops/ethereum-package#634))
([71f6e28](ethpandaops/ethereum-package@71f6e28))
* README has invalid configs
([ethereum#631](ethpandaops/ethereum-package#631))
([e33b971](ethpandaops/ethereum-package@e33b971))
* readme indentation
([ethereum#600](ethpandaops/ethereum-package#600))
([583db1b](ethpandaops/ethereum-package@583db1b))
* registration flags when using beacon node only
([ethereum#618](ethpandaops/ethereum-package#618))
([c12506b](ethpandaops/ethereum-package@c12506b))
* repair check workflow for external PRs
([ethereum#616](ethpandaops/ethereum-package#616))
([a584682](ethpandaops/ethereum-package@a584682))
* seperate vc service names
([ethereum#654](ethpandaops/ethereum-package#654))
([a5ffe14](ethpandaops/ethereum-package@a5ffe14))
* tune Besu options to work with tx_spammer
([ethereum#612](ethpandaops/ethereum-package#612))
([b395189](ethpandaops/ethereum-package@b395189))
* update dora images
([ethereum#598](ethpandaops/ethereum-package#598))
([dd28d61](ethpandaops/ethereum-package@dd28d61))
* update prysm image
([ethereum#599](ethpandaops/ethereum-package#599))
([0a38114](ethpandaops/ethereum-package@0a38114))
* use `electra-support` image for assertoor when electra fork epoch is
set
([ethereum#607](ethpandaops/ethereum-package#607))
([cdeab93](ethpandaops/ethereum-package@cdeab93))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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