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_bits
be aBitlist[MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]
of lengthlen(committee)
, where the bit of the index of the validator in thecommittee
is set to0b1
. - Let
attestation.committee_bits
be 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_bits
be 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_bits
has the same value as in each individual attestation.