Skip to content

Commit 654b5ea

Browse files
committed
Formatted and fixed all lint and dialyzer issues
1 parent cde101c commit 654b5ea

File tree

5 files changed

+68
-44
lines changed

5 files changed

+68
-44
lines changed

lib/lambda_ethereum_consensus/beacon/beacon_node.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ defmodule LambdaEthereumConsensus.Beacon.BeaconNode do
3232

3333
validator_set = ValidatorSet.init(store.head_slot, store.head_root)
3434

35-
libp2p_args = [genesis_time: store.genesis_time, validator_set: validator_set] ++ get_libp2p_args()
35+
libp2p_args =
36+
[genesis_time: store.genesis_time, validator_set: validator_set] ++ get_libp2p_args()
3637

3738
children =
3839
[

lib/lambda_ethereum_consensus/validator/duties.ex

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ defmodule LambdaEthereumConsensus.Validator.Duties do
44
"""
55
alias LambdaEthereumConsensus.StateTransition.Accessors
66
alias LambdaEthereumConsensus.StateTransition.Misc
7+
alias LambdaEthereumConsensus.Validator
78
alias LambdaEthereumConsensus.Validator.Utils
89
alias Types.BeaconState
910

@@ -44,7 +45,6 @@ defmodule LambdaEthereumConsensus.Validator.Duties do
4445
def compute_proposers_for_epoch(%BeaconState{} = state, epoch, validators) do
4546
with {:ok, epoch} <- check_valid_epoch(state, epoch),
4647
{start_slot, end_slot} <- boundary_slots(epoch) do
47-
4848
start_slot..end_slot
4949
|> Enum.flat_map(fn slot ->
5050
{:ok, proposer_index} = Accessors.get_beacon_proposer_index(state, slot)
@@ -61,7 +61,6 @@ defmodule LambdaEthereumConsensus.Validator.Duties do
6161
def compute_attesters_for_epoch(%BeaconState{} = state, epoch, validators) do
6262
with {:ok, epoch} <- check_valid_epoch(state, epoch),
6363
{start_slot, end_slot} <- boundary_slots(epoch) do
64-
6564
committee_count_per_slot = Accessors.get_committee_count_per_slot(state, epoch)
6665

6766
start_slot..end_slot
@@ -77,27 +76,31 @@ defmodule LambdaEthereumConsensus.Validator.Duties do
7776
state :: BeaconState.t(),
7877
epoch :: Types.epoch(),
7978
slot :: Types.slot(),
80-
committee_index :: Types.uint64(),
81-
validator_index :: [{Types.validator_index(), Validator.validator()}]
82-
) :: [attester_duty()]
79+
validators :: %{Types.validator_index() => Validator.t()},
80+
committee_index :: Types.uint64()
81+
) :: [{Types.slot(), attester_duty()}]
8382
defp compute_attester_dutys(state, epoch, slot, validators, committee_index) do
8483
with {:ok, committee} <- Accessors.get_beacon_committee(state, slot, committee_index) do
8584
committee
8685
|> Stream.with_index()
8786
|> Stream.flat_map(fn {validator_index, index_in_committee} ->
8887
case Map.get(validators, validator_index) do
89-
nil -> []
88+
nil ->
89+
[]
90+
9091
validator ->
91-
[%{
92-
slot: slot,
93-
validator_index: validator_index,
94-
index_in_committee: index_in_committee,
95-
committee_length: length(committee),
96-
committee_index: committee_index,
97-
attested?: false
98-
}
99-
|> update_with_aggregation_duty(state, validator.keystore.privkey)
100-
|> update_with_subnet_id(state, epoch)]
92+
[
93+
%{
94+
slot: slot,
95+
validator_index: validator_index,
96+
index_in_committee: index_in_committee,
97+
committee_length: length(committee),
98+
committee_index: committee_index,
99+
attested?: false
100+
}
101+
|> update_with_aggregation_duty(state, validator.keystore.privkey)
102+
|> update_with_subnet_id(state, epoch)
103+
]
101104
end
102105
end)
103106
|> Enum.into([])

lib/lambda_ethereum_consensus/validator/validator.ex

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,8 @@ defmodule LambdaEthereumConsensus.Validator do
4242

4343
@spec new(
4444
Keystore.t(),
45-
Types.epoch(),
4645
Types.slot(),
47-
Types.root(),
48-
Types.BeaconState.t()
46+
Types.root()
4947
) :: t()
5048
def new(keystore, head_slot, head_root) do
5149
epoch = Misc.compute_epoch_at_slot(head_slot)
@@ -184,9 +182,10 @@ defmodule LambdaEthereumConsensus.Validator do
184182
end
185183

186184
@spec recompute_duties(t(), Types.epoch(), Types.epoch(), Types.slot(), Types.root()) :: t()
187-
defp recompute_duties(state, last_epoch, epoch, slot, head_root) do
185+
defp recompute_duties(state, last_epoch, epoch, _slot, head_root) do
188186
start_slot = Misc.compute_start_slot_at_epoch(epoch)
189-
# Why is this needed? something here seems wrong, why would i need to move to a different slot if
187+
188+
# TODO: Why is this needed? something here seems wrong, why would i need to move to a different slot if
190189
# I'm calculating this at a new epoch? need to check it
191190
# target_root = if slot == start_slot, do: head_root, else: last_root
192191

@@ -259,7 +258,7 @@ defmodule LambdaEthereumConsensus.Validator do
259258
end
260259

261260
@spec attest(t(), Duties.attester_duty(), Types.root()) :: :ok
262-
def attest(%{index: validator_index, keystore: keystore} = state, current_duty, head_root) do
261+
def attest(%{index: validator_index, keystore: keystore}, current_duty, head_root) do
263262
subnet_id = current_duty.subnet_id
264263
log_debug(validator_index, "attesting", slot: current_duty.slot, subnet_id: subnet_id)
265264

@@ -421,7 +420,9 @@ defmodule LambdaEthereumConsensus.Validator do
421420

422421
def start_payload_builder(%{index: validator_index} = state, proposed_slot, head_root) do
423422
# TODO: handle reorgs and late blocks
424-
log_debug(validator_index, "starting building payload for slot #{proposed_slot}", root: head_root)
423+
log_debug(validator_index, "starting building payload for slot #{proposed_slot}",
424+
root: head_root
425+
)
425426

426427
case BlockBuilder.start_building_payload(proposed_slot, head_root) do
427428
{:ok, payload_id} ->

lib/lambda_ethereum_consensus/validator/validator_set.ex

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
1717
@type validators :: %{atom() => %{} | []}
1818
@type t :: %__MODULE__{
1919
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+
},
2126
validators: validators()
2227
}
2328

@@ -37,13 +42,13 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
3742
Notify all validators of a new head.
3843
"""
3944
@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
4146
# TODO: Just for testing purposes, remove it later
4247
Logger.info("[Validator] Notifying all Validators with new_head", root: head_root, slot: slot)
4348
epoch = Misc.compute_epoch_at_slot(slot)
4449

4550
set
46-
|> update_state(epoch, slot, head_root)
51+
|> update_state(epoch, head_root)
4752
|> attest(epoch, slot, head_root)
4853
|> build_next_payload(epoch, slot, head_root)
4954
end
@@ -69,7 +74,7 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
6974
##############################
7075
# Setup
7176

72-
defp setup_validators(_s, _r, keystore_dir, keystore_pass_dir)
77+
defp setup_validators(_s, _r, keystore_dir, keystore_pass_dir)
7378
when is_nil(keystore_dir) or is_nil(keystore_pass_dir) do
7479
Logger.warning(
7580
"[Validator] No keystore_dir or keystore_pass_dir provided. Validators won't start."
@@ -94,25 +99,26 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
9499
Logger.info("[Validator] Initialized #{Enum.count(validators)} validators")
95100

96101
%__MODULE__{validators: validators}
97-
|> update_state(epoch, slot, head_root)
102+
|> update_state(epoch, head_root)
98103
end
99104

100105
##############################
101106
# State update
102107

103-
defp update_state(set, epoch, slot, head_root) do
108+
defp update_state(set, epoch, head_root) do
104109
set
105110
|> update_head(head_root)
106-
|> compute_duties(epoch, slot, head_root)
111+
|> compute_duties(epoch, head_root)
107112
end
108113

109114
defp update_head(%{head_root: head_root} = set, head_root), do: set
110115
defp update_head(set, head_root), do: %{set | head_root: head_root}
111116

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
114120

115-
defp compute_duties(set, epoch, slot, head_root) do
121+
defp compute_duties(set, epoch, head_root) do
116122
epoch
117123
|> fetch_target_beaconstate!(head_root)
118124
|> compute_duties_for_epoch!(epoch, set.validators)
@@ -128,8 +134,13 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
128134
{:ok, proposers} = Duties.compute_proposers_for_epoch(beacon, epoch, validators)
129135
{:ok, attesters} = Duties.compute_attesters_for_epoch(beacon, epoch, validators)
130136

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+
)
133144

134145
%{epoch => %{proposers: proposers, attesters: attesters}}
135146
end
@@ -163,7 +174,9 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
163174
set
164175
|> proposer(epoch, slot + 1)
165176
|> case do
166-
nil -> set
177+
nil ->
178+
set
179+
167180
validator_index ->
168181
validator = Map.get(set.validators, validator_index)
169182
updated_validator = Validator.start_payload_builder(validator, slot + 1, head_root)
@@ -187,7 +200,8 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
187200
defp attesters(set, epoch, slot), do: get_in(set.duties, [epoch, :attesters, slot]) || []
188201

189202
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
191205
Logger.info("[Validator] Notifying all Validators with message: #{inspect(data)}")
192206

193207
start_time = System.monotonic_time(:millisecond)
@@ -211,7 +225,7 @@ defmodule LambdaEthereumConsensus.ValidatorSet do
211225
- <keystore_pass_dir>/<public_key>.txt
212226
"""
213227
@spec decode_validator_keystores(binary(), binary()) ::
214-
list(Keystore.t())
228+
list(Keystore.t())
215229
def decode_validator_keystores(keystore_dir, keystore_pass_dir)
216230
when is_binary(keystore_dir) and is_binary(keystore_pass_dir) do
217231
keystore_dir

lib/libp2p_port.ex

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ defmodule LambdaEthereumConsensus.Libp2pPort do
2323
alias LambdaEthereumConsensus.P2p.Requests
2424
alias LambdaEthereumConsensus.StateTransition.Misc
2525
alias LambdaEthereumConsensus.Utils.BitVector
26+
alias LambdaEthereumConsensus.Validator
2627
alias LambdaEthereumConsensus.ValidatorSet
2728
alias Libp2pProto.AddPeer
2829
alias Libp2pProto.Command
@@ -541,14 +542,17 @@ defmodule LambdaEthereumConsensus.Libp2pPort do
541542

542543
@impl GenServer
543544
def handle_call(:get_keystores, _from, %{validator_set: validator_set} = state),
544-
do: {:reply, Enum.map(validator_set.validators, fn {_index, validator} -> validator.keystore end), state}
545+
do:
546+
{:reply,
547+
Enum.map(validator_set.validators, fn {_index, validator} -> validator.keystore end),
548+
state}
545549

546550
@impl GenServer
547551
def handle_call({:delete_validator, pubkey}, _from, %{validator_set: validator_set} = state) do
548552
validator_set.validators
549553
|> Enum.find(fn {_index, validator} -> validator.keystore.pubkey == pubkey end)
550554
|> case do
551-
{index, validator} ->
555+
{index, _validator} ->
552556
Logger.warning("[Libp2pPort] Deleting validator with index #{inspect(index)}.")
553557
updated_validators = Map.delete(validator_set.validators, index)
554558
{:reply, :ok, Map.put(state.validator_set, :validators, updated_validators)}
@@ -560,15 +564,16 @@ defmodule LambdaEthereumConsensus.Libp2pPort do
560564

561565
@impl GenServer
562566
def handle_call(
563-
{:add_validator, %Keystore{pubkey: pubkey} = keystore},
567+
{:add_validator, keystore},
564568
_from,
565-
%{validator_set: %{head_root: head_root} = validator_set, slot_data: {slot, _third}} = state
569+
%{validator_set: %{head_root: head_root}, slot_data: {slot, _third}} =
570+
state
566571
) do
567572
# TODO (#1263): handle 0 validators
568573
validator = Validator.new(keystore, slot, head_root)
569574

570575
Logger.warning(
571-
"[Libp2pPort] Adding validator with index #{inspect(validator.index)}. head_slot: #{inspect(validator.slot)}."
576+
"[Libp2pPort] Adding validator with index #{inspect(validator.index)}. head_slot: #{inspect(slot)}."
572577
)
573578

574579
{:reply, :ok, put_in(state.validator_set, [:validators, validator.index], validator)}

0 commit comments

Comments
 (0)