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
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:
- Use wallet_create RPC, optionally with
seed
if you already know your representative account’s seed - 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
- Verify the account is in the wallet with account_list
Open the account - until you do account_info and others will fail:
- Send some funds to the account, at least 0.01 Nano
- Use search_pending to make the wallet open the account automatically
- 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 BlockLattice.io, Nano.community, or NanoCharts.info 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 BlockLattice.io, Nano.community, and NanoCharts.info.
Connect with community services¶
At nano.community [1][2] 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:
- Ask questions in the Node and Representative Management category of the Nano Forum
- Connect on the Nano Discord server for discussion around node maintenance
- Join our Technical Updates Mailing List to stay updated on releases, network upgrade details and more