Stub for DkgClient
This commit is contained in:
Generated
+1
@@ -6203,6 +6203,7 @@ dependencies = [
|
||||
"async-trait",
|
||||
"base64",
|
||||
"bip39",
|
||||
"coconut-dkg-common",
|
||||
"coconut-interface",
|
||||
"colored",
|
||||
"config",
|
||||
|
||||
@@ -12,6 +12,7 @@ base64 = "0.13"
|
||||
colored = "2.0"
|
||||
mixnet-contract-common = { path= "../../cosmwasm-smart-contracts/mixnet-contract" }
|
||||
vesting-contract-common = { path= "../../cosmwasm-smart-contracts/vesting-contract" }
|
||||
coconut-dkg-common = { path = "../../cosmwasm-smart-contracts/coconut-dkg-contract", optional = true }
|
||||
vesting-contract = { path = "../../../contracts/vesting" }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
@@ -54,3 +55,4 @@ nymd-client = [
|
||||
"itertools",
|
||||
"cosmwasm-std",
|
||||
]
|
||||
dkg = ["nymd-client", "coconut-dkg-common"]
|
||||
|
||||
@@ -42,6 +42,8 @@ pub struct Config {
|
||||
mixnet_contract_address: Option<cosmrs::AccountId>,
|
||||
vesting_contract_address: Option<cosmrs::AccountId>,
|
||||
erc20_bridge_contract_address: Option<cosmrs::AccountId>,
|
||||
#[cfg(feature = "dkg")]
|
||||
coconut_dkg_contract_address: Option<cosmrs::AccountId>,
|
||||
|
||||
mixnode_page_limit: Option<u32>,
|
||||
gateway_page_limit: Option<u32>,
|
||||
@@ -65,6 +67,8 @@ impl Config {
|
||||
mixnet_contract_address,
|
||||
vesting_contract_address,
|
||||
erc20_bridge_contract_address,
|
||||
#[cfg(feature = "dkg")]
|
||||
coconut_dkg_contract_address: None,
|
||||
api_url,
|
||||
mixnode_page_limit: None,
|
||||
gateway_page_limit: None,
|
||||
@@ -92,6 +96,15 @@ impl Config {
|
||||
self.rewarded_set_page_limit = limit;
|
||||
self
|
||||
}
|
||||
|
||||
#[cfg(feature = "dkg")]
|
||||
pub fn with_coconut_dkg_contract(
|
||||
mut self,
|
||||
coconut_dkg_contract_address: Option<cosmrs::AccountId>,
|
||||
) -> Config {
|
||||
self.coconut_dkg_contract_address = coconut_dkg_contract_address;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "nymd-client")]
|
||||
@@ -100,6 +113,8 @@ pub struct Client<C> {
|
||||
mixnet_contract_address: Option<cosmrs::AccountId>,
|
||||
vesting_contract_address: Option<cosmrs::AccountId>,
|
||||
erc20_bridge_contract_address: Option<cosmrs::AccountId>,
|
||||
#[cfg(feature = "dkg")]
|
||||
coconut_dkg_contract_address: Option<cosmrs::AccountId>,
|
||||
mnemonic: Option<bip39::Mnemonic>,
|
||||
|
||||
mixnode_page_limit: Option<u32>,
|
||||
@@ -134,6 +149,8 @@ impl Client<SigningNymdClient> {
|
||||
mixnet_contract_address: config.mixnet_contract_address,
|
||||
vesting_contract_address: config.vesting_contract_address,
|
||||
erc20_bridge_contract_address: config.erc20_bridge_contract_address,
|
||||
#[cfg(feature = "dkg")]
|
||||
coconut_dkg_contract_address: config.coconut_dkg_contract_address,
|
||||
mnemonic: Some(mnemonic),
|
||||
mixnode_page_limit: config.mixnode_page_limit,
|
||||
gateway_page_limit: config.gateway_page_limit,
|
||||
@@ -192,6 +209,8 @@ impl Client<QueryNymdClient> {
|
||||
mixnet_contract_address: config.mixnet_contract_address,
|
||||
vesting_contract_address: config.vesting_contract_address,
|
||||
erc20_bridge_contract_address: config.erc20_bridge_contract_address,
|
||||
#[cfg(feature = "dkg")]
|
||||
coconut_dkg_contract_address: config.coconut_dkg_contract_address,
|
||||
mnemonic: None,
|
||||
mixnode_page_limit: config.mixnode_page_limit,
|
||||
gateway_page_limit: config.gateway_page_limit,
|
||||
@@ -219,6 +238,16 @@ impl<C> Client<C> {
|
||||
self.validator_api.change_url(new_endpoint)
|
||||
}
|
||||
|
||||
#[cfg(feature = "dkg")]
|
||||
pub fn set_coconut_dkg_contract(
|
||||
&mut self,
|
||||
coconut_dkg_contract_address: Option<cosmrs::AccountId>,
|
||||
) {
|
||||
self.nymd
|
||||
.set_coconut_dkg_contract_address(coconut_dkg_contract_address.clone());
|
||||
self.coconut_dkg_contract_address = coconut_dkg_contract_address;
|
||||
}
|
||||
|
||||
// use case: somebody initialised client without a contract in order to upload and initialise one
|
||||
// and now they want to actually use it without making new client
|
||||
pub fn set_mixnet_contract_address(&mut self, mixnet_contract_address: cosmrs::AccountId) {
|
||||
|
||||
@@ -58,6 +58,8 @@ pub struct NymdClient<C> {
|
||||
mixnet_contract_address: Option<AccountId>,
|
||||
vesting_contract_address: Option<AccountId>,
|
||||
erc20_bridge_contract_address: Option<AccountId>,
|
||||
#[cfg(feature = "dkg")]
|
||||
coconut_dkg_contract_address: Option<AccountId>,
|
||||
client_address: Option<Vec<AccountId>>,
|
||||
custom_gas_limits: HashMap<Operation, Gas>,
|
||||
simulated_gas_multiplier: f32,
|
||||
@@ -78,6 +80,8 @@ impl NymdClient<QueryNymdClient> {
|
||||
mixnet_contract_address,
|
||||
vesting_contract_address,
|
||||
erc20_bridge_contract_address,
|
||||
#[cfg(feature = "dkg")]
|
||||
coconut_dkg_contract_address: None,
|
||||
client_address: None,
|
||||
custom_gas_limits: HashMap::default(),
|
||||
simulated_gas_multiplier: DEFAULT_SIMULATED_GAS_MULTIPLIER,
|
||||
@@ -112,6 +116,8 @@ impl NymdClient<SigningNymdClient> {
|
||||
mixnet_contract_address,
|
||||
vesting_contract_address,
|
||||
erc20_bridge_contract_address,
|
||||
#[cfg(feature = "dkg")]
|
||||
coconut_dkg_contract_address: None,
|
||||
client_address: Some(client_address),
|
||||
custom_gas_limits: HashMap::default(),
|
||||
simulated_gas_multiplier: DEFAULT_SIMULATED_GAS_MULTIPLIER,
|
||||
@@ -145,6 +151,8 @@ impl NymdClient<SigningNymdClient> {
|
||||
mixnet_contract_address,
|
||||
vesting_contract_address,
|
||||
erc20_bridge_contract_address,
|
||||
#[cfg(feature = "dkg")]
|
||||
coconut_dkg_contract_address: None,
|
||||
client_address: Some(client_address),
|
||||
custom_gas_limits: HashMap::default(),
|
||||
simulated_gas_multiplier: DEFAULT_SIMULATED_GAS_MULTIPLIER,
|
||||
@@ -171,6 +179,21 @@ impl<C> NymdClient<C> {
|
||||
.ok_or(NymdError::NoContractAddressAvailable)
|
||||
}
|
||||
|
||||
#[cfg(feature = "dkg")]
|
||||
pub fn set_coconut_dkg_contract_address(
|
||||
&mut self,
|
||||
coconut_dkg_contract_address: Option<AccountId>,
|
||||
) {
|
||||
self.coconut_dkg_contract_address = coconut_dkg_contract_address;
|
||||
}
|
||||
|
||||
#[cfg(feature = "dkg")]
|
||||
pub fn coconut_dkg_contract_address(&self) -> Result<&AccountId, NymdError> {
|
||||
self.coconut_dkg_contract_address
|
||||
.as_ref()
|
||||
.ok_or(NymdError::NoContractAddressAvailable)
|
||||
}
|
||||
|
||||
pub fn set_simulated_gas_multiplier(&mut self, multiplier: f32) {
|
||||
self.simulated_gas_multiplier = multiplier;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
// Copyright 2022 - Nym Technologies SA <contact@nymtech.net>
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
use crate::nymd::error::NymdError;
|
||||
use crate::nymd::{NymdClient, SigningCosmWasmClient};
|
||||
use async_trait::async_trait;
|
||||
use coconut_dkg_common::msg::QueryMsg as DkgQueryMsg;
|
||||
use coconut_dkg_common::types::Epoch;
|
||||
|
||||
#[async_trait]
|
||||
pub trait DkgClient {
|
||||
async fn get_current_dkg_epoch(&self) -> Result<Epoch, NymdError>;
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl<C> DkgClient for NymdClient<C>
|
||||
where
|
||||
C: SigningCosmWasmClient + Send + Sync,
|
||||
{
|
||||
async fn get_current_dkg_epoch(&self) -> Result<Epoch, NymdError> {
|
||||
let request = DkgQueryMsg::GetCurrentEpoch {};
|
||||
self.client
|
||||
.query_contract_smart(self.coconut_dkg_contract_address()?, &request)
|
||||
.await
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
// Copyright 2021 - Nym Technologies SA <contact@nymtech.net>
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
#[cfg(feature = "dkg")]
|
||||
mod dkg_client;
|
||||
mod vesting_query_client;
|
||||
mod vesting_signing_client;
|
||||
|
||||
#[cfg(feature = "dkg")]
|
||||
pub use dkg_client::DkgClient;
|
||||
pub use vesting_query_client::VestingQueryClient;
|
||||
pub use vesting_signing_client::VestingSigningClient;
|
||||
|
||||
@@ -65,7 +65,7 @@ mixnet-contract-common = { path= "../common/cosmwasm-smart-contracts/mixnet-cont
|
||||
nymsphinx = { path="../common/nymsphinx" }
|
||||
topology = { path="../common/topology" }
|
||||
validator-api-requests = { path = "validator-api-requests" }
|
||||
validator-client = { path="../common/client-libs/validator-client", features = ["nymd-client"] }
|
||||
validator-client = { path="../common/client-libs/validator-client", features = ["nymd-client", "dkg"] }
|
||||
version-checker = { path="../common/version-checker" }
|
||||
coconut-interface = { path = "../common/coconut-interface", optional = true }
|
||||
credentials = { path = "../common/credentials", optional = true }
|
||||
|
||||
@@ -5,6 +5,7 @@ use crate::config::Config;
|
||||
use crate::rewarded_set_updater::error::RewardingError;
|
||||
#[cfg(feature = "coconut")]
|
||||
use async_trait::async_trait;
|
||||
use coconut_dkg_common::types::Epoch as DkgEpoch;
|
||||
use config::defaults::{DEFAULT_NETWORK, DEFAULT_VALIDATOR_API_PORT};
|
||||
use mixnet_contract_common::Interval;
|
||||
use mixnet_contract_common::{
|
||||
@@ -16,6 +17,8 @@ use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
use tokio::sync::RwLock;
|
||||
use tokio::time::sleep;
|
||||
use validator_client::nymd::error::NymdError;
|
||||
use validator_client::nymd::traits::DkgClient;
|
||||
use validator_client::nymd::{
|
||||
hash::{Hash, SHA256_HASH_SIZE},
|
||||
CosmWasmClient, CosmosCoin, Fee, QueryNymdClient, SigningCosmWasmClient, SigningNymdClient,
|
||||
@@ -404,6 +407,13 @@ impl<C> Client<C> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async fn get_dkg_epoch(&self) -> Result<DkgEpoch, NymdError>
|
||||
where
|
||||
C: SigningCosmWasmClient + Send + Sync,
|
||||
{
|
||||
self.0.read().await.nymd.get_current_dkg_epoch().await
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
|
||||
Reference in New Issue
Block a user