Go to file
Jeremiah Andrews 9fbfae6af5
minor fix
2018-06-08 12:56:09 -07:00
gaia-4000 added gaia-4000 files 2018-04-23 15:38:42 -03:00
gaia-5000 Add .json ending 2018-05-01 20:52:26 +02:00
gaia-5001 fix zack 2018-05-15 14:28:32 -04:00
gaia-6000 Last fixes 2018-06-07 16:45:57 -07:00
gaia-6001 Go through sanity checks and fix last errors in the invariants 2018-06-08 09:00:55 -07:00
gaia-tardigrade Fix more 2018-06-08 08:46:39 -07:00
internal-1 Update rige.json 2018-04-24 16:48:31 -04:00
internal-2 Add dashes 2018-04-30 16:08:51 -07:00
internal-3 fixes 2018-04-30 16:10:24 -07:00
internal-4 end brace 2018-05-31 22:02:38 +00:00
README.md minor fix 2018-06-08 12:56:09 -07:00
STATUS.md status: add headers 2018-06-05 18:20:43 -07:00

README.md

Connect to a Testnet

This document explains how to connect to the Testnet of a Cosmos-SDK based blockchain. It can be used to connect to the latest Testnet for the Cosmos Hub.

Software Setup (Manual Installation)

Follow these instructions to install the Cosmos-SDK and connect to the latest Testnet. This instructions work for both a local machine and a VM in a cloud server.

If you want to run a non-validator full-node, installing the SDK on a Cloud server is a good option. However, if you are want to become a validator for the Hub's mainnet you should look at more complex setups, including Sentry Node Architecture, to protect your node from DDOS and ensure high-availability (see the technical requirements). You can find more information on validators in our website, in the Validator FAQ and in the Validator Chat.

Install Go

Install go following the instructions in the official golang website. You will require Go 1.10+ for this tutorial.

Set GOPATH

First, you will need to set up your GOPATH. Make sure that the location $HOME is something like /Users/<username>, you can corroborate it by typing echo $HOME in your terminal.

Go to $HOME with the command cd $HOME and open the the hidden file .bashrc with a code editor and paste the following lines or `.bash_profile` if your're using OS X.

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Save and restart the terminal.

Note: If you can't see the hidden file, use the shortcut Command + Shift + . in Finder.

Install GNU Wget

MacOS

brew install wget

Linux

sudo apt-get install wget

Note: You can check other available options for downloading wget here.

Install Gaia

Now we can fetch the correct versions of each dependency by running:

mkdir -p $GOPATH/src/github.com/cosmos/cosmos-sdk
git clone https://github.com/cosmos/cosmos-sdk.git
git checkout v0.18.0-rc0
make get_tools // run $ make update_tools if already installed
make get_vendor_deps
make install

This will install the gaiad and gaiacli binaries. Verify that everything is OK by running:

gaiad version

You should see:

0.18.0-dev-af15f89

And also:

gaiacli version

You should see:

0.18.0-dev-af15f89

Full Node Setup

Clone the testnet repo.

git clone https://github.com/cosmos/testnets

mkdir -p $HOME/.gaiad/config
cp -a testnets/gaia-6000/genesis.json $HOME/.gaiad/config/genesis.json
gaiad unsafe_reset_all

Add a seed node by changing seed = "" in config.toml to seed = "80a35a46ce09cfb31ee220c8141a25e73e0b239b@35.198.166.171:46656".

Lastly change the moniker string in theconfig.tomlto identify your node.

# A custom human readable name for this node
moniker = "<your_custom_name>"

Upgrading from a previous network

These instructions are for anyone that ran a previous network and would like to upgrade to a newer version.

Remove the ephemeral files and reset the data.

rm $HOME/.gaiad/config/addrbook.json $HOME/.gaiad/config/genesis.json
gaiad unsafe_reset_all

Now your node is in a prestine state without changing your validator key. If you had any sentry nodes or full nodes setup correctly previously they should work.

Make sure that every node has a unique priv_validator.json. Do not copy the priv_validator.json from an old node to multiple new nodes. Running two nodes with the same priv_validator.json will cause you to double sign.\

Now it is time to upgrade the software.

cd $GOPATH/src/github.com/cosmos/cosmos-sdk
git fetch --all
git checkout v0.18.0-rc0
make update_tools
make get_vendor_deps
make install

The next step is to obtain the new genesis file from https://github.com/cosmos/testnets.

cd $HOME/testnets
git pull origin master

cp -a gaia-6001/genesis.json $HOME/.gaiad/config

The last step is the adjust the config.toml. Make sure that you are connected to healthy peers or seed nodes. These are some seeds nodes and they can be put into the config under the seeds key. Alternatively you can also ask user validators directly for a persistent peer and add it under the persisent_peers key.

80a35a46ce09cfb31ee220c8141a25e73e0b239b@cosmos.cryptium.ch:46656

Run a Full Node

Start the full node:

gaiad start

Check the everything is running smoothly:

gaiacli status

Generate keys

You'll need a private and public key pair a.k.a. `sk, pk` respectively to be able to receive funds, send txs, bond tx, etc.

To generate your a new key default _ed25519_ elliptic curve:

gaiacli keys add <your_key_name>

Next, you will have to enter a passphrase for your key twice. Save the seed phrase in a safe place in case you forget the password.

Now if you check your private keys you will see the <your_key_name> key among them:

gaiacli keys show <your_key_name>

You can see all your other available keys by typing:

gaiacli keys list

The validator pubkey from your node should be the same as the one printed with the command:

gaiad tendermint show_validator

Finally, save your address and pubkey into a variable to use them afterwards.

MYADDR=<your_newly_generated_address>
MYPUBKEY=<your_newly_generated_public_key>

IMPORTANT: We strongly recommend to NOT use the same passphrase for your different keys. The Tendermint team and the Interchain Foundation will not be responsible for the lost of funds.

Get coins

The best way to get coins at the moment is to ask in Riot chat. We plan to have a reliable faucet in future testnets.

Send tokens

gaiacli send --amount=1000fermion --chain-id=<name_of_testnet_chain> --sequence=0 --name=<key_name> --to=<destination_address>

The --amount flag defines the corresponding amount of the coin in the format --amount=<value|coin_name>

The --sequence flag corresponds to the sequence number to sign the tx.

Now check the destination account and your own account to check the updated balances by default the latest block:

gaiacli account <destination_address>
gaiacli account <your_address>

You can also check your balance at a given block by using the --block flag:

gaiacli account <your_address> --block=<block_height>

Run a Validator Node

Validators are actors from the network that are responsible from committing new blocks to the blockchain by submitting their votes. In terms of security, validators' stake is slashed in all the zones they belong if they become unavailable, double sign a transaction, or don't cast their votes. We strongly recommend entities intending to run validators in the Cosmos Hub's mainnet to check the technical requirements and take the necessary precautions to ensure high-availability, such as setting a Sentry Node architecture. If you have any question about validators, read the Validator FAQ and join the Validator Chat.

This section covers the instructions necessary to stake tokens to become a testnet validator candidate.

Your pubkey can be used to create a new validator candidate by staking some tokens:

You can find your node pubkey by running

gaiad tendermint show_validator

and this returns your public key for the declare-candidate command

gaiacli stake create-validator --amount=500steak --pubkey=<your_node_pubkey> --address-candidate=<your_address> --moniker=satoshi --chain-id=<name_of_the_testnet_chain> --sequence=1 --name=<key_name>

You can add more information of the validator candidate such as--website, --keybase-sig or additional --details. If you want to edit the candidate info:

gaiacli stake edit-validator --details="To the cosmos !" --website="https://cosmos.network"

Finally, you can check all the candidate information by typing:

gaiacli stake validator --address-candidate=<your_address> --chain-id=<name_of_the_testnet_chain>

To check that the validator is active you can find it on the validator set list:

gaiacli advanced tendermint validator-set

Note: Remember that to be in the validator set you need to have more total power than the Xnd validator, where X is the assigned size for the validator set by default _`X = 100`_.

Delegate your tokens

You can delegate _i.e._ bind Atoms to a validator to become a delegator and obtain a part of its fee revenue in Photons. For more information about the Cosmos Token Model, refer to our whitepaper.

Bond your tokens

Bond your tokens to a validator candidate with the following command:

gaiacli stake delegate --amount=10steak --address-delegator=<your_address> --address-candidate=<bonded_validator_address> --name=<key_name> --chain-id=<name_of_testnet_chain> --sequence=2

When tokens are bonded, they are pooled with all the other bonded tokens in the network. Validators and delegators obtain shares that represent their stake in this pool.

Unbond

If for any reason the validator misbehaves or you just want to unbond a certain amount of the bonded tokens:

gaiacli stake unbond --address-delegator=<your_address> --address-candidate=<bonded_validator_address> --shares=MAX --name=<key_name> --chain-id=<name_of_testnet_chain> --sequence=3

You can unbond a specific amount ofshareseg:`12.1` or all of them `MAX`.

You should now see the unbonded tokens reflected in your balance and in your delegator bond:

gaiacli account <your_address>
gaiacli stake delegation --address-delegator=<your_address> --address-candidate=<bonded_validator_address> --chain-id=<name_of_testnet_chain>