PR feedback: Enable `verify_shard_block_signature`

This commit is contained in:
Hsiao-Wei Wang 2020-06-24 12:14:22 +08:00
parent db5da9dc97
commit dbd1d4e589
No known key found for this signature in database
GPG Key ID: 95B070122902DEA4
3 changed files with 14 additions and 11 deletions

View File

@ -170,7 +170,9 @@ def on_shard_block(store: Store, shard_store: ShardStore, signed_shard_block: Si
# Check the block is valid and compute the post-state # Check the block is valid and compute the post-state
shard_state = shard_parent_state.copy() shard_state = shard_parent_state.copy()
shard_state_transition(shard_state, shard_block, validate_message=True, beacon_parent_state=beacon_parent_state) shard_state_transition(
shard_state, signed_shard_block,
validate=True, beacon_parent_state=beacon_parent_state)
# Add new block to the store # Add new block to the store
shard_store.blocks[hash_tree_root(shard_block)] = shard_block shard_store.blocks[hash_tree_root(shard_block)] = shard_block

View File

@ -50,10 +50,10 @@ def verify_shard_block_message(beacon_parent_state: BeaconState,
``` ```
```python ```python
def verify_shard_block_signature(beacon_state: BeaconState, def verify_shard_block_signature(beacon_parent_state: BeaconState,
signed_block: SignedShardBlock) -> bool: signed_block: SignedShardBlock) -> bool:
proposer = beacon_state.validators[signed_block.message.proposer_index] proposer = beacon_parent_state.validators[signed_block.message.proposer_index]
domain = get_domain(beacon_state, DOMAIN_SHARD_PROPOSAL, compute_epoch_at_slot(signed_block.message.slot)) domain = get_domain(beacon_parent_state, DOMAIN_SHARD_PROPOSAL, compute_epoch_at_slot(signed_block.message.slot))
signing_root = compute_signing_root(signed_block.message, domain) signing_root = compute_signing_root(signed_block.message, domain)
return bls.Verify(proposer.pubkey, signing_root, signed_block.signature) return bls.Verify(proposer.pubkey, signing_root, signed_block.signature)
``` ```
@ -62,14 +62,15 @@ def verify_shard_block_signature(beacon_state: BeaconState,
```python ```python
def shard_state_transition(shard_state: ShardState, def shard_state_transition(shard_state: ShardState,
block: ShardBlock, signed_block: SignedShardBlock,
validate_message: bool = True, validate: bool = True,
beacon_parent_state: Optional[BeaconState] = None) -> ShardState: beacon_parent_state: Optional[BeaconState] = None) -> ShardState:
if validate_message: if validate:
assert beacon_parent_state is not None assert beacon_parent_state is not None
assert verify_shard_block_message(beacon_parent_state, shard_state, block) assert verify_shard_block_message(beacon_parent_state, shard_state, signed_block.message)
assert verify_shard_block_signature(beacon_parent_state, signed_block)
process_shard_block(shard_state, block) process_shard_block(shard_state, signed_block.message)
return shard_state return shard_state
``` ```
@ -127,7 +128,7 @@ def is_valid_fraud_proof(beacon_state: BeaconState,
else: else:
shard_state = transition.shard_states[offset_index - 1] # Not doing the actual state updates here. shard_state = transition.shard_states[offset_index - 1] # Not doing the actual state updates here.
shard_state_transition(shard_state, block, validate_message=False) shard_state_transition(shard_state, block, validate=False)
if shard_state != transition.shard_states[offset_index]: if shard_state != transition.shard_states[offset_index]:
return True return True

View File

@ -299,7 +299,7 @@ def get_shard_transition_fields(
shard_block = SignedShardBlock(message=ShardBlock(slot=slot, shard=shard)) shard_block = SignedShardBlock(message=ShardBlock(slot=slot, shard=shard))
shard_data_roots.append(Root()) shard_data_roots.append(Root())
shard_state = shard_state.copy() shard_state = shard_state.copy()
shard_state_transition(shard_state, shard_block.message, validate_message=False) shard_state_transition(shard_state, shard_block, validate=False)
shard_states.append(shard_state) shard_states.append(shard_state)
shard_block_lengths.append(len(shard_block.message.body)) shard_block_lengths.append(len(shard_block.message.body))