mirror of
https://github.com/status-im/nimbus-eth2.git
synced 2025-01-14 00:29:04 +00:00
some more fields, plumbing, comment fixes
This commit is contained in:
parent
cb1096c581
commit
5823091501
beacon_chain
@ -51,14 +51,13 @@ func process_deposit(state: var BeaconState,
|
||||
proof_of_possession: ValidatorSig,
|
||||
withdrawal_credentials: Eth2Digest,
|
||||
randao_commitment: Eth2Digest,
|
||||
flags: UpdateFlags): Uint24 =
|
||||
custody_commitment: Eth2Digest): Uint24 =
|
||||
## Process a deposit from Ethereum 1.0.
|
||||
|
||||
if skipValidation notin flags:
|
||||
# TODO return error
|
||||
doAssert validate_proof_of_possession(
|
||||
state, pubkey, proof_of_possession, withdrawal_credentials,
|
||||
randao_commitment)
|
||||
# TODO return error
|
||||
doAssert validate_proof_of_possession(
|
||||
state, pubkey, proof_of_possession, withdrawal_credentials,
|
||||
randao_commitment)
|
||||
|
||||
let validator_pubkeys = state.validator_registry.mapIt(it.pubkey)
|
||||
|
||||
@ -71,7 +70,15 @@ func process_deposit(state: var BeaconState,
|
||||
randao_layers: 0,
|
||||
status: PENDING_ACTIVATION,
|
||||
latest_status_change_slot: state.slot,
|
||||
exit_count: 0
|
||||
activation_slot: FAR_FUTURE_SLOT,
|
||||
exit_slot: FAR_FUTURE_SLOT,
|
||||
withdrawal_slot: FAR_FUTURE_SLOT,
|
||||
penalized_slot: FAR_FUTURE_SLOT,
|
||||
exit_count: 0,
|
||||
status_flags: 0,
|
||||
custody_commitment: custody_commitment,
|
||||
latest_custody_reseed_slot: GENESIS_SLOT,
|
||||
penultimate_custody_reseed_slot: GENESIS_SLOT
|
||||
)
|
||||
|
||||
let index = min_empty_validator_index(
|
||||
@ -109,6 +116,7 @@ func activate_validator(state: var BeaconState,
|
||||
state.validator_registry_delta_chain_tip,
|
||||
index,
|
||||
validator.pubkey,
|
||||
validator.activation_slot,
|
||||
ACTIVATION,
|
||||
)
|
||||
|
||||
@ -162,6 +170,7 @@ func exit_validator(state: var BeaconState,
|
||||
state.validator_registry_delta_chain_tip,
|
||||
index,
|
||||
validator.pubkey,
|
||||
validator.exit_slot,
|
||||
ValidatorSetDeltaFlags.EXIT
|
||||
)
|
||||
|
||||
@ -219,16 +228,25 @@ func get_initial_beacon_state*(
|
||||
validator_registry_exit_count: 0,
|
||||
validator_registry_delta_chain_tip: ZERO_HASH,
|
||||
|
||||
# Randomness and committees
|
||||
previous_epoch_start_shard: GENESIS_START_SHARD,
|
||||
current_epoch_start_shard: GENESIS_START_SHARD,
|
||||
previous_epoch_calculation_slot: GENESIS_SLOT,
|
||||
current_epoch_calculation_slot: GENESIS_SLOT,
|
||||
previous_epoch_randao_mix: ZERO_HASH,
|
||||
current_epoch_randao_mix: ZERO_HASH,
|
||||
|
||||
# Finality
|
||||
previous_justified_slot: GENESIS_SLOT,
|
||||
justified_slot: GENESIS_SLOT,
|
||||
justification_bitfield: 0,
|
||||
finalized_slot: GENESIS_SLOT,
|
||||
|
||||
# PoW receipt root
|
||||
# Deposit root
|
||||
latest_deposit_root: latest_deposit_root,
|
||||
)
|
||||
|
||||
# handle initial deposits and activations
|
||||
# Process initial deposits
|
||||
for deposit in initial_validator_deposits:
|
||||
let validator_index = process_deposit(
|
||||
state,
|
||||
@ -237,7 +255,7 @@ func get_initial_beacon_state*(
|
||||
deposit.deposit_data.deposit_input.proof_of_possession,
|
||||
deposit.deposit_data.deposit_input.withdrawal_credentials,
|
||||
deposit.deposit_data.deposit_input.randao_commitment,
|
||||
flags
|
||||
deposit.deposit_data.deposit_input.custody_commitment,
|
||||
)
|
||||
if state.validator_balances[validator_index] >= MAX_DEPOSIT:
|
||||
update_validator_status(state, validator_index, ACTIVE)
|
||||
|
@ -390,10 +390,15 @@ type
|
||||
exit_count*: uint64 ##\
|
||||
## Exit counter when validator exited (or 0)
|
||||
|
||||
status_flags*: uint64
|
||||
|
||||
custody_commitment*: Eth2Digest
|
||||
|
||||
last_poc_change_slot*: uint64
|
||||
second_last_poc_change_slot*: uint64
|
||||
latest_custody_reseed_slot*: uint64 ##\
|
||||
## Slot of latest custody reseed
|
||||
|
||||
penultimate_custody_reseed_slot*: uint64 ##\
|
||||
## Slot of second-latest custody reseed
|
||||
|
||||
CrosslinkRecord* = object
|
||||
slot*: uint64
|
||||
@ -438,6 +443,7 @@ type
|
||||
latest_registry_delta_root*: Eth2Digest
|
||||
validator_index*: Uint24
|
||||
pubkey*: ValidatorPubKey
|
||||
slot*: uint64
|
||||
flag*: ValidatorSetDeltaFlags
|
||||
|
||||
ValidatorStatusCodes* {.pure.} = enum
|
||||
|
@ -68,6 +68,7 @@ func get_new_validator_registry_delta_chain_tip*(
|
||||
current_validator_registry_delta_chain_tip: Eth2Digest,
|
||||
index: Uint24,
|
||||
pubkey: ValidatorPubKey,
|
||||
slot: uint64,
|
||||
flag: ValidatorSetDeltaFlags): Eth2Digest =
|
||||
## Compute the next hash in the validator registry delta hash chain.
|
||||
|
||||
@ -75,5 +76,6 @@ func get_new_validator_registry_delta_chain_tip*(
|
||||
latest_registry_delta_root: current_validator_registry_delta_chain_tip,
|
||||
validator_index: index,
|
||||
pubkey: pubkey,
|
||||
slot: slot,
|
||||
flag: flag
|
||||
))
|
||||
|
@ -101,7 +101,7 @@ func processRandao(
|
||||
return true
|
||||
|
||||
func processDepositRoot(state: var BeaconState, blck: BeaconBlock) =
|
||||
## https://github.com/ethereum/eth2.0-specs/blob/master/specs/core/0_beacon-chain.md#pow-receipt-root
|
||||
## https://github.com/ethereum/eth2.0-specs/blob/master/specs/core/0_beacon-chain.md#deposit-root
|
||||
|
||||
for x in state.deposit_roots.mitems():
|
||||
if blck.deposit_root == x.deposit_root:
|
||||
@ -264,6 +264,10 @@ proc processDeposits(state: var BeaconState, blck: BeaconBlock): bool =
|
||||
# TODO! Spec writing in progress
|
||||
true
|
||||
|
||||
func initiate_validator_exit(state: var BeaconState, index: int) =
|
||||
var validator = state.validator_registry[index]
|
||||
validator.status_flags = validator.status_flags or INITIATED_EXIT
|
||||
|
||||
proc processExits(
|
||||
state: var BeaconState, blck: BeaconBlock, flags: UpdateFlags): bool =
|
||||
## https://github.com/ethereum/eth2.0-specs/blob/master/specs/core/0_beacon-chain.md#exits-1
|
||||
|
Loading…
x
Reference in New Issue
Block a user