Skip to content

Commit

Permalink
Merge branch 'main' into checkpoint_states_db
Browse files Browse the repository at this point in the history
  • Loading branch information
Arkenan authored Jun 25, 2024
2 parents b37cab3 + bfd965f commit 22bb621
Show file tree
Hide file tree
Showing 9 changed files with 65 additions and 107 deletions.
1 change: 0 additions & 1 deletion lib/lambda_ethereum_consensus/application.ex
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ defmodule LambdaEthereumConsensus.Application do
get_children(:db) ++
[
BeaconApi.Endpoint,
LambdaEthereumConsensus.P2P.Metadata,
LambdaEthereumConsensus.Beacon.BeaconNode
]
end
Expand Down
2 changes: 2 additions & 0 deletions lib/lambda_ethereum_consensus/beacon/beacon_node.ex
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ defmodule LambdaEthereumConsensus.Beacon.BeaconNode do
{store, genesis_validators_root} = StoreSetup.setup!()
deposit_tree_snapshot = StoreSetup.get_deposit_snapshot!()

LambdaEthereumConsensus.P2P.Metadata.init()

Cache.initialize_cache()

libp2p_args = get_libp2p_args()
Expand Down
93 changes: 48 additions & 45 deletions lib/lambda_ethereum_consensus/p2p/metadata.ex
Original file line number Diff line number Diff line change
@@ -1,83 +1,86 @@
defmodule LambdaEthereumConsensus.P2P.Metadata do
@moduledoc """
This module handles Metadata's genserver to fetch and edit.
This module handles node's Metadata (fetch and edit).
"""

use GenServer

alias LambdaEthereumConsensus.Store.Db
alias LambdaEthereumConsensus.Utils.BitVector
alias Types.Metadata

@metadata_prefix "metadata"

##########################
### Public API
##########################

def start_link(opts) do
GenServer.start_link(__MODULE__, opts, name: __MODULE__)
@doc """
Initializes the table in the db by creating and storing empty metadata.
"""
def init() do
Metadata.empty() |> store_metadata()
end

@spec get_seq_number() :: Types.uint64()
def get_seq_number() do
GenServer.call(__MODULE__, :get_seq_number)
%Metadata{seq_number: seq_number} = fetch_metadata!()
seq_number
end

@spec get_metadata() :: Metadata.t()
def get_metadata() do
GenServer.call(__MODULE__, :get_metadata)
fetch_metadata!()
end

@spec set_attnet(non_neg_integer()) :: :ok
def set_attnet(i), do: GenServer.cast(__MODULE__, {:set_attestation_subnet, i, true})
def set_attnet(i) do
update_metadata(fn metadata -> Map.update!(metadata, :attnets, &BitVector.set(&1, i)) end)
end

@spec clear_attnet(non_neg_integer()) :: :ok
def clear_attnet(i), do: GenServer.cast(__MODULE__, {:set_attestation_subnet, i, false})
def clear_attnet(i) do
update_metadata(fn metadata -> Map.update!(metadata, :attnets, &BitVector.clear(&1, i)) end)
end

@spec set_syncnet(non_neg_integer()) :: :ok
def set_syncnet(i), do: GenServer.cast(__MODULE__, {:set_sync_committee, i, true})
def set_syncnet(i) do
update_metadata(fn metadata -> Map.update!(metadata, :syncnets, &BitVector.set(&1, i)) end)
end

@spec clear_syncnet(non_neg_integer()) :: :ok
def clear_syncnet(i), do: GenServer.cast(__MODULE__, {:set_sync_committee, i, false})
def clear_syncnet(i) do
update_metadata(fn metadata -> Map.update!(metadata, :syncnets, &BitVector.clear(&1, i)) end)
end

##########################
### GenServer Callbacks
### Private Functions
##########################

@impl true
def init(_opts) do
Metadata.empty() |> Metadata.store_metadata()
{:ok, nil}
defp update_metadata(f) when is_function(f) do
fetch_metadata!() |> f.() |> increment_seqnum() |> store_metadata()
end

@impl true
def handle_call(:get_seq_number, _, _state) do
%Metadata{seq_number: seq_number} = Metadata.fetch_metadata!()
{:reply, seq_number, nil}
end

@impl true
def handle_call(:get_metadata, _, _metadata), do: {:reply, Metadata.fetch_metadata!(), nil}
defp increment_seqnum(state), do: %{state | seq_number: state.seq_number + 1}

@impl true
def handle_cast({:set_attestation_subnet, i, set}, _metadata) do
metadata = Metadata.fetch_metadata!()
attnets = set_or_clear(metadata.attnets, i, set)
%{metadata | attnets: attnets} |> increment_seqnum() |> Metadata.store_metadata()
{:noreply, nil}
defp store_metadata(%Metadata{} = map) do
:telemetry.span([:db, :latency], %{}, fn ->
{Db.put(
@metadata_prefix,
:erlang.term_to_binary(map)
), %{module: "metadata", action: "persist"}}
end)
end

@impl true
def handle_cast({:set_sync_committee, i, set}, _metadata) do
metadata = Metadata.fetch_metadata!()
syncnets = set_or_clear(metadata.syncnets, i, set)
%{metadata | syncnets: syncnets} |> increment_seqnum() |> Metadata.store_metadata()
{:noreply, nil}
defp fetch_metadata() do
with {:ok, binary} <-
:telemetry.span([:db, :latency], %{}, fn ->
{Db.get(@metadata_prefix), %{module: "metadata", action: "fetch"}}
end) do
{:ok, :erlang.binary_to_term(binary)}
end
end

##########################
### Private Functions
##########################

@spec set_or_clear(BitVector.t(), non_neg_integer(), boolean()) :: BitVector.t()
defp set_or_clear(bitvector, i, true), do: BitVector.set(bitvector, i)
defp set_or_clear(bitvector, i, false), do: BitVector.clear(bitvector, i)

defp increment_seqnum(state), do: %{state | seq_number: state.seq_number + 1}
defp fetch_metadata!() do
{:ok, metadata} = fetch_metadata()
metadata
end
end
7 changes: 5 additions & 2 deletions lib/lambda_ethereum_consensus/p2p/peerbook.ex
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,12 @@ defmodule LambdaEthereumConsensus.P2P.Peerbook do
GenServer.cast(__MODULE__, {:remove_peer, peer_id})
end

def handle_new_peer(peer_id) do
GenServer.cast(__MODULE__, {:new_peer, peer_id})
end

@impl true
def init(_opts) do
Libp2pPort.set_new_peer_handler(self())
peerbook = %{}
schedule_pruning()
{:ok, peerbook}
Expand All @@ -53,7 +56,7 @@ defmodule LambdaEthereumConsensus.P2P.Peerbook do
end

@impl true
def handle_info({:new_peer, peer_id}, peerbook) do
def handle_cast({:new_peer, peer_id}, peerbook) do
if Map.has_key?(peerbook, peer_id) do
{:noreply, peerbook}
else
Expand Down
29 changes: 4 additions & 25 deletions lib/libp2p_port.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ defmodule LambdaEthereumConsensus.Libp2pPort do
alias LambdaEthereumConsensus.Beacon.BeaconChain
alias LambdaEthereumConsensus.P2P.Gossip.BeaconBlock
alias LambdaEthereumConsensus.P2P.Gossip.BlobSideCar
alias LambdaEthereumConsensus.P2P.Peerbook
alias LambdaEthereumConsensus.StateTransition.Misc
alias LambdaEthereumConsensus.Utils.BitVector
alias Types.EnrForkId
Expand Down Expand Up @@ -226,20 +227,6 @@ defmodule LambdaEthereumConsensus.Libp2pPort do
cast_command(pid, {:leave, %LeaveTopic{name: topic_name}})
end

@doc """
Sets the receiver of new peer notifications.
If `nil`, notifications are disabled.
"""
@spec set_new_peer_handler(GenServer.server(), pid() | nil) :: :ok
def set_new_peer_handler(pid \\ __MODULE__, handler) do
:telemetry.execute([:port, :message], %{}, %{
function: "set_new_peer_handler",
direction: "elixir->"
})

GenServer.cast(pid, {:set_new_peer_handler, handler})
end

@doc """
Marks the message with a validation result. The result can be `:accept`, `:reject` or `:ignore`:
* `:accept` - the message is valid and should be propagated.
Expand Down Expand Up @@ -291,7 +278,6 @@ defmodule LambdaEthereumConsensus.Libp2pPort do

@impl GenServer
def init(args) do
{new_peer_handler, args} = Keyword.pop(args, :new_peer_handler, nil)
{join_init_topics, args} = Keyword.pop(args, :join_init_topics, false)

port = Port.open({:spawn, @port_name}, [:binary, {:packet, 4}, :exit_status])
Expand All @@ -305,7 +291,7 @@ defmodule LambdaEthereumConsensus.Libp2pPort do

if join_init_topics, do: join_init_topics(port)

{:ok, %{port: port, new_peer_handler: new_peer_handler, subscriptors: %{}}}
{:ok, %{port: port, subscriptors: %{}}}
end

@impl GenServer
Expand All @@ -320,11 +306,6 @@ defmodule LambdaEthereumConsensus.Libp2pPort do
{:noreply, state}
end

@impl GenServer
def handle_cast({:set_new_peer_handler, new_peer_handler}, state) do
{:noreply, %{state | new_peer_handler: new_peer_handler}}
end

@impl GenServer
def handle_info({_port, {:data, data}}, state) do
%Notification{n: {_, payload}} = Notification.decode(data)
Expand Down Expand Up @@ -371,11 +352,9 @@ defmodule LambdaEthereumConsensus.Libp2pPort do
send(handler_pid, {:request, {protocol_id, request_id, message}})
end

defp handle_notification(%NewPeer{peer_id: _peer_id}, %{new_peer_handler: nil}), do: :ok

defp handle_notification(%NewPeer{peer_id: peer_id}, %{new_peer_handler: handler}) do
defp handle_notification(%NewPeer{peer_id: peer_id}, _state) do
:telemetry.execute([:port, :message], %{}, %{function: "new peer", direction: "->elixir"})
send(handler, {:new_peer, peer_id})
Peerbook.handle_new_peer(peer_id)
end

defp handle_notification(%Result{from: "", result: result}, _state) do
Expand Down
30 changes: 1 addition & 29 deletions lib/types/p2p/metadata.ex
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@ defmodule Types.Metadata do
Struct definition for `Metadata`.
Related definitions in `native/ssz_nif/src/types/`.
"""
alias LambdaEthereumConsensus.Store.Db
alias LambdaEthereumConsensus.Utils.BitVector

@metadata_prefix "metadata"
alias LambdaEthereumConsensus.Utils.BitVector

fields = [
:seq_number,
Expand Down Expand Up @@ -53,30 +51,4 @@ defmodule Types.Metadata do
|> Map.update!(:attnets, &BitVector.new(&1, subnet_count))
|> Map.update!(:syncnets, &BitVector.new(&1, syncnet_count))
end

def store_metadata(%__MODULE__{} = map) do
:telemetry.span([:db, :latency], %{}, fn ->
{Db.put(
@metadata_prefix,
:erlang.term_to_binary(map)
), %{module: "metadata", action: "persist"}}
end)
end

def fetch_metadata() do
result =
:telemetry.span([:db, :latency], %{}, fn ->
{Db.get(@metadata_prefix), %{module: "metadata", action: "fetch"}}
end)

case result do
{:ok, binary} -> {:ok, :erlang.binary_to_term(binary)}
:not_found -> result
end
end

def fetch_metadata!() do
{:ok, metadata} = fetch_metadata()
metadata
end
end
6 changes: 3 additions & 3 deletions mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@
"open_api_spex": {:hex, :open_api_spex, "3.19.1", "65ccb5d06e3d664d1eec7c5ea2af2289bd2f37897094a74d7219fb03fc2b5994", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 3.0 or ~> 4.0 or ~> 5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:ymlr, "~> 2.0 or ~> 3.0 or ~> 4.0 or ~> 5.0", [hex: :ymlr, repo: "hexpm", optional: true]}], "hexpm", "392895827ce2984a3459c91a484e70708132d8c2c6c5363972b4b91d6bbac3dd"},
"parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
"patch": {:hex, :patch, "0.13.1", "2da5b508e4d6558924a0959d95dc3aa8176b5ccf2539e4567481448d61853ccc", [:mix], [], "hexpm", "75f805827d9db0c335155fbb857e6eeb5c85034c9dc668d146bc0bfe48fac822"},
"phoenix": {:hex, :phoenix, "1.7.12", "1cc589e0eab99f593a8aa38ec45f15d25297dd6187ee801c8de8947090b5a9d3", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "d646192fbade9f485b01bc9920c139bfdd19d0f8df3d73fd8eaf2dfbe0d2837c"},
"phoenix": {:hex, :phoenix, "1.7.14", "a7d0b3f1bc95987044ddada111e77bd7f75646a08518942c72a8440278ae7825", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "c7859bc56cc5dfef19ecfc240775dae358cbaa530231118a9e014df392ace61a"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},
"plug": {:hex, :plug, "1.16.0", "1d07d50cb9bb05097fdf187b31cf087c7297aafc3fed8299aac79c128a707e47", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cbf53aa1f5c4d758a7559c0bd6d59e286c2be0c6a1fac8cc3eee2f638243b93e"},
"plug": {:hex, :plug, "1.16.1", "40c74619c12f82736d2214557dedec2e9762029b2438d6d175c5074c933edc9d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"},
"plug_cowboy": {:hex, :plug_cowboy, "2.7.1", "87677ffe3b765bc96a89be7960f81703223fe2e21efa42c125fcd0127dd9d6b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "02dbd5f9ab571b864ae39418db7811618506256f6d13b4a45037e5fe78dc5de3"},
"plug_crypto": {:hex, :plug_crypto, "2.1.0", "f44309c2b06d249c27c8d3f65cfe08158ade08418cf540fd4f72d4d6863abb7b", [:mix], [], "hexpm", "131216a4b030b8f8ce0f26038bc4421ae60e4bb95c5cf5395e1421437824c4fa"},
"prometheus": {:hex, :prometheus, "4.11.0", "b95f8de8530f541bd95951e18e355a840003672e5eda4788c5fa6183406ba29a", [:mix, :rebar3], [{:quantile_estimator, "~> 0.2.1", [hex: :quantile_estimator, repo: "hexpm", optional: false]}], "hexpm", "719862351aabf4df7079b05dc085d2bbcbe3ac0ac3009e956671b1d5ab88247d"},
Expand Down Expand Up @@ -71,7 +71,7 @@
"telemetry_metrics_prometheus": {:hex, :telemetry_metrics_prometheus, "1.1.0", "1cc23e932c1ef9aa3b91db257ead31ea58d53229d407e059b29bb962c1505a13", [:mix], [{:plug_cowboy, "~> 2.1", [hex: :plug_cowboy, repo: "hexpm", optional: false]}, {:telemetry_metrics_prometheus_core, "~> 1.0", [hex: :telemetry_metrics_prometheus_core, repo: "hexpm", optional: false]}], "hexpm", "d43b3659b3244da44fe0275b717701542365d4519b79d9ce895b9719c1ce4d26"},
"telemetry_metrics_prometheus_core": {:hex, :telemetry_metrics_prometheus_core, "1.2.1", "c9755987d7b959b557084e6990990cb96a50d6482c683fb9622a63837f3cd3d8", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "5e2c599da4983c4f88a33e9571f1458bf98b0cf6ba930f1dc3a6e8cf45d5afb6"},
"telemetry_poller": {:hex, :telemetry_poller, "1.1.0", "58fa7c216257291caaf8d05678c8d01bd45f4bdbc1286838a28c4bb62ef32999", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9eb9d9cbfd81cbd7cdd24682f8711b6e2b691289a0de6826e58452f28c103c8f"},
"tesla": {:hex, :tesla, "1.9.0", "8c22db6a826e56a087eeb8cdef56889731287f53feeb3f361dec5d4c8efb6f14", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.13", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, ">= 1.0.0", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.2", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "7c240c67e855f7e63e795bf16d6b3f5115a81d1f44b7fe4eadbf656bae0fef8a"},
"tesla": {:hex, :tesla, "1.11.0", "81b2b10213dddb27105ec6102d9eb0cc93d7097a918a0b1594f2dfd1a4601190", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.13", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, ">= 1.0.0", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.2", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "b83ab5d4c2d202e1ea2b7e17a49f788d49a699513d7c4f08f2aef2c281be69db"},
"timex": {:hex, :timex, "3.7.11", "bb95cb4eb1d06e27346325de506bcc6c30f9c6dea40d1ebe390b262fad1862d1", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.20", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.1", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "8b9024f7efbabaf9bd7aa04f65cf8dcd7c9818ca5737677c7b76acbc6a94d1aa"},
"toml": {:hex, :toml, "0.7.0", "fbcd773caa937d0c7a02c301a1feea25612720ac3fa1ccb8bfd9d30d822911de", [:mix], [], "hexpm", "0690246a2478c1defd100b0c9b89b4ea280a22be9a7b313a8a058a2408a2fa70"},
"tzdata": {:hex, :tzdata, "1.1.1", "20c8043476dfda8504952d00adac41c6eda23912278add38edc140ae0c5bcc46", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a69cec8352eafcd2e198dea28a34113b60fdc6cb57eb5ad65c10292a6ba89787"},
Expand Down
2 changes: 1 addition & 1 deletion test/unit/beacon_api/beacon_api_v1_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ defmodule Unit.BeaconApiTest.V1 do
patch(BeaconChain, :get_fork_version, fn -> ChainSpec.get("DENEB_FORK_VERSION") end)

start_link_supervised!(Libp2pPort)
start_link_supervised!(Metadata)
Metadata.init()
identity = Libp2pPort.get_node_identity()
metadata = Metadata.get_metadata()

Expand Down
2 changes: 1 addition & 1 deletion test/unit/metadata.exs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ defmodule Unit.AttestationTest do

setup %{tmp_dir: tmp_dir} do
start_link_supervised!({LambdaEthereumConsensus.Store.Db, dir: tmp_dir})
start_link_supervised!(Metadata)
Metadata.init()
:ok
end

Expand Down

0 comments on commit 22bb621

Please sign in to comment.