From e7c8de8eecd0e6c365134274e255ebcd5db59f4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bogdan-=C8=98tefan=20Neac=C8=99u?= Date: Wed, 2 Mar 2022 17:50:47 +0200 Subject: [PATCH] Finish with executing contract for pool send --- Cargo.lock | 1 + clients/tauri-client/src-tauri/Cargo.toml | 1 + clients/tauri-client/src-tauri/src/main.rs | 11 ++++++++--- common/bandwidth-claim-contract/src/msg.rs | 1 + contracts/bandwidth-claim/src/error.rs | 3 +++ contracts/bandwidth-claim/src/lib.rs | 3 +++ contracts/bandwidth-claim/src/transactions.rs | 18 +++++++++++++++++- validator-api/src/coconut/mod.rs | 4 ++-- 8 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1cb29356f5..a02868f473 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,6 +79,7 @@ dependencies = [ "bandwidth-claim-contract", "bip39", "coconut-interface", + "cosmwasm-std", "credentials", "cw3-flex-multisig", "network-defaults", diff --git a/clients/tauri-client/src-tauri/Cargo.toml b/clients/tauri-client/src-tauri/Cargo.toml index 9f2c3a59b7..4856bc4ca2 100644 --- a/clients/tauri-client/src-tauri/Cargo.toml +++ b/clients/tauri-client/src-tauri/Cargo.toml @@ -16,6 +16,7 @@ tauri-build = { version = "1.0.0-beta.2" } [dependencies] cw3-flex-multisig = "0.12.1" +cosmwasm-std = "1.0.0-beta5" bip39 = "1.0.1" serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } diff --git a/clients/tauri-client/src-tauri/src/main.rs b/clients/tauri-client/src-tauri/src/main.rs index b7256d278a..2251c4aa61 100644 --- a/clients/tauri-client/src-tauri/src/main.rs +++ b/clients/tauri-client/src-tauri/src/main.rs @@ -4,6 +4,7 @@ )] use bip39::Mnemonic; +use cosmwasm_std::{to_binary, CosmosMsg, WasmMsg}; use std::str::FromStr; use std::sync::Arc; @@ -71,7 +72,7 @@ async fn deposit_funds(state: tauri::State<'_, Arc>>) -> Result transactions::link_payment(deps, env, info, data), ExecuteMsg::BuyBandwidth {} => transactions::buy_bandwidth(deps, env, info), + ExecuteMsg::SpendCredential { amount } => { + transactions::spend_credential(deps, env, info, amount) + } } } diff --git a/contracts/bandwidth-claim/src/transactions.rs b/contracts/bandwidth-claim/src/transactions.rs index e91842d266..de3e8400d3 100644 --- a/contracts/bandwidth-claim/src/transactions.rs +++ b/contracts/bandwidth-claim/src/transactions.rs @@ -1,7 +1,7 @@ // Copyright 2021 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use cosmwasm_std::{DepsMut, Env, Event, MessageInfo, Response}; +use cosmwasm_std::{Addr, BankMsg, Coin, DepsMut, Env, Event, MessageInfo, Response}; use crate::error::ContractError; use crate::storage::{coconut, payments, status, Status}; @@ -67,6 +67,22 @@ pub(crate) fn buy_bandwidth( Ok(Response::new().add_event(event)) } +pub(crate) fn spend_credential( + _deps: DepsMut<'_>, + _env: Env, + info: MessageInfo, + amount: u64, +) -> Result { + if info.sender != Addr::unchecked(String::from("nymt1qwlgtx52gsdu7dtp0cekka5zehdl0uj3vqx3jd")) { + return Err(ContractError::Unauthorized); + } + let return_tokens = BankMsg::Send { + to_address: String::from("nymt1t6p4dl8nnlftvehz3jsklrd0aw458p4l6n9n4t"), + amount: vec![Coin::new(amount as u128, DENOM)], + }; + Ok(Response::new().add_message(return_tokens)) +} + #[cfg(test)] mod tests { use super::*; diff --git a/validator-api/src/coconut/mod.rs b/validator-api/src/coconut/mod.rs index bb4f27ba07..0f77ff16ae 100644 --- a/validator-api/src/coconut/mod.rs +++ b/validator-api/src/coconut/mod.rs @@ -88,7 +88,7 @@ pub async fn post_blind_sign( nymd_url.as_ref(), None, None, - AccountId::from_str("nymt14hj2tavq8fpesdwxxcu44rty3hh90vhuysqrsr").ok(), + None, mnemonic, None, ) @@ -170,7 +170,7 @@ pub async fn post_verify_credential( nymd_url.as_ref(), None, None, - AccountId::from_str("nymt14hj2tavq8fpesdwxxcu44rty3hh90vhuysqrsr").ok(), + None, mnemonic, None, )