@@ -36,15 +36,6 @@ defmodule AlignedLayerServiceManager do
3636 |> Map . get ( "addresses" )
3737 |> Map . get ( "alignedLayerServiceManager" )
3838
39- @ first_block ( case @ environment do
40- "devnet" -> 0
41- "holesky" -> 1_728_056
42- "mainnet" -> 19_000_000
43- "sepolia" -> 9_062_616
44- "hoodi" -> 1_093_860
45- _ -> raise ( "Invalid environment" )
46- end )
47-
4839 use Ethers.Contract ,
4940 abi_file: "lib/abi/AlignedLayerServiceManager.json" ,
5041 default_address: @ aligned_layer_service_manager_address
@@ -55,35 +46,45 @@ defmodule AlignedLayerServiceManager do
5546
5647 def get_latest_block_number ( ) do
5748 { :ok , num } = Ethers . current_block_number ( )
49+ Logger . info ( "Latest block number: #{ num } " )
5850 num
5951 end
6052
6153 def get_new_batch_events ( % { fromBlock: fromBlock , toBlock: toBlock } ) do
54+ Logger . info ( "Fetching new batch events from #{ fromBlock } to #{ toBlock } " )
6255 events =
6356 AlignedLayerServiceManager.EventFilters . new_batch_v3 ( nil )
6457 |> Ethers . get_logs ( fromBlock: fromBlock , toBlock: toBlock )
6558
6659 case events do
6760 { :ok , [ ] } ->
61+ Logger . info ( "No new batch events found in blocks #{ fromBlock } -#{ toBlock } " )
6862 [ ]
6963
7064 { :ok , list } ->
65+ Logger . info ( "Found #{ length ( list ) } new batch events in blocks #{ fromBlock } -#{ toBlock } " )
7166 Enum . map ( list , & extract_new_batch_event_info / 1 )
7267
7368 { :error , reason } ->
69+ Logger . error ( "Error fetching new batch events from #{ fromBlock } to #{ toBlock } : #{ Map . get ( reason , "message" ) } " )
7470 raise ( "Error fetching events: #{ Map . get ( reason , "message" ) } " )
7571 end
7672 end
7773
7874 def extract_new_batch_event_info ( event ) do
75+ block_number = event |> Map . get ( :block_number )
76+ tx_hash = event |> Map . get ( :transaction_hash )
77+ Logger . info ( "Extracting new batch event info for block #{ block_number } , tx: #{ tx_hash } " )
78+
7979 new_batch = parse_new_batch_event ( event )
80+ Logger . info ( "New batch event parsed: #{ inspect ( new_batch ) } " )
8081
8182 { :ok ,
8283 % NewBatchInfo {
8384 address: event |> Map . get ( :address ) ,
84- block_number: event |> Map . get ( : block_number) ,
85- block_timestamp: get_block_timestamp ( event |> Map . get ( : block_number) ) ,
86- transaction_hash: event |> Map . get ( :transaction_hash ) ,
85+ block_number: block_number ,
86+ block_timestamp: get_block_timestamp ( block_number ) ,
87+ transaction_hash: tx_hash ,
8788 new_batch: new_batch
8889 } }
8990 end
@@ -101,29 +102,37 @@ defmodule AlignedLayerServiceManager do
101102 }
102103 end
103104
104- def is_batch_responded ( merkle_root ) do
105+ def is_batch_responded ( merkle_root , fromBlock ) do
105106 event =
106107 Utils . string_to_bytes32 ( merkle_root )
107108 |> AlignedLayerServiceManager.EventFilters . batch_verified ( )
108- |> Ethers . get_logs ( fromBlock: @ first_block )
109+ |> Ethers . get_logs ( fromBlock: fromBlock )
109110
110111 case event do
111- { :error , reason } -> { :error , reason }
112- { _ , [ ] } -> false
113- { :ok , _ } -> true
112+ { :error , reason } ->
113+ Logger . error ( "Error checking batch response for #{ merkle_root } : #{ inspect ( reason ) } " )
114+ { :error , reason }
115+ { _ , [ ] } ->
116+ false
117+ { :ok , _events } ->
118+ true
114119 end
115120 end
116121
117122 # for new batches
118123 def extract_batch_response ( { _status , % NewBatchInfo { } = batch_creation } ) do
119124 created_batch = batch_creation . new_batch
120- was_batch_responded = is_batch_responded ( created_batch . batchMerkleRoot )
125+ was_batch_responded = is_batch_responded ( created_batch . batchMerkleRoot , batch_creation . block_number )
121126
122127 batch_response =
123128 case was_batch_responded do
124- true -> fetch_batch_response ( created_batch . batchMerkleRoot )
129+ true ->
130+ Logger . info ( "Batch #{ created_batch . batchMerkleRoot } was responded, fetching response details" )
131+ fetch_batch_response ( created_batch . batchMerkleRoot , batch_creation . block_number )
125132 # was not verified, fill with nils
126- false -> % { block_number: nil , transaction_hash: nil , block_timestamp: nil }
133+ false ->
134+ Logger . info ( "Batch #{ created_batch . batchMerkleRoot } was not responded yet" )
135+ % { block_number: nil , transaction_hash: nil , block_timestamp: nil }
127136 end
128137
129138 % BatchDB {
@@ -138,7 +147,7 @@ defmodule AlignedLayerServiceManager do
138147 response_timestamp: batch_response . block_timestamp ,
139148 amount_of_proofs: nil ,
140149 proof_hashes: nil ,
141- fee_per_proof: BatcherPaymentServiceManager . get_fee_per_proof ( % { merkle_root: created_batch . batchMerkleRoot } ) ,
150+ fee_per_proof: BatcherPaymentServiceManager . get_fee_per_proof ( % { merkle_root: created_batch . batchMerkleRoot , fromBlock: batch_creation . block_number } ) ,
142151 sender_address: Utils . string_to_bytes32 ( created_batch . senderAddress ) ,
143152 max_aggregator_fee: created_batch . maxAggregatorFee ,
144153 is_valid: true # set to false later if a process determines it is invalid
@@ -147,15 +156,17 @@ defmodule AlignedLayerServiceManager do
147156
148157 # for existing but unverified batches
149158 def extract_batch_response ( % Batches { } = unverified_batch ) do
150- was_batch_responded = is_batch_responded ( unverified_batch . merkle_root )
159+ was_batch_responded = is_batch_responded ( unverified_batch . merkle_root , unverified_batch . submission_block_number )
151160
152161 case was_batch_responded do
153162 # Do nothing since unverified batch was not yet verified
154163 false ->
164+ Logger . info ( "Unverified batch #{ unverified_batch . merkle_root } still not responded" )
155165 nil
156166
157167 true ->
158- batch_response = fetch_batch_response ( unverified_batch . merkle_root )
168+ Logger . info ( "Unverified batch #{ unverified_batch . merkle_root } now responded, updating status" )
169+ batch_response = fetch_batch_response ( unverified_batch . merkle_root , unverified_batch . submission_block_number )
159170
160171 % BatchDB {
161172 merkle_root: unverified_batch . merkle_root ,
@@ -177,45 +188,59 @@ defmodule AlignedLayerServiceManager do
177188 end
178189 end
179190
180- def fetch_batch_response ( merkle_root ) do
181- case get_batch_verified_events ( % { merkle_root: merkle_root } ) do
182- { :ok , batch_verified_info } -> batch_verified_info
183- { :empty , _ } -> nil
184- { :error , error } -> raise ( "Error fetching batch response: #{ error } " )
191+ def fetch_batch_response ( merkle_root , fromBlock ) do
192+ case get_batch_verified_events ( % { merkle_root: merkle_root , fromBlock: fromBlock } ) do
193+ { :ok , batch_verified_info } ->
194+ Logger . info ( "Successfully fetched batch response for #{ merkle_root } " )
195+ batch_verified_info
196+ { :empty , _ } ->
197+ Logger . info ( "No batch verified events found for #{ merkle_root } " )
198+ nil
199+ { :error , error } ->
200+ Logger . error ( "Error fetching batch response for #{ merkle_root } : #{ error } " )
201+ raise ( "Error fetching batch response: #{ error } " )
185202 end
186203 end
187204
188- def get_batch_verified_events ( % { merkle_root: merkle_root } ) do
205+ def get_batch_verified_events ( % { merkle_root: merkle_root , fromBlock: fromBlock } ) do
189206 event =
190207 AlignedLayerServiceManager.EventFilters . batch_verified ( Utils . string_to_bytes32 ( merkle_root ) )
191- |> Ethers . get_logs ( fromBlock: @ first_block )
208+ |> Ethers . get_logs ( fromBlock: fromBlock )
192209
193210 case event do
194- { :error , reason } -> { :error , reason }
195- { _ , [ ] } -> { :empty , "No task found" }
196- { :ok , event } -> extract_batch_verified_event_info ( event |> List . first ( ) )
211+ { :error , reason } ->
212+ Logger . error ( "Error getting batch verified events for #{ merkle_root } : #{ inspect ( reason ) } " )
213+ { :error , reason }
214+ { _ , [ ] } ->
215+ Logger . info ( "No batch verified events found for #{ merkle_root } " )
216+ { :empty , "No task found" }
217+ { :ok , events } ->
218+ Logger . info ( "Found #{ length ( events ) } batch verified events for #{ merkle_root } " )
219+ extract_batch_verified_event_info ( events |> List . first ( ) )
197220 end
198221 end
199222
200223 defp extract_batch_verified_event_info ( event ) do
201- batch_merkle_root = event |> Map . get ( :topics_raw ) |> Enum . at ( 1 )
202- sender_address = event |> Map . get ( :data ) |> Enum . at ( 0 )
224+ block_number = event |> Map . get ( :block_number )
203225
204226 { :ok ,
205227 % BatchVerifiedInfo {
206228 address: event |> Map . get ( :address ) ,
207- block_number: event |> Map . get ( : block_number) ,
208- block_timestamp: get_block_timestamp ( event |> Map . get ( : block_number) ) ,
229+ block_number: block_number ,
230+ block_timestamp: get_block_timestamp ( block_number ) ,
209231 transaction_hash: event |> Map . get ( :transaction_hash ) ,
210- batch_merkle_root: batch_merkle_root ,
211- sender_address: sender_address
232+ batch_merkle_root: event |> Map . get ( :topics_raw ) |> Enum . at ( 1 ) ,
233+ sender_address: event |> Map . get ( :data ) |> Enum . at ( 0 )
212234 } }
213235 end
214236
215237 def get_block_timestamp ( block_number ) do
216238 case Ethers.Utils . get_block_timestamp ( block_number ) do
217- { :ok , timestamp } -> DateTime . from_unix! ( timestamp )
218- { :error , error } -> raise ( "Error fetching block timestamp: #{ error } " )
239+ { :ok , timestamp } ->
240+ DateTime . from_unix! ( timestamp )
241+ { :error , error } ->
242+ Logger . error ( "Error fetching block timestamp for block #{ block_number } : #{ error } " )
243+ raise ( "Error fetching block timestamp: #{ error } " )
219244 end
220245 end
221246
@@ -230,8 +255,10 @@ defmodule AlignedLayerServiceManager do
230255 end
231256
232257 def update_restakeable_strategies ( ) do
258+ Logger . info ( "Updating restakeable strategies" )
233259 case AlignedLayerServiceManager . get_restakeable_strategies ( ) |> Ethers . call ( ) do
234260 { :ok , restakeable_strategies } ->
261+ Logger . info ( "Successfully fetched #{ length ( restakeable_strategies ) } restakeable strategies" )
235262 Strategies . update ( restakeable_strategies )
236263
237264 { :error , error } ->
0 commit comments