* Reference https://github.com/ethereum/eth2.0-specs/pull/1635 * Suffix '_ebi' on each effected variable
This commit is contained in:
parent
f160f7a21b
commit
70e39cc6a1
@ -133,7 +133,7 @@ fn get_attestation_deltas<T: EthSpec>(
|
|||||||
|
|
||||||
/// Determine the delta for a single validator, sans proposer rewards.
|
/// Determine the delta for a single validator, sans proposer rewards.
|
||||||
///
|
///
|
||||||
/// Spec v0.10.1
|
/// Spec v0.11.0
|
||||||
fn get_attestation_delta<T: EthSpec>(
|
fn get_attestation_delta<T: EthSpec>(
|
||||||
validator: &ValidatorStatus,
|
validator: &ValidatorStatus,
|
||||||
total_balances: &TotalBalances,
|
total_balances: &TotalBalances,
|
||||||
@ -152,16 +152,24 @@ fn get_attestation_delta<T: EthSpec>(
|
|||||||
return delta;
|
return delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
let total_balance = total_balances.current_epoch;
|
// Handle integer overflow by dividing these quantities by EFFECTIVE_BALANCE_INCREMENT
|
||||||
let total_attesting_balance = total_balances.previous_epoch_attesters;
|
// Spec:
|
||||||
let matching_target_balance = total_balances.previous_epoch_target_attesters;
|
// - increment = EFFECTIVE_BALANCE_INCREMENT
|
||||||
let matching_head_balance = total_balances.previous_epoch_head_attesters;
|
// - reward_numerator = get_base_reward(state, index) * (attesting_balance // increment)
|
||||||
|
// - rewards[index] = reward_numerator // (total_balance // increment)
|
||||||
|
let total_balance_ebi = total_balances.current_epoch / spec.effective_balance_increment;
|
||||||
|
let total_attesting_balance_ebi =
|
||||||
|
total_balances.previous_epoch_attesters / spec.effective_balance_increment;
|
||||||
|
let matching_target_balance_ebi =
|
||||||
|
total_balances.previous_epoch_target_attesters / spec.effective_balance_increment;
|
||||||
|
let matching_head_balance_ebi =
|
||||||
|
total_balances.previous_epoch_head_attesters / spec.effective_balance_increment;
|
||||||
|
|
||||||
// Expected FFG source.
|
// Expected FFG source.
|
||||||
// Spec:
|
// Spec:
|
||||||
// - validator index in `get_unslashed_attesting_indices(state, matching_source_attestations)`
|
// - validator index in `get_unslashed_attesting_indices(state, matching_source_attestations)`
|
||||||
if validator.is_previous_epoch_attester && !validator.is_slashed {
|
if validator.is_previous_epoch_attester && !validator.is_slashed {
|
||||||
delta.reward(base_reward * total_attesting_balance / total_balance);
|
delta.reward(base_reward * total_attesting_balance_ebi / total_balance_ebi);
|
||||||
// Inclusion speed bonus
|
// Inclusion speed bonus
|
||||||
let proposer_reward = base_reward / spec.proposer_reward_quotient;
|
let proposer_reward = base_reward / spec.proposer_reward_quotient;
|
||||||
let max_attester_reward = base_reward - proposer_reward;
|
let max_attester_reward = base_reward - proposer_reward;
|
||||||
@ -177,7 +185,7 @@ fn get_attestation_delta<T: EthSpec>(
|
|||||||
// Spec:
|
// Spec:
|
||||||
// - validator index in `get_unslashed_attesting_indices(state, matching_target_attestations)`
|
// - validator index in `get_unslashed_attesting_indices(state, matching_target_attestations)`
|
||||||
if validator.is_previous_epoch_target_attester && !validator.is_slashed {
|
if validator.is_previous_epoch_target_attester && !validator.is_slashed {
|
||||||
delta.reward(base_reward * matching_target_balance / total_balance);
|
delta.reward(base_reward * matching_target_balance_ebi / total_balance_ebi);
|
||||||
} else {
|
} else {
|
||||||
delta.penalize(base_reward);
|
delta.penalize(base_reward);
|
||||||
}
|
}
|
||||||
@ -186,7 +194,7 @@ fn get_attestation_delta<T: EthSpec>(
|
|||||||
// Spec:
|
// Spec:
|
||||||
// - validator index in `get_unslashed_attesting_indices(state, matching_head_attestations)`
|
// - validator index in `get_unslashed_attesting_indices(state, matching_head_attestations)`
|
||||||
if validator.is_previous_epoch_head_attester && !validator.is_slashed {
|
if validator.is_previous_epoch_head_attester && !validator.is_slashed {
|
||||||
delta.reward(base_reward * matching_head_balance / total_balance);
|
delta.reward(base_reward * matching_head_balance_ebi / total_balance_ebi);
|
||||||
} else {
|
} else {
|
||||||
delta.penalize(base_reward);
|
delta.penalize(base_reward);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user