Skip to content

Voting as a Representative

The default node setup guide provides instructions for getting a non-voting node setup, but if you're looking to run a Representative node, and perhaps hoping to become a Principal Representative, the node will need to be configured to vote and be setup with a Representative account.

Technical Update Mailing List

Sign up for email updates on the latest protocol/node releases and other technical details including network upgrades.
Join Mailing List
Join Technical Updates Mailing List

Before getting into the setup instructions, there are a few important considerations:

Commitment, security and maintenance

Running a Nano Representative is a commitment to helping secure the network. This can only be done if the operation of the node is taken seriously.

  • Prepare for the necessary maintenance on the node and host machine
  • Carefully review the security guide and follow general security best practices at all times
  • Ensure you are prepared for the time and cost commitments of maintaining the node over the long term to help maximize the benefits

Hardware recommendations

Principal Representative Nodes

The following are minimum recommended specifications for nodes with more than 0.1% of the online voting weight (Principal Representatives):

  • 16GB RAM
  • Quad-Core or higher CPU
  • 500 Mbps bandwidth (8TB or more of available monthly bandwidth)
  • SSD-based hard drive with 400GB+ of free space

Non-voting and Representative Nodes

The following are minimum recommended specifications for non-voting nodes and Representative nodes with less than 0.1% of the online voting weight (regular Representatives):

  • 8GB RAM
  • Quad-Core CPU
  • 250 Mbps bandwidth (4TB or more of available monthly bandwidth)
  • SSD-based hard drive with 400GB+ of free space

These lower specifications are also valid for any type of node run on the Beta network and Test network.

Varied resource usage

Various factors affect resource usage including how often RPC calls are made, other applications running on the machine, etc. These recommendations should be evaluated along with other considerations.

Work Generation guide

For nodes being used with services requiring regular or high volume sending and receiving of transactions, special considerations must be made for handling Proof-of-Work generation activities. Find details on configuring a GPU, external work services and more for the perfect setup in the Work Generation guide.

Synced ledger

In order to open a new account to become a representative, the local node ledger must be in sync with the rest of the network. If you are starting a fresh node and bootstrapping, this process can take days to complete, depending on the network conditions, hardware specifications, etc. To speed this up, a downloaded ledger can be used if necessary.


Step 1: Enable voting

For the node to start voting, the following configuration options need to be updated:

node.enable_voting

Newly setup nodes have voting disabled by default. In order to participate in network consensus, this value must be updated in the config-node.toml file.

[node]

# Enable or disable voting. Enabling this option requires additional system resources, namely increased CPU, bandwidth and disk usage.
# type:bool
enable_voting = true

rpc.enable

To enable communication via RPC, set this configuration option in the config-node.toml file.

[rpc]

# Enable or disable RPC
# type:bool
enable = true

enable_control

This configuration option, which is needed for certain sensitive RPC calls such as those for creating wallets and accounts, is set in the config-rpc.toml file. Please make sure you are aware of the sensitive RPC calls opened up by enabling this option (detailed in the configuration guide).

# Enable or disable control-level requests.
# WARNING: Enabling this gives anyone with RPC access the ability to stop the node and access wallet funds.
# type:bool
enable_control = true

Step 2: Setup Representative account

Add a representative account to a wallet:

  1. Use wallet_create RPC, optionally with seed if you already know your representative account’s seed
  2. One of the following:
    • wallet_add RPC, if you have a private key and didn’t have a seed before
    • account_create RPC if you had a seed or are creating a new representative account
  3. Verify the account is in the wallet with account_list

Open the account - until you do account_info and others will fail:

  1. Send some funds to the account, at least 0.01 Nano
  2. Use search_pending to make the wallet open the account automatically
  3. Use account_info to verify the state of the account
    • If the account is still not open, use receive as a backup

Step 3: Restart the node and check voting

Before the node will vote, the representative account configured above must have at least 1000 Nano delegated to it. This is done by changing the representative of other accounts in your wallet with account_representative_set. If you do not control over 1000 Nano, you will need to have others delegate their weight to your representative.

Once you have enough weight, after a few minutes you can search for your representative account on the mynano.ninja site to verify it is voting.

Warning - Multiple Node Setups

Never use the same seed on multiple running nano node instances at the same time.

  • Multiple nano nodes using the same seed can result in network race conditions that degrade performance for your personal accounts.
  • In addition, publishing transactions from two nodes with the same account at the same time may cause an account fork which requires a slower representative voting process.
  • Similarly, if you are running a representative account on multiple nodes, they may publish conflicting votes, causing your representative to be ignored by the network.
  • Performance degradation in enterprise environments may be significant.

Step 4 (Optional): Disable RPC control commands for more security

enable_control was only needed to create the account which the Representative uses to vote. It is not actually needed for voting. Therefore there is no need to actually keep it active after the node is prepared for voting.

In the config-rpc.toml file, you can disable the control commands again by setting enable_control back to false.

# Enable or disable control-level requests.
# WARNING: Enabling this gives anyone with RPC access the ability to stop the node and access wallet funds.
# type:bool
enable_control = false

Step 5: Monitoring and more

Congratulations on getting your representative setup! If you are able to do a good job maintaining the node and keeping it performing well, you may have a chance at becoming a Principal Representative. To reach this higher level of participation in consensus, you must get at least 0.1% of online voting weight delegated to your node. After that any votes you send for transactions will be rebroadcast by other nodes to help with consensus even more.

Once you are comfortable with your node setup and want to connect it to the broader Nano ecosystem, there are a few recommended options:

Setup monitoring

Details for setting up a popular monitoring service for the node can be found at https://github.com/NanoTools/nanoNodeMonitor. Not only can this provide a website for viewing the status and promoting your representative, but it also provides metrics to popular services in the ecosystem who help monitor the broader network status and performance, such as NanoCrawler.cc and MyNano.ninja.

Connect with community services

At MyNano.ninja you can also verify your representative and share additional details about your social accounts. Many community members use this service to evaluate representatives which can help you get additional weight if your setup is reliable and well maintained.

Ongoing maintenance and support

As you continue maintaining your representative there are great community resources available for support: