Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions presets/mainnet/gloas.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,13 @@ PTC_SIZE: 512
# 2**2 (= 4) attestations
MAX_PAYLOAD_ATTESTATIONS: 4

# Execution
# ---------------------------------------------------------------
# 2**8 (= 256) builder deposit requests
MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD: 256
# 2**4 (= 16) builder exit requests
MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD: 16

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may be very costly, but with these numbers assymmetric, someone could make a ton of deposits and then withdraw all of them and take the whole churn for a long time.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think there is a good reason to use such a low value for exits as they are generally cheap to process

@jtraglia jtraglia Jun 19, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Staying in the target of 2 exit requests per payload, it would require locking up 14,400 ETH ($30m) to delay the builder exit queue by one day. This doesn't feel like a realistic concern.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, not a concern imo, we have a really high MIN_BUILDER_WITHDRAWABILITY_DELAY so this would be way too expensive, and exiting builders isn't actually time sensitive and already takes a long time


# State list lengths
# ---------------------------------------------------------------
# 2**40 (= 1,099,511,627,776) builder spots
Expand Down
7 changes: 7 additions & 0 deletions presets/minimal/gloas.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,13 @@ PTC_SIZE: 16
# 2**2 (= 4) attestations
MAX_PAYLOAD_ATTESTATIONS: 4

# Execution
# ---------------------------------------------------------------
# 2**8 (= 256) builder deposit requests
MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD: 256
# 2**4 (= 16) builder exit requests
MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD: 16

# State list lengths
# ---------------------------------------------------------------
# 2**40 (= 1,099,511,627,776) builder spots
Expand Down
2 changes: 2 additions & 0 deletions pysetup/spec_builders/heze.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ def is_inclusion_list_satisfied(self: ExecutionEngine,
def deprecate_functions(cls) -> set[str]:
return {
"initialize_ptc_window",
"is_builder_withdrawal_credential",
"is_pending_validator",
"onboard_builders_from_pending_deposits",
"upgrade_to_gloas",
}
2 changes: 1 addition & 1 deletion specs/_features/eip8025/beacon-chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ and imports proof types from [proof-engine.md](./proof-engine.md).

| Name | Value |
| ------------------------ | -------------------------- |
| `DOMAIN_EXECUTION_PROOF` | `DomainType('0x0E000000')` |
| `DOMAIN_EXECUTION_PROOF` | `DomainType('0x0F000000')` |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `DOMAIN_EXECUTION_PROOF` | `DomainType('0x0F000000')` |
| `DOMAIN_EXECUTION_PROOF` | `DomainType('0x0G000000')` |

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm 0x0F doesn't exist yet here. Since this is based on Gloas, not Heze. But yeah, we can change this optimistically.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this comes before Heze, the domain in Heze would change instead. If that makes sense.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either this or Heze's one should be changed. Slightly prefer to change this one to G because it's not entirely scheduled to ship this.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be clear, since both are currently based off Gloas they do not need to be different right now. After thinking about this for a while, I have just pushed a commit with changes Heze's DOMAIN_INCLUSION_LIST_COMMITTEE to 0x10000000. I changed this instead of DOMAIN_EXECUTION_PROOF because (1) I consider optional proofs to be part of Gloas and (2) I expect optional proofs to go live on mainnet before Heze does.


## Containers

Expand Down
8 changes: 7 additions & 1 deletion specs/_features/eip8148/beacon-chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ control their balance withdrawals more precisely.

| Name | Value |
| ------------------------------ | ---------------- |
| `SWEEP_THRESHOLD_REQUEST_TYPE` | `Bytes1('0x03')` |
| `SWEEP_THRESHOLD_REQUEST_TYPE` | `Bytes1('0x05')` |

### Sweep threshold validation

Expand Down Expand Up @@ -137,6 +137,8 @@ class ExecutionRequests(Container):
deposits: List[DepositRequest, MAX_DEPOSIT_REQUESTS_PER_PAYLOAD]
withdrawals: List[WithdrawalRequest, MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD]
consolidations: List[ConsolidationRequest, MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD]
builder_deposits: List[BuilderDepositRequest, MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD]
builder_exits: List[BuilderExitRequest, MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD]
# [New in EIP8148]
sweep_thresholds: List[SetSweepThresholdRequest, MAX_SET_SWEEP_THRESHOLD_REQUESTS_PER_PAYLOAD]
```
Expand Down Expand Up @@ -239,6 +241,8 @@ def get_execution_requests_list(execution_requests: ExecutionRequests) -> Sequen
(DEPOSIT_REQUEST_TYPE, execution_requests.deposits),
(WITHDRAWAL_REQUEST_TYPE, execution_requests.withdrawals),
(CONSOLIDATION_REQUEST_TYPE, execution_requests.consolidations),
(BUILDER_DEPOSIT_REQUEST_TYPE, execution_requests.builder_deposits),
(BUILDER_EXIT_REQUEST_TYPE, execution_requests.builder_exits),
# [New in EIP8148]
(SWEEP_THRESHOLD_REQUEST_TYPE, execution_requests.sweep_thresholds),
]
Expand Down Expand Up @@ -376,6 +380,8 @@ def apply_parent_execution_payload(
for_ops(requests.deposits, process_deposit_request)
for_ops(requests.withdrawals, process_withdrawal_request)
for_ops(requests.consolidations, process_consolidation_request)
for_ops(requests.builder_deposits, process_builder_deposit_request)
for_ops(requests.builder_exits, process_builder_exit_request)
# [New in EIP8148]
for_ops(requests.sweep_thresholds, process_set_sweep_threshold_request)

Expand Down
Loading