clean up caching
This commit is contained in:
parent
d84aa45a22
commit
e1ba820486
|
@ -555,18 +555,9 @@ func get_attesting_balance(state: BeaconState,
|
||||||
func get_attesting_balance_cached(
|
func get_attesting_balance_cached(
|
||||||
state: BeaconState,
|
state: BeaconState,
|
||||||
attestations: seq[PendingAttestation],
|
attestations: seq[PendingAttestation],
|
||||||
cache: var auto,
|
|
||||||
crosslink_committees_cache: var auto): Gwei =
|
crosslink_committees_cache: var auto): Gwei =
|
||||||
return get_total_balance(state, get_attesting_indices_cached(state, attestations, crosslink_committees_cache))
|
get_total_balance(state, get_attesting_indices_cached(
|
||||||
#hash_tree_root's overhead's too big; could do custom hashing
|
state, attestations, crosslink_committees_cache))
|
||||||
#when false:
|
|
||||||
# let key = hash_tree_root(attestations)
|
|
||||||
# # caches only held within epoch processing stage, or shorter; ignore state
|
|
||||||
# if key in cache:
|
|
||||||
# return cache[key]
|
|
||||||
#
|
|
||||||
# result = get_total_balance(state, get_attesting_indices_cached(state, attestations, crosslink_committees_cache))
|
|
||||||
# cache[key] = result
|
|
||||||
|
|
||||||
func get_current_epoch_boundary_attestations(state: BeaconState):
|
func get_current_epoch_boundary_attestations(state: BeaconState):
|
||||||
seq[PendingAttestation] =
|
seq[PendingAttestation] =
|
||||||
|
@ -596,7 +587,8 @@ func lowerThan(candidate, current: Eth2Digest): bool =
|
||||||
if v > candidate.data[i]: return true
|
if v > candidate.data[i]: return true
|
||||||
false
|
false
|
||||||
|
|
||||||
func get_winning_root_and_participants(state: BeaconState, shard: Shard, cache: var auto, crosslink_committees_cache: var auto):
|
func get_winning_root_and_participants(
|
||||||
|
state: BeaconState, shard: Shard, crosslink_committees_cache: var auto):
|
||||||
tuple[a: Eth2Digest, b: seq[ValidatorIndex]] =
|
tuple[a: Eth2Digest, b: seq[ValidatorIndex]] =
|
||||||
let
|
let
|
||||||
all_attestations =
|
all_attestations =
|
||||||
|
@ -629,8 +621,8 @@ func get_winning_root_and_participants(state: BeaconState, shard: Shard, cache:
|
||||||
winning_root_balance = 0'u64
|
winning_root_balance = 0'u64
|
||||||
|
|
||||||
for r in all_roots:
|
for r in all_roots:
|
||||||
let root_balance =
|
let root_balance = get_attesting_balance_cached(
|
||||||
get_attesting_balance_cached(state, attestations_for.getOrDefault(r), cache, crosslink_committees_cache)
|
state, attestations_for.getOrDefault(r), crosslink_committees_cache)
|
||||||
if (root_balance > winning_root_balance or
|
if (root_balance > winning_root_balance or
|
||||||
(root_balance == winning_root_balance and
|
(root_balance == winning_root_balance and
|
||||||
lowerThan(winning_root, r))):
|
lowerThan(winning_root, r))):
|
||||||
|
@ -742,8 +734,6 @@ func process_crosslinks(
|
||||||
previous_epoch = current_epoch - 1
|
previous_epoch = current_epoch - 1
|
||||||
next_epoch = current_epoch + 1
|
next_epoch = current_epoch + 1
|
||||||
|
|
||||||
var
|
|
||||||
attester_balance_cache = initTable[Eth2Digest, uint64]()
|
|
||||||
## TODO is it actually correct to be setting state.latest_crosslinks[shard]
|
## TODO is it actually correct to be setting state.latest_crosslinks[shard]
|
||||||
## to something pre-GENESIS_EPOCH, ever? I guess the intent is if there are
|
## to something pre-GENESIS_EPOCH, ever? I guess the intent is if there are
|
||||||
## a quorum of participants for get_epoch_start_slot(previous_epoch), when
|
## a quorum of participants for get_epoch_start_slot(previous_epoch), when
|
||||||
|
@ -757,9 +747,8 @@ func process_crosslinks(
|
||||||
state, slot, false, crosslink_committee_cache):
|
state, slot, false, crosslink_committee_cache):
|
||||||
let
|
let
|
||||||
(crosslink_committee, shard) = cas
|
(crosslink_committee, shard) = cas
|
||||||
(winning_root, participants) =
|
(winning_root, participants) = get_winning_root_and_participants(
|
||||||
get_winning_root_and_participants(
|
state, shard, crosslink_committee_cache)
|
||||||
state, shard, attester_balance_cache, crosslink_committee_cache)
|
|
||||||
participating_balance = get_total_balance(state, participants)
|
participating_balance = get_total_balance(state, participants)
|
||||||
total_balance = get_total_balance(state, crosslink_committee)
|
total_balance = get_total_balance(state, crosslink_committee)
|
||||||
|
|
||||||
|
@ -948,8 +937,6 @@ func get_crosslink_deltas(state: BeaconState, crosslink_committees_cache: var au
|
||||||
repeat(0'u64, len(state.validator_registry)),
|
repeat(0'u64, len(state.validator_registry)),
|
||||||
repeat(0'u64, len(state.validator_registry))
|
repeat(0'u64, len(state.validator_registry))
|
||||||
)
|
)
|
||||||
var
|
|
||||||
attester_balance_cache = initTable[Eth2Digest, uint64]()
|
|
||||||
let
|
let
|
||||||
previous_epoch_start_slot =
|
previous_epoch_start_slot =
|
||||||
get_epoch_start_slot(get_previous_epoch(state))
|
get_epoch_start_slot(get_previous_epoch(state))
|
||||||
|
@ -960,9 +947,8 @@ func get_crosslink_deltas(state: BeaconState, crosslink_committees_cache: var au
|
||||||
for cas in get_crosslink_committees_at_slot_cached(state, slot, false, crosslink_committees_cache):
|
for cas in get_crosslink_committees_at_slot_cached(state, slot, false, crosslink_committees_cache):
|
||||||
let
|
let
|
||||||
(crosslink_committee, shard) = cas
|
(crosslink_committee, shard) = cas
|
||||||
(winning_root, participants) =
|
(winning_root, participants) = get_winning_root_and_participants(
|
||||||
get_winning_root_and_participants(
|
state, shard, crosslink_committees_cache)
|
||||||
state, shard, attester_balance_cache, crosslink_committees_cache)
|
|
||||||
participating_balance = get_total_balance(state, participants)
|
participating_balance = get_total_balance(state, participants)
|
||||||
total_balance = get_total_balance(state, crosslink_committee)
|
total_balance = get_total_balance(state, crosslink_committee)
|
||||||
# In principle quadratic, but should be small.
|
# In principle quadratic, but should be small.
|
||||||
|
|
Loading…
Reference in New Issue