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 thedoradAPI 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 ofdoradclient.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.3
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/configwith the Dora Vota Mainnet genesis file (opens in a new tab). - Testnet: Replace the genesis file in
~/.dora/configwith the Dora Vota Testnet genesis file (opens in a new tab). - Incentivized Testnet: Replace the genesis file in
~/.dora/configwith 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 = "19fb0ecb90dc40b741ea1d702c681d3c1a75d643@54.169.53.97:26656"
# Comma separated list of nodes to keep persistent connections to
persistent_peers = "19fb0ecb90dc40b741ea1d702c681d3c1a75d643@54.169.53.97: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 thedoradexecutable, which is likely/home/<YOUR_USER>/go/bin/dorador/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 doradStart the service and check the log
sudo systemctl start dorad
sudo journalctl -u dorad -f --no-hostname -o catUse 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/doravotaSet 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-keyAnd then list all keys:
docker run --rm -it -v ~/.dora:/root/.dora dorafactory/doravota keys listIt’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.