Skip to content

Commit 2a11aa0

Browse files
committed
feat: fetch logs from contract
1 parent 7f500c6 commit 2a11aa0

File tree

4 files changed

+41
-24
lines changed

4 files changed

+41
-24
lines changed

explorer/lib/abi/AlignedProofAggregationServiceDeployer.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

explorer/lib/explorer/contract_managers/aligned_proof_aggregation_service.ex

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,36 @@ defmodule AlignedProofAggregationService do
3535

3636
def get_aggregated_proof_event(%{from_block: number, to_block: number}) do
3737
events =
38-
AlignedProofAggregationService.EventFilters.new_batch_v3(nil)
38+
AlignedProofAggregationService.EventFilters.new_aggregated_proof(nil)
3939
|> Ethers.get_logs(fromBlock: fromBlock, toBlock: toBlock)
4040

41-
[
42-
%{
43-
number: 0,
44-
status: 0,
45-
merkle_root: "",
46-
block_number: 0,
47-
tx_hash: "",
48-
tx_timestamp: "",
49-
blob_versioned_hash: ""
50-
}
51-
]
41+
case events do
42+
{:ok, []} ->
43+
[]
44+
45+
{:ok, list} ->
46+
Enum.map(list, fn x ->
47+
data = x |> Map.get(:data)
48+
topics_raw = x |> Map.get(:topics_raw)
49+
block_number = x |> Map.get(:block_number)
50+
tx_hash = x |> Map.get(:transaction_hash)
51+
52+
%{
53+
:ok,
54+
%{
55+
number: topics_raw |> Enum.at(1),
56+
status: data |> Enum.at(0),
57+
merkle_root: data |> Enum.at(1),
58+
blob_versioned_hash: data |> Enum.at(2),
59+
block_number: block_number,
60+
tx_hash: tx_hash
61+
}
62+
}
63+
end)
64+
65+
{:error, reason} ->
66+
raise("Error fetching events: #{Map.get(reason, "message")}")
67+
end
5268
end
5369

5470
def get_blob_data_from_versioned_hash(versioned_hash) do

explorer/lib/explorer/models/aggregated_proofs.ex

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ defmodule AggregatedProofs do
44
import Ecto.Changeset
55
import Ecto.Query
66

7-
# Different from proofs.ex (we could use the same but the hashes are constructed differently)
7+
# Different from proofs.ex (we could use the same but the hashes are constructed different)
88
@primary_key {:id, :integer, autogenerate: true}
99
schema "proofs_agg_mode" do
1010
field(:aggregated_proof_number, :integer)
@@ -26,7 +26,6 @@ defmodule AggregatedProofs do
2626
field(:blob_data, :binary)
2727
field(:number_of_proofs, :integer)
2828
field(:block_number, :integer)
29-
field(:tx_timestamp, :utc_datetime)
3029

3130
timestamps()
3231
end
@@ -38,14 +37,13 @@ defmodule AggregatedProofs do
3837
aggregated_proof
3938
|> cast(attrs, [
4039
:number,
41-
:merkle_root,
4240
:status,
43-
:tx_hash,
41+
:merkle_root,
4442
:blob_versioned_hash,
45-
:blob_data,
46-
:number_of_proofs,
4743
:block_number,
48-
:tx_timestamp
44+
:tx_hash,
45+
:blob_data,
46+
:number_of_proofs
4947
])
5048
|> validate_required([
5149
:number,
@@ -54,8 +52,7 @@ defmodule AggregatedProofs do
5452
:tx_hash,
5553
:blob_versioned_hash,
5654
:number_of_proofs,
57-
:block_number,
58-
:tx_timestamp
55+
:block_number
5956
])
6057
|> unique_constraint(:number)
6158
end

explorer/lib/explorer/periodically.ex

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,17 @@ defmodule Explorer.Periodically do
8888
## 5. Store each hash in proof hash pointing to the aggregated proof number
8989
## 6. Store the info in db
9090

91-
process_aggregated_proofs(read_from_block)
91+
process_aggregated_proofs(read_from_block, latest_block_number)
9292
end
9393

94-
def process_aggregated_proofs(from_block) do
94+
def process_aggregated_proofs(from_block, to_block) do
9595
"Processing aggregated proofs" |> Logger.debug()
9696

9797
aggregated_proofs =
98-
AlignedProofAggregationService.get_aggregated_proof_event()
98+
AlignedProofAggregationService.get_aggregated_proof_event(%{
99+
from_block: from_block,
100+
to_block: to_block
101+
})
99102
|> Enum.map(fn x ->
100103
Map.merge(
101104
x,

0 commit comments

Comments
 (0)