docs: add testnet doc from @kidinamoto01
This commit is contained in:
parent
4c0a5a6c20
commit
c3cabbf786
|
@ -0,0 +1,211 @@
|
||||||
|
# Cosmos Testnet Setup
|
||||||
|
|
||||||
|
## Installment
|
||||||
|
|
||||||
|
Requirement :
|
||||||
|
|
||||||
|
[Go 1.9+](https://golang.org/dl/)
|
||||||
|
|
||||||
|
[dep](https://github.com/golang/dep)
|
||||||
|
|
||||||
|
### STEPS
|
||||||
|
|
||||||
|
**Get Source Code**
|
||||||
|
|
||||||
|
```
|
||||||
|
go get github.com/cosmos/cosmos-sdk
|
||||||
|
```
|
||||||
|
|
||||||
|
Now we can fetch the correct versions of each dependency by running:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd $GOPATH/src/github.com/cosmos/cosmos-sdk
|
||||||
|
git fetch --all
|
||||||
|
git checkout develop
|
||||||
|
make get_tools
|
||||||
|
make get_vendor_deps
|
||||||
|
make install
|
||||||
|
make install_examples
|
||||||
|
```
|
||||||
|
|
||||||
|
The latest cosmos-sdk should now be installed. Verify that everything is OK by running:
|
||||||
|
|
||||||
|
```
|
||||||
|
gaiad version
|
||||||
|
```
|
||||||
|
You should see:
|
||||||
|
|
||||||
|
```
|
||||||
|
0.15.0-rc1-9d90c6b
|
||||||
|
```
|
||||||
|
|
||||||
|
And also:
|
||||||
|
|
||||||
|
```
|
||||||
|
basecli version
|
||||||
|
```
|
||||||
|
|
||||||
|
You should see:
|
||||||
|
|
||||||
|
```
|
||||||
|
0.15.0-rc1-9d90c6b
|
||||||
|
```
|
||||||
|
|
||||||
|
### Local-Test Example
|
||||||
|
|
||||||
|
Here is a quick example to get you off your feet:
|
||||||
|
|
||||||
|
First, generate a new key with a name, and save the address:
|
||||||
|
```
|
||||||
|
MYNAME=<your name>
|
||||||
|
basecli keys new $MYNAME
|
||||||
|
basecli keys list
|
||||||
|
MYADDR=<your newly generated address>
|
||||||
|
```
|
||||||
|
Now initialize a gaia chain:
|
||||||
|
```
|
||||||
|
gaiad init --home=$HOME/.gaiad1
|
||||||
|
```
|
||||||
|
|
||||||
|
you should see seed phrase for genesis account in the output & config & data folder int the home directory
|
||||||
|
|
||||||
|
In the config folder, there will be the following file: config.toml , genesis.json, node_key.json ,priv_validator.json
|
||||||
|
|
||||||
|
The genesis file should look like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"genesis_time": "0001-01-01T00:00:00Z",
|
||||||
|
"chain_id": "test-chain-0TRiTa",
|
||||||
|
"validators": [
|
||||||
|
{
|
||||||
|
"pub_key": {
|
||||||
|
"type": "AC26791624DE60",
|
||||||
|
"value": "<value>"
|
||||||
|
},
|
||||||
|
"power": 10,
|
||||||
|
"name": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"app_hash": "",
|
||||||
|
"app_state": {
|
||||||
|
"accounts": [
|
||||||
|
{
|
||||||
|
"address": "<ADDR>",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 9007199254740992
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note: ** We need to change the denomination of token from default to `steak` in genesis file.
|
||||||
|
|
||||||
|
Then, recover the genesis account with `basecli`
|
||||||
|
|
||||||
|
```
|
||||||
|
basecli keys add <name> --recover
|
||||||
|
```
|
||||||
|
|
||||||
|
By now, you have set up the first node. This is great!
|
||||||
|
|
||||||
|
We can add a second node on our local machine by initiating a node in a new directory, and copying in the genesis.
|
||||||
|
|
||||||
|
```
|
||||||
|
gaiad init --home=$HOME/.gaiad2
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace the genesis file and toml file to another folder
|
||||||
|
|
||||||
|
```
|
||||||
|
cp $HOME/.gaiad/config/genesis.json $HOME/.gaiad2/config
|
||||||
|
cp $HOME/.gaiad/config/config.toml $HOME/.gaiad2/config
|
||||||
|
```
|
||||||
|
|
||||||
|
Get the node id of first node.
|
||||||
|
```
|
||||||
|
gaiad show_node_id --home=$HOME/.gaiad1
|
||||||
|
```
|
||||||
|
We need to also modify $HOME/.gaiad2/config.toml to set new seeds and ports. It should look like:
|
||||||
|
```
|
||||||
|
proxy_app = "tcp://127.0.0.1:46668"
|
||||||
|
moniker = "anonymous"
|
||||||
|
fast_sync = true
|
||||||
|
db_backend = "leveldb"
|
||||||
|
log_level = "state:info,*:error"
|
||||||
|
|
||||||
|
[rpc]
|
||||||
|
laddr = "tcp://0.0.0.0:46667"
|
||||||
|
|
||||||
|
[p2p]
|
||||||
|
laddr = "tcp://0.0.0.0:46666"
|
||||||
|
persistent_peers = "<node1-ID>@0.0.0.0:46656"
|
||||||
|
```
|
||||||
|
Great, now that we've initialized the chains, we can start both nodes in the background:
|
||||||
|
```
|
||||||
|
gaiad start --home=$HOME/.gaiad1 &> gaia1.log &
|
||||||
|
NODE1_PID=$!
|
||||||
|
gaia start --home=$HOME/.gaiad2 &> gaia2.log &
|
||||||
|
NODE2_PID=$!
|
||||||
|
```
|
||||||
|
Note we save the PID so we can later kill the processes. Of course, you can peak at your logs with tail gaia1.log, or follow them for a bit with tail -f gaia1.log.
|
||||||
|
Nice. We can also lookup the validator set:
|
||||||
|
|
||||||
|
```
|
||||||
|
basecli validatorset
|
||||||
|
```
|
||||||
|
There is only **one** validator now. Let's add another one!
|
||||||
|
First, we need to create a new account:
|
||||||
|
|
||||||
|
```
|
||||||
|
basecli keys new <NAME>
|
||||||
|
```
|
||||||
|
Check that we now have two accounts:
|
||||||
|
```
|
||||||
|
basecli keys list
|
||||||
|
```
|
||||||
|
Then, we try to transfer some `strak` to another account:
|
||||||
|
```
|
||||||
|
basecli send --amount=1000steak --to=$MYADDR2 --name=$NAME --chain-id=<CHAIN-ID> --node=tcp://localhost:46657 --sequence=0
|
||||||
|
```
|
||||||
|
**Note** We need to be careful with the `chain-id` & `sequence`
|
||||||
|
|
||||||
|
Check the balance & sequence by :
|
||||||
|
```
|
||||||
|
basecli account $MYADDR
|
||||||
|
```
|
||||||
|
We can see the balance of $MYADDR2 is 1000 now.
|
||||||
|
|
||||||
|
Findally, let's bind the validator in `$HOME/gaiad2`, get the pubkey first
|
||||||
|
```
|
||||||
|
cat $HOME/.gaiad2/config/priv_validator.json | jq .pub_key.value
|
||||||
|
```
|
||||||
|
|
||||||
|
Go to [this website](http://tomeko.net/online_tools/base64.php?lang=en) to change pubkey from base64 to Hex.
|
||||||
|
Ok, now we can bond some coins to that pubkey:
|
||||||
|
```
|
||||||
|
basecli bond --stake=1steak --validator=<validator-pubkey-hex> --sequence=0 --chain-id=<chain-id> --name=test
|
||||||
|
```
|
||||||
|
Nice. We can see there are two validators:
|
||||||
|
|
||||||
|
```
|
||||||
|
basecli validatorset
|
||||||
|
```
|
||||||
|
Check the balance of $MYADDR2 to see the difference: it has 1 less `steak`!
|
||||||
|
```
|
||||||
|
basecli account $MYADDR2
|
||||||
|
```
|
||||||
|
To confirm for certain the new validator is active, check tendermint:
|
||||||
|
```
|
||||||
|
curl localhost:46657/validators
|
||||||
|
```
|
||||||
|
Finally, to relinquish all your power, unbond some coins. You should see your VotingPower reduce and your account balance increase.
|
||||||
|
```
|
||||||
|
basecli unbond --sequence=# --chain-id=<chain-id> --name=test
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue