Single Node
If you would like to quickly get a single node up and running for local testing, this is the quickest way to go!
Pre-requisite Readings
REQUIREMENTS Before starting, make sure you read the Setup Guide to make sure you have installed the binary.
Automated Localnet (script)
You can customize the local testnet script by changing values for convenience for example:
# customize the name of your key, the chain-id, moniker of the node, keyring backend, and log level
KEY="dev0"
CHAINID="realionetworklocal_7777-4"
MONIKER="localtestnet"
KEYRING="test"
LOGLEVEL="info"
# Allocate genesis accounts (cosmos formatted addresses)
realio-networkd add-genesis-account $KEY 100000000000000000000000000ario --keyring-backend $KEYRING
# Sign genesis transaction
realio-networkd gentx $KEY 1000000000000000000000ario --keyring-backend $KEYRING --chain-id $CHAINID
The default configuration will generate a single validator localnet with the chain-id realionetworklocal_7777-1
and one predefined account (dev0
) with some allocated funds at the genesis.
You can start the local chain using:
$ local_node.sh
TIP
To avoid overwriting any data for a real node used in production, it was decided to store the automatically generated testing configuration at ~/.tmp-realio-network
instead of the default ~/.realio-network
.
When working with the local_node.sh
script, it is necessary to extend all realio-networkd
commands, that target the local test node, with the --home ~/.tmp-realio-network
flag. This is mandatory, because the home
directory cannot be stored in the realio-networkd
configuration, which can be seen in the output below. For ease of use, it might be sensible to export this directory path as an environment variable:
$ export TMP=$HOME/.tmp-realio-network`
$ realio-networkd config --home $TMP
{
"chain-id": "realionetworklocal_7777-1",
"keyring-backend": "test",
"output": "text",
"node": "tcp://localhost:26657",
"broadcast-mode": "sync"
}
Manual Localnet
This guide helps you create a single validator node that runs a network locally for testing and other development related uses.
Initialize the chain
Before actually running the node, we need to initialize the chain, and most importantly its genesis file. This is done with the init
subcommand:
$MONIKER=testing
$KEY=dev0
$CHAINID="realionetworklocal_7777-4"
# The argument $MONIKER is the custom username of your node, it should be human-readable.
realio-networkd init $MONIKER --chain-id=$CHAINID
TIP
You can edit this moniker
later by updating the config.toml
file.
The command above creates all the configuration files needed for your node and validator to run, as well as a default genesis file, which defines the initial state of the network. All these configuration files are in ~/.tmp-realio-network
by default, but you can overwrite the location of this folder by passing the --home
flag.
Genesis Procedure
Adding Genesis Accounts
Before starting the chain, you need to populate the state with at least one account using the keyring:
realio-networkd keys add my_validator
or use the --recover flag if you already have a secret recovery phrase (mnemonic phase) you'd want to use:
realio-networkd keys add my_validator --recover
Once you have created a local account, go ahead and grant it some ario
tokens in your chain's genesis file. Doing so will also make sure your chain is aware of this account's existence:
realio-networkd add-genesis-account my_validator 10000000000000000000000ario
Now that your account has some tokens, you need to add a validator to your chain.
For this guide, you will add your local node (created via the init
command above) as a validator of your chain. Validators can be declared before a chain is first started via a special transaction included in the genesis file called a gentx
:
# Create a gentx
# NOTE: this command lets you set the number of coins.
# Make sure this account has some coins with the genesis.app_state.staking.params.bond_denom denom
realio-networkd add-genesis-account my_validator 10000000000000000000000ario
A gentx
does three things:
Registers the
validator
account you created as a validator operator account (i.e. the account that controls the validator).Self-delegates the provided
amount
of staking tokens.Link the operator account with a Tendermint node pubkey that will be used for signing blocks. If no
--pubkey
flag is provided, it defaults to the local node pubkey created via therealio-networkd init
command above.
For more information on gentx
, use the following command:
realio-networkd gentx --help
Collecting gentx
gentx
By default, the genesis file do not contain any gentxs
. A gentx
is a transaction that bonds staking token present in the genesis file under accounts
to a validator, essentially creating a validator at genesis. The chain will start as soon as more than 2/3rds of the validators (weighted by voting power) that are the recipient of a valid gentx
come online after genesis_time
.
A gentx
can be added manually to the genesis file, or via the following command:
# Add the gentx to the genesis file
realio-networkd collect-gentxs
This command will add all the gentxs
stored in ~/.tmp-realio-network/config/gentx
to the genesis file.
Run Testnet
Finally, check the correctness of the genesis.json
file:
realio-networkd validate-genesis
Now that everything is set up, you can finally start your node:
realio-networkd start
TIP
To check all the available customizable options when running the node, use the --help
flag.
You should see blocks come in.
The previous command allow you to run a single node. This is enough for the next section on interacting with this node, but you may wish to run multiple nodes at the same time, and see how consensus happens between them.
You can then stop the node using Ctrl+C
.
Last updated