erigontech / erigontech/erigon
EIP-8297 PBT: tracking
- Dominant language
- Go
- Stars
- 3.6k
- Forks
- 1.5k
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 455
Description
Tracking issue for the EIP-8297 partitioned binary tree in Erigon — work items and external context in one place. Design mandate is #22292.
## Erigon
- #22942 — `PBinPatriciaHashed` commitment engine
- #23384 — join the PBT devnet
- Mainnet PBT state conversion — in progress
## Consensus layer
PBT needs no Caplin change. `ExecutionPayload.state_root` is opaque to the beacon chain (EIP-8347: "the consensus-layer change is fork scheduling alone"), and neither geth's `IsPBT()` nor Besu's `BINARY_TRIE` hardfork id reaches the engine API, the header, or block-hash computation.
The tasks below are Gloas-at-genesis readiness, which the devnet needs because PBT requires Amsterdam, which forces Gloas at slot 0.
- #23385 — start from a Gloas-at-genesis beacon state
- #23386 — Gloas against an external execution client
- #23387 — Caplin as an ethereum-package `cl_type` on Gloas
- #23388 — pick a side on the Gloas-at-genesis state shape
Related open Gloas work by @domiwei: #23249, #23152, #23151, #22683.
## Devnet
- CPerezz/pbt-devnet#5 — geth + Besu + Lighthouse under ethereum-package
- CPerezz/pbt-devnet#6 — Lighthouse and Teku need mutually exclusive Gloas-at-genesis states
- CPerezz/pbt-devnet#7 — Besu computes the correct root but cannot set it as head
Clients: geth `CPerezz/go-ethereum@pbt`, Besu `matkt/besu@glamsterdam-devnet-8-pbt` + matkt/besu#31, library `besu-eth/besu-stateless@feat/partitioned-binary-trie`. Both take `binaryTrieTime` in genesis; Besu also needs `--data-storage-format=BINARY`.
## Spec
- EIP-8297 — the tree
- EIP-8347 — activation and migration
- EIP-8037 / EIP-8038 — Amsterdam state gas, which PBT rides on
Contributor guide
Assessment
This issue has not been assessed yet.