Skip to content

Commit

Permalink
refactor!: Use multihash format for private keys (hyperledger#4412)
Browse files Browse the repository at this point in the history
Signed-off-by: Dmitry Murzin <diralik@yandex.ru>
  • Loading branch information
dima74 committed May 2, 2024
1 parent 359fb85 commit 6d6a659
Show file tree
Hide file tree
Showing 23 changed files with 99 additions and 279 deletions.
2 changes: 1 addition & 1 deletion client/src/config.rs
Expand Up @@ -111,7 +111,7 @@ mod tests {
[account]
id = "alice@wonderland"
public_key = "ed01207233BFC89DCBD68C19FDE6CE6158225298EC1131B6A130D1AEB454C1AB5183C0"
private_key = { algorithm = "ed25519", payload = "9ac47abf59b356e0bd7dcbbbb4dec080e302156a48ca907e47cb6aea1d32719e7233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c0" }
private_key = "8026409AC47ABF59B356E0BD7DCBBBB4DEC080E302156A48CA907E47CB6AEA1D32719E7233BFC89DCBD68C19FDE6CE6158225298EC1131B6A130D1AEB454C1AB5183C0"

[transaction]
time_to_live = 100_000
Expand Down
4 changes: 2 additions & 2 deletions config/iroha_test_config.toml
@@ -1,14 +1,14 @@
chain_id = "00000000-0000-0000-0000-000000000000"
public_key = "ed01201C61FAF8FE94E253B93114240394F79A607B7FA55F9E5A41EBEC74B88055768B"
private_key = { algorithm = "ed25519", payload = "282ED9F3CF92811C3818DBC4AE594ED59DC1A2F78E4241E31924E101D6B1FB831C61FAF8FE94E253B93114240394F79A607B7FA55F9E5A41EBEC74B88055768B" }
private_key = "802640282ED9F3CF92811C3818DBC4AE594ED59DC1A2F78E4241E31924E101D6B1FB831C61FAF8FE94E253B93114240394F79A607B7FA55F9E5A41EBEC74B88055768B"

[network]
address = "127.0.0.1:1337"

[genesis]
public_key = "ed01204CFFD0EE429B1BDD36B3910EC570852B8BB63F18750341772FB46BC856C5CAAF"
file = "./genesis.json"
private_key = { algorithm = "ed25519", payload = "D748E18CE60CB30DEA3E73C9019B7AF45A8D465E3D71BCC9A5EF99A008205E534CFFD0EE429B1BDD36B3910EC570852B8BB63F18750341772FB46BC856C5CAAF" }
private_key = "802640D748E18CE60CB30DEA3E73C9019B7AF45A8D465E3D71BCC9A5EF99A008205E534CFFD0EE429B1BDD36B3910EC570852B8BB63F18750341772FB46BC856C5CAAF"

[torii]
address = "127.0.0.1:8080"
Expand Down
116 changes: 6 additions & 110 deletions config/src/parameters/user.rs
Expand Up @@ -10,7 +10,6 @@
#![allow(missing_docs)]

use std::{
error::Error,
fmt::Debug,
fs::File,
io::Read,
Expand All @@ -21,7 +20,7 @@ use std::{

pub use boilerplate::*;
use eyre::{eyre, Report, WrapErr};
use iroha_config_base::{Emitter, ErrorsCollection, HumanBytes, Merge, ParseEnvResult, ReadEnv};
use iroha_config_base::{Emitter, ErrorsCollection, HumanBytes, Merge};
use iroha_crypto::{KeyPair, PrivateKey, PublicKey};
use iroha_data_model::{
metadata::Limits as MetadataLimits, peer::PeerId, transaction::TransactionLimits, ChainId,
Expand Down Expand Up @@ -279,71 +278,6 @@ pub struct CliContext {
pub submit_genesis: bool,
}

pub(crate) fn private_key_from_env<E: Error>(
emitter: &mut Emitter<Report>,
env: &impl ReadEnv<E>,
env_key_base: impl AsRef<str>,
name_base: impl AsRef<str>,
) -> ParseEnvResult<PrivateKey> {
let alg_env = format!("{}_ALGORITHM", env_key_base.as_ref());
let alg_name = format!("{}.algorithm", name_base.as_ref());
let payload_env = format!("{}_PAYLOAD", env_key_base.as_ref());
let payload_name = format!("{}.payload", name_base.as_ref());

let algorithm = ParseEnvResult::parse_simple(emitter, env, &alg_env, &alg_name);

// FIXME: errors handling is a mess
let payload = match env
.read_env(&payload_env)
.map_err(|err| eyre!("failed to read {payload_name}: {err}"))
.wrap_err("oops")
{
Ok(Some(value)) => ParseEnvResult::Value(value),
Ok(None) => ParseEnvResult::None,
Err(err) => {
emitter.emit(err);
ParseEnvResult::Error
}
};

match (algorithm, payload) {
(ParseEnvResult::Value(algorithm), ParseEnvResult::Value(payload)) => {
match PrivateKey::from_hex(algorithm, payload).wrap_err_with(|| {
eyre!(
"failed to construct `{}` from `{}` and `{}` environment variables",
name_base.as_ref(),
&alg_env,
&payload_env
)
}) {
Ok(value) => return ParseEnvResult::Value(value),
Err(report) => {
emitter.emit(report);
}
}
}
(ParseEnvResult::None, ParseEnvResult::None) => return ParseEnvResult::None,
(ParseEnvResult::Value(_), ParseEnvResult::None) => emitter.emit(eyre!(
"`{}` env was provided, but `{}` was not",
&alg_env,
&payload_env
)),
(ParseEnvResult::None, ParseEnvResult::Value(_)) => {
emitter.emit(eyre!(
"`{}` env was provided, but `{}` was not",
&payload_env,
&alg_env
));
}
(ParseEnvResult::Error, _) | (_, ParseEnvResult::Error) => {
// emitter already has these errors
// adding this branch for exhaustiveness
}
}

ParseEnvResult::Error
}

#[derive(Debug)]
pub struct Genesis {
pub public_key: PublicKey,
Expand Down Expand Up @@ -667,8 +601,7 @@ mod tests {
#[test]
fn parses_private_key_from_env() {
let env = TestEnv::new()
.set("PRIVATE_KEY_ALGORITHM", "ed25519")
.set("PRIVATE_KEY_PAYLOAD", "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb");
.set("PRIVATE_KEY", "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB");

let private_key = RootPartial::from_env(&env)
.expect("input is valid, should not fail")
Expand All @@ -682,52 +615,15 @@ mod tests {
}

#[test]
fn fails_to_parse_private_key_in_env_without_payload() {
let env = TestEnv::new().set("PRIVATE_KEY_ALGORITHM", "ed25519");
let error =
RootPartial::from_env(&env).expect_err("private key is incomplete, should fail");
let expected = expect_test::expect![
"`PRIVATE_KEY_ALGORITHM` env was provided, but `PRIVATE_KEY_PAYLOAD` was not"
];
expected.assert_eq(&format!("{error:#}"));
}

#[test]
fn fails_to_parse_private_key_in_env_without_algorithm() {
let env = TestEnv::new().set("PRIVATE_KEY_PAYLOAD", "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb");
let error =
RootPartial::from_env(&env).expect_err("private key is incomplete, should fail");
fn fails_to_parse_private_key_from_env_with_invalid_value() {
let env = TestEnv::new().set("PRIVATE_KEY", "foo");
let error = RootPartial::from_env(&env).expect_err("input is invalid, should fail");
let expected = expect_test::expect![
"`PRIVATE_KEY_PAYLOAD` env was provided, but `PRIVATE_KEY_ALGORITHM` was not"
"failed to parse `iroha.private_key` field from `PRIVATE_KEY` env variable"
];
expected.assert_eq(&format!("{error:#}"));
}

#[test]
fn fails_to_parse_private_key_from_env_with_invalid_payload() {
let env = TestEnv::new()
.set("PRIVATE_KEY_ALGORITHM", "ed25519")
.set("PRIVATE_KEY_PAYLOAD", "foo");

let error = RootPartial::from_env(&env).expect_err("input is invalid, should fail");

let expected = expect_test::expect!["failed to construct `iroha.private_key` from `PRIVATE_KEY_ALGORITHM` and `PRIVATE_KEY_PAYLOAD` environment variables"];
expected.assert_eq(&format!("{error:#}"));
}

#[test]
fn when_payload_provided_but_alg_is_invalid() {
let env = TestEnv::new()
.set("PRIVATE_KEY_ALGORITHM", "foo")
.set("PRIVATE_KEY_PAYLOAD", "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb");

let error = RootPartial::from_env(&env).expect_err("input is invalid, should fail");

// TODO: print the bad value and supported ones
let expected = expect_test::expect!["failed to parse `iroha.private_key.algorithm` field from `PRIVATE_KEY_ALGORITHM` env variable"];
expected.assert_eq(&format!("{error:#}"));
}

#[test]
fn deserialize_empty_input_works() {
let _layer: RootPartial = toml::from_str("").unwrap();
Expand Down
5 changes: 2 additions & 3 deletions config/src/parameters/user/boilerplate.rs
Expand Up @@ -30,7 +30,6 @@ use crate::{
logger::Format,
parameters::{
defaults::{self, chain_wide::*, network::*, queue::*, torii::*},
user,
user::{
ChainWide, DevTelemetry, Genesis, Kura, KuraDebug, Logger, Network, Queue, Root,
Snapshot, Sumeragi, SumeragiDebug, Telemetry, Torii,
Expand Down Expand Up @@ -148,7 +147,7 @@ impl FromEnv for RootPartial {
ParseEnvResult::parse_simple(&mut emitter, env, "PUBLIC_KEY", "iroha.public_key")
.into();
let private_key =
user::private_key_from_env(&mut emitter, env, "PRIVATE_KEY", "iroha.private_key")
ParseEnvResult::parse_simple(&mut emitter, env, "PRIVATE_KEY", "iroha.private_key")
.into();

let genesis = emitter.try_from_env(env);
Expand Down Expand Up @@ -227,7 +226,7 @@ impl FromEnv for GenesisPartial {
"genesis.public_key",
)
.into();
let private_key = user::private_key_from_env(
let private_key = ParseEnvResult::parse_simple(
&mut emitter,
env,
"GENESIS_PRIVATE_KEY",
Expand Down
4 changes: 2 additions & 2 deletions config/tests/fixtures.rs
Expand Up @@ -444,8 +444,8 @@ fn multiple_env_parsing_errors() {
let error = RootPartial::from_env(&env).expect_err("the input from env is invalid");

let expected = expect_test::expect![[r#"
`PRIVATE_KEY_PAYLOAD` env was provided, but `PRIVATE_KEY_ALGORITHM` was not
failed to parse `genesis.private_key.algorithm` field from `GENESIS_PRIVATE_KEY_ALGORITHM` env variable
failed to parse `iroha.private_key` field from `PRIVATE_KEY` env variable
failed to parse `genesis.private_key` field from `GENESIS_PRIVATE_KEY` env variable
failed to parse `kura.debug.output_new_blocks` field from `KURA_DEBUG_OUTPUT_NEW_BLOCKS` env variable
failed to parse `logger.format` field from `LOG_FORMAT` env variable
failed to parse `torii.address` field from `API_ADDRESS` env variable"#]];
Expand Down
2 changes: 1 addition & 1 deletion config/tests/fixtures/absolute_paths.toml
Expand Up @@ -11,4 +11,4 @@ out_file = "/telemetry/file.json"

[genesis]
file = "/oh/my/genesis.json"
private_key = { algorithm = "ed25519", payload = "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb" }
private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"
5 changes: 2 additions & 3 deletions config/tests/fixtures/bad.multiple_bad_envs.env
@@ -1,6 +1,5 @@
PRIVATE_KEY_PAYLOAD=8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb
GENESIS_PRIVATE_KEY_ALGORITHM=BAD BAD BAD
GENESIS_PRIVATE_KEY_PAYLOAD=8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb
PRIVATE_KEY=BAD BAD BAD
GENESIS_PRIVATE_KEY=BAD BAD BAD
API_ADDRESS=BAD BAD BAD
KURA_DEBUG_OUTPUT_NEW_BLOCKS=TrueЪ
LOG_FORMAT=what format?
5 changes: 2 additions & 3 deletions config/tests/fixtures/base.toml
@@ -1,7 +1,6 @@
chain_id = "0"
public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"
private_key.algorithm = "ed25519"
private_key.payload = "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb"
private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"

[network]
address = "127.0.0.1:1337"
Expand All @@ -10,4 +9,4 @@ address = "127.0.0.1:1337"
public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"

[torii]
address = "127.0.0.1:8080"
address = "127.0.0.1:8080"
6 changes: 2 additions & 4 deletions config/tests/fixtures/full.env
@@ -1,11 +1,9 @@
CHAIN_ID=0-0
PUBLIC_KEY=ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB
PRIVATE_KEY_ALGORITHM=ed25519
PRIVATE_KEY_PAYLOAD=8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb
PRIVATE_KEY=8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB
P2P_ADDRESS=127.0.0.1:5432
GENESIS_PUBLIC_KEY=ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB
GENESIS_PRIVATE_KEY_ALGORITHM=ed25519
GENESIS_PRIVATE_KEY_PAYLOAD=8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb
GENESIS_PRIVATE_KEY=8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB
API_ADDRESS=127.0.0.1:8080
KURA_INIT_MODE=strict
KURA_STORE_DIR=/store/path/from/env
Expand Down
4 changes: 2 additions & 2 deletions config/tests/fixtures/full.toml
Expand Up @@ -2,12 +2,12 @@

chain_id = "0"
public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"
private_key = { algorithm = "ed25519", payload = "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb" }
private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"

[genesis]
file = "genesis.json"
public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"
private_key = { algorithm = "ed25519", payload = "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb" }
private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"

[network]
address = "localhost:3840"
Expand Down
3 changes: 1 addition & 2 deletions config/tests/fixtures/inconsistent_genesis.toml
@@ -1,7 +1,6 @@
extends = "base.toml"

[genesis]
private_key.algorithm = "ed25519"
private_key.payload = "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb"
private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"
# should fail without it:
# file = ...
3 changes: 1 addition & 2 deletions config/tests/fixtures/minimal_alone_with_genesis.toml
Expand Up @@ -2,5 +2,4 @@ extends = "base.toml"

[genesis]
file = "./empty_ok_genesis.json"
private_key.algorithm = "ed25519"
private_key.payload = "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb"
private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"
3 changes: 1 addition & 2 deletions config/tests/fixtures/minimal_file_and_env.toml
Expand Up @@ -2,8 +2,7 @@ extends = "base_trusted_peers.toml"

chain_id = "0"
public_key = "ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"
private_key.algorithm = "ed25519"
private_key.payload = "8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb"
private_key = "8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB"

[network]
address = "127.0.0.1:1337"
Expand Down
2 changes: 1 addition & 1 deletion configs/client.template.toml
Expand Up @@ -10,7 +10,7 @@
[account]
# id =
# public_key =
# private_key = { algorithm = "", payload = "" }
# private_key =

[transaction]
# time_to_live = "100s"
Expand Down
2 changes: 1 addition & 1 deletion configs/peer.template.toml
Expand Up @@ -16,7 +16,7 @@
[genesis]
# file =
# public_key =
# private_key = { algorithm = "", payload = "" }
# private_key =

[network]
# address =
Expand Down
2 changes: 1 addition & 1 deletion configs/swarm/client.toml
Expand Up @@ -8,4 +8,4 @@ password = "ilovetea"
[account]
id = "alice@wonderland"
public_key = "ed01207233BFC89DCBD68C19FDE6CE6158225298EC1131B6A130D1AEB454C1AB5183C0"
private_key = { algorithm = "ed25519", payload = "9ac47abf59b356e0bd7dcbbbb4dec080e302156a48ca907e47cb6aea1d32719e7233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c0" }
private_key = "8026409AC47ABF59B356E0BD7DCBBBB4DEC080E302156A48CA907E47CB6AEA1D32719E7233BFC89DCBD68C19FDE6CE6158225298EC1131B6A130D1AEB454C1AB5183C0"
15 changes: 5 additions & 10 deletions configs/swarm/docker-compose.local.yml
Expand Up @@ -9,13 +9,11 @@ services:
environment:
CHAIN_ID: 00000000-0000-0000-0000-000000000000
PUBLIC_KEY: ed01208BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB
PRIVATE_KEY_ALGORITHM: ed25519
PRIVATE_KEY_PAYLOAD: 8f4c15e5d664da3f13778801d23d4e89b76e94c1b94b389544168b6cb894f84f8ba62848cf767d72e7f7f4b9d2d7ba07fee33760f79abe5597a51520e292a0cb
PRIVATE_KEY: 8026408F4C15E5D664DA3F13778801D23D4E89B76E94C1B94B389544168B6CB894F84F8BA62848CF767D72E7F7F4B9D2D7BA07FEE33760F79ABE5597A51520E292A0CB
P2P_ADDRESS: 0.0.0.0:1337
API_ADDRESS: 0.0.0.0:8080
GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4
GENESIS_PRIVATE_KEY_ALGORITHM: ed25519
GENESIS_PRIVATE_KEY_PAYLOAD: 82b3bde54aebeca4146257da0de8d59d8e46d5fe34887dcd8072866792fcb3ad4164bf554923ece1fd412d241036d863a6ae430476c898248b8237d77534cfc4
GENESIS_PRIVATE_KEY: 80264082B3BDE54AEBECA4146257DA0DE8D59D8E46D5FE34887DCD8072866792FCB3AD4164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4
GENESIS_FILE: /config/genesis.json
SUMERAGI_TRUSTED_PEERS: '[{"address":"iroha1:1338","public_key":"ed0120815BBDC9775D28C3633269B25F22D048E2AA2E36017CBE5AD85F15220BEB6F6F"},{"address":"iroha3:1340","public_key":"ed0120A66522370D60B9C09E79ADE2E9BB1EF2E78733A944B999B3A6AEE687CE476D61"},{"address":"iroha2:1339","public_key":"ed0120F417E0371E6ADB32FD66749477402B1AB67F84A8E9B082E997980CC91F327736"}]'
ports:
Expand All @@ -37,8 +35,7 @@ services:
environment:
CHAIN_ID: 00000000-0000-0000-0000-000000000000
PUBLIC_KEY: ed0120815BBDC9775D28C3633269B25F22D048E2AA2E36017CBE5AD85F15220BEB6F6F
PRIVATE_KEY_ALGORITHM: ed25519
PRIVATE_KEY_PAYLOAD: c02ffad5e455e7ec620d74de5769681e4d8385906bce5a437eb67452a9efbbc2815bbdc9775d28c3633269b25f22d048e2aa2e36017cbe5ad85f15220beb6f6f
PRIVATE_KEY: 802640C02FFAD5E455E7EC620D74DE5769681E4D8385906BCE5A437EB67452A9EFBBC2815BBDC9775D28C3633269B25F22D048E2AA2E36017CBE5AD85F15220BEB6F6F
P2P_ADDRESS: 0.0.0.0:1338
API_ADDRESS: 0.0.0.0:8081
GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4
Expand All @@ -61,8 +58,7 @@ services:
environment:
CHAIN_ID: 00000000-0000-0000-0000-000000000000
PUBLIC_KEY: ed0120F417E0371E6ADB32FD66749477402B1AB67F84A8E9B082E997980CC91F327736
PRIVATE_KEY_ALGORITHM: ed25519
PRIVATE_KEY_PAYLOAD: 29c5ed1409cb10fd791bc4ff8a6cb5e22a5fae7e36f448ef3ea2988b1319a88bf417e0371e6adb32fd66749477402b1ab67f84a8e9b082e997980cc91f327736
PRIVATE_KEY: 80264029C5ED1409CB10FD791BC4FF8A6CB5E22A5FAE7E36F448EF3EA2988B1319A88BF417E0371E6ADB32FD66749477402B1AB67F84A8E9B082E997980CC91F327736
P2P_ADDRESS: 0.0.0.0:1339
API_ADDRESS: 0.0.0.0:8082
GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4
Expand All @@ -85,8 +81,7 @@ services:
environment:
CHAIN_ID: 00000000-0000-0000-0000-000000000000
PUBLIC_KEY: ed0120A66522370D60B9C09E79ADE2E9BB1EF2E78733A944B999B3A6AEE687CE476D61
PRIVATE_KEY_ALGORITHM: ed25519
PRIVATE_KEY_PAYLOAD: 5eed4855fad183c451aac39dfc50831607e4cf408c98e2b977f3ce4a2df42ce2a66522370d60b9c09e79ade2e9bb1ef2e78733a944b999b3a6aee687ce476d61
PRIVATE_KEY: 8026405EED4855FAD183C451AAC39DFC50831607E4CF408C98E2B977F3CE4A2DF42CE2A66522370D60B9C09E79ADE2E9BB1EF2E78733A944B999B3A6AEE687CE476D61
P2P_ADDRESS: 0.0.0.0:1340
API_ADDRESS: 0.0.0.0:8083
GENESIS_PUBLIC_KEY: ed01204164BF554923ECE1FD412D241036D863A6AE430476C898248B8237D77534CFC4
Expand Down

0 comments on commit 6d6a659

Please sign in to comment.