5f7b3db9a4
* Add coconut verifier structure for coconut protocol in gateway * Add endpoint for validator-api cred verification * Remove unused signature field * Register new endpoint * Improve validator-api config handling * Aggregate verif result from all apis * Simplify aggregate functions * Verify cred on apis correctly * Introduced coconut bandwidth contract to validator client * Fix rebase double import * Fix clippy on non-coconut * Add multisig contract address to validator client * Refactor Credential struct * Do bincode magic in the coconut interface * Implement serialization for credential and remove bindcode * Fix clippy and don't remove dkg * Client release funds proposal * Add wrapper for blinded serial number Also compare theta with a blinded serial number (in base 58 form) for future double spend protection. * Only post blinded serial number to blockchain * Validator api propose credential spending * Fix wallet * Gateway calls proposal creation * Query for proposal in verify coconut * Remove db from git * Verify against proposal description * Validator apis vote based on verification of cred * Fix wallet fmt * Execute the release of funds * Fix translation between token and bytes * Update CHANGELOG
52 lines
1.4 KiB
Rust
52 lines
1.4 KiB
Rust
// Copyright 2022 - Nym Technologies SA <contact@nymtech.net>
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
use bip39::Mnemonic;
|
|
use std::str::FromStr;
|
|
use url::Url;
|
|
|
|
use crate::error::Result;
|
|
use crate::{MNEMONIC, NYMD_URL};
|
|
|
|
use network_defaults::{DEFAULT_NETWORK, DENOM, VOUCHER_INFO};
|
|
use validator_client::nymd::traits::CoconutBandwidthSigningClient;
|
|
use validator_client::nymd::{Coin, Fee, NymdClient, SigningNymdClient};
|
|
|
|
pub(crate) struct Client {
|
|
nymd_client: NymdClient<SigningNymdClient>,
|
|
}
|
|
|
|
impl Client {
|
|
pub fn new() -> Self {
|
|
let nymd_url = Url::from_str(NYMD_URL).unwrap();
|
|
let mnemonic = Mnemonic::from_str(MNEMONIC).unwrap();
|
|
let nymd_client =
|
|
NymdClient::connect_with_mnemonic(DEFAULT_NETWORK, nymd_url.as_ref(), mnemonic, None)
|
|
.unwrap();
|
|
|
|
Client { nymd_client }
|
|
}
|
|
|
|
pub async fn deposit(
|
|
&self,
|
|
amount: u64,
|
|
verification_key: String,
|
|
encryption_key: String,
|
|
fee: Option<Fee>,
|
|
) -> Result<String> {
|
|
let amount = Coin::new(amount as u128, DENOM.to_string());
|
|
Ok(self
|
|
.nymd_client
|
|
.deposit(
|
|
amount,
|
|
String::from(VOUCHER_INFO),
|
|
verification_key,
|
|
encryption_key,
|
|
fee,
|
|
)
|
|
.await?
|
|
.transaction_hash
|
|
.to_string())
|
|
}
|
|
}
|