@@ -17,7 +17,12 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
17
17
@ type validators :: % { atom ( ) => % { } | [ ] }
18
18
@ type t :: % __MODULE__ {
19
19
head_root: Types . root ( ) | nil ,
20
- duties: % { Types . epoch ( ) => % { proposers: Duties . proposers ( ) , attesters: Duties . attesters ( ) } } ,
20
+ duties: % {
21
+ Types . epoch ( ) => % {
22
+ proposers: Duties . proposer_duties ( ) ,
23
+ attesters: Duties . attester_duties ( )
24
+ }
25
+ } ,
21
26
validators: validators ( )
22
27
}
23
28
@@ -37,13 +42,13 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
37
42
Notify all validators of a new head.
38
43
"""
39
44
@ spec notify_head ( t ( ) , Types . slot ( ) , Types . root ( ) ) :: t ( )
40
- def notify_head ( % { validators: validators } = set , slot , head_root ) do
45
+ def notify_head ( set , slot , head_root ) do
41
46
# TODO: Just for testing purposes, remove it later
42
47
Logger . info ( "[Validator] Notifying all Validators with new_head" , root: head_root , slot: slot )
43
48
epoch = Misc . compute_epoch_at_slot ( slot )
44
49
45
50
set
46
- |> update_state ( epoch , slot , head_root )
51
+ |> update_state ( epoch , head_root )
47
52
|> attest ( epoch , slot , head_root )
48
53
|> build_next_payload ( epoch , slot , head_root )
49
54
end
@@ -69,7 +74,7 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
69
74
##############################
70
75
# Setup
71
76
72
- defp setup_validators ( _s , _r , keystore_dir , keystore_pass_dir )
77
+ defp setup_validators ( _s , _r , keystore_dir , keystore_pass_dir )
73
78
when is_nil ( keystore_dir ) or is_nil ( keystore_pass_dir ) do
74
79
Logger . warning (
75
80
"[Validator] No keystore_dir or keystore_pass_dir provided. Validators won't start."
@@ -94,25 +99,26 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
94
99
Logger . info ( "[Validator] Initialized #{ Enum . count ( validators ) } validators" )
95
100
96
101
% __MODULE__ { validators: validators }
97
- |> update_state ( epoch , slot , head_root )
102
+ |> update_state ( epoch , head_root )
98
103
end
99
104
100
105
##############################
101
106
# State update
102
107
103
- defp update_state ( set , epoch , slot , head_root ) do
108
+ defp update_state ( set , epoch , head_root ) do
104
109
set
105
110
|> update_head ( head_root )
106
- |> compute_duties ( epoch , slot , head_root )
111
+ |> compute_duties ( epoch , head_root )
107
112
end
108
113
109
114
defp update_head ( % { head_root: head_root } = set , head_root ) , do: set
110
115
defp update_head ( set , head_root ) , do: % { set | head_root: head_root }
111
116
112
- defp compute_duties ( set , epoch , _slot , _head_root )
113
- when not is_nil ( :erlang . map_get ( epoch , set . duties ) ) , do: set
117
+ defp compute_duties ( set , epoch , _head_root )
118
+ when not is_nil ( :erlang . map_get ( epoch , set . duties ) ) ,
119
+ do: set
114
120
115
- defp compute_duties ( set , epoch , slot , head_root ) do
121
+ defp compute_duties ( set , epoch , head_root ) do
116
122
epoch
117
123
|> fetch_target_beaconstate! ( head_root )
118
124
|> compute_duties_for_epoch! ( epoch , set . validators )
@@ -128,8 +134,13 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
128
134
{ :ok , proposers } = Duties . compute_proposers_for_epoch ( beacon , epoch , validators )
129
135
{ :ok , attesters } = Duties . compute_attesters_for_epoch ( beacon , epoch , validators )
130
136
131
- Logger . info ( "[Validator] Proposer duties for epoch #{ epoch } are: #{ inspect ( proposers , pretty: true ) } " )
132
- Logger . info ( "[Validator] Attester duties for epoch #{ epoch } are: #{ inspect ( attesters , pretty: true ) } " )
137
+ Logger . info (
138
+ "[Validator] Proposer duties for epoch #{ epoch } are: #{ inspect ( proposers , pretty: true ) } "
139
+ )
140
+
141
+ Logger . info (
142
+ "[Validator] Attester duties for epoch #{ epoch } are: #{ inspect ( attesters , pretty: true ) } "
143
+ )
133
144
134
145
% { epoch => % { proposers: proposers , attesters: attesters } }
135
146
end
@@ -163,7 +174,9 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
163
174
set
164
175
|> proposer ( epoch , slot + 1 )
165
176
|> case do
166
- nil -> set
177
+ nil ->
178
+ set
179
+
167
180
validator_index ->
168
181
validator = Map . get ( set . validators , validator_index )
169
182
updated_validator = Validator . start_payload_builder ( validator , slot + 1 , head_root )
@@ -187,7 +200,8 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
187
200
defp attesters ( set , epoch , slot ) , do: get_in ( set . duties , [ epoch , :attesters , slot ] ) || [ ]
188
201
189
202
defp maybe_debug_notify ( fun , data ) do
190
- if Application . get_env ( :logger , :level ) == :info do # :debug do
203
+ # :debug do
204
+ if Application . get_env ( :logger , :level ) == :info do
191
205
Logger . info ( "[Validator] Notifying all Validators with message: #{ inspect ( data ) } " )
192
206
193
207
start_time = System . monotonic_time ( :millisecond )
@@ -211,7 +225,7 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
211
225
- <keystore_pass_dir>/<public_key>.txt
212
226
"""
213
227
@ spec decode_validator_keystores ( binary ( ) , binary ( ) ) ::
214
- list ( Keystore . t ( ) )
228
+ list ( Keystore . t ( ) )
215
229
def decode_validator_keystores ( keystore_dir , keystore_pass_dir )
216
230
when is_binary ( keystore_dir ) and is_binary ( keystore_pass_dir ) do
217
231
keystore_dir
0 commit comments