mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
remove build_tx.rs test bin
This commit is contained in:
@@ -1,189 +0,0 @@
|
||||
use drk::{
|
||||
blockchain::{rocks::columns, Rocks, RocksColumn},
|
||||
cli::{CashierdConfig, Config, DarkfidConfig},
|
||||
client::State,
|
||||
crypto::{
|
||||
load_params, merkle::CommitmentTree, save_params, setup_mint_prover, setup_spend_prover,
|
||||
},
|
||||
serial::deserialize,
|
||||
state::state_transition,
|
||||
tx,
|
||||
util::{expand_path, join_config_path},
|
||||
wallet::WalletDb,
|
||||
Result,
|
||||
};
|
||||
|
||||
use std::path::PathBuf;
|
||||
|
||||
use async_std;
|
||||
use async_std::sync::{Arc, Mutex};
|
||||
use ff::Field;
|
||||
use rand::rngs::OsRng;
|
||||
|
||||
#[async_std::main]
|
||||
async fn main() -> Result<()> {
|
||||
let config: DarkfidConfig =
|
||||
Config::<DarkfidConfig>::load(join_config_path(&PathBuf::from("darkfid.toml"))?)?;
|
||||
|
||||
let config_cashier: CashierdConfig =
|
||||
Config::<CashierdConfig>::load(join_config_path(&PathBuf::from("cashierd.toml"))?)?;
|
||||
|
||||
let mut public_keys = Vec::new();
|
||||
|
||||
for cashier in config.clone().cashiers {
|
||||
let cashier_public: jubjub::SubgroupPoint =
|
||||
deserialize(&bs58::decode(cashier.public_key).into_vec()?)?;
|
||||
public_keys.push(cashier_public);
|
||||
}
|
||||
|
||||
let rocks = Rocks::new(expand_path(&config.database_path.clone())?.as_path())?;
|
||||
|
||||
let merkle_roots = RocksColumn::<columns::MerkleRoots>::new(rocks.clone());
|
||||
let nullifiers = RocksColumn::<columns::Nullifiers>::new(rocks);
|
||||
|
||||
let params_paths = (
|
||||
expand_path(&config.mint_params_path.clone())?,
|
||||
expand_path(&config.spend_params_path.clone())?,
|
||||
);
|
||||
|
||||
let mint_params_path = ¶ms_paths.0.to_str().unwrap_or("mint.params");
|
||||
let spend_params_path = ¶ms_paths.1.to_str().unwrap_or("spend.params");
|
||||
|
||||
let cashier_params_paths = (
|
||||
expand_path(&config_cashier.mint_params_path.clone())?,
|
||||
expand_path(&config_cashier.spend_params_path.clone())?,
|
||||
);
|
||||
|
||||
let cashier_mint_params_path = &cashier_params_paths
|
||||
.0
|
||||
.to_str()
|
||||
.unwrap_or("cash_mint.params");
|
||||
let cashier_spend_params_path = &cashier_params_paths
|
||||
.1
|
||||
.to_str()
|
||||
.unwrap_or("cash_spend.params");
|
||||
|
||||
if !params_paths.0.exists() {
|
||||
let params = setup_mint_prover();
|
||||
save_params(mint_params_path, ¶ms)?;
|
||||
}
|
||||
if !params_paths.1.exists() {
|
||||
let params = setup_spend_prover();
|
||||
save_params(spend_params_path, ¶ms)?;
|
||||
}
|
||||
|
||||
if !cashier_params_paths.0.exists() {
|
||||
let params = setup_mint_prover();
|
||||
save_params(cashier_mint_params_path, ¶ms)?;
|
||||
}
|
||||
if !cashier_params_paths.1.exists() {
|
||||
let params = setup_spend_prover();
|
||||
save_params(cashier_spend_params_path, ¶ms)?;
|
||||
}
|
||||
|
||||
let cashier_wallet = WalletDb::new(
|
||||
expand_path(&config_cashier.client_wallet_path.clone())?.as_path(),
|
||||
config.wallet_password.clone(),
|
||||
)?;
|
||||
|
||||
let wallet = WalletDb::new(
|
||||
expand_path(&config.wallet_path.clone())?.as_path(),
|
||||
config.wallet_password.clone(),
|
||||
)?;
|
||||
|
||||
wallet.init_db().await?;
|
||||
|
||||
if wallet.get_keypairs()?.is_empty() {
|
||||
wallet.key_gen()?;
|
||||
}
|
||||
|
||||
cashier_wallet.init_db().await?;
|
||||
|
||||
if cashier_wallet.get_keypairs()?.is_empty() {
|
||||
cashier_wallet.key_gen()?;
|
||||
}
|
||||
|
||||
let user_main_keypair = wallet.get_keypairs()?[0].clone();
|
||||
|
||||
let cashier_main_keypair = cashier_wallet.get_keypairs()?[0].clone();
|
||||
|
||||
wallet.put_cashier_pub(&cashier_main_keypair.public)?;
|
||||
|
||||
// Load trusted setup parameters
|
||||
let (_, mint_pvk) = load_params(mint_params_path)?;
|
||||
let (_, spend_pvk) = load_params(spend_params_path)?;
|
||||
|
||||
// Load trusted setup parameters
|
||||
let (cashier_mint_params, _) = load_params(cashier_mint_params_path)?;
|
||||
let (cashier_spend_params, _) = load_params(cashier_spend_params_path)?;
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
// user's state
|
||||
//
|
||||
//
|
||||
//
|
||||
let state = Arc::new(Mutex::new(State {
|
||||
tree: CommitmentTree::empty(),
|
||||
merkle_roots,
|
||||
nullifiers,
|
||||
mint_pvk,
|
||||
spend_pvk,
|
||||
wallet,
|
||||
public_keys,
|
||||
}));
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
// cashier buid tx
|
||||
//
|
||||
//
|
||||
//
|
||||
let mut clear_inputs: Vec<tx::TransactionBuilderClearInputInfo> = vec![];
|
||||
let inputs: Vec<tx::TransactionBuilderInputInfo> = vec![];
|
||||
let mut outputs: Vec<tx::TransactionBuilderOutputInfo> = vec![];
|
||||
|
||||
let token_id = jubjub::Fr::random(&mut OsRng);
|
||||
let value = 10;
|
||||
|
||||
let signature_secret = cashier_main_keypair.private;
|
||||
let input = tx::TransactionBuilderClearInputInfo {
|
||||
value,
|
||||
token_id,
|
||||
signature_secret,
|
||||
};
|
||||
|
||||
clear_inputs.push(input);
|
||||
|
||||
outputs.push(tx::TransactionBuilderOutputInfo {
|
||||
value,
|
||||
token_id,
|
||||
public: user_main_keypair.public,
|
||||
});
|
||||
|
||||
let builder = tx::TransactionBuilder {
|
||||
clear_inputs,
|
||||
inputs,
|
||||
outputs,
|
||||
};
|
||||
|
||||
let tx = builder.build(&cashier_mint_params, &cashier_spend_params);
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
// user get the tx
|
||||
//
|
||||
//
|
||||
//
|
||||
let state = state.lock().await;
|
||||
let update = state_transition(&state, tx);
|
||||
|
||||
if let Err(e) = update {
|
||||
println!("state transition error: {}", e.to_string());
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user