diff --git a/specs/core/0_beacon-chain.md b/specs/core/0_beacon-chain.md index 91c1aecf8..ee5f16dd9 100644 --- a/specs/core/0_beacon-chain.md +++ b/specs/core/0_beacon-chain.md @@ -418,11 +418,16 @@ Unless otherwise indicated, code appearing in `this style` is to be interpreted #### `BeaconBlockBody` +`ProofOfCustodySeedChange`, `ProofOfCustodyChallenge`, `ProofOfCustodyResponse` defined in phase 1; for now put dummy classes as these lists will remain empty throughout phase 0. + ```python { 'proposer_slashings': [ProposerSlashing], 'casper_slashings': [CasperSlashing], 'attestations': [Attestation], + 'poc_seed_changes': [ProofOfCustodySeedChange], + 'poc_challenges': [ProofOfCustodyChallenge], + 'poc_responses': [ProofOfCustodyResponse], 'deposits': [Deposit], 'exits': [Exit], } @@ -465,6 +470,16 @@ Unless otherwise indicated, code appearing in `this style` is to be interpreted 'persistent_committees': [['uint24']], 'persistent_committee_reassignments': [ShardReassignmentRecord], + # Proof of custody + # Placeholders for now; ProofOfCustodyChallenge is defined in phase 1, implementers can + # put a dummy class in for now, as the list will remain empty throughout phase 0 + 'poc_challenges': [ProofOfCustodyChallenge], + # Proof of custody commitment + 'poc_commitment': 'hash32', + # Slot the proof of custody seed was last changed + 'last_poc_change_slot': 'uint64', + 'second_last_poc_change_slot': 'uint64', + # Finality 'previous_justified_slot': 'uint64', 'justified_slot': 'uint64', @@ -1533,6 +1548,10 @@ For each `exit` in `block.body.exits`: * Verify that `bls_verify(pubkey=validator.pubkey, message=ZERO_HASH, signature=exit.signature, domain=get_domain(state.fork_data, exit.slot, DOMAIN_EXIT))`. * Run `update_validator_status(state, validator_index, new_status=ACTIVE_PENDING_EXIT)`. +#### Miscellaneous + +[TO BE REMOVED IN PHASE 1] Verify that `len(block.body.poc_seed_changes) == len(block.body.poc_challenges) == len(block.body.poc_responses) == 0`. + ## Per-epoch processing The steps below happen when `state.slot % EPOCH_LENGTH == 0`.