---
# System prepended metadata

title: Week 11

---

# Week 11

This week I submitted a [pull request](https://github.com/ReamLabs/ream/pull/751) for my work on [Implement /eth/v1/beacon/pool/sync_committees](https://github.com/ReamLabs/ream/issues/215). While it’s under review, I decided to pick up another issue: [Implement /eth/v1/validator/sync_committee_contribution](https://github.com/ReamLabs/ream/issues/238).

According to the [Beacon API Spec for this endpoint](https://github.com/ethereum/beacon-APIs/blob/master/apis/validator/sync_committee_contribution.yaml), the endpoint allows clients to request that the beacon node produce a sync committee contribution. To understand how a sync committee contribution is created, I revisited [Consensus Specs Altair -- The Beacon Chain](https://ethereum.github.io/consensus-specs/specs/altair/beacon-chain/), [Consensus Specs Altair -- The Beacon Chain Honest Validator](https://ethereum.github.io/consensus-specs/specs/altair/validator/), and [Consensus Specs Altair -- Networking](https://ethereum.github.io/consensus-specs/specs/altair/p2p-interface/). I noted the key steps below.

## Sync Committee Contribution Creation

- **Assignment** Validators learn their sync committee role and subcommittee indices.
- **Message production** Every assigned member signs the head block root each slot and publishes `SyncCommitteeMessage` on the appropriate sync committee subnet topic.
- **Aggregator selection** Per subcommittee, roughly 16 aggregators per subnet are chosen each slot.
- **Contribution assembly** Selected aggregators gather subnet messages whose beacon block root matches their head, map each signer to a bit position, set `aggregation_bits`, and BLS-aggregate the signatures to form `SyncCommitteeContribution`.
- **Proof packaging & gossip** Aggregators wrap the contribution in `ContributionAndProof` and `SignedContributionAndProof`, then broadcast on the global `sync_committee_contribution_and_proof` topic two-thirds into the slot. Gossip layer enforcement covers slot bounds, selection proof validity, subcommittee membership, and aggregate signature correctness.
- **Block inclusion** Proposers select the highest-participation contribution per subcommittee and combine them into `block.body.sync_aggregate`, re-aggregating signatures for final inclusion.

For the endpoint `/eth/v1/validator/sync_committee_contribution` to work, I need to implement the flow from **Assignment** to **Contribution assembly**.

## Resources
[Consensus Specs Altair -- The Beacon Chain](https://ethereum.github.io/consensus-specs/specs/altair/beacon-chain/)
[Consensus Specs Altair -- The Beacon Chain Honest Validator](https://ethereum.github.io/consensus-specs/specs/altair/validator/)
[Consensus Specs Altair -- Networking](https://ethereum.github.io/consensus-specs/specs/altair/p2p-interface/)