Skip to content

Commit 1f530e8

Browse files
committed
epbs documentation updates
1 parent b96e789 commit 1f530e8

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

apis/validator/attestation_data.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ get:
66
summary: "Produce an attestation data"
77
description: |
88
Requests that the beacon node produce an AttestationData. For `slot`s in
9-
Electra and later, this AttestationData must have a `committee_index` of 0.
9+
Electra and Fulu, this AttestationData must have a `committee_index` of 0. In Gloas, this `committee_index` field is repurposed to signal payload status: 0 if the execution payload is not present in the canonical chain (EMPTY), or 1 if the payload is present (FULL). For current slot attestations, always use 0.
1010
1111
A 503 error must be returned if the block identified by the response
1212
`beacon_block_root` is optimistic (i.e. the attestation attests to a block
@@ -22,7 +22,7 @@ get:
2222
in: query
2323
description: |
2424
The committee index for which an attestation data should be created. For `slot`s in
25-
Electra and later, this parameter MAY always be set to 0.
25+
Electra and Fulu, this parameter MAY always be set to 0. In Gloas, it signals payload status: 0 for EMPTY payload status, 1 for FULL payload status.
2626
required: true
2727
schema:
2828
$ref: "../../beacon-node-oapi.yaml#/components/schemas/Uint64"

validator-flow.md

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,52 @@ Attesting:
3636
been assigned to. If any validators in the committee are aggregators,
3737
set `is_aggregator` to `True`,
3838
2. Wait for new BeaconBlock for the assigned slot (either stream updates or poll)
39-
- Max wait: `SECONDS_PER_SLOT / 3` seconds into the assigned slot
39+
- Max wait: `SECONDS_PER_SLOT / 4` seconds into the assigned slot
4040
3. [Fetch AttestationData](#/ValidatorRequiredApi/produceAttestationData)
4141
4. [Submit Attestation](#/ValidatorRequiredApi/submitPoolAttestations) (AttestationData + aggregation bits)
4242
- Aggregation bits are `Bitlist` with length of committee (received in AttesterDuty)
4343
with bit on position `validator_committee_index` (see AttesterDuty) set to true
4444
5. If aggregator:
45-
- Wait for `SECONDS_PER_SLOT * 2 / 3` seconds into the assigned slot
45+
- Wait for `SECONDS_PER_SLOT / 2` seconds into the assigned slot
4646
- [Fetch aggregated Attestation](#/ValidatorRequiredApi/getAggregatedAttestation) from Beacon Node you've subscribed to your subnet
4747
- [Publish SignedAggregateAndProofs](#/ValidatorRequiredApi/publishAggregateAndProofs)
4848

4949
Monitor chain block reorganization events (TBD) as they could change attesters and aggregators.
5050
If reorg is detected, ask for new attester duties and proceed from 1..
51+
52+
### PTC Attesting
53+
54+
On start of every epoch, validator should [fetch PTC duties](#/Validator/getPtcDuties) for epoch + 1.
55+
Result are array of objects with validator index and assigned slot for payload timeliness committee participation.
56+
57+
PTC Attesting:
58+
1. Wait for new BeaconBlock for the assigned slot
59+
- Max wait: `SECONDS_PER_SLOT / 4` seconds into the assigned slot
60+
2. [Fetch PayloadAttestationData](#/ValidatorRequiredApi/producePayloadAttestationData) for the assigned slot
61+
3. Sign PayloadAttestationData to create PayloadAttestationMessage
62+
4. [Submit PayloadAttestationMessage](#/ValidatorRequiredApi/submitPayloadAttestationMessage)
63+
- Must be submitted by `3/4` of slot duration (`PAYLOAD_ATTESTATION_DUE_BPS` = 75% of slot)
64+
- Attestation indicates whether execution payload envelope has been seen for the block and if blobs were received
65+
66+
Monitor chain block reorganization events (TBD) as they could change PTC assignments.
67+
If reorg is detected, ask for new PTC duties and proceed from 1..
68+
69+
### Builder (Optional)
70+
71+
Validators may optionally act as builders to submit execution payload bids for block inclusion.
72+
This requires registering with builder-specific withdrawal credentials (`BUILDER_WITHDRAWAL_PREFIX`).
73+
74+
Building:
75+
1. [Fetch ExecutionPayloadBid](#/Validator/getExecutionPayloadBid) from beacon node
76+
- Beacon node obtains payload via `engine_getPayload` call to execution client
77+
2. Cache fields required to form an [ExecutionPayloadEnvelope](https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#executionpayloadenvelope)
78+
2. Sign ExecutionPayloadBid to create SignedExecutionPayloadBid
79+
3. [Submit SignedExecutionPayloadBid](#/Beacon/publishExecutionPayloadBid) to network for proposer consideration
80+
4. If bid is selected by proposer in their block:
81+
- [Fetch ExecutionPayloadEnvelope](#/Validator/getExecutionPayloadEnvelope) from beacon node
82+
- Sign envelope and [submit SignedExecutionPayloadEnvelope](#/Beacon/publishExecutionPayloadEnvelope)
83+
- Must submit early enough for PTC attestation by `3/4` of slot duration
84+
85+
Monitor for block proposals containing your bid to trigger envelope release.
86+
87+

0 commit comments

Comments
 (0)