mirror of
https://github.com/ethereum/consensus-specs.git
synced 2026-02-08 16:35:05 -05:00
3.2 KiB
3.2 KiB
Deneb -- Honest Validator
Table of contents
Modifications in EIP-7549
Block proposal
Constructing the BeaconBlockBody
Attester slashings
Changed the max attestations size to MAX_ATTESTER_SLASHINGS_EIP7549.
Attestations
The network attestation aggregates contain only the assigned committee attestations.
Attestation aggregates received by the block proposer from the committee aggregators with disjoint committee_bits sets and equal AttestationData SHOULD be consolidated into a single Attestation object.
The proposer should run the following function to construct an on chain final aggregate form a list of network aggregates with equal AttestationData:
def compute_on_chain_aggregate(network_aggregates: Sequence[Attestation]) -> Attestation:
aggregates = sorted(network_aggregates, key=lambda a: get_committee_indices(a.committee_bits)[0])
data = aggregates[0].data
aggregation_bits = Bitlist[MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]()
for a in aggregates:
for b in a.aggregation_bits:
aggregation_bits.append(b)
signature = bls.Aggregate([a.signature for a in aggregates])
committee_indices = [get_committee_indices(a.committee_bits)[0] for a in aggregates]
committee_flags = [(index in committee_indices) for index in range(0, MAX_COMMITTEES_PER_SLOT)]
committee_bits = Bitvector[MAX_COMMITTEES_PER_SLOT](committee_flags)
return Attestation(aggregation_bits, data, committee_bits, signature)
Attesting
Construct attestation
- Set
attestation_data.index = 0. - Let
attestation.aggregation_bitsbe aBitlist[MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]of lengthlen(committee), where the bit of the index of the validator in thecommitteeis set to0b1. - Let
attestation.committee_bitsbe aBitvector[MAX_COMMITTEES_PER_SLOT], where the bit at the index associated with the validator's committee is set to0b1.
Note: Calling get_attesting_indices(state, attestation) should return a list of length equal to 1, containing validator_index.
Attestation aggregation
Construct aggregate
- Set
attestation_data.index = 0. - Let
aggregation_bitsbe aBitlist[MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]of lengthlen(committee), where each bit set from each individual attestation is set to0b1. - Set
attestation.committee_bits = committee_bits, wherecommittee_bitshas the same value as in each individual attestation.