Using Source Code
This is a step-by-step guide to deploy an Aptos validator and validator fullnode (VFN) using source code. Using this guide, the validator and VFN will be deployed on separate machines.
Last updated
Was this helpful?
This is a step-by-step guide to deploy an Aptos validator and validator fullnode (VFN) using source code. Using this guide, the validator and VFN will be deployed on separate machines.
Last updated
Was this helpful?
Follow the steps in to download the aptos-core
repository and source code.
Checkout the mainnet
branch using git checkout --track origin/mainnet
. Note: if you want to deploy a validator and VFN on another network, use the appropriate branch name (e.g., testnet
).
Create a working directory for your Aptos nodes, and pick a username for your nodes, e.g.,
Generate the key pairs for your nodes in your working directory. You can do this by running the following command with the Aptos CLI:
This will create 4 key files under ~/$WORKSPACE/keys
directory:
public-keys.yaml
: This file contains all public keys for your validator and VFN, as well as your account address.
private-keys.yaml
: This file contains all private keys for your validator and VFN.
validator-identity.yaml
: This file contains the public and private keys for your validator, as well as your account address.
validator-full-node-identity.yaml
: This file contains the public and private keys for your VFN, as well as your account address.
Next, you will need to set your validator configuration. This includes setting the validator and VFN host names, which may be IP addresses or DNS addresses.
You can set your validator configuration by running the following command with the Aptos CLI:
Configuring the validator will create two YAML files in the ~/$WORKSPACE/$USERNAME
directory: owner.yaml
and operator.yaml
. These will be useful for connecting your nodes to the Aptos network (later).
validator.yaml
fullnode.yaml
genesis.blob
waypoint.txt
Next, copy the validator.yaml
and fullnode.yaml
template files (that were just downloaded) into the ~/$WORKSPACE/config/
directory. This can be done by running the following commands:
These will be the primary configuration files for your validator and VFN, respectively.
Now, modify the validator.yaml
and fullnode.yaml
template files to contain the appropriate information and working directories for your validator and VFN.
For the validator.yaml
file, you will need to modify the following fields:
base.data_dir
: The directory where the blockchain data will be stored.
base.waypoint
: The waypoint for the genesis transaction on the network you are connecting to.
consensus.initial_safety_rules_config
: The waypoint for the genesis transaction on the network you are connecting to, as well as the validator-identity.yaml
file location.
execution.genesis_file_location
: The genesis blob for the network you are connecting to.
validator_network.identity
: The validator-identity.yaml
file location.
For the fullnode.yaml
file, you will need to modify the following fields:
base.data_dir
: The directory where the blockchain data will be stored.
base.waypoint
: The waypoint for the genesis transaction on the network you are connecting to.
execution.genesis_file_location
: The genesis blob for the network you are connecting to.
full_node_networks
: - The public
network will need to be updated with the validator-full-node-identity.yaml
file location. - The vfn
network will need to be updated with the correct IP address or DNS address of the validator. For example, if you are using IP addresses, you will need to update the addresses
field as follows:
fullnode.yaml
Otherwise, if you are using DNS addresses, you will need to update the addresses
field as follows:
fullnode.yaml
To recap, in your working directory (~/$WORKSPACE
), you should have a list of files:
config
folder containing:
validator.yaml
: The validator config file.
fullnode.yaml
: The VFN config file.
keys
folder containing:
public-keys.yaml
: Public keys for both nodes.
private-keys.yaml
: Private keys for both nodes.
validator-identity.yaml
: Key and account information for the validator.
validator-full-node-identity.yaml
: Key and account information for the VFN.
$username
folder containing:
owner.yaml
: The owner, operator and voter mappings.
operator.yaml
: Validator and VFN operator information.
waypoint.txt
: The waypoint for the genesis transaction on the network you are connecting to.
genesis.blob
The genesis blob for the network you are connecting to.
Now that you have set up your configuration files, you can start your validator and VFN. To start your validator, run the following commands, with the paths assuming you are in the root of the aptos-core
directory:
To start your VFN, run the following commands on a separate, dedicated VFN machine. You will need to download the aptos-core
source code and build the binary on the VFN machine. Likewise, you will need to copy across the keys and configuration files from the validator machine.
Start your VFN by running the following commands, with the paths assuming you are in the root of the aptos-core
directory:
If you want to run aptos-node
as a service, you can set it up to run as a service controlled by systemctl
. This is optional, and can be done using the service template below. You will need to modify the template to match your environment and configuration.
/etc/systemd/system/aptos-node.service
You have now completed setting up your validator and VFN using source code. Proceed to Connect Nodes for the next steps.
Download the following files by following the instructions on the pages. You will need to select the appropriate network (e.g., mainnet
, testnet
, devnet
) and download the following files: