diff --git a/src/bin/client-demo.rs b/src/bin/client-demo.rs index 5e7ad3e309..62e1f4d8a2 100644 --- a/src/bin/client-demo.rs +++ b/src/bin/client-demo.rs @@ -12,7 +12,6 @@ use solana::crdt::{Crdt, NodeInfo}; use solana::drone::DroneRequest; use solana::fullnode::Config; use solana::hash::Hash; -use solana::mint::Mint; use solana::nat::{udp_public_bind, udp_random_bind}; use solana::ncp::Ncp; use solana::service::Service; @@ -163,20 +162,13 @@ fn main() { .takes_value(true) .help("/path/to/leader.json"), ) - .arg( - Arg::with_name("mint") - .short("m") - .long("mint") - .value_name("PATH") - .takes_value(true) - .help("/path/to/mint.json"), - ) .arg( Arg::with_name("keypair") .short("k") .long("keypair") .value_name("PATH") .takes_value(true) + .default_value("~/.config/solana/id.json") .help("/path/to/id.json"), ) .arg( @@ -213,13 +205,7 @@ fn main() { leader = NodeInfo::new_leader(&server_addr); }; - let id = if let Some(m) = matches.value_of("keypair") { - read_keypair(m).expect("client keypair") - } else if let Some(m) = matches.value_of("mint") { - read_mint(m).expect("client mint").keypair() - } else { - read_keypair("~/.config/solana/id.json").expect("default keypair") - }; + let id = read_keypair(matches.value_of("keypair").unwrap()).expect("client keypair"); if let Some(t) = matches.value_of("threads") { threads = t.to_string().parse().expect("integer"); @@ -441,12 +427,6 @@ fn read_leader(path: &str) -> Config { serde_json::from_reader(file).unwrap_or_else(|_| panic!("failed to parse {}", path)) } -fn read_mint(path: &str) -> Result> { - let file = File::open(path.to_string())?; - let mint = serde_json::from_reader(file)?; - Ok(mint) -} - fn request_airdrop( drone_addr: &SocketAddr, id: &KeyPair, diff --git a/src/bin/drone.rs b/src/bin/drone.rs index f19f7a802a..a09605d031 100644 --- a/src/bin/drone.rs +++ b/src/bin/drone.rs @@ -12,11 +12,9 @@ use clap::{App, Arg}; use solana::crdt::NodeInfo; use solana::drone::{Drone, DroneRequest}; use solana::fullnode::Config; -use solana::mint::Mint; -use std::error; +use solana::signature::read_keypair; use std::fs::File; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; -use std::process::exit; use std::sync::{Arc, Mutex}; use std::thread; use tokio::net::TcpListener; @@ -35,11 +33,12 @@ fn main() { .help("/path/to/leader.json"), ) .arg( - Arg::with_name("mint") - .short("m") - .long("mint") + Arg::with_name("keypair") + .short("k") + .long("keypair") .value_name("PATH") .takes_value(true) + .required(true) .help("/path/to/mint.json"), ) .arg( @@ -68,13 +67,9 @@ fn main() { leader = NodeInfo::new_leader(&server_addr); }; - let mint: Mint; - if let Some(m) = matches.value_of("mint") { - mint = read_mint(m).expect("client mint"); - } else { - eprintln!("No mint found!"); - exit(1); - }; + let mint_keypair = + read_keypair(matches.value_of("keypair").expect("keypair")).expect("client keypair"); + let time_slice: Option; if let Some(t) = matches.value_of("time") { time_slice = Some(t.to_string().parse().expect("integer")); @@ -88,8 +83,6 @@ fn main() { request_cap = None; } - let mint_keypair = mint.keypair(); - let drone_addr: SocketAddr = "0.0.0.0:9900".parse().unwrap(); let drone = Arc::new(Mutex::new(Drone::new( @@ -152,9 +145,3 @@ fn read_leader(path: &str) -> Config { let file = File::open(path).unwrap_or_else(|_| panic!("file not found: {}", path)); serde_json::from_reader(file).unwrap_or_else(|_| panic!("failed to parse {}", path)) } - -fn read_mint(path: &str) -> Result> { - let file = File::open(path.to_string())?; - let mint = serde_json::from_reader(file)?; - Ok(mint) -} diff --git a/src/bin/mint.rs b/src/bin/mint.rs deleted file mode 100644 index e62ce1c73b..0000000000 --- a/src/bin/mint.rs +++ /dev/null @@ -1,29 +0,0 @@ -extern crate atty; -extern crate serde_json; -extern crate solana; - -use atty::{is, Stream}; -use solana::mint::Mint; -use std::io; -use std::process::exit; - -fn main() { - let mut input_text = String::new(); - if is(Stream::Stdin) { - eprintln!("nothing found on stdin, expected a token number"); - exit(1); - } - - io::stdin().read_line(&mut input_text).unwrap(); - let trimmed = input_text.trim(); - let tokens = trimmed.parse::().unwrap_or_else(|e| { - eprintln!("{}", e); - exit(1); - }); - let mint = Mint::new(tokens); - let serialized = serde_json::to_string(&mint).unwrap_or_else(|e| { - eprintln!("failed to serialize: {}", e); - exit(1); - }); - println!("{}", serialized); -} diff --git a/src/bin/wallet.rs b/src/bin/wallet.rs index 9864696421..d5d6636e68 100644 --- a/src/bin/wallet.rs +++ b/src/bin/wallet.rs @@ -11,8 +11,7 @@ use clap::{App, Arg, SubCommand}; use solana::crdt::NodeInfo; use solana::drone::DroneRequest; use solana::fullnode::Config; -use solana::mint::Mint; -use solana::signature::{PublicKey, Signature}; +use solana::signature::{read_keypair, KeyPair, KeyPairUtil, PublicKey, Signature}; use solana::thin_client::ThinClient; use std::error; use std::fmt; @@ -20,7 +19,6 @@ use std::fs::File; use std::io; use std::io::prelude::*; use std::net::{IpAddr, Ipv4Addr, SocketAddr, TcpStream, UdpSocket}; -use std::process::exit; use std::thread::sleep; use std::time::Duration; @@ -57,7 +55,7 @@ impl error::Error for WalletError { struct WalletConfig { leader: NodeInfo, - id: Mint, + id: KeyPair, drone_addr: SocketAddr, command: WalletCommand, } @@ -67,7 +65,7 @@ impl Default for WalletConfig { let default_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 8000); WalletConfig { leader: NodeInfo::new_leader(&default_addr), - id: Mint::new(0), + id: KeyPair::new(), drone_addr: default_addr, command: WalletCommand::Balance, } @@ -85,12 +83,13 @@ fn parse_args() -> Result> { .help("/path/to/leader.json"), ) .arg( - Arg::with_name("mint") - .short("m") - .long("mint") + Arg::with_name("keypair") + .short("k") + .long("keypair") .value_name("PATH") .takes_value(true) - .help("/path/to/mint.json"), + .default_value("~/.config/solana/id.json") + .help("/path/to/id.json"), ) .subcommand( SubCommand::with_name("airdrop") @@ -149,13 +148,7 @@ fn parse_args() -> Result> { leader = NodeInfo::new_leader(&server_addr); }; - let id: Mint; - if let Some(m) = matches.value_of("mint") { - id = read_mint(m)?; - } else { - eprintln!("No mint found!"); - exit(1); - }; + let id = read_keypair(matches.value_of("keypair").unwrap()).expect("client keypair"); let mut drone_addr = leader.contact_info.tpu; drone_addr.set_port(9900); @@ -165,7 +158,7 @@ fn parse_args() -> Result> { let tokens = if airdrop_matches.is_present("tokens") { airdrop_matches.value_of("tokens").unwrap().parse()? } else { - id.tokens + 100 }; Ok(WalletCommand::AirDrop(tokens)) } @@ -187,7 +180,7 @@ fn parse_args() -> Result> { let tokens = if pay_matches.is_present("tokens") { pay_matches.value_of("tokens").unwrap().parse()? } else { - id.tokens + 10 }; Ok(WalletCommand::Pay(tokens, to)) @@ -264,7 +257,7 @@ fn process_command( // If client has positive balance, spend tokens in {balance} number of transactions WalletCommand::Pay(tokens, to) => { let last_id = client.get_last_id(); - let sig = client.transfer(tokens, &config.id.keypair(), to, &last_id)?; + let sig = client.transfer(tokens, &config.id, to, &last_id)?; println!("{}", bs58::encode(sig).into_string()); } // Confirm the last client transaction by signature @@ -295,12 +288,6 @@ fn read_leader(path: &str) -> Config { serde_json::from_reader(file).unwrap_or_else(|_| panic!("failed to parse {}", path)) } -fn read_mint(path: &str) -> Result> { - let file = File::open(path.to_string())?; - let mint = serde_json::from_reader(file)?; - Ok(mint) -} - fn mk_client(r: &NodeInfo) -> io::Result { let requests_socket = UdpSocket::bind("0.0.0.0:0").unwrap(); let transactions_socket = UdpSocket::bind("0.0.0.0:0").unwrap(); @@ -318,7 +305,7 @@ fn mk_client(r: &NodeInfo) -> io::Result { fn request_airdrop( drone_addr: &SocketAddr, - id: &Mint, + id: &KeyPair, tokens: u64, ) -> Result<(), Box> { let mut stream = TcpStream::connect(drone_addr)?;