redgold_keys/
word_pass_support.rs1use crate::util::mnemonic_support::MnemonicSupport;
2use crate::KeyPair;
3use redgold_schema::conf::node_config::NodeConfig;
4use redgold_schema::config_data::RpcUrl;
5use redgold_schema::constants::DEBUG_FINALIZATION_INTERVAL_MILLIS;
6use redgold_schema::data_folder::DataFolder;
7use redgold_schema::keys::words_pass::WordsPass;
8use redgold_schema::structs::{NetworkEnvironment, PeerId, SupportedCurrency};
9use redgold_schema::RgResult;
10use std::sync::Arc;
11use std::time::Duration;
12
13pub trait WordsPassNodeConfig {
14 fn words(&self) -> WordsPass;
15 fn from_test_id(seed_id: &u16) -> Self;
16
17 fn default_debug() -> Self;
18
19 fn default_peer_id(&self) -> RgResult<PeerId>;
20 fn secure_words_or(&self) -> WordsPass;
21}
22
23impl WordsPassNodeConfig for NodeConfig {
24
25 fn default_peer_id(&self) -> RgResult<PeerId> {
26 let pk = self.words().default_pid_kp().expect("").public_key();
27 let pid = PeerId::from_pk(pk);
28 Ok(pid)
29 }
30 fn default_debug() -> Self {
31 NodeConfig::from_test_id(&(0 as u16))
32 }
33
34 fn words(&self) -> WordsPass {
35 WordsPass::new(self.mnemonic_words().clone(), None)
36 }
37
38 fn secure_words_or(&self) -> WordsPass {
39 WordsPass::new(self.secure_mnemonic_words_or(), None)
40 }
41
42
43
44 fn from_test_id(seed_id: &u16) -> Self {
45 let words = WordsPass::from_str_hashed(seed_id.to_string()).words;
46 let folder = DataFolder::target(seed_id.clone() as u32);
48 folder.delete().ensure_exists();
49 let mut node_config = NodeConfig::default();
51 let mut config_data = (*node_config.config_data).clone();
52 let node_data = config_data.node.get_or_insert(Default::default());
53 node_data.words = Some(words);
56 config_data.debug.get_or_insert(Default::default()).enable_live_e2e = Some(false);
57 node_config.config_data = Arc::new(config_data);
58
59 node_config.peer_id = node_config.default_peer_id().expect("worx");
60 node_config.public_key = node_config.keypair().public_key();
61 node_config.port_offset = (node_config.port_offset + (seed_id.clone() * 100)) as u16;
62 node_config.data_folder = folder;
63 node_config.observation_formation_millis = Duration::from_millis(1000 as u64);
64 node_config.transaction_finalization_time =
65 Duration::from_millis(DEBUG_FINALIZATION_INTERVAL_MILLIS);
66 node_config.network = NetworkEnvironment::Debug;
67 node_config.check_observations_done_poll_interval = Duration::from_secs(1);
68 node_config.check_observations_done_poll_attempts = 5;
69 node_config.disable_metrics = true;
70 node_config
71 }
72}
73
74pub trait NodeConfigKeyPair {
75
76 fn keypair(&self) -> KeyPair;
77}
78
79impl NodeConfigKeyPair for NodeConfig {
80 fn keypair(&self) -> KeyPair {
81 self.words().default_kp().expect("")
82 }
83}