diff --git a/multinode-demo/validator.sh b/multinode-demo/validator.sh index 8679d941772bc7..fea46af2f539ba 100755 --- a/multinode-demo/validator.sh +++ b/multinode-demo/validator.sh @@ -81,6 +81,14 @@ if [[ ! -f "$SOLANA_LEADER_CONFIG_DIR"/ledger.log && "$SOLANA_LEADER_CONFIG_DIR"/tx-*.log) > "$SOLANA_LEADER_CONFIG_DIR"/ledger.log fi +# Ensure the validator has at least 1 token before connecting to the network +# TODO: Remove this workaround +while ! $solana_wallet \ + -l "$SOLANA_CONFIG_CLIENT_DIR"/leader.json \ + -k "$SOLANA_CONFIG_PRIVATE_DIR"/id.json airdrop --tokens 1; do + sleep 1 +done + # shellcheck disable=SC2086 # $program should not be quoted exec $program \ --identity "$SOLANA_CONFIG_DIR"/validator.json \ diff --git a/multinode-demo/wallet.sh b/multinode-demo/wallet.sh index e3189b5171ee11..40af011f26e055 100755 --- a/multinode-demo/wallet.sh +++ b/multinode-demo/wallet.sh @@ -36,12 +36,12 @@ if [[ ! -r "$SOLANA_CONFIG_CLIENT_DIR"/leader.json ]]; then ) fi -client_json="$SOLANA_CONFIG_CLIENT_DIR"/client.json -if [[ ! -r $client_json ]]; then - $solana_keygen -o "$client_json" +client_id_path="$SOLANA_CONFIG_CLIENT_DIR"/id.json +if [[ ! -r $client_id_path ]]; then + $solana_keygen -o "$client_id_path" fi set -x # shellcheck disable=SC2086 # $solana_wallet should not be quoted exec $solana_wallet \ - -l "$SOLANA_CONFIG_CLIENT_DIR"/leader.json -k "$client_json" "$@" + -l "$SOLANA_CONFIG_CLIENT_DIR"/leader.json -k "$client_id_path" "$@" diff --git a/src/bin/wallet.rs b/src/bin/wallet.rs index cb48d32751a40a..c843239e273906 100644 --- a/src/bin/wallet.rs +++ b/src/bin/wallet.rs @@ -155,7 +155,13 @@ fn parse_args() -> Result> { path.extend(&[".config", "solana", "id.json"]); path.to_str().unwrap() }; - let id = read_keypair(id_path).expect("client keypair"); + let id = read_keypair(id_path).or_else(|err| { + display_actions(); + Err(WalletError::BadParameter(format!( + "{}: Unable to open keypair file: {}", + err, id_path + ))) + })?; let mut drone_addr = leader.contact_info.tpu; drone_addr.set_port(9900);