diff --git a/configs/mainnet.yaml b/configs/mainnet.yaml index e3bcc3abcea..dcc9fc11deb 100644 --- a/configs/mainnet.yaml +++ b/configs/mainnet.yaml @@ -99,6 +99,8 @@ SYNC_MESSAGE_DUE_BPS_GLOAS: 2500 # 5000 basis points, 50% of SLOT_DURATION_MS CONTRIBUTION_DUE_BPS_GLOAS: 5000 # 7500 basis points, 75% of SLOT_DURATION_MS +PAYLOAD_DUE_BPS: 7500 +# 7500 basis points, 75% of SLOT_DURATION_MS PAYLOAD_ATTESTATION_DUE_BPS: 7500 # Heze diff --git a/configs/minimal.yaml b/configs/minimal.yaml index 64126fdda31..52dba704666 100644 --- a/configs/minimal.yaml +++ b/configs/minimal.yaml @@ -95,6 +95,8 @@ SYNC_MESSAGE_DUE_BPS_GLOAS: 2500 # 5000 basis points, 50% of SLOT_DURATION_MS CONTRIBUTION_DUE_BPS_GLOAS: 5000 # 7500 basis points, 75% of SLOT_DURATION_MS +PAYLOAD_DUE_BPS: 7500 +# 7500 basis points, 75% of SLOT_DURATION_MS PAYLOAD_ATTESTATION_DUE_BPS: 7500 # Heze diff --git a/specs/gloas/fork-choice.md b/specs/gloas/fork-choice.md index f526a5551ea..c2ba6d2ea67 100644 --- a/specs/gloas/fork-choice.md +++ b/specs/gloas/fork-choice.md @@ -45,6 +45,7 @@ - [Modified `get_aggregate_due_ms`](#modified-get_aggregate_due_ms) - [Modified `get_sync_message_due_ms`](#modified-get_sync_message_due_ms) - [Modified `get_contribution_due_ms`](#modified-get_contribution_due_ms) + - [New `get_payload_due_ms`](#new-get_payload_due_ms) - [New `get_payload_attestation_due_ms`](#new-get_payload_attestation_due_ms) - [New `verify_execution_payload_envelope_signature`](#new-verify_execution_payload_envelope_signature) - [New `verify_execution_payload_envelope`](#new-verify_execution_payload_envelope) @@ -781,6 +782,13 @@ def get_contribution_due_ms() -> uint64: return get_slot_component_duration_ms(CONTRIBUTION_DUE_BPS_GLOAS) ``` +### New `get_payload_due_ms` + +```python +def get_payload_due_ms() -> uint64: + return get_slot_component_duration_ms(PAYLOAD_DUE_BPS) +``` + ### New `get_payload_attestation_due_ms` ```python diff --git a/specs/gloas/validator.md b/specs/gloas/validator.md index c5f7b574304..18ef666c0d8 100644 --- a/specs/gloas/validator.md +++ b/specs/gloas/validator.md @@ -43,6 +43,7 @@ validator" to implement Gloas. | `AGGREGATE_DUE_BPS_GLOAS` | `uint64(5000)` | basis points | 50% of `SLOT_DURATION_MS` | | `SYNC_MESSAGE_DUE_BPS_GLOAS` | `uint64(2500)` | basis points | 25% of `SLOT_DURATION_MS` | | `CONTRIBUTION_DUE_BPS_GLOAS` | `uint64(5000)` | basis points | 50% of `SLOT_DURATION_MS` | +| `PAYLOAD_DUE_BPS` | `uint64(7500)` | basis points | 75% of `SLOT_DURATION_MS` | | `PAYLOAD_ATTESTATION_DUE_BPS` | `uint64(7500)` | basis points | 75% of `SLOT_DURATION_MS` | ## Validator assignment @@ -334,8 +335,9 @@ The validator creates `payload_attestation_message` as follows: for the assigned slot. - Set `data.slot` to be the assigned slot. - If a previously seen `SignedExecutionPayloadEnvelope` references the block - with root `data.beacon_block_root`, set `data.payload_present` to `True`; - otherwise, set `data.payload_present` to `False`. + with root `data.beacon_block_root`, and it was seen before + `get_payload_due_ms()` milliseconds into the slot, set `data.payload_present` + to `True`; otherwise, set `data.payload_present` to `False`. - Set `data.blob_data_available` to `is_data_available(data.beacon_block_root)`. - Set `payload_attestation_message.validator_index = validator_index` where `validator_index` is the validator chosen to submit. The private key mapping