Skip to content

Commit

Permalink
Reduce confirmations when creating beacon summary
Browse files Browse the repository at this point in the history
to have all confirmations available
  • Loading branch information
Neylix committed Mar 6, 2023
1 parent af4b00e commit e2631f1
Showing 1 changed file with 27 additions and 5 deletions.
32 changes: 27 additions & 5 deletions lib/archethic/beacon_chain/summary.ex
Original file line number Diff line number Diff line change
Expand Up @@ -226,11 +226,7 @@ defmodule Archethic.BeaconChain.Summary do
transaction_attestations =
slots
|> Stream.flat_map(& &1.transaction_attestations)
|> Stream.uniq_by(fn %ReplicationAttestation{
transaction_summary: %TransactionSummary{address: address}
} ->
address
end)
|> reduce_confirmations()
|> Enum.sort_by(
fn %ReplicationAttestation{
transaction_summary: %TransactionSummary{timestamp: timestamp}
Expand All @@ -243,6 +239,32 @@ defmodule Archethic.BeaconChain.Summary do
%{summary | transaction_attestations: transaction_attestations}
end

defp reduce_confirmations(transaction_attestations) do
transaction_attestations
|> Stream.transform(
# start function, init acc
fn -> %{} end,
# reducer function, return empty enum, accumulate replication attestation by address in acc
fn attestation = %ReplicationAttestation{
transaction_summary: %TransactionSummary{address: address},
confirmations: confirmations
},
acc ->
# Accumulate distinct confirmations in a replication attestation
acc =
Map.update(acc, address, attestation, fn reduced_attest ->
Map.update!(reduced_attest, :confirmations, &((&1 ++ confirmations) |> Enum.uniq()))
end)

{[], acc}
end,
# last function, return acc in the enumeration
fn acc -> {Map.values(acc), acc} end,
# after function, do nothing
fn _ -> :ok end
)
end

defp filter_reached_threshold(
summary = %__MODULE__{summary_time: summary_time, transaction_attestations: attestations}
) do
Expand Down

0 comments on commit e2631f1

Please sign in to comment.