diff --git a/common/bandwidth-controller/src/error.rs b/common/bandwidth-controller/src/error.rs index f8f9315956c..2a650aa4bcf 100644 --- a/common/bandwidth-controller/src/error.rs +++ b/common/bandwidth-controller/src/error.rs @@ -49,4 +49,7 @@ pub enum BandwidthControllerError { #[error("Threshold not set yet")] NoThreshold, + + #[error("Ecash key is not set yet")] + NoEcashKey, } diff --git a/common/bandwidth-controller/src/lib.rs b/common/bandwidth-controller/src/lib.rs index 660feb1365d..ebc4f75440b 100644 --- a/common/bandwidth-controller/src/lib.rs +++ b/common/bandwidth-controller/src/lib.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use crate::error::BandwidthControllerError; +use nym_compact_ecash::scheme::keygen::KeyPairUser; use nym_compact_ecash::scheme::{EcashCredential, Wallet}; use nym_compact_ecash::setup::setup; use nym_compact_ecash::{Base58, PayInfo, SecretKeyUser}; @@ -18,11 +19,16 @@ pub mod error; pub struct BandwidthController { storage: St, client: C, + ecash_keypair: Option, } impl BandwidthController { - pub fn new(storage: St, client: C) -> Self { - BandwidthController { storage, client } + pub fn new(storage: St, client: C, ecash_keypair: Option) -> Self { + BandwidthController { + storage, + client, + ecash_keypair, + } } pub fn storage(&self) -> &St { @@ -53,7 +59,11 @@ impl BandwidthController { let some_l_i_guess = 100; //SW: TEMPORARY VALUE let params = setup(some_l_i_guess); - let sk_user = SecretKeyUser::try_from_bs58(ecash_credential.secret_key)?; + let sk_user = self + .ecash_keypair + .clone() + .ok_or(BandwidthControllerError::NoEcashKey)? + .secret_key(); let pay_info = PayInfo::generate_payinfo(provider_pk); let nb_tickets = 1u64; //SW: TEMPORARY VALUE, what should we put there? @@ -99,6 +109,7 @@ where BandwidthController { storage: self.storage.clone(), client: self.client.clone(), + ecash_keypair: self.ecash_keypair.clone(), } } } diff --git a/common/client-core/src/client/base_client/mod.rs b/common/client-core/src/client/base_client/mod.rs index 07d676a6f39..5e32d108639 100644 --- a/common/client-core/src/client/base_client/mod.rs +++ b/common/client-core/src/client/base_client/mod.rs @@ -50,6 +50,7 @@ use nym_topology::provider_trait::TopologyProvider; use nym_topology::HardcodedTopologyProvider; use nym_validator_client::nyxd::contract_traits::DkgQueryClient; use std::fmt::Debug; +use std::ops::Deref; use std::path::Path; use std::sync::Arc; use url::Url; @@ -612,9 +613,13 @@ where // the components are started in very specific order. Unless you know what you are doing, // do not change that. - let bandwidth_controller = self - .dkg_query_client - .map(|client| BandwidthController::new(credential_store, client)); + let bandwidth_controller = self.dkg_query_client.map(|client| { + BandwidthController::new( + credential_store, + client, + Some(init_res.managed_keys.ecash_keypair().deref().clone()), + ) + }); let topology_provider = Self::setup_topology_provider( self.custom_topology_provider.take(), diff --git a/common/client-core/src/client/base_client/non_wasm_helpers.rs b/common/client-core/src/client/base_client/non_wasm_helpers.rs index d0d2d5a0585..afcc4fcfeb7 100644 --- a/common/client-core/src/client/base_client/non_wasm_helpers.rs +++ b/common/client-core/src/client/base_client/non_wasm_helpers.rs @@ -119,7 +119,7 @@ pub fn create_bandwidth_controller_with_urls( ) -> BandwidthController { let client = default_query_dkg_client(nyxd_url); - BandwidthController::new(storage, client) + BandwidthController::new(storage, client, None) } pub fn default_query_dkg_client_from_config(config: &Config) -> QueryHttpRpcNyxdClient { diff --git a/nym-api/src/network_monitor/mod.rs b/nym-api/src/network_monitor/mod.rs index ae49caf020b..4a5a93fca61 100644 --- a/nym-api/src/network_monitor/mod.rs +++ b/nym-api/src/network_monitor/mod.rs @@ -98,6 +98,7 @@ impl<'a> NetworkMonitorBuilder<'a> { ) .await, self.nyxd_client.clone(), + None, ) };