@@ -4,6 +4,7 @@ defmodule LambdaEthereumConsensus.StateTransition do
4
4
"""
5
5
6
6
require Logger
7
+ alias LambdaEthereumConsensus.Metrics
7
8
alias LambdaEthereumConsensus.StateTransition.Accessors
8
9
alias LambdaEthereumConsensus.StateTransition.EpochProcessing
9
10
alias LambdaEthereumConsensus.StateTransition.Misc
@@ -108,17 +109,23 @@ defmodule LambdaEthereumConsensus.StateTransition do
108
109
109
110
state
110
111
|> EpochProcessing . process_justification_and_finalization ( )
111
- |> map_ok ( & EpochProcessing . process_inactivity_updates / 1 )
112
- |> map_ok ( & EpochProcessing . process_rewards_and_penalties / 1 )
113
- |> map_ok ( & EpochProcessing . process_registry_updates / 1 )
114
- |> map_ok ( & EpochProcessing . process_slashings / 1 )
115
- |> map_ok ( & EpochProcessing . process_eth1_data_reset / 1 )
116
- |> map_ok ( & EpochProcessing . process_effective_balance_updates / 1 )
117
- |> map_ok ( & EpochProcessing . process_slashings_reset / 1 )
118
- |> map_ok ( & EpochProcessing . process_randao_mixes_reset / 1 )
119
- |> map_ok ( & EpochProcessing . process_historical_summaries_update / 1 )
120
- |> map_ok ( & EpochProcessing . process_participation_flag_updates / 1 )
121
- |> map_ok ( & EpochProcessing . process_sync_committee_updates / 1 )
112
+ |> epoch_op ( :inactivity_updates , & EpochProcessing . process_inactivity_updates / 1 )
113
+ |> epoch_op ( :rewards_and_penalties , & EpochProcessing . process_rewards_and_penalties / 1 )
114
+ |> epoch_op ( :registry_updates , & EpochProcessing . process_registry_updates / 1 )
115
+ |> epoch_op ( :slashings , & EpochProcessing . process_slashings / 1 )
116
+ |> epoch_op ( :eth1_data_reset , & EpochProcessing . process_eth1_data_reset / 1 )
117
+ |> epoch_op ( :effective_balance_updates , & EpochProcessing . process_effective_balance_updates / 1 )
118
+ |> epoch_op ( :slashings_reset , & EpochProcessing . process_slashings_reset / 1 )
119
+ |> epoch_op ( :randao_mixes_reset , & EpochProcessing . process_randao_mixes_reset / 1 )
120
+ |> epoch_op (
121
+ :historical_summaries_update ,
122
+ & EpochProcessing . process_historical_summaries_update / 1
123
+ )
124
+ |> epoch_op (
125
+ :participation_flag_updates ,
126
+ & EpochProcessing . process_participation_flag_updates / 1
127
+ )
128
+ |> epoch_op ( :sync_committee_updates , & EpochProcessing . process_sync_committee_updates / 1 )
122
129
|> tap ( fn _ ->
123
130
end_time = System . monotonic_time ( :millisecond )
124
131
Logger . debug ( "[Epoch processing] took #{ end_time - start_time } ms" )
@@ -136,16 +143,26 @@ defmodule LambdaEthereumConsensus.StateTransition do
136
143
start_time = System . monotonic_time ( :millisecond )
137
144
138
145
{ :ok , state }
139
- |> map_ok ( & Operations . process_block_header ( & 1 , block ) )
140
- |> map_ok ( & Operations . process_withdrawals ( & 1 , block . body . execution_payload ) )
141
- |> map_ok ( & Operations . process_execution_payload ( & 1 , block . body ) )
142
- |> map_ok ( & Operations . process_randao ( & 1 , block . body ) )
143
- |> map_ok ( & Operations . process_eth1_data ( & 1 , block . body ) )
146
+ |> block_op ( :block_header , & Operations . process_block_header ( & 1 , block ) )
147
+ |> block_op ( :withdrawals , & Operations . process_withdrawals ( & 1 , block . body . execution_payload ) )
148
+ |> block_op ( :execution_payload , & Operations . process_execution_payload ( & 1 , block . body ) )
149
+ |> block_op ( :randao , & Operations . process_randao ( & 1 , block . body ) )
150
+ |> block_op ( :eth1_data , & Operations . process_eth1_data ( & 1 , block . body ) )
144
151
|> map_ok ( & Operations . process_operations ( & 1 , block . body ) )
145
- |> map_ok ( & Operations . process_sync_aggregate ( & 1 , block . body . sync_aggregate ) )
152
+ |> block_op (
153
+ :sync_aggregate ,
154
+ & Operations . process_sync_aggregate ( & 1 , block . body . sync_aggregate )
155
+ )
146
156
|> tap ( fn _ ->
147
157
end_time = System . monotonic_time ( :millisecond )
148
158
Logger . debug ( "[Block processing] took #{ end_time - start_time } ms" )
149
159
end )
150
160
end
161
+
162
+ def block_op ( state , operation , f ) , do: apply_op ( state , :process_block , operation , f )
163
+ def epoch_op ( state , operation , f ) , do: apply_op ( state , :epoch , operation , f )
164
+
165
+ def apply_op ( state , transition , operation , f ) do
166
+ Metrics . span_operation ( :on_block , transition , operation , fn -> map_ok ( state , f ) end )
167
+ end
151
168
end
0 commit comments