@@ -54,19 +54,47 @@ defmodule LambdaEthereumConsensus.Validator.Duties do
54
54
ValidatorSet . validators ( )
55
55
) :: duties ( )
56
56
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
+
57
59
for { epoch , slot } <- epochs_and_start_slots , reduce: duties_map do
58
60
duties_map ->
59
61
beacon = Validator . fetch_target_state_and_go_to_slot ( slot , head_root )
60
62
last_epoch = Map . keys ( duties_map ) |> Enum . max ( fn -> 0 end )
61
63
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 ) } " )
70
98
71
99
new_duties = % {
72
100
proposers: new_proposers ,
@@ -96,7 +124,8 @@ defmodule LambdaEthereumConsensus.Validator.Duties do
96
124
sync_committee_duties ( )
97
125
defp compute_current_sync_committees ( % BeaconState { } = state , validators ) do
98
126
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
100
129
% {
101
130
last_slot_broadcasted: - 1 ,
102
131
subnet_ids: subnet_ids ,
0 commit comments