From b7ae5b712a970daeee2865fed80d2230fbaf8ffa Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Wed, 26 Sep 2018 17:55:36 -0600 Subject: [PATCH] Move Pubkey into its own module --- benches/banking_stage.rs | 3 ++- programs/move_funds/src/lib.rs | 2 +- src/account.rs | 2 +- src/bank.rs | 3 ++- src/broadcast_stage.rs | 3 ++- src/budget.rs | 2 +- src/budget_program.rs | 5 +++-- src/budget_transaction.rs | 3 ++- src/choose_gossip_peer_strategy.rs | 5 +++-- src/crdt.rs | 6 ++++-- src/drone.rs | 4 ++-- src/dynamic_program.rs | 4 ++-- src/entry.rs | 2 +- src/erasure.rs | 5 +++-- src/fullnode.rs | 3 ++- src/ledger.rs | 2 +- src/lib.rs | 1 + src/mint.rs | 3 ++- src/packet.rs | 2 +- src/payment_plan.rs | 2 +- src/pubkey.rs | 31 ++++++++++++++++++++++++++++++ src/request.rs | 3 ++- src/rpc.rs | 3 ++- src/signature.rs | 31 +++--------------------------- src/sigverify.rs | 3 ++- src/storage_program.rs | 2 +- src/system_program.rs | 5 +++-- src/system_transaction.rs | 3 ++- src/thin_client.rs | 3 ++- src/tictactoe_program.rs | 2 +- src/transaction.rs | 3 ++- src/vote_stage.rs | 3 ++- src/wallet.rs | 3 ++- src/window.rs | 4 ++-- src/window_service.rs | 2 +- src/write_stage.rs | 3 ++- tests/multinode.rs | 3 ++- 37 files changed, 99 insertions(+), 70 deletions(-) create mode 100644 src/pubkey.rs diff --git a/benches/banking_stage.rs b/benches/banking_stage.rs index 692e0b2891..bc834e35b9 100644 --- a/benches/banking_stage.rs +++ b/benches/banking_stage.rs @@ -12,7 +12,8 @@ use solana::banking_stage::{BankingStage, NUM_THREADS}; use solana::entry::Entry; use solana::mint::Mint; use solana::packet::{to_packets_chunked, PacketRecycler}; -use solana::signature::{KeypairUtil, Pubkey, Signature}; +use solana::pubkey::Pubkey; +use solana::signature::{KeypairUtil, Signature}; use solana::system_transaction::SystemTransaction; use solana::transaction::Transaction; use std::iter; diff --git a/programs/move_funds/src/lib.rs b/programs/move_funds/src/lib.rs index 9735de52c5..ef9b186da5 100644 --- a/programs/move_funds/src/lib.rs +++ b/programs/move_funds/src/lib.rs @@ -23,7 +23,7 @@ mod tests { use super::*; use bincode::serialize; use solana::account::Account; - use solana::signature::Pubkey; + use solana::pubkey::Pubkey; #[test] fn test_move_funds() { diff --git a/src/account.rs b/src/account.rs index 3c46dda017..dfdb0e7a41 100644 --- a/src/account.rs +++ b/src/account.rs @@ -1,4 +1,4 @@ -use signature::Pubkey; +use pubkey::Pubkey; /// An Account with userdata that is stored on chain #[derive(Serialize, Deserialize, Debug, Clone, Default)] diff --git a/src/bank.rs b/src/bank.rs index 760c7002f3..b8bf3e01b6 100644 --- a/src/bank.rs +++ b/src/bank.rs @@ -17,7 +17,8 @@ use ledger::Block; use log::Level; use mint::Mint; use payment_plan::Payment; -use signature::{Keypair, Pubkey, Signature}; +use pubkey::Pubkey; +use signature::{Keypair, Signature}; use std; use std::collections::{BTreeMap, HashMap, VecDeque}; use std::result; diff --git a/src/broadcast_stage.rs b/src/broadcast_stage.rs index 78f3105333..36538925a8 100644 --- a/src/broadcast_stage.rs +++ b/src/broadcast_stage.rs @@ -283,8 +283,9 @@ mod tests { use entry::Entry; use ledger::next_entries_mut; use mint::Mint; + use pubkey::Pubkey; use service::Service; - use signature::{Keypair, KeypairUtil, Pubkey}; + use signature::{Keypair, KeypairUtil}; use std::cmp; use std::sync::atomic::AtomicBool; use std::sync::mpsc::{channel, Sender}; diff --git a/src/budget.rs b/src/budget.rs index 344038c331..4cbb0439b5 100644 --- a/src/budget.rs +++ b/src/budget.rs @@ -5,7 +5,7 @@ use chrono::prelude::*; use payment_plan::{Payment, Witness}; -use signature::Pubkey; +use pubkey::Pubkey; use std::mem; /// A data type representing a `Witness` that the payment plan is waiting on. diff --git a/src/budget_program.rs b/src/budget_program.rs index 68780e84be..1c937d3221 100644 --- a/src/budget_program.rs +++ b/src/budget_program.rs @@ -5,7 +5,7 @@ use budget::Budget; use budget_instruction::Instruction; use chrono::prelude::{DateTime, Utc}; use payment_plan::Witness; -use signature::Pubkey; +use pubkey::Pubkey; use std::io; use transaction::Transaction; @@ -271,7 +271,8 @@ mod test { use budget_transaction::BudgetTransaction; use chrono::prelude::{DateTime, NaiveDate, Utc}; use hash::Hash; - use signature::{GenKeys, Keypair, KeypairUtil, Pubkey}; + use pubkey::Pubkey; + use signature::{GenKeys, Keypair, KeypairUtil}; use transaction::Transaction; #[test] diff --git a/src/budget_transaction.rs b/src/budget_transaction.rs index 254938af30..090fcd9837 100644 --- a/src/budget_transaction.rs +++ b/src/budget_transaction.rs @@ -7,7 +7,8 @@ use budget_program::BudgetState; use chrono::prelude::*; use hash::Hash; use payment_plan::Payment; -use signature::{Keypair, Pubkey}; +use pubkey::Pubkey; +use signature::Keypair; use transaction::Transaction; pub trait BudgetTransaction { diff --git a/src/choose_gossip_peer_strategy.rs b/src/choose_gossip_peer_strategy.rs index 000599679c..3cad2348ac 100644 --- a/src/choose_gossip_peer_strategy.rs +++ b/src/choose_gossip_peer_strategy.rs @@ -1,8 +1,8 @@ use crdt::{CrdtError, NodeInfo}; +use pubkey::Pubkey; use rand::distributions::{Distribution, Weighted, WeightedChoice}; use rand::thread_rng; use result::Result; -use signature::Pubkey; use std; use std::collections::HashMap; @@ -192,7 +192,8 @@ impl<'a> ChooseGossipPeerStrategy for ChooseWeightedPeerStrategy<'a> { mod tests { use choose_gossip_peer_strategy::{ChooseWeightedPeerStrategy, DEFAULT_WEIGHT}; use logger; - use signature::{Keypair, KeypairUtil, Pubkey}; + use pubkey::Pubkey; + use signature::{Keypair, KeypairUtil}; use std; use std::collections::HashMap; diff --git a/src/crdt.rs b/src/crdt.rs index e327aa420b..a68e2e2433 100644 --- a/src/crdt.rs +++ b/src/crdt.rs @@ -21,10 +21,11 @@ use ledger::LedgerWindow; use log::Level; use netutil::{bind_in_range, bind_to, multi_bind_in_range}; use packet::{to_blob, Blob, BlobRecycler, SharedBlob, BLOB_SIZE}; +use pubkey::Pubkey; use rand::{thread_rng, Rng}; use rayon::prelude::*; use result::{Error, Result}; -use signature::{Keypair, KeypairUtil, Pubkey}; +use signature::{Keypair, KeypairUtil}; use std; use std::collections::HashMap; use std::net::{IpAddr, Ipv4Addr, SocketAddr, UdpSocket}; @@ -1408,8 +1409,9 @@ mod tests { use ledger::{LedgerWindow, LedgerWriter}; use logger; use packet::BlobRecycler; + use pubkey::Pubkey; use result::Error; - use signature::{Keypair, KeypairUtil, Pubkey}; + use signature::{Keypair, KeypairUtil}; use std::fs::remove_dir_all; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::sync::atomic::{AtomicBool, Ordering}; diff --git a/src/drone.rs b/src/drone.rs index c3db59b662..afc508eb31 100644 --- a/src/drone.rs +++ b/src/drone.rs @@ -8,8 +8,8 @@ use bincode::{deserialize, serialize}; use bytes::Bytes; use influx_db_client as influxdb; use metrics; -use signature::Signature; -use signature::{Keypair, Pubkey}; +use pubkey::Pubkey; +use signature::{Keypair, Signature}; use std::io; use std::io::{Error, ErrorKind}; use std::net::{IpAddr, Ipv4Addr, SocketAddr, UdpSocket}; diff --git a/src/dynamic_program.rs b/src/dynamic_program.rs index 13b33b7291..76715cd2d4 100644 --- a/src/dynamic_program.rs +++ b/src/dynamic_program.rs @@ -4,7 +4,7 @@ extern crate generic_array; use account::Account; use libc; use libloading; -use signature::Pubkey; +use pubkey::Pubkey; use std::path::PathBuf; #[cfg(debug_assertions)] @@ -107,7 +107,7 @@ mod tests { use super::*; use account::Account; use bincode::serialize; - use signature::Pubkey; + use pubkey::Pubkey; use std::path::Path; use std::thread; diff --git a/src/entry.rs b/src/entry.rs index e6930f92e5..e011bd034e 100644 --- a/src/entry.rs +++ b/src/entry.rs @@ -7,8 +7,8 @@ use budget_transaction::BudgetTransaction; use hash::Hash; use packet::{BlobRecycler, SharedBlob, BLOB_DATA_SIZE}; use poh::Poh; +use pubkey::Pubkey; use rayon::prelude::*; -use signature::Pubkey; use std::io::Cursor; use std::net::SocketAddr; use std::sync::mpsc::{Receiver, Sender}; diff --git a/src/erasure.rs b/src/erasure.rs index 7233fa8ae0..bfde1b780f 100644 --- a/src/erasure.rs +++ b/src/erasure.rs @@ -1,6 +1,6 @@ // Support erasure coding use packet::{BlobRecycler, SharedBlob, BLOB_DATA_SIZE, BLOB_HEADER_SIZE}; -use signature::Pubkey; +use pubkey::Pubkey; use std::cmp; use std::mem; use std::result; @@ -603,8 +603,9 @@ mod test { use erasure; use logger; use packet::{BlobRecycler, BLOB_DATA_SIZE, BLOB_HEADER_SIZE, BLOB_SIZE}; + use pubkey::Pubkey; use rand::{thread_rng, Rng}; - use signature::{Keypair, KeypairUtil, Pubkey}; + use signature::{Keypair, KeypairUtil}; // use std::sync::{Arc, RwLock}; use window::{index_blobs, WindowSlot}; diff --git a/src/fullnode.rs b/src/fullnode.rs index dd883b5cfe..f3a0d5284a 100644 --- a/src/fullnode.rs +++ b/src/fullnode.rs @@ -7,10 +7,11 @@ use drone::DRONE_PORT; use entry::Entry; use ledger::read_ledger; use ncp::Ncp; +use pubkey::Pubkey; use rpc::{JsonRpcService, RPC_PORT}; use rpu::Rpu; use service::Service; -use signature::{Keypair, KeypairUtil, Pubkey}; +use signature::{Keypair, KeypairUtil}; use std::net::UdpSocket; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::sync::atomic::{AtomicBool, Ordering}; diff --git a/src/ledger.rs b/src/ledger.rs index 0e5bd260aa..586558cc40 100644 --- a/src/ledger.rs +++ b/src/ledger.rs @@ -11,9 +11,9 @@ use log::Level::Trace; #[cfg(test)] use mint::Mint; use packet::{self, SharedBlob, BLOB_DATA_SIZE}; +use pubkey::Pubkey; use rayon::prelude::*; use result::{Error, Result}; -use signature::Pubkey; #[cfg(test)] use signature::{Keypair, KeypairUtil}; use std::fs::{create_dir_all, remove_dir_all, File, OpenOptions}; diff --git a/src/lib.rs b/src/lib.rs index 9ed3bcb6b9..2bc77e716c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -41,6 +41,7 @@ pub mod packet; pub mod payment_plan; pub mod poh; pub mod poh_recorder; +pub mod pubkey; pub mod recvmmsg; pub mod recycler; pub mod replicate_stage; diff --git a/src/mint.rs b/src/mint.rs index 044957db2e..cad2ee2352 100644 --- a/src/mint.rs +++ b/src/mint.rs @@ -2,8 +2,9 @@ use entry::Entry; use hash::{hash, Hash}; +use pubkey::Pubkey; use ring::rand::SystemRandom; -use signature::{Keypair, KeypairUtil, Pubkey}; +use signature::{Keypair, KeypairUtil}; use system_transaction::SystemTransaction; use transaction::Transaction; use untrusted::Input; diff --git a/src/packet.rs b/src/packet.rs index 6f3d706fe2..6843de621f 100644 --- a/src/packet.rs +++ b/src/packet.rs @@ -7,11 +7,11 @@ use hash::Hash; #[cfg(test)] use ledger::{next_entries_mut, Block}; use log::Level; +use pubkey::Pubkey; use recvmmsg::{recv_mmsg, NUM_RCVMMSGS}; use recycler; use result::{Error, Result}; use serde::Serialize; -use signature::Pubkey; use std::fmt; use std::io; use std::mem::size_of; diff --git a/src/payment_plan.rs b/src/payment_plan.rs index 63d2ded13b..7ee69612b3 100644 --- a/src/payment_plan.rs +++ b/src/payment_plan.rs @@ -4,7 +4,7 @@ //! `Payment`, the payment is executed. use chrono::prelude::*; -use signature::Pubkey; +use pubkey::Pubkey; /// The types of events a payment plan can process. #[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)] diff --git a/src/pubkey.rs b/src/pubkey.rs new file mode 100644 index 0000000000..b69eb98b11 --- /dev/null +++ b/src/pubkey.rs @@ -0,0 +1,31 @@ +use bs58; +use generic_array::typenum::U32; +use generic_array::GenericArray; +use std::fmt; + +#[derive(Serialize, Deserialize, Clone, Copy, Default, Eq, PartialEq, Ord, PartialOrd, Hash)] +pub struct Pubkey(GenericArray); + +impl Pubkey { + pub fn new(pubkey_vec: &[u8]) -> Self { + Pubkey(GenericArray::clone_from_slice(&pubkey_vec)) + } +} + +impl AsRef<[u8]> for Pubkey { + fn as_ref(&self) -> &[u8] { + &self.0[..] + } +} + +impl fmt::Debug for Pubkey { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{}", bs58::encode(self.0).into_string()) + } +} + +impl fmt::Display for Pubkey { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{}", bs58::encode(self.0).into_string()) + } +} diff --git a/src/request.rs b/src/request.rs index b168249637..5eafb13893 100644 --- a/src/request.rs +++ b/src/request.rs @@ -2,7 +2,8 @@ use account::Account; use hash::Hash; -use signature::{Pubkey, Signature}; +use pubkey::Pubkey; +use signature::Signature; #[cfg_attr(feature = "cargo-clippy", allow(large_enum_variant))] #[derive(Serialize, Deserialize, Debug, Clone, Copy)] diff --git a/src/rpc.rs b/src/rpc.rs index bb913f4824..4a13989a89 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -6,8 +6,9 @@ use bincode::deserialize; use bs58; use jsonrpc_core::*; use jsonrpc_http_server::*; +use pubkey::Pubkey; use service::Service; -use signature::{Pubkey, Signature}; +use signature::Signature; use std::mem; use std::net::{SocketAddr, UdpSocket}; use std::result; diff --git a/src/signature.rs b/src/signature.rs index b154826070..33a8e6d030 100644 --- a/src/signature.rs +++ b/src/signature.rs @@ -1,8 +1,9 @@ //! The `signature` module provides functionality for public, and private keys. use bs58; -use generic_array::typenum::{U32, U64}; +use generic_array::typenum::U64; use generic_array::GenericArray; +use pubkey::Pubkey; use rand::{ChaChaRng, Rng, SeedableRng}; use rayon::prelude::*; use ring::signature::Ed25519KeyPair; @@ -14,32 +15,6 @@ use std::fs::File; use untrusted::Input; pub type Keypair = Ed25519KeyPair; -#[derive(Serialize, Deserialize, Clone, Copy, Default, Eq, PartialEq, Ord, PartialOrd, Hash)] -pub struct Pubkey(GenericArray); - -impl Pubkey { - pub fn new(pubkey_vec: &[u8]) -> Self { - Pubkey(GenericArray::clone_from_slice(&pubkey_vec)) - } -} - -impl AsRef<[u8]> for Pubkey { - fn as_ref(&self) -> &[u8] { - &self.0[..] - } -} - -impl fmt::Debug for Pubkey { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}", bs58::encode(self.0).into_string()) - } -} - -impl fmt::Display for Pubkey { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{}", bs58::encode(self.0).into_string()) - } -} #[derive(Serialize, Deserialize, Clone, Copy, Default, Eq, PartialEq, Ord, PartialOrd, Hash)] pub struct Signature(GenericArray); @@ -89,7 +64,7 @@ impl KeypairUtil for Ed25519KeyPair { /// Return the public key for the given keypair fn pubkey(&self) -> Pubkey { - Pubkey(GenericArray::clone_from_slice(self.public_key_bytes())) + Pubkey::new(self.public_key_bytes()) } } diff --git a/src/sigverify.rs b/src/sigverify.rs index 9aa5323c71..181c01e469 100644 --- a/src/sigverify.rs +++ b/src/sigverify.rs @@ -43,8 +43,9 @@ pub fn init() { } fn verify_packet(packet: &Packet) -> u8 { + use pubkey::Pubkey; use ring::signature; - use signature::{Pubkey, Signature}; + use signature::Signature; use untrusted; let msg_start = TX_OFFSET + SIGNED_DATA_OFFSET; diff --git a/src/storage_program.rs b/src/storage_program.rs index 50c92386ba..22e87bab90 100644 --- a/src/storage_program.rs +++ b/src/storage_program.rs @@ -4,7 +4,7 @@ use account::Account; use bincode::deserialize; -use signature::Pubkey; +use pubkey::Pubkey; use transaction::Transaction; #[derive(Serialize, Deserialize, Debug, Clone)] diff --git a/src/system_program.rs b/src/system_program.rs index f3af5b9bbc..7a1466c086 100644 --- a/src/system_program.rs +++ b/src/system_program.rs @@ -3,7 +3,7 @@ use account::Account; use bincode::deserialize; use dynamic_program::DynamicProgram; -use signature::Pubkey; +use pubkey::Pubkey; use std::collections::HashMap; use std::sync::RwLock; use transaction::Transaction; @@ -101,7 +101,8 @@ mod test { use bincode::serialize; use dynamic_program::KeyedAccount; use hash::Hash; - use signature::{Keypair, KeypairUtil, Pubkey}; + use pubkey::Pubkey; + use signature::{Keypair, KeypairUtil}; use std::collections::HashMap; use std::sync::RwLock; use std::thread; diff --git a/src/system_transaction.rs b/src/system_transaction.rs index 90822d19a2..6cc1710686 100644 --- a/src/system_transaction.rs +++ b/src/system_transaction.rs @@ -2,7 +2,8 @@ use bincode::serialize; use hash::Hash; -use signature::{Keypair, KeypairUtil, Pubkey}; +use pubkey::Pubkey; +use signature::{Keypair, KeypairUtil}; use system_program::SystemProgram; use transaction::Transaction; diff --git a/src/thin_client.rs b/src/thin_client.rs index 6fc62ea7d2..25027d5ec8 100644 --- a/src/thin_client.rs +++ b/src/thin_client.rs @@ -10,9 +10,10 @@ use crdt::{Crdt, CrdtError, NodeInfo}; use hash::Hash; use log::Level; use ncp::Ncp; +use pubkey::Pubkey; use request::{Request, Response}; use result::{Error, Result}; -use signature::{Keypair, Pubkey, Signature}; +use signature::{Keypair, Signature}; use std; use std::collections::HashMap; use std::io; diff --git a/src/tictactoe_program.rs b/src/tictactoe_program.rs index 713a330e4e..f08a7b6554 100644 --- a/src/tictactoe_program.rs +++ b/src/tictactoe_program.rs @@ -1,8 +1,8 @@ //! tic-tac-toe program use account::Account; +use pubkey::Pubkey; use serde_cbor; -use signature::Pubkey; use std; use transaction::Transaction; diff --git a/src/transaction.rs b/src/transaction.rs index bc0134ec09..aaee37c2b6 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -2,7 +2,8 @@ use bincode::serialize; use hash::{Hash, Hasher}; -use signature::{Keypair, KeypairUtil, Pubkey, Signature}; +use pubkey::Pubkey; +use signature::{Keypair, KeypairUtil, Signature}; use std::mem::size_of; pub const SIGNED_DATA_OFFSET: usize = size_of::(); diff --git a/src/vote_stage.rs b/src/vote_stage.rs index e89e7b0078..9894e0849f 100644 --- a/src/vote_stage.rs +++ b/src/vote_stage.rs @@ -10,8 +10,9 @@ use influx_db_client as influxdb; use log::Level; use metrics; use packet::{BlobRecycler, SharedBlob}; +use pubkey::Pubkey; use result::Result; -use signature::{Keypair, Pubkey}; +use signature::Keypair; use std::result; use std::sync::atomic::AtomicUsize; use std::sync::{Arc, RwLock}; diff --git a/src/wallet.rs b/src/wallet.rs index bc8b95f8d6..52ff1f884b 100644 --- a/src/wallet.rs +++ b/src/wallet.rs @@ -8,12 +8,13 @@ use crdt::NodeInfo; use drone::DroneRequest; use fullnode::Config; use hash::Hash; +use pubkey::Pubkey; use reqwest; use reqwest::header::CONTENT_TYPE; use ring::rand::SystemRandom; use ring::signature::Ed25519KeyPair; use serde_json::{self, Value}; -use signature::{Keypair, KeypairUtil, Pubkey, Signature}; +use signature::{Keypair, KeypairUtil, Signature}; use std::fs::{self, File}; use std::io::prelude::*; use std::io::{Error, ErrorKind, Write}; diff --git a/src/window.rs b/src/window.rs index 83fe0b985f..4d51c0896b 100644 --- a/src/window.rs +++ b/src/window.rs @@ -8,8 +8,8 @@ use erasure; use ledger::{reconstruct_entries_from_blobs, Block}; use log::Level; use packet::{BlobRecycler, SharedBlob}; +use pubkey::Pubkey; use result::Result; -use signature::Pubkey; use std::cmp; use std::mem; use std::net::SocketAddr; @@ -450,7 +450,7 @@ pub fn new_window_from_entries( #[cfg(test)] mod test { use packet::{Blob, BlobRecycler, Packet, Packets, PACKET_DATA_SIZE}; - use signature::Pubkey; + use pubkey::Pubkey; use std::io; use std::io::Write; use std::net::UdpSocket; diff --git a/src/window_service.rs b/src/window_service.rs index 45874b53ed..36c07c8146 100644 --- a/src/window_service.rs +++ b/src/window_service.rs @@ -5,9 +5,9 @@ use crdt::{Crdt, NodeInfo}; use entry::EntrySender; use log::Level; use packet::{BlobRecycler, SharedBlob}; +use pubkey::Pubkey; use rand::{thread_rng, Rng}; use result::{Error, Result}; -use signature::Pubkey; use std::net::UdpSocket; use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; use std::sync::mpsc::RecvTimeoutError; diff --git a/src/write_stage.rs b/src/write_stage.rs index f8a9e44272..577b04bd15 100644 --- a/src/write_stage.rs +++ b/src/write_stage.rs @@ -299,8 +299,9 @@ mod tests { use entry::Entry; use hash::Hash; use ledger::{genesis, next_entries_mut, read_ledger}; + use pubkey::Pubkey; use service::Service; - use signature::{Keypair, KeypairUtil, Pubkey}; + use signature::{Keypair, KeypairUtil}; use std::fs::remove_dir_all; use std::sync::mpsc::{channel, Receiver, Sender}; use std::sync::{Arc, RwLock}; diff --git a/tests/multinode.rs b/tests/multinode.rs index cba04c3898..052ed5af76 100644 --- a/tests/multinode.rs +++ b/tests/multinode.rs @@ -13,9 +13,10 @@ use solana::ledger::{read_ledger, LedgerWriter}; use solana::logger; use solana::mint::Mint; use solana::ncp::Ncp; +use solana::pubkey::Pubkey; use solana::result; use solana::service::Service; -use solana::signature::{Keypair, KeypairUtil, Pubkey}; +use solana::signature::{Keypair, KeypairUtil}; use solana::thin_client::ThinClient; use solana::timing::{duration_as_ms, duration_as_s}; use solana::window::{default_window, WINDOW_SIZE};