Starting a Validator

Confirm The Testnet Is Reachable

Before attaching a validator node, sanity check that the cluster is accessible to your machine by running some simple commands. If any of the commands fail, please retry 5-10 minutes later to confirm the testnet is not just restarting itself before debugging further.

Fetch the current transaction count over JSON RPC:

$ curl -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1, "method":"getTransactionCount"}'

Inspect the network explorer at for activity.

View the metrics dashboard for more detail on cluster activity.

Confirm your Installation

Sanity check that you are able to interact with the cluster by receiving a small airdrop of lamports from the testnet drone:

$ solana set --url
$ solana get
$ solana airdrop 123
$ solana balance

Also try running following command to join the gossip network and view all the other nodes in the cluster:

$ solana-gossip --entrypoint spy
# Press ^C to exit

Start your Validator

Create an identity keypair for your validator by running:

$ solana-keygen new -o ~/validator-keypair.json

Wallet Configuration

You can set solana configuration to use your validator keypair for all following commands:

$ solana set --keypair ~/validator-keypair.json

**All following solana commands assume you have set --keypair config to your validator identity keypair. If you haven't, you will need to add the --keypair argument to each command, like:

$ solana --keypair ~/validator-keypair.json airdrop 1000

(You can always override the set configuration by explicitly passing the --keypair argument with a command.)

Validator Start

Airdrop yourself some lamports to get started:

$ solana airdrop 1000

Your validator will need a vote account. Create it now with the following commands:

$ solana-keygen new -o ~/validator-vote-keypair.json
$ solana create-vote-account ~/validator-vote-keypair.json ~/validator-keypair.json 1

Then use one of the following commands, depending on your installation choice, to start the node:

If this is a solana-install-installation:

$ --identity ~/validator-keypair.json --voting-keypair ~/validator-vote-keypair.json --ledger ~/validator-config --rpc-port 8899 --poll-for-new-genesis-block --entrypoint

Alternatively, the solana-install run command can be used to run the validator node while periodically checking for and applying software updates:

$ solana-install run -- --identity ~/validator-keypair.json --voting-keypair ~/validator-vote-keypair.json --ledger ~/validator-config --rpc-port 8899 --poll-for-new-genesis-block --entrypoint

If you built from source:

$ NDEBUG=1 USE_INSTALL=1 ./multinode-demo/ --identity ~/validator-keypair.json --voting-keypair ~/validator-vote-keypair.json --rpc-port 8899 --poll-for-new-genesis-block --entrypoint

Enabling CUDA

By default CUDA is disabled. If your machine has a GPU with CUDA installed, define the SOLANA_CUDA flag in your environment before running any of the previusly mentioned commands

$ export SOLANA_CUDA=1

When your validator is started look for the following log message to indicate that CUDA is enabled: "[<timestamp> solana::validator] CUDA is enabled"

Controlling local network port allocation

By default the validator will dynamically select available network ports in the 8000-10000 range, and may be overridden with --dynamic-port-range. For example, --dynamic-port-range 11000-11010 ... will restrict the validator to ports 11000-11011.

Limiting ledger size to conserve disk space

By default the validator will retain the full ledger. To conserve disk space start the validator with the --limit-ledger-size, which will instruct the validator to only retain the last couple hours of ledger.