move `SyncAggregate` to `base`

Preparation for EIP-7495 SSZ `StableContainer` which can only contain
immutable types in their fields.
This commit is contained in:
Etan Kissling 2024-05-26 14:39:24 +02:00
parent dc6951eee9
commit ee5af9f7ee
No known key found for this signature in database
GPG Key ID: B21DA824C5A3D03D
2 changed files with 31 additions and 32 deletions

View File

@ -84,15 +84,6 @@ type
## effectively making the cost of clearing the cache higher than the typical
## gains
# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/altair/beacon-chain.md#syncaggregate
SyncAggregate* = object
sync_committee_bits*: BitArray[SYNC_COMMITTEE_SIZE]
sync_committee_signature*: ValidatorSig
TrustedSyncAggregate* = object
sync_committee_bits*: BitArray[SYNC_COMMITTEE_SIZE]
sync_committee_signature*: TrustedSig
# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/altair/beacon-chain.md#synccommittee
SyncCommittee* = object
pubkeys*: HashArray[Limit SYNC_COMMITTEE_SIZE, ValidatorPubKey]
@ -529,8 +520,6 @@ type
SigVerifiedBeaconBlockBody |
TrustedBeaconBlockBody
SomeSyncAggregate* = SyncAggregate | TrustedSyncAggregate
SyncSubcommitteeIndex* = distinct uint8
IndexInSyncCommittee* = distinct uint16
@ -630,23 +619,6 @@ func shortLog*(v: SyncCommitteeMessage): auto =
signature: shortLog(v.signature)
)
func init*(T: type SyncAggregate): SyncAggregate =
SyncAggregate(sync_committee_signature: ValidatorSig.infinity)
func num_active_participants*(v: SomeSyncAggregate): int =
countOnes(v.sync_committee_bits)
func hasSupermajoritySyncParticipation*(
num_active_participants: uint64): bool =
const max_active_participants = SYNC_COMMITTEE_SIZE.uint64
num_active_participants * 3 >= static(max_active_participants * 2)
func hasSupermajoritySyncParticipation*(v: SomeSyncAggregate): bool =
hasSupermajoritySyncParticipation(v.num_active_participants.uint64)
func shortLog*(v: SyncAggregate): auto =
$(v.sync_committee_bits)
func shortLog*(v: ContributionAndProof): auto =
(
aggregator_index: v.aggregator_index,
@ -741,7 +713,3 @@ template asTrusted*(
SigVerifiedSignedBeaconBlock |
MsgTrustedSignedBeaconBlock): TrustedSignedBeaconBlock =
isomorphicCast[TrustedSignedBeaconBlock](x)
template asTrusted*(
x: SyncAggregate): TrustedSyncAggregate =
isomorphicCast[TrustedSyncAggregate](x)

View File

@ -281,6 +281,7 @@ type
SomeProposerSlashing* = ProposerSlashing | TrustedProposerSlashing
SomeSignedBeaconBlockHeader* = SignedBeaconBlockHeader | TrustedSignedBeaconBlockHeader
SomeSignedVoluntaryExit* = SignedVoluntaryExit | TrustedSignedVoluntaryExit
SomeSyncAggregate* = SyncAggregate | TrustedSyncAggregate
# Legacy database type, see BeaconChainDB
ImmutableValidatorData* = object
@ -363,6 +364,15 @@ type
message*: VoluntaryExit
signature*: TrustedSig
# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/altair/beacon-chain.md#syncaggregate
SyncAggregate* = object
sync_committee_bits*: BitArray[SYNC_COMMITTEE_SIZE]
sync_committee_signature*: ValidatorSig
TrustedSyncAggregate* = object
sync_committee_bits*: BitArray[SYNC_COMMITTEE_SIZE]
sync_committee_signature*: TrustedSig
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.6/specs/phase0/beacon-chain.md#beaconblockheader
BeaconBlockHeader* = object
slot*: Slot
@ -806,6 +816,27 @@ func shortLog*(v: SomeSignedVoluntaryExit): auto =
signature: shortLog(v.signature)
)
func shortLog*(v: SomeSyncAggregate): auto =
$(v.sync_committee_bits)
func init*(T: type SyncAggregate): SyncAggregate =
SyncAggregate(sync_committee_signature: ValidatorSig.infinity)
template asTrusted*(
x: SyncAggregate): TrustedSyncAggregate =
isomorphicCast[TrustedSyncAggregate](x)
func num_active_participants*(v: SomeSyncAggregate): int =
countOnes(v.sync_committee_bits)
func hasSupermajoritySyncParticipation*(
num_active_participants: uint64): bool =
const max_active_participants = SYNC_COMMITTEE_SIZE.uint64
num_active_participants * 3 >= static(max_active_participants * 2)
func hasSupermajoritySyncParticipation*(v: SomeSyncAggregate): bool =
hasSupermajoritySyncParticipation(v.num_active_participants.uint64)
chronicles.formatIt AttestationData: it.shortLog
chronicles.formatIt Checkpoint: it.shortLog