Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Add on_chain_wallet origin id #251

Merged
2 commits merged into from
Mar 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/archethic/account/mem_tables_loader.ex
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ defmodule ArchEthic.Account.MemTablesLoader do
:oracle,
:oracle_summary,
:node_shared_secrets,
:origin_shared_secrets
:origin_shared_secrets,
:on_chain_wallet
]

def start_link(args \\ []) do
Expand Down
20 changes: 9 additions & 11 deletions lib/archethic/crypto.ex
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ defmodule ArchEthic.Crypto do
@typedoc """
List of the supported key origins
"""
@type supported_origin :: :software | :tpm
@type supported_origin :: :software | :tpm | :on_chain_wallet

@typedoc """
Binary representing a hash prepend by a single byte to identify the algorithm of the generated hash
Expand Down Expand Up @@ -346,12 +346,12 @@ defmodule ArchEthic.Crypto do

iex> {pub, _} = Crypto.generate_deterministic_keypair("myseed")
iex> pub
<<0, 0, 91, 43, 89, 132, 233, 51, 190, 190, 189, 73, 102, 74, 55, 126, 44, 117, 50,
<<0, 1, 91, 43, 89, 132, 233, 51, 190, 190, 189, 73, 102, 74, 55, 126, 44, 117, 50,
36, 220, 249, 242, 73, 105, 55, 83, 190, 3, 75, 113, 199, 247, 165>>

iex> {pub, _} = Crypto.generate_deterministic_keypair("myseed", :secp256r1)
iex> pub
<<1, 0, 4, 140, 235, 188, 198, 146, 160, 92, 132, 81, 177, 113, 230, 39, 220, 122,
<<1, 1, 4, 140, 235, 188, 198, 146, 160, 92, 132, 81, 177, 113, 230, 39, 220, 122,
112, 231, 18, 90, 66, 156, 47, 54, 192, 141, 44, 45, 223, 115, 28, 30, 48,
105, 253, 171, 105, 87, 148, 108, 150, 86, 128, 28, 102, 163, 51, 28, 57, 33,
133, 109, 49, 202, 92, 184, 138, 187, 26, 123, 45, 5, 94, 180, 250>>
Expand Down Expand Up @@ -923,14 +923,6 @@ defmodule ArchEthic.Crypto do
|> ID.prepend_curve(curve_type)
end

@doc """
Hash the data using the storage nonce stored in memory
"""
@spec hash_with_storage_nonce(data :: iodata()) :: binary()
def hash_with_storage_nonce(data) when is_binary(data) or is_list(data) do
hash([storage_nonce(), data])
end

@doc """
Return the size of key using the curve id

Expand Down Expand Up @@ -1153,6 +1145,9 @@ defmodule ArchEthic.Crypto do

:software ->
true

:on_chain_wallet ->
true
end
end

Expand Down Expand Up @@ -1181,6 +1176,9 @@ defmodule ArchEthic.Crypto do
false

iex> Crypto.authorized_key_origin?(<<0::8, 1::8, :crypto.strong_rand_bytes(32)::binary>>, [:tpm])
false

iex> Crypto.authorized_key_origin?(<<0::8, 2::8, :crypto.strong_rand_bytes(32)::binary>>, [:tpm])
true

iex> Crypto.authorized_key_origin?(<<0::8, 0::8, :crypto.strong_rand_bytes(32)::binary>>, [])
Expand Down
21 changes: 13 additions & 8 deletions lib/archethic/crypto/id.ex
Original file line number Diff line number Diff line change
Expand Up @@ -58,22 +58,27 @@ defmodule ArchEthic.Crypto.ID do

## Examples

iex> ID.from_origin(:software)
iex> ID.from_origin(:on_chain_wallet)
0

iex> ID.from_origin(:tpm)
iex> ID.from_origin(:software)
1

iex> ID.from_origin(:tpm)
2
"""
@spec from_origin(Crypto.supported_origin()) :: integer()
def from_origin(:software), do: 0
def from_origin(:tpm), do: 1
def from_origin(:on_chain_wallet), do: 0
def from_origin(:software), do: 1
def from_origin(:tpm), do: 2

@doc """
Get a origin from an identification
"""
@spec to_origin(integer()) :: Crypto.supported_origin()
def to_origin(0), do: :software
def to_origin(1), do: :tpm
def to_origin(0), do: :on_chain_wallet
def to_origin(1), do: :software
def to_origin(2), do: :tpm

@doc """
Prepend hash by the algorithm identification byte
Expand Down Expand Up @@ -107,9 +112,9 @@ defmodule ArchEthic.Crypto.ID do
...> 172, 79, 60, 159, 89, 230, 31, 254, 187, 176, 70, 166, 119, 96, 87, 194>>
...> }, :ed25519)
{
<<0, 0, 38, 59, 8, 1, 172, 20, 74, 63, 15, 72, 206, 129, 140, 212, 188, 102, 203, 51,
<<0, 1, 38, 59, 8, 1, 172, 20, 74, 63, 15, 72, 206, 129, 140, 212, 188, 102, 203, 51,
188, 207, 135, 134, 211, 3, 87, 148, 178, 162, 118, 208, 109, 96>>,
<<0, 0, 21, 150, 237, 25, 119, 159, 16, 128, 43, 48, 169, 243, 214, 246, 102, 147,
<<0, 1, 21, 150, 237, 25, 119, 159, 16, 128, 43, 48, 169, 243, 214, 246, 102, 147,
172, 79, 60, 159, 89, 230, 31, 254, 187, 176, 70, 166, 119, 96, 87, 194>>
}
"""
Expand Down
31 changes: 18 additions & 13 deletions lib/archethic/election.ex
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,10 @@ defmodule ArchEthic.Election do
...> %ValidationConstraints{ validation_number: fn _, 6 -> 3 end, min_geo_patch: fn -> 2 end }
...> )
[
%Node{last_public_key: "node1", geo_patch: "AAA"},
%Node{last_public_key: "node6", geo_patch: "ECA"},
%Node{last_public_key: "node2", geo_patch: "DEF"},
%Node{last_public_key: "node3", geo_patch: "AA0"},
%Node{last_public_key: "node5", geo_patch: "F10"},
%Node{last_public_key: "node5", geo_patch: "F10"}
]
"""
@spec validation_nodes(
Expand Down Expand Up @@ -269,10 +269,12 @@ defmodule ArchEthic.Election do
min_geo_patch_avg_availability = min_geo_patch_avg_availability_fun.()
min_geo_patch = min_geo_patch_fun.()

storage_nonce = Crypto.storage_nonce()

storage_nodes =
nodes
|> Enum.sort_by(&Map.get(&1, :authorized?), :desc)
|> sort_storage_nodes_by_key_rotation(address)
|> sort_storage_nodes_by_key_rotation(address, storage_nonce)
|> Enum.reduce_while(
%{
nb_nodes: 0,
Expand Down Expand Up @@ -330,11 +332,14 @@ defmodule ArchEthic.Election do
nb_nodes: nb_nodes,
zones: zones
}) do
length(Map.keys(zones)) >= min_geo_patch and
Enum.all?(zones, fn {_, avg_availability} ->
avg_availability >= min_geo_patch_avg_availability
end) and
nb_nodes >= nb_replicas
if nb_nodes >= nb_replicas do
fullfilled_zones =
Enum.filter(zones, fn {_, avg} -> avg >= min_geo_patch_avg_availability end)

length(fullfilled_zones) >= min_geo_patch
else
false
end
end

# Provide an unpredictable and reproducible list of allowed nodes using a rotating key algorithm
Expand All @@ -347,18 +352,18 @@ defmodule ArchEthic.Election do
# It requires the daily nonce or the storage nonce to be loaded in the Crypto keystore
defp sort_validation_nodes_by_key_rotation(nodes, sorting_seed, hash) do
nodes
|> Stream.map(fn node = %Node{last_public_key: last_public_key} ->
rotated_key = Crypto.hash([last_public_key, hash, sorting_seed])
|> Stream.map(fn node = %Node{last_public_key: <<_::8, _::8, public_key::binary>>} ->
rotated_key = :crypto.hash(:sha256, [public_key, hash, sorting_seed])
{rotated_key, node}
end)
|> Enum.sort_by(fn {rotated_key, _} -> rotated_key end)
|> Enum.map(fn {_, n} -> n end)
end

defp sort_storage_nodes_by_key_rotation(nodes, hash) do
defp sort_storage_nodes_by_key_rotation(nodes, hash, storage_nonce) do
nodes
|> Stream.map(fn node = %Node{first_public_key: last_public_key} ->
rotated_key = Crypto.hash_with_storage_nonce([last_public_key, hash])
|> Stream.map(fn node = %Node{first_public_key: <<_::8, _::8, public_key::binary>>} ->
rotated_key = :crypto.hash(:sha256, [public_key, hash, storage_nonce])
{rotated_key, node}
end)
|> Enum.sort_by(fn {rotated_key, _} -> rotated_key end)
Expand Down
16 changes: 8 additions & 8 deletions lib/archethic/shared_secrets/mem_tables/network_lookup.ex
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ defmodule ArchEthic.SharedSecrets.MemTables.NetworkLookup do
[
{:network_pool_address, <<120, 232, 56, 47, 135, 12, 110, 76, 250, 5, 240, 210, 92, 165,
151, 239, 181, 101, 24, 29, 24, 245, 231, 225, 47, 78, 103, 57, 254, 206, 159, 217>>},
{{:daily_nonce, 0}, <<0, 0, 207, 10, 216, 159, 45, 111, 246, 18, 53, 128, 31, 127, 69, 104, 136, 74, 244, 225, 71, 122, 199, 230, 122, 233, 123, 61, 92, 150, 157, 139, 218, 8>>}
{{:daily_nonce, 0}, <<0, 1, 207, 10, 216, 159, 45, 111, 246, 18, 53, 128, 31, 127, 69, 104, 136, 74, 244, 225, 71, 122, 199, 230, 122, 233, 123, 61, 92, 150, 157, 139, 218, 8>>}
]
"""
@spec set_network_pool_address(binary()) :: :ok
Expand Down Expand Up @@ -86,7 +86,7 @@ defmodule ArchEthic.SharedSecrets.MemTables.NetworkLookup do
...> 21, 248, 239, 162, 234, 35, 220, 113, 133, 73, 255, 58, 134, 225, 30>>, ~U[2021-04-07 08:36:41Z])
iex> :ets.tab2list(:archethic_shared_secrets_network)
[
{{:daily_nonce, 0}, <<0, 0, 207, 10, 216, 159, 45, 111, 246, 18, 53, 128, 31, 127, 69, 104, 136, 74, 244, 225, 71, 122, 199, 230, 122, 233, 123, 61, 92, 150, 157, 139, 218, 8>>},
{{:daily_nonce, 0}, <<0, 1, 207, 10, 216, 159, 45, 111, 246, 18, 53, 128, 31, 127, 69, 104, 136, 74, 244, 225, 71, 122, 199, 230, 122, 233, 123, 61, 92, 150, 157, 139, 218, 8>>},
{{:daily_nonce, 1617698201}, <<0, 0, 57, 24, 251, 164, 133, 168, 109, 154, 9, 77, 197, 254, 138, 187, 250, 200, 37,
115, 182, 174, 90, 206, 161, 228, 197, 77, 184, 101, 183, 164, 187, 96>>},
{{:daily_nonce, 1617784601}, <<0, 0, 52, 242, 87, 194, 41, 203, 59, 163, 197, 116, 83, 28, 134, 140, 48, 74, 66,
Expand All @@ -106,19 +106,19 @@ defmodule ArchEthic.SharedSecrets.MemTables.NetworkLookup do

iex> NetworkLookup.start_link()
iex> NetworkLookup.get_daily_nonce_public_key()
<<0, 0, 207, 10, 216, 159, 45, 111, 246, 18, 53, 128, 31, 127, 69, 104, 136, 74, 244, 225, 71, 122, 199, 230, 122, 233, 123, 61, 92, 150, 157, 139, 218, 8>>
<<0, 1, 207, 10, 216, 159, 45, 111, 246, 18, 53, 128, 31, 127, 69, 104, 136, 74, 244, 225, 71, 122, 199, 230, 122, 233, 123, 61, 92, 150, 157, 139, 218, 8>>

iex> NetworkLookup.start_link()
iex> NetworkLookup.set_daily_nonce_public_key(<<0, 0, 57, 24, 251, 164, 133, 168, 109, 154, 9, 77, 197, 254, 138, 187, 250, 200, 37,
iex> NetworkLookup.set_daily_nonce_public_key(<<0, 1, 57, 24, 251, 164, 133, 168, 109, 154, 9, 77, 197, 254, 138, 187, 250, 200, 37,
...> 115, 182, 174, 90, 206, 161, 228, 197, 77, 184, 101, 183, 164, 187, 96>>, ~U[2021-04-06 08:36:41Z])
iex> NetworkLookup.set_daily_nonce_public_key(<<0, 0, 52, 242, 87, 194, 41, 203, 59, 163, 197, 116, 83, 28, 134, 140, 48, 74, 66,
iex> NetworkLookup.set_daily_nonce_public_key(<<0, 1, 52, 242, 87, 194, 41, 203, 59, 163, 197, 116, 83, 28, 134, 140, 48, 74, 66,
...> 21, 248, 239, 162, 234, 35, 220, 113, 133, 73, 255, 58, 134, 225, 30>>, ~U[2021-04-07 08:36:41Z])
iex> NetworkLookup.get_daily_nonce_public_key(~U[2021-04-07 10:00:00Z])
<<0, 0, 52, 242, 87, 194, 41, 203, 59, 163, 197, 116, 83, 28, 134, 140, 48, 74, 66, 21, 248, 239, 162, 234, 35, 220, 113, 133, 73, 255, 58, 134, 225, 30>>
<<0, 1, 52, 242, 87, 194, 41, 203, 59, 163, 197, 116, 83, 28, 134, 140, 48, 74, 66, 21, 248, 239, 162, 234, 35, 220, 113, 133, 73, 255, 58, 134, 225, 30>>
iex> NetworkLookup.get_daily_nonce_public_key(~U[2021-04-07 08:36:41Z])
<<0, 0, 57, 24, 251, 164, 133, 168, 109, 154, 9, 77, 197, 254, 138, 187, 250, 200, 37, 115, 182, 174, 90, 206, 161, 228, 197, 77, 184, 101, 183, 164, 187, 96>>
<<0, 1, 57, 24, 251, 164, 133, 168, 109, 154, 9, 77, 197, 254, 138, 187, 250, 200, 37, 115, 182, 174, 90, 206, 161, 228, 197, 77, 184, 101, 183, 164, 187, 96>>
iex> NetworkLookup.get_daily_nonce_public_key(~U[2021-04-07 00:00:00Z])
<<0, 0, 57, 24, 251, 164, 133, 168, 109, 154, 9, 77, 197, 254, 138, 187, 250, 200, 37, 115, 182, 174, 90, 206, 161, 228, 197, 77, 184, 101, 183, 164, 187, 96>>
<<0, 1, 57, 24, 251, 164, 133, 168, 109, 154, 9, 77, 197, 254, 138, 187, 250, 200, 37, 115, 182, 174, 90, 206, 161, 228, 197, 77, 184, 101, 183, 164, 187, 96>>

"""
@spec get_daily_nonce_public_key(DateTime.t()) :: Crypto.key()
Expand Down
6 changes: 6 additions & 0 deletions lib/archethic/shared_secrets/mem_tables_loader.ex
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ defmodule ArchEthic.SharedSecrets.MemTablesLoader do

:tpm ->
:hardware

:on_chain_wallet ->
:software
end

:ok = OriginKeyLookup.add_public_key(family, previous_public_key)
Expand Down Expand Up @@ -140,6 +143,9 @@ defmodule ArchEthic.SharedSecrets.MemTablesLoader do

:tpm ->
:hardware

:on_chain_wallet ->
:software
end

get_origin_public_keys(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ defmodule ArchEthic.TransactionChain.TransactionData.Ownership do
iex> %Ownership{authorized_keys: authorized_keys} = Ownership.new(secret, secret_key, [pub])
iex> Map.keys(authorized_keys)
[
<<0, 0, 241, 101, 225, 229, 247, 194, 144, 229, 47, 46, 222, 243, 251, 171, 96, 203, 174, 116, 191, 211,
<<0, 1, 241, 101, 225, 229, 247, 194, 144, 229, 47, 46, 222, 243, 251, 171, 96, 203, 174, 116, 191, 211,
39, 79, 142, 94, 225, 222, 51, 69, 201, 84, 161,102>>
]
"""
Expand Down
6 changes: 3 additions & 3 deletions lib/archethic/utils/testnet.ex
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ defmodule ArchEthic.Utils.Testnet do
"node1" => %{
environment: %{
"ARCHETHIC_CRYPTO_SEED" => "node1",
"ARCHETHIC_P2P_BOOTSTRAPPING_SEEDS" => "1.2.3.2:30002:00001D967D71B2E135C84206DDD108B5925A2CD99C8EBC5AB5D8FD2EC9400CE3C98A:tcp",
"ARCHETHIC_P2P_BOOTSTRAPPING_SEEDS" => "1.2.3.2:30002:00011D967D71B2E135C84206DDD108B5925A2CD99C8EBC5AB5D8FD2EC9400CE3C98A:tcp",
"ARCHETHIC_STATIC_IP" => "1.2.3.2",
"ARCHETHIC_DB_HOST" => "scylladb1:9042",
"ARCHETHIC_NETWORKING_IMPL" => "STATIC",
Expand Down Expand Up @@ -187,7 +187,7 @@ defmodule ArchEthic.Utils.Testnet do
depends_on: ["node1"],
environment: %{
"ARCHETHIC_CRYPTO_SEED" => "node2",
"ARCHETHIC_P2P_BOOTSTRAPPING_SEEDS" => "1.2.3.2:30002:00001D967D71B2E135C84206DDD108B5925A2CD99C8EBC5AB5D8FD2EC9400CE3C98A:tcp",
"ARCHETHIC_P2P_BOOTSTRAPPING_SEEDS" => "1.2.3.2:30002:00011D967D71B2E135C84206DDD108B5925A2CD99C8EBC5AB5D8FD2EC9400CE3C98A:tcp",
"ARCHETHIC_STATIC_IP" => "1.2.3.3",
"ARCHETHIC_DB_HOST" => "scylladb2:9042",
"ARCHETHIC_NETWORKING_IMPL" => "STATIC",
Expand Down Expand Up @@ -229,7 +229,7 @@ defmodule ArchEthic.Utils.Testnet do
depends_on: ["node1"],
environment: %{
"ARCHETHIC_CRYPTO_SEED" => "node3",
"ARCHETHIC_P2P_BOOTSTRAPPING_SEEDS" => "1.2.3.2:30002:00001D967D71B2E135C84206DDD108B5925A2CD99C8EBC5AB5D8FD2EC9400CE3C98A:tcp",
"ARCHETHIC_P2P_BOOTSTRAPPING_SEEDS" => "1.2.3.2:30002:00011D967D71B2E135C84206DDD108B5925A2CD99C8EBC5AB5D8FD2EC9400CE3C98A:tcp",
"ARCHETHIC_STATIC_IP" => "1.2.3.4",
"ARCHETHIC_DB_HOST" => "scylladb3:9042",
"ARCHETHIC_NETWORKING_IMPL" => "STATIC",
Expand Down
12 changes: 6 additions & 6 deletions test/archethic/beacon_chain_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@ defmodule ArchEthic.BeaconChainTest do
end

test "summary_transaction_address/2 should return a address using the storage nonce a subset and a date" do
assert <<0, 0, 141, 146, 109, 188, 197, 248, 255, 123, 14, 172, 53, 198, 233, 233, 205, 180,
221, 95, 244, 203, 222, 149, 194, 205, 73, 214, 9, 207, 197, 55, 59,
182>> = BeaconChain.summary_transaction_address(<<1>>, ~U[2021-01-13 00:00:00Z])
assert <<0, 0, 126, 16, 248, 223, 156, 176, 229, 102, 1, 100, 203, 172, 176, 243, 188, 41, 20,
170, 58, 159, 173, 181, 185, 11, 231, 174, 223, 115, 196, 88, 243,
197>> = BeaconChain.summary_transaction_address(<<1>>, ~U[2021-01-13 00:00:00Z])

assert <<0, 0, 25, 97, 166, 116, 204, 210, 75, 152, 0, 193, 90, 253, 228, 140, 38, 248, 49,
160, 210, 186, 181, 32, 203, 157, 110, 67, 255, 181, 80, 96, 160,
239>> = BeaconChain.summary_transaction_address(<<1>>, ~U[2021-01-14 00:00:00Z])
assert <<0, 0, 68, 143, 226, 144, 77, 189, 180, 194, 80, 63, 131, 127, 130, 140, 137, 97, 76,
39, 74, 19, 34, 182, 174, 179, 89, 117, 149, 203, 58, 89, 67,
68>> = BeaconChain.summary_transaction_address(<<1>>, ~U[2021-01-14 00:00:00Z])
end

test "add_end_of_node_sync/2 should register a end of synchronization inside a subset" do
Expand Down
4 changes: 0 additions & 4 deletions test/archethic/crypto_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,6 @@ defmodule CryptoTest do
end
end

test "hash_with_storage_nonce/1 should hash a data using the storage nonce" do
assert Crypto.hash(["nonce", "hello"]) == Crypto.hash_with_storage_nonce("hello")
end

test "decrypt_and_set_storage_nonce/1 should decrypt storage nonce using node last key and and load storage nonce" do
storage_nonce = :crypto.strong_rand_bytes(32)

Expand Down
10 changes: 4 additions & 6 deletions test/archethic/election_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -181,18 +181,16 @@ defmodule ArchEthic.ElectionTest do
]

assert [
%Node{first_public_key: "Node5", geo_patch: "E3A", average_availability: 0.9},
%Node{first_public_key: "Node1", geo_patch: "CCC", average_availability: 0.1},
%Node{first_public_key: "Node3", geo_patch: "AFC", average_availability: 0.8},
%Node{first_public_key: "Node2", geo_patch: "BBB", average_availability: 0.9},
%Node{first_public_key: "Node0", geo_patch: "AAA", average_availability: 0.7},
%Node{first_public_key: "Node6", geo_patch: "F1A", average_availability: 0.5},
%Node{first_public_key: "Node4", geo_patch: "FBA", average_availability: 0.4},
%Node{first_public_key: "Node3", geo_patch: "AFC", average_availability: 0.8}
%Node{first_public_key: "Node5", geo_patch: "E3A", average_availability: 0.9}
] =
Election.storage_nodes("address", available_nodes, %StorageConstraints{
number_replicas: fn _ ->
3
end,
min_geo_patch: fn -> 4 end,
min_geo_patch: fn -> 3 end,
min_geo_patch_average_availability: fn -> 0.8 end
})
end
Expand Down
8 changes: 2 additions & 6 deletions test/archethic/self_repair/sync_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,7 @@ defmodule ArchEthic.SelfRepair.SyncTest do
geo_patch: "BBB",
network_patch: "BBB",
reward_address: <<0::8, 0::8, :crypto.strong_rand_bytes(32)::binary>>,
enrollment_date: DateTime.utc_now(),
authorized?: true,
authorization_date: DateTime.utc_now() |> DateTime.add(-(86_400 * 10))
enrollment_date: DateTime.utc_now()
},
%Node{
ip: {127, 0, 0, 1},
Expand All @@ -127,9 +125,7 @@ defmodule ArchEthic.SelfRepair.SyncTest do
geo_patch: "BBB",
network_patch: "BBB",
reward_address: :crypto.strong_rand_bytes(32),
enrollment_date: DateTime.utc_now(),
authorized?: true,
authorization_date: DateTime.utc_now() |> DateTime.add(-(86_400 * 10))
enrollment_date: DateTime.utc_now()
}
]

Expand Down
6 changes: 3 additions & 3 deletions test/archethic/shared_secrets/mem_tables_loader_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ defmodule ArchEthic.SharedSecrets.MemTablesLoaderTest do
type: :origin_shared_secrets,
data: %TransactionData{
content:
<<0, 1, 39, 103, 38, 51, 71, 159, 74, 33, 122, 134, 153, 147, 202, 66, 229, 213, 140,
<<0, 2, 39, 103, 38, 51, 71, 159, 74, 33, 122, 134, 153, 147, 202, 66, 229, 213, 140,
129, 186, 156, 39, 168, 129, 94, 161, 133, 2, 177, 176, 158, 246, 10, 0, 0, 44, 109,
55, 248, 40, 227, 68, 248, 1, 34, 31, 172, 75, 3, 244, 11, 58, 245, 170, 246, 70,
204, 242, 12, 14, 36, 248, 240, 71, 218, 245, 78>>
Expand All @@ -79,14 +79,14 @@ defmodule ArchEthic.SharedSecrets.MemTablesLoaderTest do
[
<<0, 0, 44, 109, 55, 248, 40, 227, 68, 248, 1, 34, 31, 172, 75, 3, 244, 11, 58, 245,
170, 246, 70, 204, 242, 12, 14, 36, 248, 240, 71, 218, 245, 78>>,
<<0, 1, 39, 103, 38, 51, 71, 159, 74, 33, 122, 134, 153, 147, 202, 66, 229, 213, 140,
<<0, 2, 39, 103, 38, 51, 71, 159, 74, 33, 122, 134, 153, 147, 202, 66, 229, 213, 140,
129, 186, 156, 39, 168, 129, 94, 161, 133, 2, 177, 176, 158, 246, 10>>
] ++ @origin_genesis_public_keys

assert Enum.all?(OriginKeyLookup.list_public_keys(), &(&1 in expected_keys))

assert [
<<0, 1, 39, 103, 38, 51, 71, 159, 74, 33, 122, 134, 153, 147, 202, 66, 229, 213,
<<0, 2, 39, 103, 38, 51, 71, 159, 74, 33, 122, 134, 153, 147, 202, 66, 229, 213,
140, 129, 186, 156, 39, 168, 129, 94, 161, 133, 2, 177, 176, 158, 246, 10>>
] == OriginKeyLookup.list_public_keys(:hardware)
end
Expand Down