@@ -80,40 +80,45 @@ defmodule LambdaEthereumConsensus.Validator.Duties do
80
80
committee_index :: Types . uint64 ( )
81
81
) :: [ { Types . slot ( ) , attester_duty ( ) } ]
82
82
defp compute_attester_dutys ( state , epoch , slot , validators , committee_index ) do
83
- with { :ok , committee } <- Accessors . get_beacon_committee ( state , slot , committee_index ) do
84
- committee
85
- |> Stream . with_index ( )
86
- |> Stream . flat_map ( fn { validator_index , index_in_committee } ->
87
- case Map . get ( validators , validator_index ) do
88
- nil ->
89
- [ ]
90
-
91
- validator ->
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
- ]
104
- end
105
- end )
106
- |> Enum . into ( [ ] )
107
- |> case do
108
- [ ] -> [ ]
109
- duties -> [ { slot , duties } ]
110
- end
111
- else
83
+ case Accessors . get_beacon_committee ( state , slot , committee_index ) do
84
+ { :ok , committee } ->
85
+ compute_cometee_duties ( state , epoch , slot , committee , committee_index , validators )
86
+
112
87
{ :error , _ } ->
113
88
[ ]
114
89
end
115
90
end
116
91
92
+ defp compute_cometee_duties ( state , epoch , slot , committee , committee_index , validators ) do
93
+ committee
94
+ |> Stream . with_index ( )
95
+ |> Stream . flat_map ( fn { validator_index , index_in_committee } ->
96
+ case Map . get ( validators , validator_index ) do
97
+ nil ->
98
+ [ ]
99
+
100
+ validator ->
101
+ [
102
+ % {
103
+ slot: slot ,
104
+ validator_index: validator_index ,
105
+ index_in_committee: index_in_committee ,
106
+ committee_length: length ( committee ) ,
107
+ committee_index: committee_index ,
108
+ attested?: false
109
+ }
110
+ |> update_with_aggregation_duty ( state , validator . keystore . privkey )
111
+ |> update_with_subnet_id ( state , epoch )
112
+ ]
113
+ end
114
+ end )
115
+ |> Enum . into ( [ ] )
116
+ |> case do
117
+ [ ] -> [ ]
118
+ duties -> [ { slot , duties } ]
119
+ end
120
+ end
121
+
117
122
defp check_valid_epoch ( state , epoch ) do
118
123
next_epoch = Accessors . get_current_epoch ( state ) + 1
119
124
0 commit comments