| layout | page |
|---|---|
| title | Validator flow |
| permalink | /validator-flow/ |
Detail explanation how validator should utilize this API to perform his regular BeaconChain duties.
On start of every epoch, validator should fetch proposer duties. Result is array of objects, each containing proposer pubkey and slot at which he is suppose to propose.
If proposing block, then at immediate start of slot:
- Ask Beacon Node for BeaconBlock object: produceBlockV3
- TODO: Post-Gloas block production endpoint (produceBlockV4) to be added in separate PR
- Sign block
- Submit SignedBeaconBlock (BeaconBlock + signature)
- TODO: Post-Gloas local block building flow (stateless vs. stateful) to be detailed in separate PR
Monitor chain block reorganization events (TBD) as they could change block proposers. If reorg is detected, ask for new proposer duties and proceed from 1.
On start of every epoch, validator should ask for attester duties for epoch + 1. Result are array of objects with validator, his committee and attestation slot.
Attesting:
- Upon receiving duty, have beacon node prepare committee subnet
- Check if aggregator by computing
slot_signature - Ask beacon node to prepare your subnet
-- Note, validator client only needs to submit one call to
prepareBeaconCommitteeSubnetper committee/slot its validators have been assigned to. If any validators in the committee are aggregators, setis_aggregatortoTrue,
- Check if aggregator by computing
- Wait for new BeaconBlock for the assigned slot (either stream updates or poll)
- Pre-Gloas forks: Max wait
SECONDS_PER_SLOT / 3seconds into the assigned slot - Post-Gloas forks: Max wait ATTESTATION_DUE_BPS_GLOAS seconds into the assigned slot
- Pre-Gloas forks: Max wait
- Fetch AttestationData
- Submit Attestation (AttestationData + aggregation bits)
- Aggregation bits are
Bitlistwith length of committee (received in AttesterDuty) with bit on positionvalidator_committee_index(see AttesterDuty) set to true
- Aggregation bits are
- If aggregator:
- Pre-Gloas forks: Wait for
SECONDS_PER_SLOT * 2 / 3seconds into the assigned slot - Post-Gloas forks: Wait for AGGREGATE_DUE_BPS_GLOAS seconds into the assigned slot
- Fetch aggregated Attestation from Beacon Node you've subscribed to your subnet
- Publish SignedAggregateAndProofs
- Pre-Gloas forks: Wait for
Monitor chain block reorganization events (TBD) as they could change attesters and aggregators. If reorg is detected, ask for new attester duties and proceed from 1..
On start of every epoch beginning with the Gloas fork, validator should fetch PTC duties for epoch + 1. Result are array of objects with validator index and assigned slot for payload timeliness committee participation.
PTC Attesting:
- Wait for execution payload and blobs to become available for the assigned slot (either stream updates or poll)
- Max wait PAYLOAD_ATTESTATION_DUE_BPS seconds into the assigned slot
- Fetch PayloadAttestationData for the assigned slot
- Sign
PayloadAttestationDatato createPayloadAttestationMessage - Submit PayloadAttestationMessages
- Attestation indicates whether execution payload envelope has been seen for the block and if blobs were received
Monitor chain block reorganization events (TBD) as they could change PTC assignments. If reorg is detected, ask for new PTC duties and proceed from 1..
Post-Gloas fork, builders are separate non-validating staked actors that submit execution payload bids for block inclusion.
Builders register by depositing with builder-specific withdrawal credentials (BUILDER_WITHDRAWAL_PREFIX) and are tracked
in the beacon state's builder registry.
Building:
- Fetch ExecutionPayloadBid from beacon node for the current or next slot's proposer to include.
- Beacon node obtains payload via
engine_getPayloadcall to execution client
- Beacon node obtains payload via
- Cache fields required to form an ExecutionPayloadEnvelope
- Sign
ExecutionPayloadBidto createSignedExecutionPayloadBid - Submit SignedExecutionPayloadBid to network for proposer consideration
- TODO: Envelope fetching and publishing flow (stateless vs. stateful) to be detailed in separate PR
Monitor for block proposals containing your bid to trigger envelope release.