From 151747bc8111399c0978935dec045901f4e2cb10 Mon Sep 17 00:00:00 2001 From: Sai Kumar Date: Mon, 25 Oct 2021 18:35:59 +0530 Subject: [PATCH] docs: add testnet docs --- testnet/README.md | 7 ++ testnet/full-node.md | 174 +++++++++++++++++++++++++ testnet/genesis-validators.md | 230 ++++++++++++++++++++++++++++++++++ testnet/multinode_testnet.sh | 203 ++++++++++++++++++++++++++++++ testnet/validator-node.md | 51 ++++++++ 5 files changed, 665 insertions(+) create mode 100644 testnet/README.md create mode 100644 testnet/full-node.md create mode 100644 testnet/genesis-validators.md create mode 100644 testnet/multinode_testnet.sh create mode 100644 testnet/validator-node.md diff --git a/testnet/README.md b/testnet/README.md new file mode 100644 index 00000000..a57b6894 --- /dev/null +++ b/testnet/README.md @@ -0,0 +1,7 @@ +# Testnet + +## Setup Local ethermint multi node + +```shell +$ bash multinode_testnet.sh +``` diff --git a/testnet/full-node.md b/testnet/full-node.md new file mode 100644 index 00000000..edbfdd29 --- /dev/null +++ b/testnet/full-node.md @@ -0,0 +1,174 @@ +# Instructions to Run Full Node + +Hardware +--- + +#### Supported + +- **Operating System (OS):** Ubuntu 20.04 +- **CPU:** 1 core +- **RAM:** 2GB +- **Storage:** 25GB SSD + +#### Recommended + +- **Operating System (OS):** Ubuntu 20.04 +- **CPU:** 2 core +- **RAM:** 4GB +- **Storage:** 50GB SSD + +# A) Setup + +## 1) Install Golang (go) + +1.1) Remove any existing installation of `go` + +``` +sudo rm -rf /usr/local/go +``` + +1.2) Install latest/required Go version (installing `go1.16.7`) + +``` +curl https://dl.google.com/go/go1.16.7.linux-amd64.tar.gz | sudo tar -C/usr/local -zxvf - +``` + +1.3) Update env variables to include `go` + +``` +cat <<'EOF' >>$HOME/.profile +export GOROOT=/usr/local/go +export GOPATH=$HOME/go +export GO111MODULE=on +export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin +EOF + +source $HOME/.profile +``` + +1.4) Check the version of go installed + +``` +go version +``` + +### 2) Install required software packages + +``` +sudo apt-get install git curl build-essential make jq -y +``` + +### 3) Install `ethermint` + +``` +git clone https://github.com/vulcanize/ethermint.git +cd ethermint +git fetch --all +git checkout v0.1.0-dev +make install +``` + +### 4) Verify your installation + +``` +ethermintd version --long +``` + +On running the above command, you should see a similar response like this. Make sure that the *version* and *commit +hash* are accurate + +``` +name: ethermint +server_name: ethermintd +``` + +### 5) Initialize Node + +**Not required if you have already initialized before** + +``` +ethermintd init --chain-id ethermint_9000-1 +``` + +On running the above command, node will be initialized with default configuration. (config files will be saved in node's +default home directory (~/.ethermintd/config) + +NOTE: Backup node and validator keys . You will need to use these keys at a later point in time. + +--- + +**Execute below instructions only after publishing of final genesis file** + +genesis file will be published to [vulcanize//testnets/ethermint_9000-1](https://github.com/vulcanize/testnets) + +# B) Starting Node + +TBU + +``` + +## 3) Start the Node + +#### 3.1) Start node as `systemctl` service + +3.1.1) Create the service file + +``` + +sudo tee /etc/systemd/system/ethermintd.service > /dev/null <>$HOME/.profile +export GOROOT=/usr/local/go +export GOPATH=$HOME/go +export GO111MODULE=on +export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin +EOF + +source $HOME/.profile +``` + +1.4) Check the version of go installed + +``` +go version +``` + +### 2) Install required software packages + +``` +sudo apt-get install git curl build-essential make jq -y +``` + +### 3) Install `ethermint` + +``` +git clone https://github.com/vulcanize/ethermint.git +cd ethermint +git fetch --all +git checkout v0.1.0-dev +make install +``` + +### 4) Verify your installation + +``` +ethermintd version --long +``` + +On running the above command, you should see a similar response like this. Make sure that the *version* and *commit +hash* are accurate + +``` +name: ethermint +server_name: ethermintd +``` + +### 5) Initialize Node + +**Not required if you have already initialized before** + +``` +ethermintd init --chain-id ethermint_9000-1 +``` + +On running the above command, node will be initialized with default configuration. (config files will be saved in node's +default home directory (~/.ethermintd/config) + +NOTE: Backup node and validator keys . You will need to use these keys at a later point in time. + +--- + +## 6) Create Account keys + +if you have participated in previous testnet and have mnemonic phrase, use below command to recover your account + +``` +ethermintd keys add --recover +``` + +to create new account + +``` +ethermintd keys add +``` + +NOTE: Save `mnemonic` and related account details (public key). You will need to use the need mnemonic/private key to +recover accounts at a later point in time. + +## 7) Add Genesis Account + +``` +ethermintd add-genesis-account 50000000uwire +``` + +## 8) Create Your `gentx` + +``` +ethermintd gentx 50000000uwire \ + --pubkey=$(ethermintd tendermint show-validator) \ + --chain-id="ethermint_9000-1" \ + --moniker="my-moniker" \ + --website="https://yourweb.site" \ + --details="description of my validator" \ + --commission-rate="0.10" \ + --commission-max-rate="0.20" \ + --commission-max-change-rate="0.01" \ + --min-self-delegation="1" +``` + +Note: + +- `` and `chain-id` are required. other flags are optional +- Don't change amount value while creating your gentx +- Genesis transaction file will be saved in `~/.ethermintd/config/gentx` folder + +## 9) Submit Your gentx + +Submit your `gentx` file to the [testnets]() in the format of +`-gentx.json` + +NOTE: (Do NOT use space in the file name) + +To submit the gentx file, follow the below process: + +- Fork the [testnets]() repository +- Upload your gentx file in `ethermint_9000-1/gentxs` folder +- Submit Pull Request to [testnets]() with name `ADD gentx` + +--- + +**Execute below instructions only after publishing of final genesis file** + +genesis file will be published to [testnets/ethermint_9000-1]() + +# B) Starting the validator + +TBU + +## 3) Start the Node + +#### 3.1) Start node as `systemctl` service + +3.1.1) Create the service file Note: this step is not required if you did setup before + +``` +sudo tee /etc/systemd/system/ethermintd.service > /dev/null <$DAEMON_HOME_1.log & +sleep 5s +echo "Checking $DAEMON_HOME_1 chain status" +$DAEMON status --node tcp://localhost:16657 + +nohup $(which $DAEMON) start --gql-playground --gql-server --home $DAEMON_HOME_2 >$DAEMON_HOME_2.log & +sleep 5s +echo "Checking $DAEMON_HOME_2 chain status" +$DAEMON status --node tcp://localhost:26657 + +nohup $(which $DAEMON) start --gql-playground --gql-server --home $DAEMON_HOME_3 >$DAEMON_HOME_3.log & +sleep 5s +echo "Checking $DAEMON_HOME_3 chain status" +$DAEMON status --node tcp://localhost:36657 + +nohup $(which $DAEMON) start --gql-playground --gql-server --home $DAEMON_HOME_4 >$DAEMON_HOME_4.log & +sleep 5s +echo "Checking $DAEMON_HOME_4 chain status" +$DAEMON status --node tcp://localhost:46657 diff --git a/testnet/validator-node.md b/testnet/validator-node.md new file mode 100644 index 00000000..8f5eb29f --- /dev/null +++ b/testnet/validator-node.md @@ -0,0 +1,51 @@ +### Create Validator Post Genesis + +1. Run Full Node +2. Create Account and Get test tokens +3. Create Validator + +### 1.Run Full Node + +- Check "[Run Full Node](full-node.md)" section to Run a Full Node + +### 2. Create Account & Get test tokens + +``` +ethermintd keys add +``` + +NOTE: Save `mnemonic` and related account details (public key). You will need to use the need mnemonic/private key to +recover accounts at a later point in time. + +##### Get Test tokens from faucet + +- TBU + +### 3.Create Validator + +- ##### Check full node sync status + + `ethermintd status 2>&1 | jq -r ".SyncInfo"` + + `catching_up: false` means node is completely synced +- ##### Create validator + +`Note:` Only execute below transaction after complete sync of your full node + +``` +ethermintd tx staking create-validator \ + --amount=1000000uwire \ + --pubkey=$(ethermintd tendermint show-validator) \ + --moniker="my-moniker" \ + --website="https://myweb.site" \ + --details="description of your validator" \ + --chain-id="flixnet-2" \ + --commission-rate="0.10" \ + --commission-max-rate="0.20" \ + --commission-max-change-rate="0.01" \ + --min-self-delegation="1" \ + --gas="auto" \ + --gas-adjustment="1.2" \ + --gas-prices="0.025uwire" \ + --from= +```