@@ -5,27 +5,23 @@ use std::{
55} ;
66
77use anyhow:: Context ;
8+ use ergo_lib:: ergotree_ir:: chain:: address:: NetworkPrefix ;
89use ergo_lib:: wallet:: ext_secret_key:: ExtSecretKey ;
910use ergo_lib:: wallet:: mnemonic:: Mnemonic ;
1011use ergo_lib:: wallet:: secret_key:: SecretKey ;
1112use ergo_lib:: {
1213 ergotree_ir:: chain:: address:: NetworkAddress ,
1314 ergotree_ir:: {
14- chain:: {
15- address:: { Address } ,
16- ergo_box:: box_value:: BoxValue ,
17- } ,
15+ chain:: { address:: Address , ergo_box:: box_value:: BoxValue } ,
1816 sigma_protocol:: sigma_boolean:: ProveDlog ,
1917 } ,
2018 wallet:: tx_builder:: { self , SUGGESTED_TX_FEE } ,
2119} ;
22- use ergo_lib:: ergotree_ir:: chain:: address:: NetworkPrefix ;
2320use log:: LevelFilter ;
2421use once_cell:: sync;
2522use reqwest:: Url ;
2623use serde:: { Deserialize , Serialize } ;
2724use thiserror:: Error ;
28- use base16;
2925
3026use crate :: explorer_api:: explorer_url:: default_explorer_api_url;
3127
@@ -70,9 +66,8 @@ impl OracleConfig {
7066
7167 /// Returns network prefix (mainnet/testnet) from config
7268 pub fn get_network_prefix ( & self ) -> NetworkPrefix {
73- self . network_prefix . unwrap_or_else ( || {
74- Self :: network_prefix ( & self . oracle_network ) . unwrap ( )
75- } )
69+ self . network_prefix
70+ . unwrap_or_else ( || Self :: network_prefix ( & self . oracle_network ) . unwrap ( ) )
7671 }
7772
7873 /// Sets oracle address for testing purposes only
@@ -99,9 +94,10 @@ impl OracleConfig {
9994 fn set_mnemonic_secret ( & mut self ) -> Result < ( ) , OracleConfigFileError > {
10095 // Try environment variable ORACLE_WALLET_SECRET
10196 if let Ok ( secret) = std:: env:: var ( "ORACLE_WALLET_SECRET" ) {
102- let secret_bytes = base16:: decode ( & secret)
103- . map_err ( |e| OracleConfigFileError :: MnemonicError ( format ! ( "Invalid hex format: {}" , e) ) ) ?;
104-
97+ let secret_bytes = base16:: decode ( & secret) . map_err ( |e| {
98+ OracleConfigFileError :: MnemonicError ( format ! ( "Invalid hex format: {}" , e) )
99+ } ) ?;
100+
105101 if let Ok ( secret_key) = SecretKey :: from_bytes ( & secret_bytes) {
106102 self . oracle_secret_key = Some ( secret_key) ;
107103 return Ok ( ( ) ) ;
@@ -110,9 +106,10 @@ impl OracleConfig {
110106
111107 // Try config's oracle_secret
112108 if let Some ( secret) = & self . oracle_secret {
113- let secret_bytes = base16:: decode ( secret)
114- . map_err ( |e| OracleConfigFileError :: MnemonicError ( format ! ( "Invalid hex format in config: {}" , e) ) ) ?;
115-
109+ let secret_bytes = base16:: decode ( secret) . map_err ( |e| {
110+ OracleConfigFileError :: MnemonicError ( format ! ( "Invalid hex format in config: {}" , e) )
111+ } ) ?;
112+
116113 if let Ok ( secret_key) = SecretKey :: from_bytes ( & secret_bytes) {
117114 self . oracle_secret_key = Some ( secret_key) ;
118115 return Ok ( ( ) ) ;
@@ -138,14 +135,18 @@ impl OracleConfig {
138135 Err ( OracleConfigFileError :: MissingMnemonicSecret )
139136 }
140137
141- fn derive_secret_from_mnemonic ( & self , mnemonic : & str ) -> Result < SecretKey , OracleConfigFileError > {
138+ fn derive_secret_from_mnemonic (
139+ & self ,
140+ mnemonic : & str ,
141+ ) -> Result < SecretKey , OracleConfigFileError > {
142142 let seed = Mnemonic :: to_seed ( mnemonic, "" ) ;
143143 let ext_sk = ExtSecretKey :: derive_master ( seed)
144144 . map_err ( |e| OracleConfigFileError :: MnemonicError ( e. to_string ( ) ) ) ?;
145145
146146 // bip-32 path for the first key
147147 let path = "m/44'/429'/0'/0/0" ;
148- let secret_key = ext_sk. derive ( path. parse ( ) . unwrap ( ) )
148+ let secret_key = ext_sk
149+ . derive ( path. parse ( ) . unwrap ( ) )
149150 . map_err ( |e| OracleConfigFileError :: MnemonicError ( e. to_string ( ) ) ) ?
150151 . secret_key ( ) ;
151152
@@ -158,9 +159,16 @@ impl OracleConfig {
158159 let network_prefix = self . get_network_prefix ( ) ;
159160 let oracle_address = NetworkAddress :: new (
160161 network_prefix,
161- & self . oracle_secret_key . clone ( ) . unwrap ( ) . get_address_from_public_image ( ) ,
162+ & self
163+ . oracle_secret_key
164+ . clone ( )
165+ . unwrap ( )
166+ . get_address_from_public_image ( ) ,
167+ ) ;
168+ log:: info!(
169+ "Oracle Address derived from secret: {}" ,
170+ oracle_address. to_base58( )
162171 ) ;
163- log:: info!( "Oracle Address derived from secret: {}" , oracle_address. to_base58( ) ) ;
164172 Ok ( oracle_address)
165173 }
166174
@@ -175,15 +183,19 @@ impl OracleConfig {
175183 ) ) ?;
176184 let mut config =
177185 Self :: load_from_str ( & config_str) . context ( "failed to parse oracle config file" ) ?;
178-
186+
179187 // Set network prefix
180- config. network_prefix = Some ( Self :: network_prefix ( & config. oracle_network )
181- . context ( "failed to parse network prefix" ) ?) ;
188+ config. network_prefix = Some (
189+ Self :: network_prefix ( & config. oracle_network )
190+ . context ( "failed to parse network prefix" ) ?,
191+ ) ;
182192
183193 // Derive oracle address from mnemonic
184- config. oracle_address = Some ( config
185- . derive_oracle_address ( )
186- . context ( "failed to derive oracle address from mnemonic" ) ?) ;
194+ config. oracle_address = Some (
195+ config
196+ . derive_oracle_address ( )
197+ . context ( "failed to derive oracle address from mnemonic" ) ?,
198+ ) ;
187199
188200 if config. change_address . is_none ( ) {
189201 config. change_address = Some ( config. oracle_address . clone ( ) . unwrap ( ) ) ;
0 commit comments