Merge pull request #757 from ethereum/JustinDrake-patch-8
Check proposer is not slashed
This commit is contained in:
commit
8098af44a0
|
@ -2242,8 +2242,10 @@ def process_block_header(state: BeaconState, block: BeaconBlock) -> None:
|
||||||
assert block.previous_block_root == hash_tree_root(state.latest_block_header)
|
assert block.previous_block_root == hash_tree_root(state.latest_block_header)
|
||||||
# Save current block as the new latest block
|
# Save current block as the new latest block
|
||||||
state.latest_block_header = get_temporary_block_header(block)
|
state.latest_block_header = get_temporary_block_header(block)
|
||||||
# Verify proposer signature
|
# Verify proposer is not slashed
|
||||||
proposer = state.validator_registry[get_beacon_proposer_index(state, state.slot)]
|
proposer = state.validator_registry[get_beacon_proposer_index(state, state.slot)]
|
||||||
|
assert not proposer.slashed
|
||||||
|
# Verify proposer signature
|
||||||
assert bls_verify(
|
assert bls_verify(
|
||||||
pubkey=proposer.pubkey,
|
pubkey=proposer.pubkey,
|
||||||
message_hash=signed_root(block),
|
message_hash=signed_root(block),
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
from copy import deepcopy
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
from build.phase0.spec import (
|
||||||
|
get_beacon_proposer_index,
|
||||||
|
process_block_header,
|
||||||
|
)
|
||||||
|
from tests.phase0.helpers import (
|
||||||
|
build_empty_block_for_next_slot,
|
||||||
|
)
|
||||||
|
|
||||||
|
# mark entire file as 'sanity' and 'header'
|
||||||
|
pytestmark = [pytest.mark.sanity, pytest.mark.header]
|
||||||
|
|
||||||
|
|
||||||
|
def test_proposer_slashed(state):
|
||||||
|
pre_state = deepcopy(state)
|
||||||
|
|
||||||
|
block = build_empty_block_for_next_slot(pre_state)
|
||||||
|
proposer_index = get_beacon_proposer_index(pre_state, block.slot)
|
||||||
|
pre_state.validator_registry[proposer_index].slashed = True
|
||||||
|
with pytest.raises(AssertionError):
|
||||||
|
process_block_header(pre_state, block)
|
||||||
|
|
||||||
|
return state, [block], None
|
Loading…
Reference in New Issue