Add comment for clarity

This commit is contained in:
Tan Chee Keong
2025-05-09 19:59:48 +08:00
parent 4e77e39b66
commit 69e7e60f93
3 changed files with 17 additions and 16 deletions

View File

@@ -60,13 +60,13 @@ const WAITING_FOR_GENESIS_POLL_TIME: Duration = Duration::from_secs(12);
const HTTP_ATTESTATION_TIMEOUT_QUOTIENT: u32 = 4; const HTTP_ATTESTATION_TIMEOUT_QUOTIENT: u32 = 4;
const HTTP_ATTESTER_DUTIES_TIMEOUT_QUOTIENT: u32 = 4; const HTTP_ATTESTER_DUTIES_TIMEOUT_QUOTIENT: u32 = 4;
const HTTP_ATTESTATION_SUBSCRIPTIONS_TIMEOUT_QUOTIENT: u32 = 24; const HTTP_ATTESTATION_SUBSCRIPTIONS_TIMEOUT_QUOTIENT: u32 = 24;
const HTTP_ATTESTATION_AGGREGATOR_TIMEOUT_QUOTIENT: u32 = 24; // For distributed mode only const HTTP_ATTESTATION_AGGREGATOR_TIMEOUT_QUOTIENT: u32 = 24; // For DVT involving middleware only
const HTTP_LIVENESS_TIMEOUT_QUOTIENT: u32 = 4; const HTTP_LIVENESS_TIMEOUT_QUOTIENT: u32 = 4;
const HTTP_PROPOSAL_TIMEOUT_QUOTIENT: u32 = 2; const HTTP_PROPOSAL_TIMEOUT_QUOTIENT: u32 = 2;
const HTTP_PROPOSER_DUTIES_TIMEOUT_QUOTIENT: u32 = 4; const HTTP_PROPOSER_DUTIES_TIMEOUT_QUOTIENT: u32 = 4;
const HTTP_SYNC_COMMITTEE_CONTRIBUTION_TIMEOUT_QUOTIENT: u32 = 4; const HTTP_SYNC_COMMITTEE_CONTRIBUTION_TIMEOUT_QUOTIENT: u32 = 4;
const HTTP_SYNC_DUTIES_TIMEOUT_QUOTIENT: u32 = 4; const HTTP_SYNC_DUTIES_TIMEOUT_QUOTIENT: u32 = 4;
const HTTP_SYNC_AGGREGATOR_TIMEOUT_QUOTIENT: u32 = 24; // For distributed mode only const HTTP_SYNC_AGGREGATOR_TIMEOUT_QUOTIENT: u32 = 24; // For DVT involving middleware only
const HTTP_GET_BEACON_BLOCK_SSZ_TIMEOUT_QUOTIENT: u32 = 4; const HTTP_GET_BEACON_BLOCK_SSZ_TIMEOUT_QUOTIENT: u32 = 4;
const HTTP_GET_DEBUG_BEACON_STATE_QUOTIENT: u32 = 4; const HTTP_GET_DEBUG_BEACON_STATE_QUOTIENT: u32 = 4;
const HTTP_GET_DEPOSIT_SNAPSHOT_QUOTIENT: u32 = 4; const HTTP_GET_DEPOSIT_SNAPSHOT_QUOTIENT: u32 = 4;
@@ -83,12 +83,12 @@ const SELECTION_PROOF_SLOT_LOOKAHEAD: u64 = 8;
/// The attestation selection proof lookahead for those running with the --distributed flag. /// The attestation selection proof lookahead for those running with the --distributed flag.
const SELECTION_PROOF_SLOT_LOOKAHEAD_DVT: u64 = 1; const SELECTION_PROOF_SLOT_LOOKAHEAD_DVT: u64 = 1;
/// Fraction of a slot at which selection proof signing should happen (2 means half way). /// Fraction of a slot at which attestation selection proof signing should happen (2 means half way).
const SELECTION_PROOF_SCHEDULE_DENOM: u32 = 2; const SELECTION_PROOF_SCHEDULE_DENOM: u32 = 2;
/// Number of epochs in advance to compute selection proofs when not in `distributed` mode. /// Number of epochs in advance to compute sync selection proofs when not in `distributed` mode.
pub const AGGREGATION_PRE_COMPUTE_EPOCHS: u64 = 2; pub const AGGREGATION_PRE_COMPUTE_EPOCHS: u64 = 2;
/// Number of slots in advance to compute selection proofs when in `distributed` mode. /// Number of slots in advance to compute sync selection proofs when in `distributed` mode.
pub const AGGREGATION_PRE_COMPUTE_SLOTS_DISTRIBUTED: u64 = 1; pub const AGGREGATION_PRE_COMPUTE_SLOTS_DISTRIBUTED: u64 = 1;
type ValidatorStore<E> = LighthouseValidatorStore<SystemTimeSlotClock, E>; type ValidatorStore<E> = LighthouseValidatorStore<SystemTimeSlotClock, E>;
@@ -499,9 +499,7 @@ impl<E: EthSpec> ProductionValidatorClient<E> {
} }
}; };
let duties_service: Arc< let duties_service = Arc::new(
DutiesService<LighthouseValidatorStore<SystemTimeSlotClock, E>, SystemTimeSlotClock>,
> = Arc::new(
DutiesServiceBuilder::new() DutiesServiceBuilder::new()
.slot_clock(slot_clock.clone()) .slot_clock(slot_clock.clone())
.beacon_nodes(beacon_nodes.clone()) .beacon_nodes(beacon_nodes.clone())

View File

@@ -118,11 +118,12 @@ pub struct SubscriptionSlots {
pub struct SelectionProofConfig { pub struct SelectionProofConfig {
pub lookahead_slot: u64, pub lookahead_slot: u64,
pub computation_offset: Duration, // The seconds to compute the selection proof before a slot pub computation_offset: Duration, // The seconds to compute the selection proof before a slot
pub selections_endpoint: bool, pub selections_endpoint: bool, // whether to call the selections endpoint, true for DVT with middleware
pub parallel_sign: bool, pub parallel_sign: bool, // whether to sign the selection proof in parallel, true in distributed mode
} }
impl SelectionProofConfig { impl SelectionProofConfig {
// Create a default associated function to be passed in DutiesServiceBuilder::new()
fn default() -> Self { fn default() -> Self {
Self { Self {
lookahead_slot: 0, lookahead_slot: 0,
@@ -136,7 +137,7 @@ impl SelectionProofConfig {
/// Create a selection proof for `duty`. /// Create a selection proof for `duty`.
/// ///
/// Return `Ok(None)` if the attesting validator is not an aggregator. /// Return `Ok(None)` if the attesting validator is not an aggregator.
async fn make_selection_proof<S: ValidatorStore + 'static, T: SlotClock + 'static>( async fn make_selection_proof<S: ValidatorStore + 'static, T: SlotClock>(
duty: &AttesterData, duty: &AttesterData,
validator_store: &S, validator_store: &S,
spec: &ChainSpec, spec: &ChainSpec,
@@ -147,7 +148,7 @@ async fn make_selection_proof<S: ValidatorStore + 'static, T: SlotClock + 'stati
let beacon_committee_selection = BeaconCommitteeSelection { let beacon_committee_selection = BeaconCommitteeSelection {
validator_index: duty.validator_index, validator_index: duty.validator_index,
slot: duty.slot, slot: duty.slot,
// In distributed mode, this is partial selection proof // This is partial selection proof
selection_proof: validator_store selection_proof: validator_store
.produce_selection_proof(duty.pubkey, duty.slot) .produce_selection_proof(duty.pubkey, duty.slot)
.await .await
@@ -183,6 +184,7 @@ async fn make_selection_proof<S: ValidatorStore + 'static, T: SlotClock + 'stati
debug!( debug!(
"validator_index" = response_data.validator_index, "validator_index" = response_data.validator_index,
"slot" = %response_data.slot, "slot" = %response_data.slot,
// The selection proof from middleware response will be a full selection proof
"full selection proof" = ?response_data.selection_proof, "full selection proof" = ?response_data.selection_proof,
"Received selection from middleware" "Received selection from middleware"
); );
@@ -277,8 +279,9 @@ pub struct DutiesServiceBuilder<S, T> {
spec: Option<Arc<ChainSpec>>, spec: Option<Arc<ChainSpec>>,
//// Whether we permit large validator counts in the metrics. //// Whether we permit large validator counts in the metrics.
enable_high_validator_count_metrics: bool, enable_high_validator_count_metrics: bool,
/// If this validator is running in distributed mode. /// Create attestation selection proof config
attestation_selection_proof_config: SelectionProofConfig, attestation_selection_proof_config: SelectionProofConfig,
/// Create sync selection proof config
sync_selection_proof_config: SelectionProofConfig, sync_selection_proof_config: SelectionProofConfig,
disable_attesting: bool, disable_attesting: bool,
} }

View File

@@ -487,7 +487,7 @@ pub async fn poll_sync_committee_duties_for_period<S: ValidatorStore, T: SlotClo
} }
// Create a helper function here to reduce code duplication for normal and distributed mode // Create a helper function here to reduce code duplication for normal and distributed mode
pub async fn make_sync_selection_proof<S: ValidatorStore, T: SlotClock + 'static>( pub async fn make_sync_selection_proof<S: ValidatorStore, T: SlotClock>(
duties_service: &Arc<DutiesService<S, T>>, duties_service: &Arc<DutiesService<S, T>>,
duty: &SyncDuty, duty: &SyncDuty,
proof_slot: Slot, proof_slot: Slot,
@@ -519,7 +519,7 @@ pub async fn make_sync_selection_proof<S: ValidatorStore, T: SlotClock + 'static
} }
}; };
// In distributed mode when we want to call the selections endpoint // In DVT with middleware, when we want to call the selections endpoint
if duties_service if duties_service
.sync_duties .sync_duties
.selection_proof_config .selection_proof_config
@@ -529,7 +529,7 @@ pub async fn make_sync_selection_proof<S: ValidatorStore, T: SlotClock + 'static
"validator_index" = duty.validator_index, "validator_index" = duty.validator_index,
"slot" = %proof_slot, "slot" = %proof_slot,
"subcommittee_index" = *subnet_id, "subcommittee_index" = *subnet_id,
// In distributed mode, this is partial selection proof // This is partial selection proof
"partial selection proof" = ?Signature::from(selection_proof.clone()), "partial selection proof" = ?Signature::from(selection_proof.clone()),
"Sending sync selection to middleware" "Sending sync selection to middleware"
); );