Skip to content

Commit

Permalink
R4R: Update single node network bootstrapping documentation (cosmos#2931
Browse files Browse the repository at this point in the history
)

* Update single node network bootstrapping documentation to reflect changes to gentx
* Update docs/gaia/networks.md
* Address PR comments
  • Loading branch information
jackzampolin authored Nov 29, 2018
1 parent b773636 commit ddab04e
Showing 1 changed file with 56 additions and 32 deletions.
88 changes: 56 additions & 32 deletions docs/gaia/networks.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,54 @@
# Networks

There are a variety of ways to setup either local or remote networks with automation, detailed below.
All the required files are found in the [networks directory](https://github.com/cosmos/cosmos-sdk/tree/develop/networks) and additionally the `local` or `remote` sub-directories.
This document describes 3 ways to setup a network of `gaiad` nodes, each serving a different usecase:

## Local Testnet
1. Single-node, local, manual testnet
2. Multi-node, local, automated testnet
3. Multi-node, remote, automated testnet

Supporting code can be found in the [networks directory](https://github.com/cosmos/cosmos-sdk/tree/develop/networks) and additionally the `local` or `remote` sub-directories.

> NOTE: The `remote` network bootstrapping may be out of sync with the latest releases and is not to be relied upon.
## Single-node, local, manual testnet

This guide helps you create a single validator node that runs a network locally for testing and other development related uses.

### Requirements

- [Install gaia](./installation.md)
- [Install `jq`](https://stedolan.github.io/jq/download/) (optional)

### Create genesis file and start the network

```bash
# You can run all of these commands from your home directory
cd $HOME

# Initialize the genesis.json file that will help you to bootstrap the network
gaiad init --chain-id testing --moniker testing

# Create a key to hold your validator account
gaiacli keys add validator

# Add that key into the genesis.app_state.accounts array in the genesis file
# NOTE: this command lets you set the number of coins. Make sure this account has some coins
# with the genesis.app_state.stake.params.bond_denom denom, the default is STAKE
gaiad add-genesis-account $(gaiacli keys show validator -o json | jq -r ".address") 1000STAKE,1000validatorToken

# Generate the transaction that creates your validator
gaiad gentx --name validator

# Add the generated bonding transaction to the genesis file
gaiad collect-gentxs

# Now its safe to start `gaiad`
gaiad start
```

This setup puts all the data for `gaiad` in `~/.gaiad`. You can examine the genesis file you created at `~/.gaiad/config/genesis.json`. With this configuration `gaiacli` is also ready to use and has an account with tokens (both staking and custom).

## Multi-node, local, automated testnet

From the [networks/local directory](https://github.com/cosmos/cosmos-sdk/tree/develop/networks/local):

Expand All @@ -15,12 +60,10 @@ From the [networks/local directory](https://github.com/cosmos/cosmos-sdk/tree/de

### Build

Build the `gaiad` binary and the `tendermint/gaiadnode` docker image.

Note the binary will be mounted into the container so it can be updated without
rebuilding the image.
Build the `gaiad` binary (linux) and the `tendermint/gaiadnode` docker image required for running the `localnet` commands. This binary will be mounted into the container and can be updated rebuilding the image, so you only need to build the image once.

```
```bash
# Work from the SDK repo
cd $GOPATH/src/github.com/cosmos/cosmos-sdk

# Build the linux binary in ./build
Expand Down Expand Up @@ -51,7 +94,7 @@ The ports for each node are found in this table:
To update the binary, just rebuild it and restart the nodes:

```
make build-linux localnet-stop localnet-start
make build-linux localnet-start
```

### Configuration
Expand All @@ -60,7 +103,8 @@ The `make localnet-start` creates files for a 4-node testnet in `./build` by
calling the `gaiad testnet` command. This outputs a handful of files in the
`./build` directory:

```tree -L 2 build/
```bash
$ tree -L 2 build/
build/
├── gaiacli
├── gaiad
Expand Down Expand Up @@ -124,7 +168,7 @@ Now that accounts exists, you may create new accounts and send those accounts
funds!

::: tip
**Note**: Each node's seed is located at `./build/nodeN/gaiacli/key_seed.json`.
**Note**: Each node's seed is located at `./build/nodeN/gaiacli/key_seed.json` and can be restored to the CLI using the `gaiacli keys add --restore` command
:::

### Special binaries
Expand All @@ -136,7 +180,7 @@ If you have multiple binaries with different names, you can specify which one to
BINARY=gaiafoo make localnet-start
```

## Remote Testnet
## Multi-node, remote, automated testnet

The following should be run from the [networks directory](https://github.com/cosmos/cosmos-sdk/tree/develop/networks).

Expand Down Expand Up @@ -205,23 +249,3 @@ You can install the DataDog agent with:
```
make datadog-install
```

### Single-node testnet

To create a single node testnet:

```
cd $GOPATH/src/github.com/cosmos/cosmos-sdk
# Clear the build folder
rm -rf ./build
# Build binary
make build-linux
# Create configuration
docker run -v `pwd`/build:/gaiad tendermint/gaiadnode testnet -o . --v 1
# Run the node
docker run -v `pwd`/build:/gaiad tendermint/gaiadnode
```

0 comments on commit ddab04e

Please sign in to comment.