Skip to content

feat: add EIP-8282 builder deposit and exit contracts#43

Open
wemeetagain wants to merge 3 commits into
ethereum:mainfrom
wemeetagain:add-8282
Open

feat: add EIP-8282 builder deposit and exit contracts#43
wemeetagain wants to merge 3 commits into
ethereum:mainfrom
wemeetagain:add-8282

Conversation

@wemeetagain

Copy link
Copy Markdown

Port the two EIP-8282 builder request predeploys: the builder deposit contract (request type 0x03, serves first deposits and top-ups) and the builder exit contract (request type 0x04). Both are line-level derivatives of the EIP-7002/7251 request contracts, reusing the shared fee mechanism, queue, and system subroutine.

Add Foundry suites in the repo's house style (shared Test base, geas-ffi, computeFee/assertExcess), a slice() test helper, and an EIP-8282 reference in the README.

Port the two EIP-8282 builder request predeploys: the builder deposit
contract (request type 0x03, serves first deposits and top-ups) and the
builder exit contract (request type 0x04). Both are line-level
derivatives of the EIP-7002/7251 request contracts, reusing the shared
fee mechanism, queue, and system subroutine.

Add Foundry suites in the repo's house style (shared Test base,
geas-ffi, computeFee/assertExcess), a slice() test helper, and an
EIP-8282 reference in the README.
barnabasbusa added a commit to ethpandaops/ethereum-genesis-generator that referenced this pull request Jun 17, 2026
…erdam)

Bake both EIP-8282 builder execution request predeploys into the EL
genesis, gated on GLOAS_FORK_EPOCH, mirroring how EIP-7002/7251 are
gated on Electra.

- system-contracts.yaml: add eip8282_deposit (request type 0x03,
  568-byte runtime) and eip8282_exit (request type 0x04, 396-byte
  runtime). Both assembled with geas from ethereum/sys-asm#43,
  balance 0, nonce 1, storage slot 0 = excess inhibitor 0xff..ff.
- generate_genesis.sh: add a GLOAS_FORK_EPOCH gate in
  genesis_add_system_contracts() allocating both contracts.

Addresses are the Nick's-method keyless-deployment (vanity) addresses
for each init code, following the …007002 / …007251 convention:
  deposit 0x0000884d2AA32eAa155F59A2f24eFa73D9008282
  exit    0x000014574A74c805590AFF9499fc7A690f008282

Note: the contracts are still in proposal (sys-asm#43, open PR), so
addresses/code may change before finalization.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
barnabasbusa added a commit to ethpandaops/ethereum-genesis-generator that referenced this pull request Jun 18, 2026
…erdam) (#297)

## What

Bake both **EIP-8282 builder execution request** predeploys into the EL
genesis as system contracts, gated on `GLOAS_FORK_EPOCH` — mirroring how
EIP-7002/7251 are gated on Electra.

| Contract | Req type | Address | Runtime |
|---|---|---|---|
| Builder **deposit** | `0x03` |
`0x0000884d2AA32eAa155F59A2f24eFa73D9008282` | 568 B |
| Builder **exit** | `0x04` |
`0x000014574A74c805590AFF9499fc7A690f008282` | 396 B |

## Changes

- **`apps/el-gen/system-contracts.yaml`** — `eip8282_deposit` +
`eip8282_exit` allocations: `balance: 0`, `nonce: 1`, runtime assembled
with [geas](https://github.com/fjl/geas) from
[`ethereum/sys-asm#43`](ethereum/sys-asm#43),
storage slot `0` = excess inhibitor (`0xff…ff`).
- **`apps/el-gen/generate_genesis.sh`** — a `GLOAS_FORK_EPOCH` gate in
`genesis_add_system_contracts()` allocating both (same shape as the
Electra block).

## Address rationale

Both addresses are the Nick's-method keyless-deployment (vanity)
addresses for each init code, following the `…007002` / `…007251`
convention. For a genesis predeploy we hand-place runtime + storage, so
no deployment tx is needed — only the canonical address.

## Notes

- The contracts are still a **proposal** (sys-asm#43, an open PR), so
addresses/code may change before finalization; revisit when it lands on
`ethereum/sys-asm` main.
- Validated locally: YAML parses, `jq '.eip8282_deposit'` /
`.eip8282_exit` resolve, `bash -n` clean. Full genesis generation should
be exercised by CI.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Barnabas Busa <21987084+barnabasbusa@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.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.

1 participant