Skip to content

Commit

Permalink
break up rotation args gen
Browse files Browse the repository at this point in the history
  • Loading branch information
ec2 committed Nov 8, 2023
1 parent a1412e1 commit 2f265a0
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 9 deletions.
51 changes: 51 additions & 0 deletions preprocessor/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,57 @@ pub async fn get_block_header<C: ClientTypes>(
Ok(block.header.message)
}

pub async fn get_light_client_update_at_current_period<
C: ClientTypes,
const SYNC_COMMITTEE_SIZE: usize,
const NEXT_SYNC_COMMITTEE_GINDEX: usize,
const NEXT_SYNC_COMMITTEE_PROOF_SIZE: usize,
const FINALIZED_ROOT_GINDEX: usize,
const FINALIZED_ROOT_PROOF_SIZE: usize,
const BYTES_PER_LOGS_BLOOM: usize,
const MAX_EXTRA_DATA_BYTES: usize,
>(
client: &Client<C>,
) -> eyre::Result<
LightClientUpdateCapella<
SYNC_COMMITTEE_SIZE,
NEXT_SYNC_COMMITTEE_GINDEX,
NEXT_SYNC_COMMITTEE_PROOF_SIZE,
FINALIZED_ROOT_GINDEX,
FINALIZED_ROOT_PROOF_SIZE,
BYTES_PER_LOGS_BLOOM,
MAX_EXTRA_DATA_BYTES,
>,
> {
let block = get_block_header(client, BlockId::Head).await?;
let slot = block.slot;
let period = slot / (32 * 256);

let route = format!("eth/v1/beacon/light_client/updates");
let mut updates: Vec<
VersionedValue<
LightClientUpdateCapella<
SYNC_COMMITTEE_SIZE,
NEXT_SYNC_COMMITTEE_GINDEX,
NEXT_SYNC_COMMITTEE_PROOF_SIZE,
FINALIZED_ROOT_GINDEX,
FINALIZED_ROOT_PROOF_SIZE,
BYTES_PER_LOGS_BLOOM,
MAX_EXTRA_DATA_BYTES,
>,
>,
> = client
.http
.get(client.endpoint.join(&route)?)
.query(&[("start_period", period), ("count", 1)])
.send()
.await?
.json()
.await?;
assert!(updates.len() == 1, "should only get one update");
Ok(updates.pop().unwrap().data)
}

pub async fn get_light_client_update_at_period<
C: ClientTypes,
const SYNC_COMMITTEE_SIZE: usize,
Expand Down
37 changes: 34 additions & 3 deletions preprocessor/src/rotation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,16 @@ use crate::{get_block_header, get_light_client_update_at_period};

pub async fn fetch_rotation_args<S: Spec, C: ClientTypes>(
client: &Client<C>,
) -> eyre::Result<CommitteeRotationArgs<S, Fr>> {
) -> eyre::Result<CommitteeRotationArgs<S, Fr>>
where
[(); S::SYNC_COMMITTEE_SIZE]:,
[(); S::FINALIZED_HEADER_DEPTH]:,
[(); S::BYTES_PER_LOGS_BLOOM]:,
[(); S::MAX_EXTRA_DATA_BYTES]:,
[(); S::SYNC_COMMITTEE_ROOT_INDEX]:,
[(); S::SYNC_COMMITTEE_DEPTH]:,
[(); S::FINALIZED_HEADER_INDEX]:,
{
let block = get_block_header(client, BlockId::Head).await?;
let slot = block.slot;
let period = slot / (32 * 256);
Expand All @@ -23,9 +32,31 @@ pub async fn fetch_rotation_args<S: Spec, C: ClientTypes>(
slot, period
);

let mut update: LightClientUpdateCapella<512, 55, 5, 105, 6, 256, 32> =
get_light_client_update_at_period(client, period).await?;
let update = get_light_client_update_at_period(client, period).await?;
rotation_args_from_update(client, update).await
}

pub async fn rotation_args_from_update<S: Spec, C: ClientTypes>(
_client: &Client<C>,
mut update: LightClientUpdateCapella<
{ S::SYNC_COMMITTEE_SIZE },
{ S::SYNC_COMMITTEE_ROOT_INDEX },
{ S::SYNC_COMMITTEE_DEPTH },
{ S::FINALIZED_HEADER_INDEX },
{ S::FINALIZED_HEADER_DEPTH },
{ S::BYTES_PER_LOGS_BLOOM },
{ S::MAX_EXTRA_DATA_BYTES },
>,
) -> eyre::Result<CommitteeRotationArgs<S, Fr>>
where
[(); S::SYNC_COMMITTEE_SIZE]:,
[(); S::FINALIZED_HEADER_DEPTH]:,
[(); S::BYTES_PER_LOGS_BLOOM]:,
[(); S::MAX_EXTRA_DATA_BYTES]:,
[(); S::SYNC_COMMITTEE_ROOT_INDEX]:,
[(); S::SYNC_COMMITTEE_DEPTH]:,
[(); S::FINALIZED_HEADER_INDEX]:,
{
let pubkeys_compressed = update
.next_sync_committee
.pubkeys
Expand Down
7 changes: 1 addition & 6 deletions preprocessor/src/sync.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,7 @@ where
[(); S::BYTES_PER_LOGS_BLOOM]:,
[(); S::MAX_EXTRA_DATA_BYTES]:,
{
let finality_update: LightClientFinalityUpdate<
{ S::SYNC_COMMITTEE_SIZE },
{ S::FINALIZED_HEADER_DEPTH },
{ S::BYTES_PER_LOGS_BLOOM },
{ S::MAX_EXTRA_DATA_BYTES },
> = get_light_client_finality_update(client).await?;
let finality_update = get_light_client_finality_update(client).await?;
step_args_from_finality_update(client, finality_update).await
}

Expand Down
3 changes: 3 additions & 0 deletions prover/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ where
[(); S::FINALIZED_HEADER_DEPTH]:,
[(); S::BYTES_PER_LOGS_BLOOM]:,
[(); S::MAX_EXTRA_DATA_BYTES]:,
[(); S::SYNC_COMMITTEE_ROOT_INDEX]:,
[(); S::SYNC_COMMITTEE_DEPTH]:,
[(); S::FINALIZED_HEADER_INDEX]:,
{
match proof {
Proof::CommitteeUpdate(args) => {
Expand Down

0 comments on commit 2f265a0

Please sign in to comment.