Declare fullnode a word
This commit is contained in:
parent
c830c604f4
commit
b801ca477d
|
@ -45,7 +45,8 @@ understood. Avoid introducing new 3-letter terms, which can be confused with 3-l
|
||||||
|
|
||||||
Some terms we currently use regularly in the codebase:
|
Some terms we currently use regularly in the codebase:
|
||||||
|
|
||||||
* hash: n. A SHA-256 Hash
|
* fullnode: n. A fully participating network node.
|
||||||
|
* hash: n. A SHA-256 Hash.
|
||||||
* keypair: n. A Ed25519 key-pair, containing a public and private key.
|
* keypair: n. A Ed25519 key-pair, containing a public and private key.
|
||||||
* pubkey: n. The public key of a Ed25519 key-pair.
|
* pubkey: n. The public key of a Ed25519 key-pair.
|
||||||
* sigverify: v. To verify a Ed25519 digital signature.
|
* sigverify: v. To verify a Ed25519 digital signature.
|
||||||
|
|
|
@ -9,7 +9,7 @@ use clap::{App, Arg};
|
||||||
use solana::client::mk_client;
|
use solana::client::mk_client;
|
||||||
use solana::crdt::{NodeInfo, TestNode};
|
use solana::crdt::{NodeInfo, TestNode};
|
||||||
use solana::drone::DRONE_PORT;
|
use solana::drone::DRONE_PORT;
|
||||||
use solana::fullnode::{Config, FullNode};
|
use solana::fullnode::{Config, Fullnode};
|
||||||
use solana::logger;
|
use solana::logger;
|
||||||
use solana::metrics::set_panic_hook;
|
use solana::metrics::set_panic_hook;
|
||||||
use solana::service::Service;
|
use solana::service::Service;
|
||||||
|
@ -83,11 +83,11 @@ fn main() -> () {
|
||||||
let testnet_addr: SocketAddr = testnet_address_string.parse().unwrap();
|
let testnet_addr: SocketAddr = testnet_address_string.parse().unwrap();
|
||||||
drone_addr.set_ip(testnet_addr.ip());
|
drone_addr.set_ip(testnet_addr.ip());
|
||||||
|
|
||||||
FullNode::new(node, false, ledger_path, keypair, Some(testnet_addr))
|
Fullnode::new(node, false, ledger_path, keypair, Some(testnet_addr))
|
||||||
} else {
|
} else {
|
||||||
node.data.leader_id = node.data.id;
|
node.data.leader_id = node.data.id;
|
||||||
|
|
||||||
FullNode::new(node, true, ledger_path, keypair, None)
|
Fullnode::new(node, true, ledger_path, keypair, None)
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut client = mk_client(&repl_clone);
|
let mut client = mk_client(&repl_clone);
|
||||||
|
|
|
@ -159,7 +159,7 @@ mod tests {
|
||||||
use bank::Bank;
|
use bank::Bank;
|
||||||
use crdt::{get_ip_addr, TestNode};
|
use crdt::{get_ip_addr, TestNode};
|
||||||
use drone::{Drone, DroneRequest, REQUEST_CAP, TIME_SLICE};
|
use drone::{Drone, DroneRequest, REQUEST_CAP, TIME_SLICE};
|
||||||
use fullnode::FullNode;
|
use fullnode::Fullnode;
|
||||||
use logger;
|
use logger;
|
||||||
use mint::Mint;
|
use mint::Mint;
|
||||||
use service::Service;
|
use service::Service;
|
||||||
|
@ -285,7 +285,7 @@ mod tests {
|
||||||
let leader_data = leader.data.clone();
|
let leader_data = leader.data.clone();
|
||||||
let ledger_path = tmp_ledger_path("send_airdrop");
|
let ledger_path = tmp_ledger_path("send_airdrop");
|
||||||
|
|
||||||
let server = FullNode::new_leader(
|
let server = Fullnode::new_leader(
|
||||||
leader_keypair,
|
leader_keypair,
|
||||||
bank,
|
bank,
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -20,8 +20,7 @@ use tvu::Tvu;
|
||||||
use untrusted::Input;
|
use untrusted::Input;
|
||||||
use window;
|
use window;
|
||||||
|
|
||||||
//use std::time::Duration;
|
pub struct Fullnode {
|
||||||
pub struct FullNode {
|
|
||||||
exit: Arc<AtomicBool>,
|
exit: Arc<AtomicBool>,
|
||||||
thread_hdls: Vec<JoinHandle<()>>,
|
thread_hdls: Vec<JoinHandle<()>>,
|
||||||
}
|
}
|
||||||
|
@ -48,7 +47,7 @@ impl Config {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FullNode {
|
impl Fullnode {
|
||||||
fn new_internal(
|
fn new_internal(
|
||||||
mut node: TestNode,
|
mut node: TestNode,
|
||||||
leader: bool,
|
leader: bool,
|
||||||
|
@ -56,7 +55,7 @@ impl FullNode {
|
||||||
keypair: Keypair,
|
keypair: Keypair,
|
||||||
network_entry_for_validator: Option<SocketAddr>,
|
network_entry_for_validator: Option<SocketAddr>,
|
||||||
sigverify_disabled: bool,
|
sigverify_disabled: bool,
|
||||||
) -> FullNode {
|
) -> Self {
|
||||||
info!("creating bank...");
|
info!("creating bank...");
|
||||||
let bank = Bank::new_default(leader);
|
let bank = Bank::new_default(leader);
|
||||||
|
|
||||||
|
@ -84,7 +83,7 @@ impl FullNode {
|
||||||
let testnet_addr = network_entry_for_validator.expect("validator requires entry");
|
let testnet_addr = network_entry_for_validator.expect("validator requires entry");
|
||||||
|
|
||||||
let network_entry_point = NodeInfo::new_entry_point(testnet_addr);
|
let network_entry_point = NodeInfo::new_entry_point(testnet_addr);
|
||||||
let server = FullNode::new_validator(
|
let server = Self::new_validator(
|
||||||
keypair,
|
keypair,
|
||||||
bank,
|
bank,
|
||||||
entry_height,
|
entry_height,
|
||||||
|
@ -103,7 +102,7 @@ impl FullNode {
|
||||||
} else {
|
} else {
|
||||||
node.data.leader_id = node.data.id;
|
node.data.leader_id = node.data.id;
|
||||||
|
|
||||||
let server = FullNode::new_leader(
|
let server = Self::new_leader(
|
||||||
keypair,
|
keypair,
|
||||||
bank,
|
bank,
|
||||||
entry_height,
|
entry_height,
|
||||||
|
@ -129,8 +128,8 @@ impl FullNode {
|
||||||
ledger: &str,
|
ledger: &str,
|
||||||
keypair: Keypair,
|
keypair: Keypair,
|
||||||
network_entry_for_validator: Option<SocketAddr>,
|
network_entry_for_validator: Option<SocketAddr>,
|
||||||
) -> FullNode {
|
) -> Self {
|
||||||
FullNode::new_internal(
|
Self::new_internal(
|
||||||
node,
|
node,
|
||||||
leader,
|
leader,
|
||||||
ledger,
|
ledger,
|
||||||
|
@ -146,8 +145,8 @@ impl FullNode {
|
||||||
ledger_path: &str,
|
ledger_path: &str,
|
||||||
keypair: Keypair,
|
keypair: Keypair,
|
||||||
network_entry_for_validator: Option<SocketAddr>,
|
network_entry_for_validator: Option<SocketAddr>,
|
||||||
) -> FullNode {
|
) -> Self {
|
||||||
FullNode::new_internal(
|
Self::new_internal(
|
||||||
node,
|
node,
|
||||||
leader,
|
leader,
|
||||||
ledger_path,
|
ledger_path,
|
||||||
|
@ -240,7 +239,7 @@ impl FullNode {
|
||||||
);
|
);
|
||||||
thread_hdls.extend(broadcast_stage.thread_hdls());
|
thread_hdls.extend(broadcast_stage.thread_hdls());
|
||||||
|
|
||||||
FullNode { exit, thread_hdls }
|
Fullnode { exit, thread_hdls }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create a server instance acting as a validator.
|
/// Create a server instance acting as a validator.
|
||||||
|
@ -325,7 +324,7 @@ impl FullNode {
|
||||||
);
|
);
|
||||||
thread_hdls.extend(tvu.thread_hdls());
|
thread_hdls.extend(tvu.thread_hdls());
|
||||||
thread_hdls.extend(ncp.thread_hdls());
|
thread_hdls.extend(ncp.thread_hdls());
|
||||||
FullNode { exit, thread_hdls }
|
Fullnode { exit, thread_hdls }
|
||||||
}
|
}
|
||||||
|
|
||||||
//used for notifying many nodes in parallel to exit
|
//used for notifying many nodes in parallel to exit
|
||||||
|
@ -338,7 +337,7 @@ impl FullNode {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Service for FullNode {
|
impl Service for Fullnode {
|
||||||
fn thread_hdls(self) -> Vec<JoinHandle<()>> {
|
fn thread_hdls(self) -> Vec<JoinHandle<()>> {
|
||||||
self.thread_hdls
|
self.thread_hdls
|
||||||
}
|
}
|
||||||
|
@ -355,7 +354,7 @@ impl Service for FullNode {
|
||||||
mod tests {
|
mod tests {
|
||||||
use bank::Bank;
|
use bank::Bank;
|
||||||
use crdt::TestNode;
|
use crdt::TestNode;
|
||||||
use fullnode::FullNode;
|
use fullnode::Fullnode;
|
||||||
use mint::Mint;
|
use mint::Mint;
|
||||||
use service::Service;
|
use service::Service;
|
||||||
use signature::{Keypair, KeypairUtil};
|
use signature::{Keypair, KeypairUtil};
|
||||||
|
@ -370,13 +369,13 @@ mod tests {
|
||||||
let bank = Bank::new(&alice);
|
let bank = Bank::new(&alice);
|
||||||
let exit = Arc::new(AtomicBool::new(false));
|
let exit = Arc::new(AtomicBool::new(false));
|
||||||
let entry = tn.data.clone();
|
let entry = tn.data.clone();
|
||||||
let v = FullNode::new_validator(keypair, bank, 0, &[], tn, &entry, exit, None, false);
|
let v = Fullnode::new_validator(keypair, bank, 0, &[], tn, &entry, exit, None, false);
|
||||||
v.exit();
|
v.exit();
|
||||||
v.join().unwrap();
|
v.join().unwrap();
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn validator_parallel_exit() {
|
fn validator_parallel_exit() {
|
||||||
let vals: Vec<FullNode> = (0..2)
|
let vals: Vec<Fullnode> = (0..2)
|
||||||
.map(|_| {
|
.map(|_| {
|
||||||
let keypair = Keypair::new();
|
let keypair = Keypair::new();
|
||||||
let tn = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
let tn = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
||||||
|
@ -384,7 +383,7 @@ mod tests {
|
||||||
let bank = Bank::new(&alice);
|
let bank = Bank::new(&alice);
|
||||||
let exit = Arc::new(AtomicBool::new(false));
|
let exit = Arc::new(AtomicBool::new(false));
|
||||||
let entry = tn.data.clone();
|
let entry = tn.data.clone();
|
||||||
FullNode::new_validator(keypair, bank, 0, &[], tn, &entry, exit, None, false)
|
Fullnode::new_validator(keypair, bank, 0, &[], tn, &entry, exit, None, false)
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
//each validator can exit in parallel to speed many sequential calls to `join`
|
//each validator can exit in parallel to speed many sequential calls to `join`
|
||||||
|
|
|
@ -319,7 +319,7 @@ mod tests {
|
||||||
use bank::Bank;
|
use bank::Bank;
|
||||||
use budget::Budget;
|
use budget::Budget;
|
||||||
use crdt::TestNode;
|
use crdt::TestNode;
|
||||||
use fullnode::FullNode;
|
use fullnode::Fullnode;
|
||||||
use ledger::LedgerWriter;
|
use ledger::LedgerWriter;
|
||||||
use logger;
|
use logger;
|
||||||
use mint::Mint;
|
use mint::Mint;
|
||||||
|
@ -356,7 +356,7 @@ mod tests {
|
||||||
let exit = Arc::new(AtomicBool::new(false));
|
let exit = Arc::new(AtomicBool::new(false));
|
||||||
let ledger_path = tmp_ledger("thin_client", &alice);
|
let ledger_path = tmp_ledger("thin_client", &alice);
|
||||||
|
|
||||||
let server = FullNode::new_leader(
|
let server = Fullnode::new_leader(
|
||||||
leader_keypair,
|
leader_keypair,
|
||||||
bank,
|
bank,
|
||||||
0,
|
0,
|
||||||
|
@ -404,7 +404,7 @@ mod tests {
|
||||||
let leader_data = leader.data.clone();
|
let leader_data = leader.data.clone();
|
||||||
let ledger_path = tmp_ledger("bad_sig", &alice);
|
let ledger_path = tmp_ledger("bad_sig", &alice);
|
||||||
|
|
||||||
let server = FullNode::new_leader(
|
let server = Fullnode::new_leader(
|
||||||
leader_keypair,
|
leader_keypair,
|
||||||
bank,
|
bank,
|
||||||
0,
|
0,
|
||||||
|
@ -464,7 +464,7 @@ mod tests {
|
||||||
let leader_data = leader.data.clone();
|
let leader_data = leader.data.clone();
|
||||||
let ledger_path = tmp_ledger("client_check_signature", &alice);
|
let ledger_path = tmp_ledger("client_check_signature", &alice);
|
||||||
|
|
||||||
let server = FullNode::new_leader(
|
let server = Fullnode::new_leader(
|
||||||
leader_keypair,
|
leader_keypair,
|
||||||
bank,
|
bank,
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -7,7 +7,7 @@ extern crate solana;
|
||||||
|
|
||||||
use solana::crdt::{Crdt, NodeInfo, TestNode};
|
use solana::crdt::{Crdt, NodeInfo, TestNode};
|
||||||
use solana::entry::Entry;
|
use solana::entry::Entry;
|
||||||
use solana::fullnode::FullNode;
|
use solana::fullnode::Fullnode;
|
||||||
use solana::hash::Hash;
|
use solana::hash::Hash;
|
||||||
use solana::ledger::LedgerWriter;
|
use solana::ledger::LedgerWriter;
|
||||||
use solana::logger;
|
use solana::logger;
|
||||||
|
@ -146,7 +146,7 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
|
||||||
writer.write_entries(entries).unwrap();
|
writer.write_entries(entries).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
let leader = FullNode::new(leader, true, &leader_ledger_path, leader_keypair, None);
|
let leader = Fullnode::new(leader, true, &leader_ledger_path, leader_keypair, None);
|
||||||
|
|
||||||
// Send leader some tokens to vote
|
// Send leader some tokens to vote
|
||||||
let leader_balance =
|
let leader_balance =
|
||||||
|
@ -158,7 +158,7 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
|
||||||
let keypair = Keypair::new();
|
let keypair = Keypair::new();
|
||||||
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
||||||
let validator_data = validator.data.clone();
|
let validator_data = validator.data.clone();
|
||||||
let validator = FullNode::new(
|
let validator = Fullnode::new(
|
||||||
validator,
|
validator,
|
||||||
false,
|
false,
|
||||||
&zero_ledger_path,
|
&zero_ledger_path,
|
||||||
|
@ -219,7 +219,7 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
|
||||||
);
|
);
|
||||||
ledger_paths.push(zero_ledger_path.clone());
|
ledger_paths.push(zero_ledger_path.clone());
|
||||||
|
|
||||||
let server = FullNode::new(leader, true, &leader_ledger_path, leader_keypair, None);
|
let server = Fullnode::new(leader, true, &leader_ledger_path, leader_keypair, None);
|
||||||
|
|
||||||
// Send leader some tokens to vote
|
// Send leader some tokens to vote
|
||||||
let leader_balance =
|
let leader_balance =
|
||||||
|
@ -236,7 +236,7 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
|
||||||
);
|
);
|
||||||
ledger_paths.push(ledger_path.clone());
|
ledger_paths.push(ledger_path.clone());
|
||||||
|
|
||||||
let mut val = FullNode::new(
|
let mut val = Fullnode::new(
|
||||||
validator,
|
validator,
|
||||||
false,
|
false,
|
||||||
&ledger_path,
|
&ledger_path,
|
||||||
|
@ -271,7 +271,7 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
|
||||||
// balances
|
// balances
|
||||||
let keypair = Keypair::new();
|
let keypair = Keypair::new();
|
||||||
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
||||||
let val = FullNode::new(
|
let val = Fullnode::new(
|
||||||
validator,
|
validator,
|
||||||
false,
|
false,
|
||||||
&zero_ledger_path,
|
&zero_ledger_path,
|
||||||
|
@ -336,7 +336,7 @@ fn test_multi_node_basic() {
|
||||||
|
|
||||||
let (alice, leader_ledger_path) = genesis("multi_node_basic", 10_000);
|
let (alice, leader_ledger_path) = genesis("multi_node_basic", 10_000);
|
||||||
ledger_paths.push(leader_ledger_path.clone());
|
ledger_paths.push(leader_ledger_path.clone());
|
||||||
let server = FullNode::new(leader, true, &leader_ledger_path, leader_keypair, None);
|
let server = Fullnode::new(leader, true, &leader_ledger_path, leader_keypair, None);
|
||||||
|
|
||||||
// Send leader some tokens to vote
|
// Send leader some tokens to vote
|
||||||
let leader_balance =
|
let leader_balance =
|
||||||
|
@ -349,7 +349,7 @@ fn test_multi_node_basic() {
|
||||||
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
||||||
let ledger_path = tmp_copy_ledger(&leader_ledger_path, "multi_node_basic");
|
let ledger_path = tmp_copy_ledger(&leader_ledger_path, "multi_node_basic");
|
||||||
ledger_paths.push(ledger_path.clone());
|
ledger_paths.push(ledger_path.clone());
|
||||||
let val = FullNode::new(
|
let val = Fullnode::new(
|
||||||
validator,
|
validator,
|
||||||
false,
|
false,
|
||||||
&ledger_path,
|
&ledger_path,
|
||||||
|
@ -397,7 +397,7 @@ fn test_boot_validator_from_file() -> result::Result<()> {
|
||||||
ledger_paths.push(leader_ledger_path.clone());
|
ledger_paths.push(leader_ledger_path.clone());
|
||||||
|
|
||||||
let leader_data = leader.data.clone();
|
let leader_data = leader.data.clone();
|
||||||
let leader_fullnode = FullNode::new(leader, true, &leader_ledger_path, leader_keypair, None);
|
let leader_fullnode = Fullnode::new(leader, true, &leader_ledger_path, leader_keypair, None);
|
||||||
let leader_balance =
|
let leader_balance =
|
||||||
send_tx_and_retry_get_balance(&leader_data, &alice, &bob_pubkey, Some(500)).unwrap();
|
send_tx_and_retry_get_balance(&leader_data, &alice, &bob_pubkey, Some(500)).unwrap();
|
||||||
assert_eq!(leader_balance, 500);
|
assert_eq!(leader_balance, 500);
|
||||||
|
@ -410,7 +410,7 @@ fn test_boot_validator_from_file() -> result::Result<()> {
|
||||||
let validator_data = validator.data.clone();
|
let validator_data = validator.data.clone();
|
||||||
let ledger_path = tmp_copy_ledger(&leader_ledger_path, "boot_validator_from_file");
|
let ledger_path = tmp_copy_ledger(&leader_ledger_path, "boot_validator_from_file");
|
||||||
ledger_paths.push(ledger_path.clone());
|
ledger_paths.push(ledger_path.clone());
|
||||||
let val_fullnode = FullNode::new(
|
let val_fullnode = Fullnode::new(
|
||||||
validator,
|
validator,
|
||||||
false,
|
false,
|
||||||
&ledger_path,
|
&ledger_path,
|
||||||
|
@ -430,11 +430,11 @@ fn test_boot_validator_from_file() -> result::Result<()> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_leader(ledger_path: &str) -> (NodeInfo, FullNode) {
|
fn create_leader(ledger_path: &str) -> (NodeInfo, Fullnode) {
|
||||||
let leader_keypair = Keypair::new();
|
let leader_keypair = Keypair::new();
|
||||||
let leader = TestNode::new_localhost_with_pubkey(leader_keypair.pubkey());
|
let leader = TestNode::new_localhost_with_pubkey(leader_keypair.pubkey());
|
||||||
let leader_data = leader.data.clone();
|
let leader_data = leader.data.clone();
|
||||||
let leader_fullnode = FullNode::new(leader, true, &ledger_path, leader_keypair, None);
|
let leader_fullnode = Fullnode::new(leader, true, &ledger_path, leader_keypair, None);
|
||||||
(leader_data, leader_fullnode)
|
(leader_data, leader_fullnode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -479,7 +479,7 @@ fn test_leader_restart_validator_start_from_old_ledger() -> result::Result<()> {
|
||||||
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
||||||
let validator_data = validator.data.clone();
|
let validator_data = validator.data.clone();
|
||||||
|
|
||||||
let val_fullnode = FullNode::new(
|
let val_fullnode = Fullnode::new(
|
||||||
validator,
|
validator,
|
||||||
false,
|
false,
|
||||||
&stale_ledger_path,
|
&stale_ledger_path,
|
||||||
|
@ -548,7 +548,7 @@ fn test_multi_node_dynamic_network() {
|
||||||
let leader_data = leader.data.clone();
|
let leader_data = leader.data.clone();
|
||||||
|
|
||||||
let server =
|
let server =
|
||||||
FullNode::new_without_sigverify(leader, true, &leader_ledger_path, leader_keypair, None);
|
Fullnode::new_without_sigverify(leader, true, &leader_ledger_path, leader_keypair, None);
|
||||||
|
|
||||||
// Send leader some tokens to vote
|
// Send leader some tokens to vote
|
||||||
let leader_balance = send_tx_and_retry_get_balance(
|
let leader_balance = send_tx_and_retry_get_balance(
|
||||||
|
@ -616,7 +616,7 @@ fn test_multi_node_dynamic_network() {
|
||||||
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
let validator = TestNode::new_localhost_with_pubkey(keypair.pubkey());
|
||||||
let rd = validator.data.clone();
|
let rd = validator.data.clone();
|
||||||
info!("starting {} {:x}", keypair.pubkey(), rd.debug_id());
|
info!("starting {} {:x}", keypair.pubkey(), rd.debug_id());
|
||||||
let val = FullNode::new_without_sigverify(
|
let val = Fullnode::new_without_sigverify(
|
||||||
validator,
|
validator,
|
||||||
false,
|
false,
|
||||||
&ledger_path,
|
&ledger_path,
|
||||||
|
|
Loading…
Reference in New Issue