2023-02-06 18:07:30 +00:00
# beacon_chain
# Copyright (c) 2023 Status Research & Development GmbH
# Licensed and distributed under either of
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
# at your option. This file may not be copied, modified, or distributed except according to those terms.
import " .. " / datatypes / [ altair , capella ]
from stew / byteutils import to0xHex
{. push raises : [ ] . }
type
2023-02-18 00:54:30 +00:00
# https://github.com/ethereum/builder-specs/blob/v0.3.0/specs/bellatrix/builder.md#builderbid
# https://github.com/ethereum/builder-specs/blob/v0.3.0/specs/capella/builder.md#executionpayloadheader
2023-02-06 18:07:30 +00:00
BuilderBid * = object
header * : capella . ExecutionPayloadHeader # [Modified in Capella]
value * : UInt256
pubkey * : ValidatorPubKey
2023-02-18 00:54:30 +00:00
# https://github.com/ethereum/builder-specs/blob/v0.3.0/specs/bellatrix/builder.md#signedbuilderbid
# https://github.com/ethereum/builder-specs/blob/v0.3.0/specs/capella/builder.md#executionpayloadheader
2023-02-06 18:07:30 +00:00
SignedBuilderBid * = object
message * : BuilderBid # [Modified in Capella]
signature * : ValidatorSig
2023-02-18 00:54:30 +00:00
# https://github.com/ethereum/builder-specs/blob/v0.3.0/specs/capella/builder.md#blindedbeaconblockbody
2023-05-09 08:16:43 +00:00
BlindedBeaconBlockBody * = object
2023-02-06 18:07:30 +00:00
randao_reveal * : ValidatorSig
eth1_data * : Eth1Data
graffiti * : GraffitiBytes
proposer_slashings * : List [ ProposerSlashing , Limit MAX_PROPOSER_SLASHINGS ]
attester_slashings * : List [ AttesterSlashing , Limit MAX_ATTESTER_SLASHINGS ]
attestations * : List [ Attestation , Limit MAX_ATTESTATIONS ]
deposits * : List [ Deposit , Limit MAX_DEPOSITS ]
voluntary_exits * : List [ SignedVoluntaryExit , Limit MAX_VOLUNTARY_EXITS ]
sync_aggregate * : SyncAggregate
execution_payload_header * :
capella . ExecutionPayloadHeader # [Modified in Capella]
bls_to_execution_changes * :
List [ SignedBLSToExecutionChange ,
Limit MAX_BLS_TO_EXECUTION_CHANGES ] # [New in Capella]
2023-02-18 00:54:30 +00:00
# https://github.com/ethereum/builder-specs/blob/v0.3.0/specs/bellatrix/builder.md#blindedbeaconblock
# https://github.com/ethereum/builder-specs/blob/v0.3.0/specs/capella/builder.md#blindedbeaconblockbody
2023-02-06 18:07:30 +00:00
BlindedBeaconBlock * = object
slot * : Slot
proposer_index * : uint64
parent_root * : Eth2Digest
state_root * : Eth2Digest
body * : BlindedBeaconBlockBody # [Modified in Capella]
2023-02-18 00:54:30 +00:00
# https://github.com/ethereum/builder-specs/blob/v0.3.0/specs/bellatrix/builder.md#signedblindedbeaconblock
# https://github.com/ethereum/builder-specs/blob/v0.3.0/specs/capella/builder.md#blindedbeaconblockbody
2023-02-06 18:07:30 +00:00
SignedBlindedBeaconBlock * = object
message * : BlindedBeaconBlock
signature * : ValidatorSig
func shortLog * ( v : BlindedBeaconBlock ) : auto =
(
slot : shortLog ( v . slot ) ,
proposer_index : v . proposer_index ,
parent_root : shortLog ( v . parent_root ) ,
state_root : shortLog ( v . state_root ) ,
eth1data : v . body . eth1_data ,
graffiti : $ v . body . graffiti ,
proposer_slashings_len : v . body . proposer_slashings . len ( ) ,
attester_slashings_len : v . body . attester_slashings . len ( ) ,
attestations_len : v . body . attestations . len ( ) ,
deposits_len : v . body . deposits . len ( ) ,
voluntary_exits_len : v . body . voluntary_exits . len ( ) ,
sync_committee_participants : v . body . sync_aggregate . num_active_participants ,
block_number : v . body . execution_payload_header . block_number ,
# TODO checksum hex? shortlog?
fee_recipient : to0xHex ( v . body . execution_payload_header . fee_recipient . data ) ,
2023-02-21 13:21:38 +00:00
#bls_to_execution_changes_len: v.body.bls_to_execution_changes.len(), # TODO validator_client/block_service.nim seems to want same shape of shortLogs across all block types
2023-02-06 18:07:30 +00:00
)
func shortLog * ( v : SignedBlindedBeaconBlock ) : auto =
(
blck : shortLog ( v . message ) ,
signature : shortLog ( v . signature )
)