Skip to content

Commit fc07190

Browse files
committed
Checked duties working on period recalculation
1 parent 9f68516 commit fc07190

File tree

1 file changed

+38
-9
lines changed
  • lib/lambda_ethereum_consensus/validator

1 file changed

+38
-9
lines changed

lib/lambda_ethereum_consensus/validator/duties.ex

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,47 @@ defmodule LambdaEthereumConsensus.Validator.Duties do
5454
ValidatorSet.validators()
5555
) :: duties()
5656
def compute_duties_for_epochs(duties_map, epochs_and_start_slots, head_root, validators) do
57+
Logger.info("[Duties] Computing duties for epochs: #{inspect(epochs_and_start_slots)}")
58+
5759
for {epoch, slot} <- epochs_and_start_slots, reduce: duties_map do
5860
duties_map ->
5961
beacon = Validator.fetch_target_state_and_go_to_slot(slot, head_root)
6062
last_epoch = Map.keys(duties_map) |> Enum.max(fn -> 0 end)
6163

62-
new_proposers = compute_proposers_for_epoch(beacon, epoch, validators)
63-
new_attesters = compute_attesters_for_epoch(beacon, epoch, validators)
64-
65-
new_sync_committees =
66-
case sync_committee_compute_check(epoch, {last_epoch, Map.get(duties_map, last_epoch)}) do
67-
{:already_computed, sync_committees} -> sync_committees
68-
:not_computed -> compute_current_sync_committees(beacon, validators)
69-
end
64+
{time_p, new_proposers} =
65+
:timer.tc(fn -> compute_proposers_for_epoch(beacon, epoch, validators) end)
66+
67+
Logger.info("[Duties] Time to compute proposers for epoch #{epoch}: #{time_p/1_000}ms")
68+
# new_proposers = compute_proposers_for_epoch(beacon, epoch, validators)
69+
{time_a, new_attesters} =
70+
:timer.tc(fn -> compute_attesters_for_epoch(beacon, epoch, validators) end)
71+
72+
Logger.info("[Duties] Time to compute attesters for epoch #{epoch}: #{time_a/1_000}ms")
73+
# new_attesters = compute_attesters_for_epoch(beacon, epoch, validators)
74+
75+
# new_sync_committees =
76+
# case sync_committee_compute_check(epoch, {last_epoch, Map.get(duties_map, last_epoch)}) do
77+
# {:already_computed, sync_committees} -> sync_committees
78+
# :not_computed -> compute_current_sync_committees(beacon, validators)
79+
# end
80+
{time_sc, new_sync_committees} =
81+
:timer.tc(fn ->
82+
case sync_committee_compute_check(
83+
epoch,
84+
{last_epoch, Map.get(duties_map, last_epoch)}
85+
) do
86+
{:already_computed, sync_committees} ->
87+
Logger.info("[Duties] Sync committees already computed for epoch #{epoch}.")
88+
sync_committees
89+
90+
:not_computed ->
91+
Logger.info("[Duties] Sync committees not computed for epoch #{epoch}.")
92+
93+
compute_current_sync_committees(beacon, validators)
94+
end
95+
end)
96+
97+
Logger.info("[Duties] Time to compute sync committees for epoch #{epoch}: #{time_sc/1_000}ms, #{inspect(new_sync_committees, pretty: true)}")
7098

7199
new_duties = %{
72100
proposers: new_proposers,
@@ -96,7 +124,8 @@ defmodule LambdaEthereumConsensus.Validator.Duties do
96124
sync_committee_duties()
97125
defp compute_current_sync_committees(%BeaconState{} = state, validators) do
98126
for validator_index <- Map.keys(validators),
99-
subnet_ids = Utils.compute_subnets_for_sync_committee(state, validator_index) do
127+
subnet_ids = Utils.compute_subnets_for_sync_committee(state, validator_index),
128+
length(subnet_ids) > 0 do
100129
%{
101130
last_slot_broadcasted: -1,
102131
subnet_ids: subnet_ids,

0 commit comments

Comments
 (0)