beacon_state, deposit_input, and validator_record updated again
beacon_state, deposit_input, and validator_record updated again
This commit is contained in:
parent
da508fd826
commit
65917a696a
@ -1,6 +1,5 @@
|
|||||||
use super::{ActiveState, ChainConfig, CrystallizedState};
|
use super::{ActiveState, ChainConfig, CrystallizedState};
|
||||||
use types::ValidatorStatus;
|
use types::ValidatorStatus;
|
||||||
use validator_induction::ValidatorInductor;
|
|
||||||
use validator_shuffling::{shard_and_committees_for_cycle, ValidatorAssignmentError};
|
use validator_shuffling::{shard_and_committees_for_cycle, ValidatorAssignmentError};
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
@ -24,6 +23,8 @@ pub fn genesis_states(config: &ChainConfig) -> Result<(ActiveState, Crystallized
|
|||||||
*
|
*
|
||||||
* Ignore any records which fail proof-of-possession or are invalid.
|
* Ignore any records which fail proof-of-possession or are invalid.
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
|
TODO: refactor this
|
||||||
let validators = {
|
let validators = {
|
||||||
let mut inductor = ValidatorInductor::new(0, config.shard_count, vec![]);
|
let mut inductor = ValidatorInductor::new(0, config.shard_count, vec![]);
|
||||||
for registration in &config.initial_validators {
|
for registration in &config.initial_validators {
|
||||||
@ -31,6 +32,8 @@ pub fn genesis_states(config: &ChainConfig) -> Result<(ActiveState, Crystallized
|
|||||||
}
|
}
|
||||||
inductor.to_vec()
|
inductor.to_vec()
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
let validators = vec![];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Assign the validators to shards, using all zeros as the seed.
|
* Assign the validators to shards, using all zeros as the seed.
|
||||||
|
@ -17,9 +17,9 @@ pub struct BeaconState {
|
|||||||
pub validator_registry_latest_change_slot: u64,
|
pub validator_registry_latest_change_slot: u64,
|
||||||
pub validator_registry_exit_count: u64,
|
pub validator_registry_exit_count: u64,
|
||||||
pub validator_registry_delta_chain_tip: Hash256,
|
pub validator_registry_delta_chain_tip: Hash256,
|
||||||
pub randao_mix: Hash256,
|
pub latest_randao_mixes: Vec<Hash256>,
|
||||||
pub next_seed: Hash256,
|
pub latest_vdf_outputs: Vec<Hash256>,
|
||||||
pub shard_and_committee_for_slots: Vec<Vec<ShardAndCommittee>>,
|
pub shard_committees_at_slots: Vec<Vec<ShardAndCommittee>>,
|
||||||
pub persistent_committees: Vec<Vec<u32>>,
|
pub persistent_committees: Vec<Vec<u32>>,
|
||||||
pub persistent_committee_reassignments: Vec<ShardReassignmentRecord>,
|
pub persistent_committee_reassignments: Vec<ShardReassignmentRecord>,
|
||||||
pub previous_justified_slot: u64,
|
pub previous_justified_slot: u64,
|
||||||
@ -27,6 +27,8 @@ pub struct BeaconState {
|
|||||||
pub justification_bitfield: u64,
|
pub justification_bitfield: u64,
|
||||||
pub finalized_slot: u64,
|
pub finalized_slot: u64,
|
||||||
pub latest_crosslinks: Vec<CrosslinkRecord>,
|
pub latest_crosslinks: Vec<CrosslinkRecord>,
|
||||||
|
// TODO: remove this, it's no longer in the spec
|
||||||
|
pub latest_state_recalculation_slot: u64,
|
||||||
pub latest_block_roots: Vec<Hash256>,
|
pub latest_block_roots: Vec<Hash256>,
|
||||||
pub latest_penalized_exit_balances: Vec<u64>,
|
pub latest_penalized_exit_balances: Vec<u64>,
|
||||||
pub latest_attestations: Vec<PendingAttestationRecord>,
|
pub latest_attestations: Vec<PendingAttestationRecord>,
|
||||||
|
@ -9,6 +9,7 @@ pub struct DepositInput {
|
|||||||
pub pubkey: PublicKey,
|
pub pubkey: PublicKey,
|
||||||
pub withdrawal_credentials: Hash256,
|
pub withdrawal_credentials: Hash256,
|
||||||
pub randao_commitment: Hash256,
|
pub randao_commitment: Hash256,
|
||||||
|
pub poc_commitment: Hash256,
|
||||||
pub proof_of_possession: Signature,
|
pub proof_of_possession: Signature,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,6 +18,7 @@ impl Encodable for DepositInput {
|
|||||||
s.append_vec(&self.pubkey.as_bytes());
|
s.append_vec(&self.pubkey.as_bytes());
|
||||||
s.append(&self.withdrawal_credentials);
|
s.append(&self.withdrawal_credentials);
|
||||||
s.append(&self.randao_commitment);
|
s.append(&self.randao_commitment);
|
||||||
|
s.append(&self.poc_commitment);
|
||||||
s.append(&self.proof_of_possession);
|
s.append(&self.proof_of_possession);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -27,6 +29,7 @@ impl Decodable for DepositInput {
|
|||||||
let pubkey = PublicKey::from_bytes(&pubkey_bytes).map_err(|_| DecodeError::TooShort)?;
|
let pubkey = PublicKey::from_bytes(&pubkey_bytes).map_err(|_| DecodeError::TooShort)?;
|
||||||
let (withdrawal_credentials, i) = <_>::ssz_decode(bytes, i)?;
|
let (withdrawal_credentials, i) = <_>::ssz_decode(bytes, i)?;
|
||||||
let (randao_commitment, i) = <_>::ssz_decode(bytes, i)?;
|
let (randao_commitment, i) = <_>::ssz_decode(bytes, i)?;
|
||||||
|
let (poc_commitment, i) = <_>::ssz_decode(bytes, i)?;
|
||||||
let (proof_of_possession, i) = <_>::ssz_decode(bytes, i)?;
|
let (proof_of_possession, i) = <_>::ssz_decode(bytes, i)?;
|
||||||
|
|
||||||
Ok((
|
Ok((
|
||||||
@ -34,6 +37,7 @@ impl Decodable for DepositInput {
|
|||||||
pubkey,
|
pubkey,
|
||||||
withdrawal_credentials,
|
withdrawal_credentials,
|
||||||
randao_commitment,
|
randao_commitment,
|
||||||
|
poc_commitment,
|
||||||
proof_of_possession,
|
proof_of_possession,
|
||||||
},
|
},
|
||||||
i,
|
i,
|
||||||
@ -47,6 +51,7 @@ impl<T: RngCore> TestRandom<T> for DepositInput {
|
|||||||
pubkey: <_>::random_for_test(rng),
|
pubkey: <_>::random_for_test(rng),
|
||||||
withdrawal_credentials: <_>::random_for_test(rng),
|
withdrawal_credentials: <_>::random_for_test(rng),
|
||||||
randao_commitment: <_>::random_for_test(rng),
|
randao_commitment: <_>::random_for_test(rng),
|
||||||
|
poc_commitment: <_>::random_for_test(rng),
|
||||||
proof_of_possession: <_>::random_for_test(rng),
|
proof_of_possession: <_>::random_for_test(rng),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,10 @@ pub struct ValidatorRecord {
|
|||||||
pub randao_layers: u64,
|
pub randao_layers: u64,
|
||||||
pub status: ValidatorStatus,
|
pub status: ValidatorStatus,
|
||||||
pub latest_status_change_slot: u64,
|
pub latest_status_change_slot: u64,
|
||||||
pub exit_count: u64
|
pub exit_count: u64,
|
||||||
|
pub poc_commitment: Hash256,
|
||||||
|
pub last_poc_change_slot: u64,
|
||||||
|
pub second_last_poc_slot: u64
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ValidatorRecord {
|
impl ValidatorRecord {
|
||||||
@ -51,7 +54,10 @@ impl ValidatorRecord {
|
|||||||
randao_layers: 0,
|
randao_layers: 0,
|
||||||
status: From::from(0),
|
status: From::from(0),
|
||||||
latest_status_change_slot: 0,
|
latest_status_change_slot: 0,
|
||||||
exit_count: 0
|
exit_count: 0,
|
||||||
|
poc_commitment: Hash256::zero(),
|
||||||
|
last_poc_change_slot: 0,
|
||||||
|
second_last_poc_slot: 0
|
||||||
};
|
};
|
||||||
(s, keypair)
|
(s, keypair)
|
||||||
}
|
}
|
||||||
@ -71,9 +77,11 @@ mod tests {
|
|||||||
assert!(v.withdrawal_credentials.is_zero());
|
assert!(v.withdrawal_credentials.is_zero());
|
||||||
assert!(v.randao_commitment.is_zero());
|
assert!(v.randao_commitment.is_zero());
|
||||||
assert_eq!(v.randao_layers, 0);
|
assert_eq!(v.randao_layers, 0);
|
||||||
assert_eq!(v.balance, 0);
|
|
||||||
assert_eq!(v.status, From::from(0));
|
assert_eq!(v.status, From::from(0));
|
||||||
assert_eq!(v.latest_status_change_slot, 0);
|
assert_eq!(v.latest_status_change_slot, 0);
|
||||||
assert_eq!(v.exit_count, 0);
|
assert_eq!(v.exit_count, 0);
|
||||||
|
assert!(v.poc_commitment.is_zero());
|
||||||
|
assert_eq!(v.last_poc_change_slot, 0);
|
||||||
|
assert_eq!(v.second_last_poc_slot, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,10 @@ pub fn process_deposit(
|
|||||||
randao_layers: 0,
|
randao_layers: 0,
|
||||||
status: ValidatorStatus::PendingActivation,
|
status: ValidatorStatus::PendingActivation,
|
||||||
latest_status_change_slot: state.validator_registry_latest_change_slot,
|
latest_status_change_slot: state.validator_registry_latest_change_slot,
|
||||||
exit_count: 0
|
exit_count: 0,
|
||||||
|
poc_commitment: deposit_input.poc_commitment,
|
||||||
|
last_poc_change_slot: 0,
|
||||||
|
second_last_poc_slot: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
match min_empty_validator_index(state, spec) {
|
match min_empty_validator_index(state, spec) {
|
||||||
@ -91,6 +94,7 @@ mod tests {
|
|||||||
pubkey: kp.pk.clone(),
|
pubkey: kp.pk.clone(),
|
||||||
withdrawal_credentials: Hash256::zero(),
|
withdrawal_credentials: Hash256::zero(),
|
||||||
randao_commitment: Hash256::zero(),
|
randao_commitment: Hash256::zero(),
|
||||||
|
poc_commitment: Hash256::zero(),
|
||||||
proof_of_possession: create_proof_of_possession(&kp)
|
proof_of_possession: create_proof_of_possession(&kp)
|
||||||
};
|
};
|
||||||
let deposit_data = DepositData {
|
let deposit_data = DepositData {
|
||||||
|
Loading…
Reference in New Issue
Block a user