def sample_proposer_slashing_params(sample_block_header_params, sample_signature): block_header_data = BeaconBlockHeader.create(**sample_block_header_params) signed_block_header = SignedBeaconBlockHeader.create( message=block_header_data, signature=sample_signature) return { "signed_header_1": signed_block_header, "signed_header_2": signed_block_header, }
def genesis_state(eth2_config, genesis_time, genesis_validators): balances = tuple(validator.effective_balance for validator in genesis_validators) state = BeaconState.create( latest_block_header=BeaconBlockHeader.create( body_root=BeaconBlockBody.create().hash_tree_root ), validators=genesis_validators, balances=balances, config=eth2_config, ) state.genesis_time = genesis_time return state
def sample_beacon_state_params( config, genesis_slot, genesis_epoch, sample_fork_params, sample_eth1_data_params, sample_block_header_params, ): return { # Versioning "genesis_time": 0, "slot": genesis_slot + 100, "fork": Fork.create(**sample_fork_params), # History "latest_block_header": BeaconBlockHeader.create(**sample_block_header_params), "block_roots": (ZERO_HASH32, ) * config.SLOTS_PER_HISTORICAL_ROOT, "state_roots": (ZERO_HASH32, ) * config.SLOTS_PER_HISTORICAL_ROOT, "historical_roots": (), # Eth1 "eth1_data": Eth1Data.create(**sample_eth1_data_params), "eth1_data_votes": (), "eth1_deposit_index": 0, # Registry "validators": (), "balances": (), # Shuffling "randao_mixes": (ZERO_HASH32, ) * config.EPOCHS_PER_HISTORICAL_VECTOR, # Slashings "slashings": (0, ) * config.EPOCHS_PER_SLASHINGS_VECTOR, # Attestations "previous_epoch_attestations": (), "current_epoch_attestations": (), # Justification "justification_bits": (False, ) * JUSTIFICATION_BITS_LENGTH, "previous_justified_checkpoint": Checkpoint.create(epoch=0, root=b"\x99" * 32), "current_justified_checkpoint": Checkpoint.create(epoch=0, root=b"\x55" * 32), # Finality "finalized_checkpoint": Checkpoint.create(epoch=0, root=b"\x33" * 32), }
def create_block_header_with_signature( state: BeaconState, body_root: Hash32, privkey: int, slots_per_epoch: int, parent_root: SigningRoot = SAMPLE_HASH_1, state_root: Hash32 = SAMPLE_HASH_2, ) -> BeaconBlockHeader: block_header = BeaconBlockHeader.create( slot=state.slot, parent_root=parent_root, state_root=state_root, body_root=body_root, ) block_header_signature = sign_transaction( message_hash=block_header.signing_root, privkey=privkey, state=state, slot=block_header.slot, signature_domain=SignatureDomain.DOMAIN_BEACON_PROPOSER, slots_per_epoch=slots_per_epoch, ) return block_header.set("signature", block_header_signature)