Init
Introduce
Define the parameters to be used when starting the treasurenet chain.
- BIN=treasurenetd :your gaiad binary name
- ALLOCATION="10000000000000000000000000000000000aunit,10000000000stake,10000000000footoken,10000000000footoken2,10000000000ibc/ nometadatatoken" : Define the tokens to be used
- KEY1="validator" : Create a secret key to save your account
- KEY2="orchestrator" : Create the secret key of the orchestrator to protect the relay account
- CHAINID="treasurenet_5005-1" : Treasurenet Chain ID
#!/bin/bash
set -eux
# your gaiad binary name
BIN=treasurenetd
ALLOCATION="100000000000000000000000000aunit,10000000000stake,10000000000footoken,10000000000footoken2,10000000000ibc/nometadatatoken"
KEY1="validator"
KEY2="orchestrator"
CHAINID="treasurenet_5005-1"
MONIKER="localtestnet"
KEYRING="test"
KEYALGO="eth_secp256k1"
LOGLEVEL="info"
TRACE="--trace"
GAIA_HOME="--home /root/.treasurenetd"
ARGS="$GAIA_HOME --keyring-backend test"validate dependencies are installed
command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; }
remove existing daemon and client
rm -rf ~/.treasurenet*
make install
command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; }
rm -rf ~/.treasurenet*
make install
Execute treasurenetd
Create or query application CLI configuration files
$BIN config keyring-backend $KEYRING
$BIN config chain-id $CHAINID
Generate a validator key, orchestrator key, and eth key for each validator
$BIN keys add $KEY1 --keyring-backend $KEYRING --algo $KEYALGO 2>> /data/validator-phrases
:Add a secret key to protect your account$BIN keys add $KEY2 --keyring-backend $KEYRING --algo $KEYALGO 2>> /data/orchestrator-phrases
: Add a secret key to protect the account on the repeater$BIN eth_keys add --keyring-backend $KEYRING >> /data/validator-eth-keys
: Add a secret key to protect your ethereum account
Set moniker and chain-id for Treasurenet (Moniker can be anything, chain-id must be an integer)
$BIN init $MONIKER --chain-id $CHAINID
: itializing NODE will produce a .treasurenetd file in the $HOME directory, which contains the files needed for the chain, such as: config.toml, genesis.json, data... etc.
$BIN config keyring-backend $KEYRING
$BIN config chain-id $CHAINID
GAIA_HOME="--home /root/.treasurenetd"
ARGS="$GAIA_HOME --keyring-backend test"
$BIN keys add $KEY1 --keyring-backend $KEYRING --algo $KEYALGO 2>> /data/validator-phrases
$BIN keys add $KEY2 --keyring-backend $KEYRING --algo $KEYALGO 2>> /data/orchestrator-phrases
$BIN eth_keys add --keyring-backend $KEYRING >> /data/validator-eth-keys
$BIN init $MONIKER --chain-id $CHAINIDChange parameter token denominations to aunit
cat $HOME/.treasurenetd/config/genesis.json | jq '.app_state["staking"]["params"]["bond_denom"]="aunit"' > $HOME/.treasurenetd/config/tmp_genesis.json && mv $HOME/.treasurenetd/config/tmp_genesis.json $HOME/.treasurenetd/config/genesis.json
cat $HOME/.treasurenetd/config/genesis.json | jq '.app_state["crisis"]["constant_fee"]["denom"]="aunit"' > $HOME/.treasurenetd/config/tmp_genesis.json && mv $HOME/.treasurenetd/config/tmp_genesis.json $HOME/.treasurenetd/config/genesis.json
cat $HOME/.treasurenetd/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="aunit"' > $HOME/.treasurenetd/config/tmp_genesis.json && mv $HOME/.treasurenetd/config/tmp_genesis.json $HOME/.treasurenetd/config/genesis.json
cat $HOME/.treasurenetd/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="aunit"' > $HOME/.treasurenetd/config/tmp_genesis.json && mv $HOME/.treasurenetd/config/tmp_genesis.json $HOME/.treasurenetd/config/genesis.jsonIncrease block time (?)
cat $HOME/.treasurenetd/config/genesis.json | jq '.consensus_params["block"]["time_iota_ms"]="1000"' > $HOME/.treasurenetd/config/tmp_genesis.json && mv $HOME/.treasurenetd/config/tmp_genesis.json $HOME/.treasurenetd/config/genesis.json
Set gas limit in genesis
cat $HOME/.treasurenetd/config/genesis.json | jq '.consensus_params["block"]["max_gas"]="10000000"' > $HOME/.treasurenetd/config/tmp_genesis.json && mv $HOME/.treasurenetd/config/tmp_genesis.json $HOME/.treasurenetd/config/genesis.json
disable produce empty block
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.treasurenetd/config/config.toml
else
sed -i 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.treasurenetd/config/config.toml
fiadd in denom metadata for both native tokens
jq '.app_state.bank.denom_metadata += [{"name": "Foo Token", "symbol": "FOO", "base": "footoken", display: "mfootoken", "description": "A non-staking test token", "denom_units": [{"denom": "footoken", "exponent": 0}, {"denom": "mfootoken", "exponent": 6}]},{"name": "Stake Token", "symbol": "STEAK", "base": "aunit", display: "unit", "description": "A staking test token", "denom_units": [{"denom": "aunit", "exponent": 0}, {"denom": "unit", "exponent": 18}]}]' /root/.treasurenetd/config/genesis.json > /treasurenet-footoken2-genesis.json
jq '.app_state.bank.denom_metadata += [{"name": "Foo Token2", "symbol": "F20", "base": "footoken2", display: "mfootoken2", "description": "A second non-staking test token", "denom_units": [{"denom": "footoken2", "exponent": 0}, {"denom": "mfootoken2", "exponent": 6}]}]' /treasurenet-footoken2-genesis.json > /treasurenet-bech32ibc-genesis.jsonSet the chain's native bech32 prefix
jq '.app_state.bech32ibc.nativeHRP = "treasurenet"' /treasurenet-bech32ibc-genesis.json > /gov-genesis.json
mv /gov-genesis.json /root/.treasurenetd/config/genesis.jsonAllocate genesis accounts (treasurenet formatted addresses)
VALIDATOR_KEY=$($BIN keys show validator -a $ARGS)
ORCHESTRATOR_KEY=$($BIN keys show orchestrator -a $ARGS)
$BIN add-genesis-account $ARGS $VALIDATOR_KEY $ALLOCATION
$BIN add-genesis-account $ARGS $ORCHESTRATOR_KEY $ALLOCATION
VALIDATOR_KEY=$($BIN keys show validator -a $ARGS)
ORCHESTRATOR_KEY=$($BIN keys show orchestrator -a $ARGS)
$BIN add-genesis-account $ARGS $VALIDATOR_KEY $ALLOCATION
$BIN add-genesis-account $ARGS $ORCHESTRATOR_KEY $ALLOCATIONSign genesis transaction
ORCHESTRATOR_KEY=$($BIN keys show orchestrator -a $ARGS)
ETHEREUM_KEY=$(grep address /validator-eth-keys | sed -n "1"p | sed 's/.*://')
-An gentx is created to perform the following tasks: 1) register the account that has been created as a validator for the operator's account of the validator; 2) self-delegate the token that provides the unit staked; 3) link the operator's account to the public key of the Treasurenet node that will be used to sign the block.
$BIN gentx $ARGS --moniker $MONIKER --chain-id=$CHAIN_ID validator 258000000000000000000aunit $ETHEREUM_KEY $ORCHESTRATOR_KEY
Collect genesis tx
$BIN collect-gentxs
: Add gentx to the genesis file
Run this to ensure everything worked and that the genesis file is setup correctly
$BIN validate-genesis
Start the node (remove the --pruning=nothing flag if historical queries are not needed)
$BIN start --pruning=nothing --log_level $LOGLEVEL --json-rpc.api eth,txpool,personal,net,debug,web3,miner --trace --json-rpc.address 0.0.0.0:8555
ORCHESTRATOR_KEY=$($BIN keys show orchestrator -a $ARGS)
ETHEREUM_KEY=$(grep address /validator-eth-keys | sed -n "1"p | sed 's/.*://')
$BIN gentx $ARGS --moniker $MONIKER --chain-id=$CHAIN_ID validator 258000000000000000000aunit $ETHEREUM_KEY $ORCHESTRATOR_KEY
$BIN collect-gentxs
$BIN start --pruning=nothing --log_level $LOGLEVEL --json-rpc.api eth,txpool,personal,net,debug,web3,miner --trace --json-rpc.address 0.0.0.0:8555