Packages
signet
1.0.0-echo8
1.6.1
1.6.0
1.5.0
1.4.2
1.4.1
1.4.0
1.3.12
1.3.11
1.3.10
1.3.9
1.3.8
1.3.7
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.9
1.2.8
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.0-echo8
1.0.0-echo7
1.0.0-echo6
1.0.0-echo5
1.0.0-echo4
1.0.0-echo3
1.0.0-echo2
1.0.0-echo1
1.0.0-delta8
1.0.0-delta7
1.0.0-delta6
1.0.0-delta5
1.0.0-delta4
1.0.0-delta3
1.0.0-delta2
1.0.0-delta1
1.0.0-charlie9
1.0.0-charlie8
1.0.0-charlie7
1.0.0-charlie6
1.0.0-charlie5
1.0.0-charlie4
1.0.0-charlie3
1.0.0-charlie2
1.0.0-charlie1
1.0.0-beta9
1.0.0-beta8
1.0.0-beta7
1.0.0-beta6
1.0.0-beta5
1.0.0-beta4
1.0.0-beta3
1.0.0-beta2
1.0.0-beta1
1.0.0-alpha9
1.0.0-alpha8
1.0.0-alpha7
1.0.0-alpha6
1.0.0-alpha5
1.0.0-alpha4
1.0.0-alpha3
1.0.0-alpha2
1.0.0-alpha10
1.0.0-alpha1
0.2.0-alpha6
0.2.0-alpha5
0.2.0-alpha4
0.2.0-alpha1
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.1.0-rc7
0.1.0-rc6
0.1.0-rc5
0.1.0-rc4
0.1.0-rc3
0.1.0-rc2
0.1.0-rc1
0.1.0-rc0
Lightweight Ethereum and Solana RPC client for Elixir
Current section
Files
Jump to
Current section
Files
lib/signet/application.ex
defmodule Signet.Application do
# See https://hexdocs.pm/elixir/Application.html
# for more information on OTP Applications
@moduledoc false
use Application
def chain_id(), do: Signet.Util.parse_chain_id(Application.get_env(:signet, :chain_id, 1))
def ethereum_node(),
do: Application.get_env(:signet, :ethereum_node, "https://mainnet.infura.io")
def http_client(), do: Application.get_env(:signet, :client, HTTPoison)
@impl true
def start(_type, _args) do
signers = Application.get_env(:signet, :signer, [])
children = Enum.map(signers, &get_signer_spec/1)
opts = [strategy: :one_for_one, name: Signet.Supervisor]
Supervisor.start_link(children, opts)
end
def get_signer_spec({name, signer_type}) do
name =
case name do
:default ->
Signet.Signer.Default
els ->
els
end
Supervisor.child_spec(
{Signet.Signer, mfa: signer_mfa(signer_type), name: name},
id: name
)
end
defp signer_mfa({:priv_key, priv_key}) do
{Signet.Signer.Curvy, :sign, [Signet.Util.decode_hex_input!(priv_key)]}
end
defp signer_mfa({:cloud_kms, kms_credentials, key_path, version}) do
# E.g. "projects/*/locations/*/keyRings/*/cryptoKeys/*"
["projects", project, "locations", location, "keyRings", key_ring, "cryptoKeys", key_id] =
String.split(key_path, "/")
{Signet.Signer.CloudKMS, :sign,
[kms_credentials, project, location, key_ring, key_id, version]}
end
end