more testing around deposit processing
This commit is contained in:
parent
faaba18799
commit
537c5e2846
@ -22,7 +22,6 @@ pub fn process_deposit(
|
|||||||
.position(|validator| validator.pubkey == deposit_input.pubkey);
|
.position(|validator| validator.pubkey == deposit_input.pubkey);
|
||||||
|
|
||||||
match validator_index {
|
match validator_index {
|
||||||
// replace withdrawn validator
|
|
||||||
Some(i) => {
|
Some(i) => {
|
||||||
if state.validator_registry[i].withdrawal_credentials == deposit_input.withdrawal_credentials {
|
if state.validator_registry[i].withdrawal_credentials == deposit_input.withdrawal_credentials {
|
||||||
state.validator_balances[i] += DEPOSIT_GWEI;
|
state.validator_balances[i] += DEPOSIT_GWEI;
|
||||||
@ -31,7 +30,6 @@ pub fn process_deposit(
|
|||||||
|
|
||||||
Err(ValidatorInductionError::InvalidWithdrawalCredentials)
|
Err(ValidatorInductionError::InvalidWithdrawalCredentials)
|
||||||
},
|
},
|
||||||
// no withdrawn validators; push a new one on
|
|
||||||
None => {
|
None => {
|
||||||
let validator = ValidatorRecord {
|
let validator = ValidatorRecord {
|
||||||
pubkey: deposit_input.pubkey.clone(),
|
pubkey: deposit_input.pubkey.clone(),
|
||||||
@ -101,6 +99,13 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn deposit_equals_record(dep: &Deposit, rec: &ValidatorRecord) -> bool {
|
||||||
|
(dep.deposit_data.deposit_input.pubkey == rec.pubkey)
|
||||||
|
& (dep.deposit_data.deposit_input.withdrawal_credentials == rec.withdrawal_credentials)
|
||||||
|
& (dep.deposit_data.deposit_input.randao_commitment == rec.randao_commitment)
|
||||||
|
//& (verify_proof_of_possession(®.proof_of_possession, &rec.pubkey))
|
||||||
|
}
|
||||||
|
|
||||||
/// Generate a proof of possession for some keypair.
|
/// Generate a proof of possession for some keypair.
|
||||||
fn get_proof_of_possession(kp: &Keypair) -> Signature {
|
fn get_proof_of_possession(kp: &Keypair) -> Signature {
|
||||||
let pop_message = proof_of_possession_hash(&kp.pk.as_bytes());
|
let pop_message = proof_of_possession_hash(&kp.pk.as_bytes());
|
||||||
@ -108,7 +113,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_validator_inductor_valid_empty_validators() {
|
fn test_process_deposit_valid_empty_validators() {
|
||||||
let mut state = BeaconState::default();
|
let mut state = BeaconState::default();
|
||||||
let deposit = get_deposit();
|
let deposit = get_deposit();
|
||||||
let spec = ChainSpec::foundation();
|
let spec = ChainSpec::foundation();
|
||||||
@ -116,8 +121,38 @@ mod tests {
|
|||||||
let result = process_deposit(&mut state, &deposit, &spec);
|
let result = process_deposit(&mut state, &deposit, &spec);
|
||||||
|
|
||||||
assert_eq!(result.unwrap(), 0);
|
assert_eq!(result.unwrap(), 0);
|
||||||
//assert!(registration_equals_record(&r, &validators[0]));
|
assert!(deposit_equals_record(&deposit, &state.validator_registry[0]));
|
||||||
//assert_eq!(validators.len(), 1);
|
assert_eq!(state.validator_registry.len(), 1);
|
||||||
|
assert_eq!(state.validator_balances.len(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_process_deposit_empty_validators() {
|
||||||
|
let mut state = BeaconState::default();
|
||||||
|
let deposit = get_deposit();
|
||||||
|
let spec = ChainSpec::foundation();
|
||||||
|
|
||||||
|
let result = process_deposit(&mut state, &deposit, &spec);
|
||||||
|
|
||||||
|
assert_eq!(result.unwrap(), 0);
|
||||||
|
assert!(deposit_equals_record(&deposit, &state.validator_registry[0]));
|
||||||
|
assert_eq!(state.validator_registry.len(), 1);
|
||||||
|
assert_eq!(state.validator_balances.len(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_process_deposits_empty_validators() {
|
||||||
|
let mut state = BeaconState::default();
|
||||||
|
let spec = ChainSpec::foundation();
|
||||||
|
|
||||||
|
for i in 0..5 {
|
||||||
|
let deposit = get_deposit();
|
||||||
|
let result = process_deposit(&mut state, &deposit, &spec);
|
||||||
|
assert_eq!(result.unwrap(), i);
|
||||||
|
assert!(deposit_equals_record(&deposit, &state.validator_registry[i]));
|
||||||
|
assert_eq!(state.validator_registry.len(), i + 1);
|
||||||
|
assert_eq!(state.validator_balances.len(), i + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user