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.

Join our Technical Update Mailing List

Follow this link to sign up for email updates on the latest protocol/node releases and other technical details. This will include network upgrades such as the upcoming epoch distribution: http://eepurl.com/gZucL1
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):

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

Non-voting and Representative Nodes

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

  • 2GB RAM (additional RAM or swap space may be needed if bootstrapping a new node from scratch)
  • Dual-Core CPU
  • 100 Mbps bandwidth (2TB or more of available monthly bandwidth)
  • SSD-based hard drive with 80GB+ of free space

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.


Step 1: Enable voting

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

node.enable_voting

As of V18.0, 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 is set in the config-rpc.toml file. Please make sure you are aware of the sensitive RPC calls enabling this option opens up as detailed on the configuration page.

# 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: 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: