@@ -73,18 +73,6 @@ defmodule Aecore.Chain.Worker do
73
73
{ :reply , latest_block_chain_state , state }
74
74
end
75
75
76
- def handle_call ( :get_prior_blocks_for_validity_check , _from , state ) do
77
- chain = elem ( state , 0 )
78
-
79
- if length ( chain ) == 1 do
80
- [ lb | _ ] = chain
81
- { :reply , { lb , nil } , state }
82
- else
83
- [ lb , prev | _ ] = chain
84
- { :reply , { lb , prev } , state }
85
- end
86
- end
87
-
88
76
def handle_call ( { :get_block , block_hash } , _from , state ) do
89
77
{ block_map , _ } = state
90
78
block = block_map [ block_hash ]
@@ -97,7 +85,8 @@ defmodule Aecore.Chain.Worker do
97
85
end
98
86
99
87
def handle_call ( { :get_block_by_hex_hash , hash } , _from , state ) do
100
- case ( Enum . find ( elem ( state , 0 ) , fn { block_hash , _block } ->
88
+ { chain , _ } = state
89
+ case ( Enum . find ( chain , fn { block_hash , _block } ->
101
90
block_hash |> Base . encode16 ( ) == hash end ) ) do
102
91
{ _ , block } ->
103
92
{ :reply , block , state }
@@ -112,41 +101,49 @@ defmodule Aecore.Chain.Worker do
112
101
new_block_state = ChainState . calculate_block_state ( block . txs )
113
102
new_chain_state = ChainState . calculate_chain_state ( new_block_state , prev_block_chain_state )
114
103
115
- BlockValidation . validate_block! ( block , chain [ block . header . prev_hash ] , new_chain_state )
104
+ try do
105
+ BlockValidation . validate_block! ( block , chain [ block . header . prev_hash ] , new_chain_state )
116
106
117
- Enum . each ( block . txs , fn ( tx ) -> Pool . remove_transaction ( tx ) end )
107
+ Enum . each ( block . txs , fn ( tx ) -> Pool . remove_transaction ( tx ) end )
118
108
119
- { block_map , latest_block_chain_state } = state
120
- block_hash = BlockValidation . block_header_hash ( block . header )
121
- updated_block_map = Map . put ( block_map , block_hash , block )
122
- has_prev_block = Map . has_key? ( latest_block_chain_state , block . header . prev_hash )
109
+ { block_map , latest_block_chain_state } = state
110
+ block_hash = BlockValidation . block_header_hash ( block . header )
111
+ updated_block_map = Map . put ( block_map , block_hash , block )
112
+ has_prev_block = Map . has_key? ( latest_block_chain_state , block . header . prev_hash )
123
113
124
- { deleted_latest_chain_state , prev_chain_state } = case has_prev_block do
125
- true ->
126
- prev_chain_state = Map . get ( latest_block_chain_state , block . header . prev_hash )
127
- { Map . delete ( latest_block_chain_state , block . header . prev_hash ) , prev_chain_state }
128
- false ->
129
- { latest_block_chain_state , % { } }
130
- end
131
-
132
- new_block_state = ChainState . calculate_block_state ( block . txs )
133
- new_chain_state = ChainState . calculate_chain_state ( new_block_state , prev_chain_state )
114
+ { deleted_latest_chain_state , prev_chain_state } = case has_prev_block do
115
+ true ->
116
+ prev_chain_state = Map . get ( latest_block_chain_state , block . header . prev_hash )
117
+ { Map . delete ( latest_block_chain_state , block . header . prev_hash ) , prev_chain_state }
118
+ false ->
119
+ { latest_block_chain_state , % { } }
120
+ end
134
121
135
- updated_latest_block_chainstate = Map . put ( deleted_latest_chain_state , block_hash , new_chain_state )
122
+ new_block_state = ChainState . calculate_block_state ( block . txs )
123
+ new_chain_state = ChainState . calculate_chain_state ( new_block_state , prev_chain_state )
136
124
137
- total_tokens = ChainState . calculate_total_tokens ( new_chain_state )
125
+ updated_latest_block_chainstate = Map . put ( deleted_latest_chain_state , block_hash , new_chain_state )
138
126
139
- Logger . info (
140
- fn ->
141
- "Added block ##{ block . header . height } with hash #{
142
- block . header
143
- |> BlockValidation . block_header_hash ( )
144
- |> Base . encode16 ( )
145
- } , total tokens: #{ total_tokens } "
146
- end
147
- )
127
+ total_tokens = ChainState . calculate_total_tokens ( new_chain_state )
148
128
149
- { :reply , :ok , { updated_block_map , updated_latest_block_chainstate } }
129
+ Logger . info (
130
+ fn ->
131
+ "Added block ##{ block . header . height } with hash #{
132
+ block . header
133
+ |> BlockValidation . block_header_hash ( )
134
+ |> Base . encode16 ( )
135
+ } , total tokens: #{ total_tokens } "
136
+ end
137
+ )
138
+
139
+ { :reply , :ok , { updated_block_map , updated_latest_block_chainstate } }
140
+ catch
141
+ { :error , message } ->
142
+ Logger . error ( fn ->
143
+ "Failed to add block: #{ message } "
144
+ end )
145
+ { :reply , :error , state }
146
+ end
150
147
end
151
148
152
149
def handle_call ( { :chain_state , latest_block_hash } , _from , state ) do
0 commit comments