Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
0767f40
feat(core): implement validatorapi node_version handler
varex83 May 28, 2026
41f5fb0
fix: linter
varex83 May 28, 2026
aaf053e
feat(core): implement validatorapi proposer_duties handler (#450)
varex83 May 28, 2026
09b14ac
refactor(core): use dynamic dispatch for validatorapi Handler
varex83 May 28, 2026
a3ffa9e
feat(core): scaffold validatorapi Component handler
varex83 May 28, 2026
6fe5785
feat(core): implement validatorapi attester_duties handler
varex83 May 28, 2026
11ad940
feat(core): implement validatorapi sync_committee_duties handler
varex83 May 28, 2026
26675fe
feat(core): implement validatorapi attestation_data handler
varex83 May 28, 2026
5da9093
fix(core): address PR #451 review feedback
varex83agent May 29, 2026
514b0db
feat(core): implement validatorapi validators handler
varex83agent May 29, 2026
a843d5c
Merge branch 'main' into bohdan/validatorapi-validators
varex83agent Jun 15, 2026
576ba2a
feat(core): wire validatorapi proxy + proposal/validators router hand…
varex83agent Jun 17, 2026
478ebd5
fix(core): address validatorapi router review findings
varex83agent Jun 17, 2026
0661a4e
feat(core): implement validatorapi attestation + aggregation handlers
varex83agent Jun 17, 2026
ad372ea
fix(core): address validatorapi attestation/aggregation review findings
varex83agent Jun 17, 2026
68a1d09
Merge branch 'main' into bohdan/validatorapi-pr1-proxy-wiring
varex83agent Jun 19, 2026
4aab4df
Merge remote-tracking branch 'origin/main' into bohdan/validatorapi-p…
varex83agent Jun 19, 2026
76f5f7d
fix(core): raise validatorapi block-submission body limit to 16 MiB
varex83agent Jun 19, 2026
2b8093c
Merge branch 'bohdan/validatorapi-pr1-proxy-wiring' into bohdan/valid…
varex83agent Jun 19, 2026
8cb6a72
Merge branch 'main' into bohdan/validatorapi-pr2-attestation-aggregation
varex83agent Jun 19, 2026
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
5 changes: 4 additions & 1 deletion crates/core/src/scheduler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1161,7 +1161,10 @@ mod tests {
pubkey: pubkey.to_string(),
validator_index: v_idx.to_string(),
slot: slot.to_string(),
..Default::default()
committee_index: "0".to_owned(),
committee_length: "0".to_owned(),
committees_at_slot: "0".to_owned(),
validator_committee_index: "0".to_owned(),
};
let def: types::AttesterDutyDefinition = datum.try_into().expect("valid attester datum");
types::DutyDefinition::Attester(def)
Expand Down
2 changes: 1 addition & 1 deletion crates/core/src/signeddata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1176,7 +1176,7 @@ impl SignedSyncContributionAndProof {
}

/// Attester duty metadata associated with an attestation.
#[derive(Debug, Clone, PartialEq, Eq)]
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct AttesterDuty {
/// Slot for the duty.
pub slot: phase0::Slot,
Expand Down
28 changes: 28 additions & 0 deletions crates/core/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,15 @@ pub struct AttesterDutyDefinition {
pub v_idx: u64,
/// The slot at which the validator must attest.
pub slot: SlotNumber,
/// Index of the beacon committee the validator attests in.
pub committee_index: u64,
/// Number of validators in the committee.
pub committee_length: u64,
/// Total number of committees at the slot.
pub committees_at_slot: u64,
/// Position of the validator within its committee. Used to match a
/// submitted attestation's single aggregation bit back to this validator.
pub validator_committee_index: u64,
}

impl TryInto<AttesterDutyDefinition>
Expand All @@ -452,11 +461,30 @@ impl TryInto<AttesterDutyDefinition>
SlotNumber::from(self.slot.parse::<u64>().map_err(|_| {
pluto_eth2api::EthBeaconNodeApiClientError::ParseError("slot".into())
})?);
let committee_index = self.committee_index.parse::<u64>().map_err(|_| {
pluto_eth2api::EthBeaconNodeApiClientError::ParseError("committee_index".into())
})?;
let committee_length = self.committee_length.parse::<u64>().map_err(|_| {
pluto_eth2api::EthBeaconNodeApiClientError::ParseError("committee_length".into())
})?;
let committees_at_slot = self.committees_at_slot.parse::<u64>().map_err(|_| {
pluto_eth2api::EthBeaconNodeApiClientError::ParseError("committees_at_slot".into())
})?;
let validator_committee_index =
self.validator_committee_index.parse::<u64>().map_err(|_| {
pluto_eth2api::EthBeaconNodeApiClientError::ParseError(
"validator_committee_index".into(),
)
})?;

Ok(AttesterDutyDefinition {
pubkey,
v_idx,
slot,
committee_index,
committee_length,
committees_at_slot,
validator_committee_index,
})
}
}
Expand Down
Loading
Loading