Add no-signer argument

This commit is contained in:
Tyera Eulberg 2019-01-23 18:05:06 -08:00 committed by Tyera Eulberg
parent ce41760fdd
commit b7be5b9a7a
12 changed files with 93 additions and 70 deletions

View File

@ -187,9 +187,16 @@ fn main() {
.takes_value(true)
.help("Create this file, if it doesn't already exist, once node initialization is complete"),
)
.arg(
Arg::with_name("no_signer")
.long("no-signer")
.takes_value(false)
.help("Launch node without vote signer"),
)
.get_matches();
let no_sigverify = matches.is_present("nosigverify");
let no_signer = matches.is_present("no_signer");
let use_only_bootstrap_leader = matches.is_present("no-leader-rotation");
let (keypair, gossip) = parse_identity(&matches);
let ledger_path = matches.value_of("ledger").unwrap();
@ -228,25 +235,33 @@ fn main() {
let mut leader_scheduler = LeaderScheduler::default();
leader_scheduler.use_only_bootstrap_leader = use_only_bootstrap_leader;
let vote_signer = VoteSignerProxy::new(&keypair, Box::new(RemoteVoteSigner::new(signer_addr)));
let vote_account = vote_signer.vote_account;
info!("Node ID: {}", node.info.id);
info!("Signer service address: {:?}", signer_addr);
info!("New vote account ID is {:?}", vote_account);
let vote_account;
let signer_option = if !no_signer {
let vote_signer =
VoteSignerProxy::new(&keypair, Box::new(RemoteVoteSigner::new(signer_addr)));
vote_account = vote_signer.vote_account;
info!("Signer service address: {:?}", signer_addr);
info!("New vote account ID is {:?}", vote_account);
Some(Arc::new(vote_signer))
} else {
vote_account = Pubkey::default();
None
};
let mut fullnode = Fullnode::new(
node,
ledger_path,
keypair.clone(),
Arc::new(vote_signer),
signer_option,
cluster_entrypoint,
no_sigverify,
leader_scheduler,
Some(rpc_port),
);
{
if !no_signer {
let leader_node_info = loop {
info!("Looking for leader...");
match poll_gossip_for_leader(node_info.gossip, Some(10)) {

View File

@ -21,7 +21,7 @@ usage() {
echo
fi
cat <<EOF
usage: $0 [-x] [--no-leader-rotation] [--init-complete-file FILE] [--rpc-port port] [rsync network path to bootstrap leader configuration] [network entry point]
usage: $0 [-x] [--no-leader-rotation] [--init-complete-file FILE] [--rpc-port port] [--no-signer] [rsync network path to bootstrap leader configuration] [network entry point]
Start a full node on the specified network
@ -31,6 +31,7 @@ Start a full node on the specified network
--no-leader-rotation - disable leader rotation
--init-complete-file FILE - create this file, if it doesn't already exist, once node initialization is complete
--rpc-port port - custom RPC port for this node
--no-signer - start node without vote signer
EOF
exit 1
@ -44,6 +45,7 @@ maybe_init_complete_file=
maybe_no_leader_rotation=
self_setup=0
maybe_rpc_port=
maybe_no_signer=
while [[ ${1:0:1} = - ]]; do
if [[ $1 = -X ]]; then
@ -63,6 +65,9 @@ while [[ ${1:0:1} = - ]]; do
elif [[ $1 = --rpc-port ]]; then
maybe_rpc_port="$1 $2"
shift 2
elif [[ $1 = --no-signer ]]; then
maybe_no_signer="--no-signer"
shift
else
echo "Unknown argument: $1"
exit 1
@ -236,11 +241,12 @@ if [[ ! -d "$ledger_config_dir" ]]; then
fi
trap 'kill "$pid" && wait "$pid"' INT TERM
# shellcheck disable=SC2086 # Don't want to double quote maybe_rpc_port or maybe_init_complete_file
# shellcheck disable=SC2086 # Don't want to double quote maybe_rpc_port or maybe_init_complete_file or maybe_no_signer
$program \
$maybe_init_complete_file \
$maybe_no_leader_rotation \
$maybe_rpc_port \
$maybe_no_signer \
--identity "$fullnode_json_path" \
--network "$leader_address" \
--ledger "$ledger_config_dir" \

View File

@ -105,7 +105,7 @@ pub struct Fullnode {
tpu_sockets: Vec<UdpSocket>,
broadcast_socket: UdpSocket,
db_ledger: Arc<DbLedger>,
vote_signer: Arc<VoteSignerProxy>,
vote_signer: Option<Arc<VoteSignerProxy>>,
}
impl Fullnode {
@ -113,7 +113,7 @@ impl Fullnode {
node: Node,
ledger_path: &str,
keypair: Arc<Keypair>,
vote_signer: Arc<VoteSignerProxy>,
vote_signer: Option<Arc<VoteSignerProxy>>,
entrypoint_addr: Option<SocketAddr>,
sigverify_disabled: bool,
leader_scheduler: LeaderScheduler,
@ -140,7 +140,7 @@ impl Fullnode {
node: Node,
ledger_path: &str,
keypair: Arc<Keypair>,
vote_signer: Arc<VoteSignerProxy>,
vote_signer: Option<Arc<VoteSignerProxy>>,
entrypoint_addr: Option<SocketAddr>,
sigverify_disabled: bool,
leader_scheduler: LeaderScheduler,
@ -189,7 +189,7 @@ impl Fullnode {
#[allow(clippy::too_many_arguments)]
pub fn new_with_bank(
keypair: Arc<Keypair>,
vote_signer: Arc<VoteSignerProxy>,
vote_signer: Option<Arc<VoteSignerProxy>>,
bank: Bank,
db_ledger: Option<Arc<DbLedger>>,
entry_height: u64,
@ -680,7 +680,7 @@ mod tests {
let signer = VoteSignerProxy::new(&keypair, Box::new(LocalVoteSigner::default()));
let v = Fullnode::new_with_bank(
keypair,
Arc::new(signer),
Some(Arc::new(signer)),
bank,
None,
entry_height,
@ -724,7 +724,7 @@ mod tests {
let signer = VoteSignerProxy::new(&keypair, Box::new(LocalVoteSigner::default()));
Fullnode::new_with_bank(
keypair,
Arc::new(signer),
Some(Arc::new(signer)),
bank,
None,
entry_height,
@ -804,7 +804,7 @@ mod tests {
bootstrap_leader_node,
&bootstrap_leader_ledger_path,
bootstrap_leader_keypair,
Arc::new(signer),
Some(Arc::new(signer)),
Some(bootstrap_leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -916,7 +916,7 @@ mod tests {
bootstrap_leader_node,
&bootstrap_leader_ledger_path,
bootstrap_leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
Some(bootstrap_leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -935,7 +935,7 @@ mod tests {
validator_node,
&validator_ledger_path,
validator_keypair,
Arc::new(validator_vote_account_id),
Some(Arc::new(validator_vote_account_id)),
Some(bootstrap_leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -1037,7 +1037,7 @@ mod tests {
validator_node,
&validator_ledger_path,
validator_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
Some(leader_gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),

View File

@ -64,7 +64,7 @@ impl ReplayStage {
cluster_info: &Arc<RwLock<ClusterInfo>>,
window_receiver: &EntryReceiver,
keypair: &Arc<Keypair>,
vote_signer: &Arc<VoteSignerProxy>,
vote_signer: Option<&Arc<VoteSignerProxy>>,
vote_blob_sender: Option<&BlobSender>,
ledger_entry_sender: &EntrySender,
entry_height: &mut u64,
@ -137,10 +137,12 @@ impl ReplayStage {
}
if 0 == num_ticks_to_next_vote {
if let Some(sender) = vote_blob_sender {
vote_signer
.send_validator_vote(bank, &cluster_info, sender)
.unwrap();
if let Some(signer) = vote_signer {
if let Some(sender) = vote_blob_sender {
signer
.send_validator_vote(bank, &cluster_info, sender)
.unwrap();
}
}
}
let (scheduled_leader, _) = bank
@ -194,7 +196,7 @@ impl ReplayStage {
#[allow(clippy::new_ret_no_self)]
pub fn new(
keypair: Arc<Keypair>,
vote_signer: Arc<VoteSignerProxy>,
vote_signer: Option<Arc<VoteSignerProxy>>,
bank: Arc<Bank>,
cluster_info: Arc<RwLock<ClusterInfo>>,
window_receiver: EntryReceiver,
@ -240,7 +242,7 @@ impl ReplayStage {
&cluster_info,
&window_receiver,
&keypair,
&vote_signer,
vote_signer.as_ref(),
Some(&vote_blob_sender),
&ledger_entry_sender,
&mut entry_height_,
@ -379,7 +381,7 @@ mod test {
let exit = Arc::new(AtomicBool::new(false));
let (replay_stage, ledger_writer_recv) = ReplayStage::new(
my_keypair,
Arc::new(vote_account_id),
Some(Arc::new(vote_account_id)),
Arc::new(bank),
Arc::new(RwLock::new(cluster_info_me)),
entry_receiver,
@ -475,7 +477,7 @@ mod test {
));
let (replay_stage, ledger_writer_recv) = ReplayStage::new(
my_keypair.clone(),
vote_signer.clone(),
Some(vote_signer.clone()),
bank.clone(),
cluster_info_me.clone(),
entry_receiver,
@ -591,7 +593,7 @@ mod test {
let exit = Arc::new(AtomicBool::new(false));
let (replay_stage, ledger_writer_recv) = ReplayStage::new(
my_keypair.clone(),
signer_proxy.clone(),
Some(signer_proxy.clone()),
bank.clone(),
cluster_info_me.clone(),
entry_receiver,
@ -682,7 +684,7 @@ mod test {
&cluster_info_me,
&entry_receiver,
&my_keypair,
&vote_signer,
Some(&vote_signer),
None,
&ledger_entry_sender,
&mut entry_height,
@ -708,7 +710,7 @@ mod test {
&cluster_info_me,
&entry_receiver,
&Arc::new(Keypair::new()),
&vote_signer,
Some(&vote_signer),
None,
&ledger_entry_sender,
&mut entry_height,

View File

@ -474,7 +474,7 @@ mod tests {
let last_id = bank.last_id();
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,
@ -531,7 +531,7 @@ mod tests {
let last_id = bank.last_id();
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
0,
@ -593,7 +593,7 @@ mod tests {
let last_id = bank.last_id();
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,
@ -644,7 +644,7 @@ mod tests {
);
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,
@ -741,7 +741,7 @@ mod tests {
let entry_height = alice.create_entries().len() as u64;
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,

View File

@ -58,7 +58,7 @@ impl Tvu {
/// * `sockets` - My fetch, repair, and restransmit sockets
/// * `db_ledger` - the ledger itself
pub fn new(
vote_signer: &Arc<VoteSignerProxy>,
vote_signer: &Option<Arc<VoteSignerProxy>>,
bank: &Arc<Bank>,
entry_height: u64,
last_entry_id: Hash,
@ -275,7 +275,7 @@ pub mod tests {
let vote_signer =
VoteSignerProxy::new(&vote_account_keypair, Box::new(LocalVoteSigner::default()));
let tvu = Tvu::new(
&Arc::new(vote_signer),
&Some(Arc::new(vote_signer)),
&bank,
0,
cur_hash,

View File

@ -162,7 +162,7 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
leader,
&leader_ledger_path,
leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
None,
false,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -180,7 +180,7 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
validator,
&zero_ledger_path,
keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_data.gossip),
false,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -262,7 +262,7 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
leader,
&leader_ledger_path,
leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
None,
false,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -294,7 +294,7 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
validator,
&ledger_path,
keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_data.gossip),
false,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -355,7 +355,7 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
validator,
&zero_ledger_path,
keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_data.gossip),
false,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -443,7 +443,7 @@ fn test_multi_node_basic() {
leader,
&leader_ledger_path,
leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
None,
false,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -471,7 +471,7 @@ fn test_multi_node_basic() {
validator,
&ledger_path,
keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_data.gossip),
false,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -549,7 +549,7 @@ fn test_boot_validator_from_file() -> result::Result<()> {
leader,
&leader_ledger_path,
leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
None,
false,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -572,7 +572,7 @@ fn test_boot_validator_from_file() -> result::Result<()> {
validator,
&ledger_path,
keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_data.gossip),
false,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -603,7 +603,7 @@ fn create_leader(
leader,
&ledger_path,
leader_keypair,
signer,
Some(signer),
None,
false,
LeaderScheduler::from_bootstrap_leader(leader_data.id),
@ -681,7 +681,7 @@ fn test_leader_restart_validator_start_from_old_ledger() -> result::Result<()> {
validator,
&stale_ledger_path,
keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_data.gossip),
false,
LeaderScheduler::from_bootstrap_leader(leader_data.id),
@ -748,7 +748,7 @@ fn test_multi_node_dynamic_network() {
leader,
&leader_ledger_path,
leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
None,
true,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -819,7 +819,7 @@ fn test_multi_node_dynamic_network() {
validator,
&ledger_path,
keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_data.gossip),
true,
LeaderScheduler::from_bootstrap_leader(leader_pubkey),
@ -1004,7 +1004,7 @@ fn test_leader_to_validator_transition() {
leader_node,
&leader_ledger_path,
leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -1154,7 +1154,7 @@ fn test_leader_validator_basic() {
validator_node,
&validator_ledger_path,
validator_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -1167,7 +1167,7 @@ fn test_leader_validator_basic() {
leader_node,
&leader_ledger_path,
leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -1356,7 +1356,7 @@ fn test_dropped_handoff_recovery() {
bootstrap_leader_node,
&bootstrap_leader_ledger_path,
bootstrap_leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(bootstrap_leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -1379,7 +1379,7 @@ fn test_dropped_handoff_recovery() {
validator_node,
&validator_ledger_path,
kp,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(bootstrap_leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -1407,7 +1407,7 @@ fn test_dropped_handoff_recovery() {
next_leader_node,
&next_leader_ledger_path,
next_leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(bootstrap_leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -1554,7 +1554,7 @@ fn test_full_leader_validator_network() {
validator_node,
&validator_ledger_path,
kp.clone(),
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(bootstrap_leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -1571,7 +1571,7 @@ fn test_full_leader_validator_network() {
bootstrap_leader_node,
&bootstrap_leader_ledger_path,
leader_keypair.clone(),
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(bootstrap_leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),
@ -1763,7 +1763,7 @@ fn test_broadcast_last_tick() {
bootstrap_leader_node,
&bootstrap_leader_ledger_path,
bootstrap_leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(bootstrap_leader_info.gossip),
false,
LeaderScheduler::new(&leader_scheduler_config),

View File

@ -55,7 +55,7 @@ fn test_replicator_startup() {
leader_node,
&leader_ledger_path,
leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
None,
false,
LeaderScheduler::from_bootstrap_leader(leader_info.id.clone()),
@ -84,7 +84,7 @@ fn test_replicator_startup() {
validator_node,
&validator_ledger_path,
validator_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_info.gossip),
false,
LeaderScheduler::from_bootstrap_leader(leader_info.id),
@ -283,7 +283,7 @@ fn test_replicator_startup_ledger_hang() {
leader_node,
&leader_ledger_path,
leader_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
None,
false,
LeaderScheduler::from_bootstrap_leader(leader_info.id.clone()),
@ -299,7 +299,7 @@ fn test_replicator_startup_ledger_hang() {
validator_node,
&validator_ledger_path,
validator_keypair,
Arc::new(signer_proxy),
Some(Arc::new(signer_proxy)),
Some(leader_info.gossip),
false,
LeaderScheduler::from_bootstrap_leader(leader_info.id),

View File

@ -47,7 +47,7 @@ fn test_rpc_send_tx() {
let entry_height = alice.create_entries().len() as u64;
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,

View File

@ -46,7 +46,7 @@ fn test_wallet_deploy_program() {
let last_id = bank.last_id();
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,

View File

@ -51,7 +51,7 @@ fn test_wallet_timestamp_tx() {
let last_id = bank.last_id();
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,
@ -148,7 +148,7 @@ fn test_wallet_witness_tx() {
let last_id = bank.last_id();
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,
@ -241,7 +241,7 @@ fn test_wallet_cancel_tx() {
let last_id = bank.last_id();
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,

View File

@ -37,7 +37,7 @@ fn test_wallet_request_airdrop() {
let last_id = bank.last_id();
let server = Fullnode::new_with_bank(
leader_keypair,
Arc::new(vote_signer),
Some(Arc::new(vote_signer)),
bank,
None,
entry_height,