-
-
Published
Linked with GitHub
# Hive Shapella Builder API Results
## Test Description
- Two client types, each running a single instance containing 50% of the validation keys each
- Clients are configured to connect to a mock builder, which simulates a working builder by querying the execution client for block production
- Mock builder is capable determining correct prevrandao and withdrawals list from the consensus client by querying the beacon state
- Chain config specifies Capella fork on epoch 2 or 5, depending on the client type
- Mock builder produces valid payloads up until before the Capella fork
- After Capella fork, the builder produces seemingly valid blinded payloads (valid withdrawals list), but a corrupted state root.
- Upon payload unblinding, client is expected to detect the issue and not include the signed beacon block in its chain
- Client is expected to circuit-break the usage of the builder due to the missing slots and network conditions
- Test finishes once the Capella fork epoch is finalized by the chain
## Specific Client Configuration
#### lighthouse
version: Lighthouse/v3.4.0-9c81be8
minimum capella fork epoch: 5
#### teku
version: teku/v23.2.0+16-gf97c16165/linux-x86_64/-eclipseadoptium-openjdk64bitservervm-java-17
minimum capella fork epoch: 5
#### prysm
version: commit: f6cfd8590975f05a18b6e36dd3d8b28d14bcce6c
minimum capella fork epoch: 2
#### nimbus
version: Nimbus/v23.2.0-ffaa42-stateofus
minimum capella fork epoch: 2
#### lodestar
version: v1.4.3/960b8c5
minimum capella fork epoch: 2
## How to reproduce
hive branch: https://github.com/marioevz/hive/tree/add-builder-tests-to-eth2
example command:
```
cd hive
go build -v .
./hive --client go-ethereum,teku-bn,teku-vc,prysm-bn,prysm-vc --sim eth2/withdrawals --sim.limit "/test-builders-capella-invalid-payload"
```
## Results
| Client 1 | Client 2 | Capella Fork Epoch| Capella Finalization Epoch | Percentage Filled Slots | Missed Slots Client 1 | Missed Slots Client 2 |
| -------- | -------- | - | -------- | - | - | - |
| Lighthouse | Teku | 5 | 7 | 71.875% | Epoch 5: 6 Epoch 6: 3 | Epoch 5: 3 Epoch 6: 5
| Lighthouse | Prysm | 5 | 7 | 71.875% | Epoch 5: 3 Epoch 6: 6 | Epoch 5: 3 Epoch 6: 3
| Lighthouse | Nimbus | 5 | 7 | Epoch 5: 31.25%, Epoch 6: 59.375% | Epoch 5: 0 Epoch 6: 0 | Epoch 5: **22** Epoch 6: **12**
| Lighthouse | Lodestar | 5 | 7 | Epoch 5: 46.875%, Epoch 6: 53.125% | Epoch 5: 4 Epoch 6: 0 | Epoch 5: **13** Epoch 6: **15**
| Prysm | Teku | 5 | 7 | 71.875% | Epoch 5: 5 Epoch 6: 0 | Epoch 5: 4 Epoch 6: **9**
| Nimbus | Teku | 5 | 7 | Epoch 5: 40.625%, Epoch 6: 46.875% | Epoch 5: **15** Epoch 6: **17** | Epoch 5: 4 Epoch 6: 0
| Lodestar | Teku | 5 | 7 | Epoch 5: 40.625%, Epoch 6: 59.375% | Epoch 5: **15** Epoch 6: **13** | Epoch 5: 4 Epoch 6: 0
| Nimbus | Prysm | N/A* |
| Lodestar | Prysm | 2 | 4 | Epoch 2: 37.5%, Epoch 3: 59.375% | Epoch 2: **16** Epoch 3: **13** | Epoch 2: 3 Epoch 3: 0
| Nimbus | Lodestar | 2 | 4 | Epoch 2: 28.125%, Epoch 3: 56.25% | Epoch 2: **16** Epoch 3: **14** | Epoch 2: 7 Epoch 3: 0
\*Client combination has unrelated bootnode pair issues in hive