Run a Full Node
A Dora Vota full node consists of a local copy of the entire blockchain, including its block history and states. Running a full node is essential for participating in network operations like validating transactions, joining consensus, and broadcasting events to other network participants.
In this guide, we will walk you through the process of setting up and running a Dora Vota full node.
Node configurations
Hardware requirements
Below is the recommended hardware configuration for running a Dora Vota full node.
Chain ID | CPU | RAM | Disk |
---|---|---|---|
vota-ash | 16 cores | 32GB | 1TB NVME |
vota-testnet | 4 cores | 16GB | 500GB NVME |
vota-sf | 16 cores | 32GB | 500GB NVME |
Recommended validator configuration
- If you use an AWS cloud server to deploy a validator node, you can use the following recommended configuration:
c5a.4xlarge
(opens in a new tab) - If you use a GCP cloud server to deploy a validator node, you can use the following recommended configuration:
c2-standard-16
(opens in a new tab)
Commonly used ports
dorad
uses the following TCP ports. Toggle their settings to match your environment.
26656
: The default port for P2P. This port is used to communicate with other nodes and must be open to join a network. However, it does not have to be open to the public. For validator nodes, configuring persistent_peers and closing this port to the public are recommended.
Additional ports:
1317
: The default port for interacting with thedorad
API server for HTTP RESTful requests. This allows applications and services to interact with the dorad instance through RPC.26660
: The default port for interacting with the Prometheus database, which can be used to monitor the environment. In the default configuration, this port is not open.26657
: The default port for RPC. Because this port is used for querying and sending transactions, it must be open to serve queries fromdorad
.
These ports are all customizable in ~/.dora/config/config.toml
and ~/.dora/config/app.toml
.
Configure chain settings
The following information describes the most important node configuration settings found in the ~/.dora/config/
directory. This is the structure of ~/.dora/config
:
- app.toml
- client.toml
- config.toml
- genesis.json
- node_key.json
- priv_validator_key.json
app.toml
: Configuration ofdorad
client.toml
: Configurations for the cli wallet (ex dorad)config.toml
: Tendermint configuration filegenesis.json
: Gensesis transactionsnode_key.json
: Private key used for node authentication in the p2p protocol (its corresponding public key is the nodeid)priv_validator_key.json
: Key used by the validator on the node to sign blocks
Start a node
To instate a Dora Vota node, the first step is to download and install dorad
on your machine. Make sure you check out and install the same version as the chain you want to join.
A moniker is the custom username of your node. It should be human-readable. It’s set at the time of node setup and can be used to provide a more descriptive and friendly name to identify the node, as opposed to using an IP address or a public key hash which can be hard to remember or recognize.
Init commands
export VERSION=0.4.0
export CHAIN_ID="vota-ash"
export MONIKER="replace-with-your-moniker-name"
git clone https://github.com/DoraFactory/doravota.git
cd doravota && git checkout $VERSION
make install
dorad init --chain-id "$CHAIN_ID" "$MONIKER"
Repalce genesis file
- Mainnet: Replace the genesis file in
~/.dora/config
with the Dora Vota Mainnet genesis file (opens in a new tab). - Testnet: Replace the genesis file in
~/.dora/config
with the Dora Vota Testnet genesis file (opens in a new tab). - Incentivized Testnet: Replace the genesis file in
~/.dora/config
with the Dora Vota Incentivized Testnet genesis file (opens in a new tab).
Configure to sync chain data
Now that we have set up some peers, you can add them into config.toml
to sync Dora Vota chain data.
# Comma separated list of seed nodes to connect to
seeds = "0db68229c58e9b5a488b2dfaf0f593d161bb94d4@47.128.207.247:26656,660773dfb97e197e4b300c4cbdb2dff203f78d47@54.151.160.200:26656"
# Comma separated list of nodes to keep persistent connections to
persistent_peers = "0db68229c58e9b5a488b2dfaf0f593d161bb94d4@47.128.207.247:26656,660773dfb97e197e4b300c4cbdb2dff203f78d47@54.151.160.200:26656"
The configuration above is mainly used for P2P node discovery. Before starting the node, you can synchronize it to a specified block height using the snapshot service. Then, you can synchronize to the latest block using the P2P nodes configured above, which reduces the synchronization time.
Running dorad
node service
Register dorad
as a systemd
service
dorad
should be running at all times. It’s recommended you register dorad
as a systemd
service so that it will automatically restart if your system reboots.
Create the definition file
Create the definition file in /etc/systemd/system/dorad.service
.
[Unit]
Description=dora-vota-service
After=network-online.target
[Service]
User=<USER>
ExecStart=<PATH_TO_DORAD>/dorad start
RestartSec=10
Restart=on-failure
LimitNOFILE=655350
[Install]
WantedBy=multi-user.target
<USER>
: Enter the user (likely your username or root, unless you created a user specifically fordorad
).<PATH_TO_DORAD>
: Enter the path to thedorad
executable, which is likely/home/<YOUR_USER>/go/bin/dorad
or/usr/go/bin
. Confirm this by checking the location ofdorad
.
Run the program upon startup
After registering dorad
as a system service, you can set the program to run upon startup.
systemctl daemon-reload
systemctl enable dorad
Start the service and check the log
sudo systemctl start dorad
sudo journalctl -u dorad -f --no-hostname -o cat
Use dorad
docker image to start node
As an alternative, you can also use Docker (opens in a new tab) (make sure to install it).
For Linux users, it’s recommended to run the Docker daemon in Rootless Mode (opens in a new tab).
Pull Docker image
You can pull the Docker image from the following repositories image: dorafactory/doravota (opens in a new tab)
For example, to connect to the Dora Vota Mainnet, use the following command:
docker pull dorafactory/doravota
Set up path
By default, the Docker image runs the dorad
binary, so you should specify the arguments for dorad
after the image name. For better usage, mount an external volume at /root/.dora
to persist the daemon home path across different runs. For example, if you want to add a key:
docker run --rm -it -v ~/.dora:/root/.dora dorafactory/doravota keys add test-key
And then list all keys:
docker run --rm -it -v ~/.dora:/root/.dora dorafactory/doravota keys list
It’s also important to note that, when running a node in a network, you’ll need to expose the container ports for external connectivity. The image exposes the following ports:
1317
: Rest server26656
: Tendermint P2P26657
: Tendermint RPC
To simplify using the Docker container, you can set an alias with the home path and the proper image tag, like:
alias dorad="docker run --rm -it -v ~/.dora:/root/.dora dorafactory/doravota"
After setting the alias with the above tip, you can use other dorad
commands without typing the verbose Docker run command. For the sake of comprehensive documentation, the full Docker command is shown. Just remember that by setting the alias you can simply use dorad
instead of the Docker command.