move `StableContainer` to `stable.nim`
This commit is contained in:
parent
36f939b514
commit
d222f11edf
|
@ -22,7 +22,7 @@ import
|
||||||
ssz_serialization/[merkleization, proofs],
|
ssz_serialization/[merkleization, proofs],
|
||||||
ssz_serialization/types as sszTypes,
|
ssz_serialization/types as sszTypes,
|
||||||
../digest,
|
../digest,
|
||||||
"."/[base, phase0]
|
"."/[stable, phase0]
|
||||||
|
|
||||||
from kzg4844 import KzgCommitment, KzgProof
|
from kzg4844 import KzgCommitment, KzgProof
|
||||||
from stew/bitops2 import log2trunc
|
from stew/bitops2 import log2trunc
|
||||||
|
@ -35,7 +35,7 @@ from ./capella import
|
||||||
HistoricalSummary, SignedBLSToExecutionChangeList, Withdrawal
|
HistoricalSummary, SignedBLSToExecutionChangeList, Withdrawal
|
||||||
from ./deneb import Blobs, BlobsBundle, KzgCommitments, KzgProofs
|
from ./deneb import Blobs, BlobsBundle, KzgCommitments, KzgProofs
|
||||||
|
|
||||||
export json_serialization, base, kzg4844
|
export json_serialization, stable, kzg4844
|
||||||
|
|
||||||
const
|
const
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/specs/altair/light-client/sync-protocol.md#constants
|
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/specs/altair/light-client/sync-protocol.md#constants
|
||||||
|
@ -48,193 +48,7 @@ const
|
||||||
CURRENT_SYNC_COMMITTEE_GINDEX = 86.GeneralizedIndex # current_sync_committee
|
CURRENT_SYNC_COMMITTEE_GINDEX = 86.GeneralizedIndex # current_sync_committee
|
||||||
NEXT_SYNC_COMMITTEE_GINDEX = 87.GeneralizedIndex # next_sync_committee
|
NEXT_SYNC_COMMITTEE_GINDEX = 87.GeneralizedIndex # next_sync_committee
|
||||||
|
|
||||||
# https://eips.ethereum.org/EIPS/eip-7688
|
|
||||||
MAX_ATTESTATION_FIELDS* = 8
|
|
||||||
MAX_INDEXED_ATTESTATION_FIELDS* = 8
|
|
||||||
MAX_EXECUTION_PAYLOAD_FIELDS* = 64
|
|
||||||
MAX_BEACON_BLOCK_BODY_FIELDS* = 64
|
|
||||||
MAX_BEACON_STATE_FIELDS* = 128
|
|
||||||
|
|
||||||
type
|
type
|
||||||
# https://eips.ethereum.org/EIPS/eip-7688
|
|
||||||
StableAttestation* {.
|
|
||||||
sszStableContainer: MAX_ATTESTATION_FIELDS.} = object
|
|
||||||
aggregation_bits*: ElectraCommitteeValidatorsBits
|
|
||||||
data*: AttestationData
|
|
||||||
signature*: ValidatorSig
|
|
||||||
committee_bits*: AttestationCommitteeBits
|
|
||||||
|
|
||||||
StableIndexedAttestation* {.
|
|
||||||
sszStableContainer: MAX_INDEXED_ATTESTATION_FIELDS.} = object
|
|
||||||
attesting_indices*:
|
|
||||||
List[uint64, Limit MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]
|
|
||||||
data*: AttestationData
|
|
||||||
signature*: ValidatorSig
|
|
||||||
|
|
||||||
StableAttesterSlashing* = object
|
|
||||||
attestation_1*: StableIndexedAttestation
|
|
||||||
attestation_2*: StableIndexedAttestation
|
|
||||||
|
|
||||||
StableExecutionPayload* {.
|
|
||||||
sszStableContainer: MAX_EXECUTION_PAYLOAD_FIELDS.} = object
|
|
||||||
# Execution block header fields
|
|
||||||
parent_hash*: Eth2Digest
|
|
||||||
fee_recipient*: ExecutionAddress
|
|
||||||
## 'beneficiary' in the yellow paper
|
|
||||||
state_root*: Eth2Digest
|
|
||||||
receipts_root*: Eth2Digest
|
|
||||||
logs_bloom*: BloomLogs
|
|
||||||
prev_randao*: Eth2Digest
|
|
||||||
## 'difficulty' in the yellow paper
|
|
||||||
block_number*: uint64
|
|
||||||
## 'number' in the yellow paper
|
|
||||||
gas_limit*: uint64
|
|
||||||
gas_used*: uint64
|
|
||||||
timestamp*: uint64
|
|
||||||
extra_data*: List[byte, MAX_EXTRA_DATA_BYTES]
|
|
||||||
base_fee_per_gas*: UInt256
|
|
||||||
|
|
||||||
# Extra payload fields
|
|
||||||
block_hash*: Eth2Digest # Hash of execution block
|
|
||||||
transactions*: List[Transaction, MAX_TRANSACTIONS_PER_PAYLOAD]
|
|
||||||
withdrawals*: List[Withdrawal, MAX_WITHDRAWALS_PER_PAYLOAD]
|
|
||||||
blob_gas_used*: uint64
|
|
||||||
excess_blob_gas*: uint64
|
|
||||||
deposit_receipts*: List[DepositReceipt, MAX_DEPOSIT_RECEIPTS_PER_PAYLOAD]
|
|
||||||
withdrawal_requests*:
|
|
||||||
List[ExecutionLayerWithdrawalRequest, MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD]
|
|
||||||
|
|
||||||
StableExecutionPayloadHeader* {.
|
|
||||||
sszStableContainer: MAX_EXECUTION_PAYLOAD_FIELDS.} = object
|
|
||||||
# Execution block header fields
|
|
||||||
parent_hash*: Eth2Digest
|
|
||||||
fee_recipient*: ExecutionAddress
|
|
||||||
state_root*: Eth2Digest
|
|
||||||
receipts_root*: Eth2Digest
|
|
||||||
logs_bloom*: BloomLogs
|
|
||||||
prev_randao*: Eth2Digest
|
|
||||||
block_number*: uint64
|
|
||||||
gas_limit*: uint64
|
|
||||||
gas_used*: uint64
|
|
||||||
timestamp*: uint64
|
|
||||||
extra_data*: List[byte, MAX_EXTRA_DATA_BYTES]
|
|
||||||
base_fee_per_gas*: UInt256
|
|
||||||
|
|
||||||
# Extra payload fields
|
|
||||||
block_hash*: Eth2Digest
|
|
||||||
## Hash of execution block
|
|
||||||
transactions_root*: Eth2Digest
|
|
||||||
withdrawals_root*: Eth2Digest
|
|
||||||
blob_gas_used*: uint64
|
|
||||||
excess_blob_gas*: uint64
|
|
||||||
deposit_receipts_root*: Eth2Digest
|
|
||||||
withdrawal_requests_root*: Eth2Digest
|
|
||||||
|
|
||||||
StableBeaconBlockBody* {.
|
|
||||||
sszStableContainer: MAX_BEACON_BLOCK_BODY_FIELDS.} = object
|
|
||||||
randao_reveal*: ValidatorSig
|
|
||||||
eth1_data*: Eth1Data
|
|
||||||
## Eth1 data vote
|
|
||||||
|
|
||||||
graffiti*: GraffitiBytes
|
|
||||||
## Arbitrary data
|
|
||||||
|
|
||||||
# Operations
|
|
||||||
proposer_slashings*: List[ProposerSlashing, Limit MAX_PROPOSER_SLASHINGS]
|
|
||||||
attester_slashings*:
|
|
||||||
List[StableAttesterSlashing, Limit MAX_ATTESTER_SLASHINGS_ELECTRA]
|
|
||||||
attestations*: List[StableAttestation, Limit MAX_ATTESTATIONS_ELECTRA]
|
|
||||||
deposits*: List[Deposit, Limit MAX_DEPOSITS]
|
|
||||||
voluntary_exits*: List[SignedVoluntaryExit, Limit MAX_VOLUNTARY_EXITS]
|
|
||||||
|
|
||||||
sync_aggregate*: SyncAggregate
|
|
||||||
|
|
||||||
# Execution
|
|
||||||
execution_payload*: StableExecutionPayload
|
|
||||||
bls_to_execution_changes*: SignedBLSToExecutionChangeList
|
|
||||||
blob_kzg_commitments*: KzgCommitments
|
|
||||||
consolidations*: List[SignedConsolidation, Limit MAX_CONSOLIDATIONS]
|
|
||||||
|
|
||||||
StableBeaconState* {.
|
|
||||||
sszStableContainer: MAX_BEACON_STATE_FIELDS.} = object
|
|
||||||
# Versioning
|
|
||||||
genesis_time*: uint64
|
|
||||||
genesis_validators_root*: Eth2Digest
|
|
||||||
slot*: Slot
|
|
||||||
fork*: Fork
|
|
||||||
|
|
||||||
# History
|
|
||||||
latest_block_header*: BeaconBlockHeader
|
|
||||||
## `latest_block_header.state_root == ZERO_HASH` temporarily
|
|
||||||
|
|
||||||
block_roots*: HashArray[Limit SLOTS_PER_HISTORICAL_ROOT, Eth2Digest]
|
|
||||||
## Needed to process attestations, older to newer
|
|
||||||
|
|
||||||
state_roots*: HashArray[Limit SLOTS_PER_HISTORICAL_ROOT, Eth2Digest]
|
|
||||||
historical_roots*: HashList[Eth2Digest, Limit HISTORICAL_ROOTS_LIMIT]
|
|
||||||
## Frozen in Capella, replaced by historical_summaries
|
|
||||||
|
|
||||||
# Eth1
|
|
||||||
eth1_data*: Eth1Data
|
|
||||||
eth1_data_votes*:
|
|
||||||
HashList[Eth1Data, Limit(EPOCHS_PER_ETH1_VOTING_PERIOD * SLOTS_PER_EPOCH)]
|
|
||||||
eth1_deposit_index*: uint64
|
|
||||||
|
|
||||||
# Registry
|
|
||||||
validators*: HashList[Validator, Limit VALIDATOR_REGISTRY_LIMIT]
|
|
||||||
balances*: HashList[Gwei, Limit VALIDATOR_REGISTRY_LIMIT]
|
|
||||||
|
|
||||||
# Randomness
|
|
||||||
randao_mixes*: HashArray[Limit EPOCHS_PER_HISTORICAL_VECTOR, Eth2Digest]
|
|
||||||
|
|
||||||
# Slashings
|
|
||||||
slashings*: HashArray[Limit EPOCHS_PER_SLASHINGS_VECTOR, Gwei]
|
|
||||||
## Per-epoch sums of slashed effective balances
|
|
||||||
|
|
||||||
# Participation
|
|
||||||
previous_epoch_participation*: EpochParticipationFlags
|
|
||||||
current_epoch_participation*: EpochParticipationFlags
|
|
||||||
|
|
||||||
# Finality
|
|
||||||
justification_bits*: JustificationBits
|
|
||||||
## Bit set for every recent justified epoch
|
|
||||||
|
|
||||||
previous_justified_checkpoint*: Checkpoint
|
|
||||||
current_justified_checkpoint*: Checkpoint
|
|
||||||
finalized_checkpoint*: Checkpoint
|
|
||||||
|
|
||||||
# Inactivity
|
|
||||||
inactivity_scores*: InactivityScores
|
|
||||||
|
|
||||||
# Light client sync committees
|
|
||||||
current_sync_committee*: SyncCommittee
|
|
||||||
next_sync_committee*: SyncCommittee
|
|
||||||
|
|
||||||
# Execution
|
|
||||||
latest_execution_payload_header*: StableExecutionPayloadHeader
|
|
||||||
|
|
||||||
# Withdrawals
|
|
||||||
next_withdrawal_index*: WithdrawalIndex
|
|
||||||
next_withdrawal_validator_index*: uint64
|
|
||||||
|
|
||||||
# Deep history valid from Capella onwards
|
|
||||||
historical_summaries*:
|
|
||||||
HashList[HistoricalSummary, Limit HISTORICAL_ROOTS_LIMIT]
|
|
||||||
|
|
||||||
deposit_receipts_start_index*: uint64
|
|
||||||
deposit_balance_to_consume*: Gwei
|
|
||||||
exit_balance_to_consume*: Gwei
|
|
||||||
earliest_exit_epoch*: Epoch
|
|
||||||
consolidation_balance_to_consume*: Gwei
|
|
||||||
earliest_consolidation_epoch*: Epoch
|
|
||||||
pending_balance_deposits*:
|
|
||||||
HashList[PendingBalanceDeposit, Limit PENDING_BALANCE_DEPOSITS_LIMIT]
|
|
||||||
|
|
||||||
pending_partial_withdrawals*:
|
|
||||||
HashList[PendingPartialWithdrawal, Limit PENDING_PARTIAL_WITHDRAWALS_LIMIT]
|
|
||||||
pending_consolidations*:
|
|
||||||
HashList[PendingConsolidation, Limit PENDING_CONSOLIDATIONS_LIMIT]
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.0/specs/electra/beacon-chain.md#indexedattestation
|
# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.0/specs/electra/beacon-chain.md#indexedattestation
|
||||||
IndexedAttestation* {.
|
IndexedAttestation* {.
|
||||||
sszProfile: StableIndexedAttestation.} = object
|
sszProfile: StableIndexedAttestation.} = object
|
||||||
|
|
Loading…
Reference in New Issue