Change get_latest_attesting_balances() to get_weight()

This commit is contained in:
Ben Edgington 2023-02-15 11:39:33 +00:00
parent 89f2eae318
commit 7637158a2f
3 changed files with 9 additions and 10 deletions

View File

@ -18,7 +18,7 @@
- [`get_current_slot`](#get_current_slot) - [`get_current_slot`](#get_current_slot)
- [`compute_slots_since_epoch_start`](#compute_slots_since_epoch_start) - [`compute_slots_since_epoch_start`](#compute_slots_since_epoch_start)
- [`get_ancestor`](#get_ancestor) - [`get_ancestor`](#get_ancestor)
- [`get_latest_attesting_balance`](#get_latest_attesting_balance) - [`get_weight`](#get_weight)
- [`filter_block_tree`](#filter_block_tree) - [`filter_block_tree`](#filter_block_tree)
- [`get_filtered_block_tree`](#get_filtered_block_tree) - [`get_filtered_block_tree`](#get_filtered_block_tree)
- [`get_head`](#get_head) - [`get_head`](#get_head)
@ -174,10 +174,10 @@ def get_ancestor(store: Store, root: Root, slot: Slot) -> Root:
return root return root
``` ```
#### `get_latest_attesting_balance` #### `get_weight`
```python ```python
def get_latest_attesting_balance(store: Store, root: Root) -> Gwei: def get_weight(store: Store, root: Root) -> Gwei:
state = store.checkpoint_states[store.justified_checkpoint] state = store.checkpoint_states[store.justified_checkpoint]
active_indices = get_active_validator_indices(state, get_current_epoch(state)) active_indices = get_active_validator_indices(state, get_current_epoch(state))
attestation_score = Gwei(sum( attestation_score = Gwei(sum(
@ -197,7 +197,6 @@ def get_latest_attesting_balance(store: Store, root: Root) -> Gwei:
committee_weight = get_total_active_balance(state) // SLOTS_PER_EPOCH committee_weight = get_total_active_balance(state) // SLOTS_PER_EPOCH
proposer_score = (committee_weight * PROPOSER_SCORE_BOOST) // 100 proposer_score = (committee_weight * PROPOSER_SCORE_BOOST) // 100
return attestation_score + proposer_score return attestation_score + proposer_score
``` ```
#### `filter_block_tree` #### `filter_block_tree`
@ -270,7 +269,7 @@ def get_head(store: Store) -> Root:
return head return head
# Sort by latest attesting balance with ties broken lexicographically # Sort by latest attesting balance with ties broken lexicographically
# Ties broken by favoring block with lexicographically higher root # Ties broken by favoring block with lexicographically higher root
head = max(children, key=lambda root: (get_latest_attesting_balance(store, root), root)) head = max(children, key=lambda root: (get_weight(store, root), root))
``` ```
#### `should_update_justified_checkpoint` #### `should_update_justified_checkpoint`

View File

@ -177,7 +177,7 @@ def get_opt_head_block_root(spec, mega_store):
return head return head
# Sort by latest attesting balance with ties broken lexicographically # Sort by latest attesting balance with ties broken lexicographically
# Ties broken by favoring block with lexicographically higher root # Ties broken by favoring block with lexicographically higher root
head = max(children, key=lambda root: (spec.get_latest_attesting_balance(store, root), root)) head = max(children, key=lambda root: (spec.get_weight(store, root), root))
def is_invalidated(mega_store, block_root): def is_invalidated(mega_store, block_root):

View File

@ -729,14 +729,14 @@ def test_proposer_boost(spec, state):
on_tick_and_append_step(spec, store, time, test_steps) on_tick_and_append_step(spec, store, time, test_steps)
yield from add_block(spec, store, signed_block, test_steps) yield from add_block(spec, store, signed_block, test_steps)
assert store.proposer_boost_root == spec.hash_tree_root(block) assert store.proposer_boost_root == spec.hash_tree_root(block)
assert spec.get_latest_attesting_balance(store, spec.hash_tree_root(block)) > 0 assert spec.get_weight(store, spec.hash_tree_root(block)) > 0
# Ensure that boost is removed after slot is over # Ensure that boost is removed after slot is over
time = (store.genesis_time + block.slot * spec.config.SECONDS_PER_SLOT + time = (store.genesis_time + block.slot * spec.config.SECONDS_PER_SLOT +
spec.config.SECONDS_PER_SLOT) spec.config.SECONDS_PER_SLOT)
on_tick_and_append_step(spec, store, time, test_steps) on_tick_and_append_step(spec, store, time, test_steps)
assert store.proposer_boost_root == spec.Root() assert store.proposer_boost_root == spec.Root()
assert spec.get_latest_attesting_balance(store, spec.hash_tree_root(block)) == 0 assert spec.get_weight(store, spec.hash_tree_root(block)) == 0
next_slots(spec, state, 3) next_slots(spec, state, 3)
block = build_empty_block_for_next_slot(spec, state) block = build_empty_block_for_next_slot(spec, state)
@ -747,14 +747,14 @@ def test_proposer_boost(spec, state):
on_tick_and_append_step(spec, store, time, test_steps) on_tick_and_append_step(spec, store, time, test_steps)
yield from add_block(spec, store, signed_block, test_steps) yield from add_block(spec, store, signed_block, test_steps)
assert store.proposer_boost_root == spec.hash_tree_root(block) assert store.proposer_boost_root == spec.hash_tree_root(block)
assert spec.get_latest_attesting_balance(store, spec.hash_tree_root(block)) > 0 assert spec.get_weight(store, spec.hash_tree_root(block)) > 0
# Ensure that boost is removed after slot is over # Ensure that boost is removed after slot is over
time = (store.genesis_time + block.slot * spec.config.SECONDS_PER_SLOT + time = (store.genesis_time + block.slot * spec.config.SECONDS_PER_SLOT +
spec.config.SECONDS_PER_SLOT) spec.config.SECONDS_PER_SLOT)
on_tick_and_append_step(spec, store, time, test_steps) on_tick_and_append_step(spec, store, time, test_steps)
assert store.proposer_boost_root == spec.Root() assert store.proposer_boost_root == spec.Root()
assert spec.get_latest_attesting_balance(store, spec.hash_tree_root(block)) == 0 assert spec.get_weight(store, spec.hash_tree_root(block)) == 0
test_steps.append({ test_steps.append({
'checks': { 'checks': {