eth2.0-specs/test_libs/pyspec/eth2spec/test/helpers/proposer_slashings.py

36 lines
1.1 KiB
Python
Raw Normal View History

2019-05-15 16:36:32 +00:00
from copy import deepcopy
2019-05-15 19:07:24 +00:00
from eth2spec.phase0.spec import (
get_current_epoch, get_active_validator_indices, BeaconBlockHeader, ProposerSlashing
)
2019-05-15 17:31:02 +00:00
from eth2spec.test.helpers.block_header import sign_block_header
2019-05-15 16:36:32 +00:00
from eth2spec.test.helpers.keys import pubkey_to_privkey
2019-05-15 19:07:24 +00:00
def get_valid_proposer_slashing(state, signed_1=False, signed_2=False):
2019-05-15 16:36:32 +00:00
current_epoch = get_current_epoch(state)
validator_index = get_active_validator_indices(state, current_epoch)[-1]
privkey = pubkey_to_privkey[state.validator_registry[validator_index].pubkey]
slot = state.slot
header_1 = BeaconBlockHeader(
slot=slot,
2019-05-15 19:07:24 +00:00
previous_block_root=b'\x33' * 32,
state_root=b'\x44' * 32,
block_body_root=b'\x55' * 32,
2019-05-15 16:36:32 +00:00
)
header_2 = deepcopy(header_1)
2019-05-15 19:07:24 +00:00
header_2.previous_block_root = b'\x99' * 32
2019-05-15 16:36:32 +00:00
header_2.slot = slot + 1
2019-05-15 19:07:24 +00:00
if signed_1:
sign_block_header(state, header_1, privkey)
if signed_2:
sign_block_header(state, header_2, privkey)
2019-05-15 16:36:32 +00:00
return ProposerSlashing(
proposer_index=validator_index,
header_1=header_1,
header_2=header_2,
)