Exemplo n.º 1
0
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,
    }
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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),
    }
Exemplo n.º 4
0
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)