owned this note
owned this note
Published
Linked with GitHub
# Hive Simulator Cleanup Draft
## Background
As part of improving hive's maintainability and establishing clearer ownership, we're proposing to remove simulators that are:
- Obsolete (testing deprecated features)
- Redundant (covered by other tools/simulators)
- Low value (minimal unique coverage)
## Proposed Removals
### 1. `ethereum/sync` - **Remove**
**What it does:** Tests client-to-client chain sync (snap-sync and full-sync modes)
**Why remove:**
- **Snap sync protocol** - Covered by `devp2p/snap` suite (tests protocol message conformance)
- **Full sync** - Covered by Syncoor + devnets (at scale, real conditions)
- **Cross-client interop** - Covered by devnets
The test chain is small/artificial. Real sync bugs surface on devnets with large chains under real network conditions.
---
### 2. `ethereum/consensus` - **Remove**
**What it does:** Runs `BlockchainTests` from the `ethereum/tests` repo
**Why remove:**
- `ethereum/tests` is deprecated in favor of `execution-specs`
- EELS `consume-rlp` and `consume-engine` run the modern fixture format
- Direct replacement exists: `ethereum/eels/*` simulators
---
### 3. `ethereum/graphql` - **Remove**
**What it does:** Tests GraphQL API queries against known outputs
**Why remove:**
- GraphQL is not consensus-critical
- Not all clients implement it
- Low value for cross-client testing
- Could be client-specific CI if needed
---
### 4. `eth2/testnet` - **Remove**
**What it does:** Runs PoW -> PoS transition testnets
**Why remove:**
- The Merge happened September 2022
- No client needs TTD transition handling anymore
- All new clients start post-merge
---
### 5. `eth2/engine` (transition tests only) - **Remove**
**What it does:** Tests TTD-based transition scenarios:
- `invalid-transition-payload`
- `unknown-pow-parent-transition-payload`
- `ttd-before-bellatrix`
- `equal-timestamp-terminal-transition-block`
- `invalid-terminal-block-payload-*`
- `build-atop-invalid-terminal-block`
- `no-viable-head-due-to-optimistic-sync`
**Why remove:**
- Same as above - TTD transitions are obsolete
**Note:** Keep the non-transition engine tests in `eth2/engine`
---
### 6. `portal/*` - **Remove**
**What it does:** Tests Portal Network clients (history, state, beacon networks)
**Why remove:**
- Portal Network project has been abandoned
- No longer actively developed or maintained
---
### 7. `smoke/clique` - **Remove** (lower priority)
**What it does:** Tests Clique PoA mining
**Why remove:**
- Ethereum mainnet uses PoS
- Goerli (Clique) is deprecated
- Most testnets now use PoS
---
## Simulators to Keep
| Simulator | Reason |
|-----------|--------|
| `devp2p/*` | P2P protocol conformance (discv4, discv5, eth, snap) |
| `ethereum/engine` | Engine API testing - needs Fusaka updates |
| `ethereum/rpc-compat` | RPC spec conformance - essential |
| `ethereum/eels/*` | Modern test fixtures (replaces consensus) |
| `eth2/withdrawals` | Capella fork - current |
| `eth2/dencun` | Deneb/Cancun fork - current |
| `eth2/engine` (non-transition) | Engine API edge cases |
| `smoke/network` | Hive infrastructure testing |
---
## Open Questions
1. **Felix (geth):** Any concerns with removing `ethereum/sync` or `ethereum/graphql`?
2. **EL Client Teams:** Any concerns from EL teams that may be using these tests internally?
3. **Ownership:** After cleanup, who maintains what? (To be discussed in follow-up call)
---
## Next Steps
- [ ] PR for removals in `hive/``.
- [ ] Comments on removal, review and re-address, the proposal is purge heavy.
- [ ] Establish ownership structure for remaining simulators in `hive/`.
- [ ] Update hive/ `README.md` and docs to address removal, and simulator ownership.