76a61cb3ae
* Import cw3-flex-multisig and cw4-group contracts * Add release_funds to coconut-bandwidth-contract * Create contract.rs file * Add cw multi test and a test that uses it * Use mnemonic for coconut mode too * Stricter access to config file, which contains mnemonic * Update tests * Remove signed deposits dir after merging that into sql db * Clippy nits * More clippy * Remove backtraces features to pass clippy tests * Merge the same mnemonic for rewarding and coconut * Simplify things, letting network monitor use testnet-mode with gateways * Unify the nymd clients * Sqlx common storage for buying/consuming credentials * Link credential storage to credential client * Trigger rewarded_set update on bootstrap error * Fix bug on message signing * Simplify coconut feature in code and set it in validator-api * Update some local consts * Link clients to credential storage * Simplify sql query and change socks5 too * Update attr handling such that public ones are usable * Normalize test addresses * Fix clippy * Merge storages for (non)coconut creds * Fmt miss * Disable wasm client support for now Co-authored-by: durch <durch@users.noreply.github.com>
53 lines
1.7 KiB
Rust
53 lines
1.7 KiB
Rust
// Copyright 2022 - Nym Technologies SA <contact@nymtech.net>
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
use async_trait::async_trait;
|
|
|
|
use crate::models::{CoconutCredential, ERC20Credential};
|
|
use crate::StorageError;
|
|
|
|
#[async_trait]
|
|
pub trait Storage: Send + Sync {
|
|
/// Inserts provided signature into the database.
|
|
///
|
|
/// # Arguments
|
|
///
|
|
/// * `signature`: Coconut credential in the form of a signature.
|
|
async fn insert_coconut_credential(
|
|
&self,
|
|
voucher_value: String,
|
|
voucher_info: String,
|
|
serial_number: String,
|
|
binding_number: String,
|
|
signature: String,
|
|
) -> Result<(), StorageError>;
|
|
|
|
/// Tries to retrieve one of the stored, unused credentials.
|
|
async fn get_next_coconut_credential(&self) -> Result<CoconutCredential, StorageError>;
|
|
|
|
/// Removes from the database the specified credential.
|
|
///
|
|
/// # Arguments
|
|
///
|
|
/// * `signature`: Coconut credential in the form of a signature.
|
|
async fn remove_coconut_credential(&self, id: i64) -> Result<(), StorageError>;
|
|
|
|
/// Inserts provided signature into the database.
|
|
///
|
|
/// # Arguments
|
|
///
|
|
/// * `public_key`: Base58 representation of a public key.
|
|
/// * `private_key`: Base58 representation of a private key.
|
|
async fn insert_erc20_credential(
|
|
&self,
|
|
public_key: String,
|
|
private_key: String,
|
|
) -> Result<(), StorageError>;
|
|
|
|
/// Tries to retrieve one of the stored, unused credential data.
|
|
async fn get_next_erc20_credential(&self) -> Result<ERC20Credential, StorageError>;
|
|
|
|
/// Mark a credential as being consumed.
|
|
async fn consume_erc20_credential(&self, public_key: String) -> Result<(), StorageError>;
|
|
}
|