update README with previous CLI
This commit is contained in:
commit
980a9a5be5
158
README.md
158
README.md
|
@ -1,6 +1,94 @@
|
||||||
# Deploy a Testnet
|
# Deploy a Testnet
|
||||||
|
|
||||||
## Starting Gaiad
|
## Setup
|
||||||
|
|
||||||
|
If you're running a full node validator we recommend you to comply with the necessary [technical requirements](https://github.com/cosmos/cosmos/blob/master/VALIDATORS_FAQ.md#technical-requirements). You can check more information regarding validators in our [website](https://cosmos.network/validators) or in the [validator FAQ](https://cosmos.network/resources/validator-faq).
|
||||||
|
|
||||||
|
### Install the SDK on a Cloud Server
|
||||||
|
|
||||||
|
You can set up a cloud server of your choice to run a non-validator full node.
|
||||||
|
|
||||||
|
#### Digital Ocean Droplet
|
||||||
|
|
||||||
|
Follow these commands to install the SDK on a Digital Ocean [Droplet](https://www.digitalocean.com/products/droplets/):
|
||||||
|
|
||||||
|
```
|
||||||
|
export PATH=$PATH:/usr/lib/go-1.10/bin
|
||||||
|
export PATH=$PATH:/root/go/bin
|
||||||
|
bash <(curl -s https://gist.github.com/melekes/1bd57c73646de97c8f6cbe1b780eb822/raw/2447b0fbf95775852c93a91ed3e12631c7ceb648/install.sh)
|
||||||
|
nohup ./build/gaiad start &
|
||||||
|
```
|
||||||
|
|
||||||
|
### Software Setup (Manual Installation)
|
||||||
|
|
||||||
|
|
||||||
|
#### Install [GNU Wget](https://www.gnu.org/software/wget/)
|
||||||
|
|
||||||
|
**MacOS**
|
||||||
|
|
||||||
|
```
|
||||||
|
brew install wget
|
||||||
|
```
|
||||||
|
|
||||||
|
**Linux**
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo apt-get install wget
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: You can check other available options for downloading `wget` [here](https://www.gnu.org/software/wget/faq.html#download).
|
||||||
|
|
||||||
|
#### Install binaries
|
||||||
|
|
||||||
|
Cosmos SDK can be installed to `$GOPATH/src/github.com/cosmos/cosmos-sdk` like a normal Go program:
|
||||||
|
|
||||||
|
```
|
||||||
|
go get github.com/cosmos/cosmos-sdk
|
||||||
|
cd $GOPATH/src/github.com/cosmos/cosmos-sdk
|
||||||
|
git fetch --all
|
||||||
|
git checkout 0f2aa6b
|
||||||
|
make get_tools // run $ make update_tools if already installed
|
||||||
|
make get_vendor_deps
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
This will install `gaiad` and `gaiacli` and four example binaries: `basecoind`, `basecli`, `democoind`, and `democli`. Verify that everything is OK by running:
|
||||||
|
|
||||||
|
```
|
||||||
|
gaiad version
|
||||||
|
gaiacli version
|
||||||
|
```
|
||||||
|
|
||||||
|
You should see in both cases:
|
||||||
|
|
||||||
|
```
|
||||||
|
0.15.0-rc0-0f2aa6b
|
||||||
|
```
|
||||||
|
|
||||||
|
### Genesis Setup
|
||||||
|
|
||||||
|
Now that we have completed the basic SDK setup, we can start working on the genesis configuration for the chain we want to connect to. Initiliaze `gaiad` :
|
||||||
|
|
||||||
|
```
|
||||||
|
gaiad init
|
||||||
|
```
|
||||||
|
|
||||||
|
You can find the corresponding genesis files [here](https://github.com/cosmos/testnets). Then replace the `genesis.json` and `config.toml` files:
|
||||||
|
|
||||||
|
```
|
||||||
|
wget -O $HOME/.gaiad/config/genesis.json https://raw.githubusercontent.com/cosmos/testnet/master/gaia-4000/genesis.json
|
||||||
|
|
||||||
|
wget -O $HOME/.gaiad/config/config.toml https://raw.githubusercontent.com/cosmos/testnet/master/gaia-4000/config.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
Lastly change the `moniker` string in the `config.toml` to identify your node.
|
||||||
|
|
||||||
|
```
|
||||||
|
# A custom human readable name for this node
|
||||||
|
moniker = "<your_custom_name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running a Full Node
|
||||||
|
|
||||||
Start the full node:
|
Start the full node:
|
||||||
|
|
||||||
|
@ -14,7 +102,7 @@ Check the everything is running smoothly:
|
||||||
gaiacli status
|
gaiacli status
|
||||||
```
|
```
|
||||||
|
|
||||||
## Generate keys
|
### 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.
|
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.
|
||||||
|
|
||||||
|
@ -25,37 +113,46 @@ KEYNAME=<set_a_name_for_your_new_key>
|
||||||
gaiacli keys add $KEYNAME
|
gaiacli keys add $KEYNAME
|
||||||
```
|
```
|
||||||
|
|
||||||
Next, you will have to enter a passphrase for your`$KEYNAME`key twice. Save the _seed phrase _in a safe place in case you forget the password.
|
Next, you will have to enter a passphrase for your `$KEYNAME` 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 `$KEYNAME `key among them:
|
Now if you check your private keys you will see the `$KEYNAME` key among them with the value of your `address`:
|
||||||
|
|
||||||
```
|
```
|
||||||
gaiacli keys show $KEYNAME
|
gaiacli keys show $KEYNAME
|
||||||
```
|
```
|
||||||
|
|
||||||
You can see your other available keys by typing:
|
You can see all your other available keys by typing:
|
||||||
|
|
||||||
```
|
```
|
||||||
gaiacli keys list
|
gaiacli keys list
|
||||||
```
|
```
|
||||||
|
|
||||||
Save your address and pubkey into a variable
|
Now get your public key by typing:
|
||||||
|
|
||||||
|
```
|
||||||
|
gaiad show_validator
|
||||||
|
```
|
||||||
|
|
||||||
|
You'll get the `value` of your `pk` in `base64` format and the `type` of it
|
||||||
|
To convert your `pk` to `hex` go to this [website](https://cryptii.com/base64-to-hex) and paste the value of the public key in the left box. On the right, select `Group By: None` to covert it.
|
||||||
|
|
||||||
|
Finally, save your address and pubkey into a variable
|
||||||
|
|
||||||
```
|
```
|
||||||
MYADDR=<your_newly_generated_address>
|
MYADDR=<your_newly_generated_address>
|
||||||
MYPUBKEY=<your_newly_generated_public_key>
|
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._
|
**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.
|
||||||
|
|
||||||
## Getting Coins
|
### Getting coins
|
||||||
|
|
||||||
Go to the faucet in [http://atomexplorer.com/](http://atomexplorer.com/) and claim some coins for your testnet by typing the address of your key, as printed out above.
|
Go to the faucet in [http://atomexplorer.com/](http://atomexplorer.com/) and claim some coins for your testnet by typing the address of your key, as printed out above.
|
||||||
|
|
||||||
## Send tokens
|
### Send tokens
|
||||||
|
|
||||||
```
|
```
|
||||||
gaiacli send --from=$MYADDR --amount=1000fermion --chain-id=<name_of_testnet_chain> --sequence=1 --name=$KEYNAME --to=<destination_address>
|
gaiacli --amount=1000fermion --chain-id=<name_of_testnet_chain> --sequence=1 --name=$KEYNAME --to=<destination_address>
|
||||||
```
|
```
|
||||||
|
|
||||||
The `--amount` flag defines the corresponding amount of the coin in the format `--amount=<value|coin_name>`
|
The `--amount` flag defines the corresponding amount of the coin in the format `--amount=<value|coin_name>`
|
||||||
|
@ -88,64 +185,39 @@ gaiacli send --from=$MYADDR --amount=1000fermion --fee=1fermion --chain-id=<name
|
||||||
The command to `transfer` tokens to other chain is the same as `send`, we just need to add the `--chain` flag:
|
The command to `transfer` tokens to other chain is the same as `send`, we just need to add the `--chain` flag:
|
||||||
|
|
||||||
```
|
```
|
||||||
gaiacli transfer --from=$MYADDR --amount=20fermion --chain-id=<name_of_testnet_chain> --chain=<destination_chain> --sequence=1 --name=$KEYNAME --to=<sidechain_destination_address>
|
gaiacli transfer --amount=20fermion --chain-id=<name_of_testnet_chain> --chain=<destination_chain> --sequence=1 --name=$KEYNAME --to=<sidechain_destination_address>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Staking: Add a Validator
|
## Become a Validator
|
||||||
|
|
||||||
Get your public key by typing:
|
You can become a validator candidate by staking some tokens:
|
||||||
|
|
||||||
```
|
|
||||||
gaiad show_validator
|
|
||||||
```
|
|
||||||
|
|
||||||
The returned value is your validator address in hex. This can be used to create a new validator candidate by staking some tokens:
|
|
||||||
|
|
||||||
```
|
|
||||||
gaiacli declare-candidacy --amount=500fermions --pubkey=$PUBKEY --address-candidate=$MYADDR --moniker=satoshi --chain-id=<name_of_the_testnet_chain> --sequence=1 --name=$KEYNAME
|
|
||||||
```
|
|
||||||
|
|
||||||
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 edit-candidacy --details="To the cosmos !" --website="https://cosmos.network"
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, you can check all the candidate information by typing:
|
|
||||||
|
|
||||||
```
|
|
||||||
gaiacli candidate --address-candidate=$MYADDR --chain-id=<name_of_the_testnet_chain>
|
|
||||||
```
|
|
||||||
|
|
||||||
To check that the validator is active you can find it on the validator set list:
|
To check that the validator is active you can find it on the validator set list:
|
||||||
|
|
||||||
```
|
```
|
||||||
basecli validatorset <height>
|
gaiacli validatorset
|
||||||
```
|
```
|
||||||
|
|
||||||
\*_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`_\). _
|
**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`_\).
|
||||||
|
|
||||||
#### Delegating: Bonding and unbonding to a validator
|
#### Delegating: Bonding and unbonding to a validator
|
||||||
|
|
||||||
You can delegate \(i.e. bind\) **Atoms** to a validator to obtain a part of its fee revenue in exchange \(the fee token in the Cosmos Hub are **Photons**\).
|
You can delegate \(i.e. bind\) **Atoms** to a validator to obtain a part of its fee revenue in exchange \(the fee token in the Cosmos Hub are **Photons**\).
|
||||||
|
|
||||||
```
|
```
|
||||||
gaiacli delegate --amount=10fermion --address-delegator=$MYADDR --address-candidate=<bonded_validator_address> --shares=MAX --name=$KEYNAME --chain-id=<name_of_testnet_chain> --sequence=1
|
gaiacli bond --stake=10fermion --validator=<bonded_validator_address> --name=$KEYNAME --chain-id=<name_of_testnet_chain> --sequence=1
|
||||||
```
|
```
|
||||||
|
|
||||||
If for any reason the validator misbehaves or you just want to unbond a certain amount of the bonded tokens:
|
If for any reason the validator misbehaves or you just want to unbond a certain amount of the bonded tokens:
|
||||||
|
|
||||||
```
|
```
|
||||||
gaiacli unbond --address-delegator=$MYADDR --address-candidate=<bonded_validator_address> --shares=MAX --name=$KEYNAME --chain-id=<name_of_testnet_chain> --sequence=1
|
gaiacli unbond --name=$KEYNAME --chain-id=<name_of_testnet_chain> --sequence=1
|
||||||
```
|
```
|
||||||
|
|
||||||
You can unbond a specific amount of`shares`\(eg:`12.1`\) or all of them \(`MAX`\).
|
You should now see the unbonded tokens reflected in your balance:
|
||||||
|
|
||||||
You should now see the unbonded tokens reflected in your balance and in your delegator bond :
|
|
||||||
|
|
||||||
```
|
```
|
||||||
gaiacli account $MYADDR
|
gaiacli account $MYADDR
|
||||||
gaiacli delegator-bond --address-delegator=$MYADDR --address-candidate=<bonded_validator_address> --chain-id=<name_of_testnet_chain>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Relaying
|
#### Relaying
|
||||||
|
|
|
@ -0,0 +1,170 @@
|
||||||
|
# This is a TOML config file.
|
||||||
|
# For more information, see https://github.com/toml-lang/toml
|
||||||
|
|
||||||
|
##### main base config options #####
|
||||||
|
|
||||||
|
# TCP or UNIX socket address of the ABCI application,
|
||||||
|
# or the name of an ABCI application compiled in with the Tendermint binary
|
||||||
|
proxy_app = "tcp://127.0.0.1:46658"
|
||||||
|
|
||||||
|
# A custom human readable name for this node
|
||||||
|
moniker = "XXX"
|
||||||
|
|
||||||
|
# If this node is many blocks behind the tip of the chain, FastSync
|
||||||
|
# allows them to catchup quickly by downloading blocks in parallel
|
||||||
|
# and verifying their commits
|
||||||
|
fast_sync = true
|
||||||
|
|
||||||
|
# Database backend: leveldb | memdb
|
||||||
|
db_backend = "leveldb"
|
||||||
|
|
||||||
|
# Database directory
|
||||||
|
db_path = "data"
|
||||||
|
|
||||||
|
# Output level for logging, including package level options
|
||||||
|
log_level = "main:info,state:info,*:error"
|
||||||
|
|
||||||
|
##### additional base config options #####
|
||||||
|
|
||||||
|
# Path to the JSON file containing the initial validator set and other meta data
|
||||||
|
genesis_file = "config/genesis.json"
|
||||||
|
|
||||||
|
# Path to the JSON file containing the private key to use as a validator in the consensus protocol
|
||||||
|
priv_validator_file = "config/priv_validator.json"
|
||||||
|
|
||||||
|
# Path to the JSON file containing the private key to use for node authentication in the p2p protocol
|
||||||
|
node_key_file = "config/node_key.json"
|
||||||
|
|
||||||
|
# Mechanism to connect to the ABCI application: socket | grpc
|
||||||
|
abci = "socket"
|
||||||
|
|
||||||
|
# TCP or UNIX socket address for the profiling server to listen on
|
||||||
|
prof_laddr = ""
|
||||||
|
|
||||||
|
# If true, query the ABCI app on connecting to a new peer
|
||||||
|
# so the app can decide if we should keep the connection or not
|
||||||
|
filter_peers = false
|
||||||
|
|
||||||
|
##### advanced configuration options #####
|
||||||
|
|
||||||
|
##### rpc server configuration options #####
|
||||||
|
[rpc]
|
||||||
|
|
||||||
|
# TCP or UNIX socket address for the RPC server to listen on
|
||||||
|
laddr = "tcp://0.0.0.0:46657"
|
||||||
|
|
||||||
|
# TCP or UNIX socket address for the gRPC server to listen on
|
||||||
|
# NOTE: This server only supports /broadcast_tx_commit
|
||||||
|
grpc_laddr = ""
|
||||||
|
|
||||||
|
# Activate unsafe RPC commands like /dial_seeds and /unsafe_flush_mempool
|
||||||
|
unsafe = false
|
||||||
|
|
||||||
|
##### peer to peer configuration options #####
|
||||||
|
[p2p]
|
||||||
|
|
||||||
|
# Address to listen for incoming connections
|
||||||
|
laddr = "tcp://0.0.0.0:46656"
|
||||||
|
|
||||||
|
# Comma separated list of seed nodes to connect to
|
||||||
|
seeds = ""
|
||||||
|
|
||||||
|
# Comma separated list of nodes to keep persistent connections to
|
||||||
|
# Do not add private peers to this list if you don't want them advertised
|
||||||
|
persistent_peers = "2871265b0b659a75539342577e4d7b301a21c6ec@67.207.71.85:46656,242048f0f71f2a60881913c2e8f8cf4144e0f175@159.65.211.28:46656"
|
||||||
|
|
||||||
|
# Path to address book
|
||||||
|
addr_book_file = "config/addrbook.json"
|
||||||
|
|
||||||
|
# Set true for strict address routability rules
|
||||||
|
addr_book_strict = true
|
||||||
|
|
||||||
|
# Time to wait before flushing messages out on the connection, in ms
|
||||||
|
flush_throttle_timeout = 100
|
||||||
|
|
||||||
|
# Maximum number of peers to connect to
|
||||||
|
max_num_peers = 50
|
||||||
|
|
||||||
|
# Maximum size of a message packet payload, in bytes
|
||||||
|
max_packet_msg_payload_size = 1024
|
||||||
|
|
||||||
|
# Rate at which packets can be sent, in bytes/second
|
||||||
|
send_rate = 512000
|
||||||
|
|
||||||
|
# Rate at which packets can be received, in bytes/second
|
||||||
|
recv_rate = 512000
|
||||||
|
|
||||||
|
# Set true to enable the peer-exchange reactor
|
||||||
|
pex = true
|
||||||
|
|
||||||
|
# Seed mode, in which node constantly crawls the network and looks for
|
||||||
|
# peers. If another node asks it for addresses, it responds and disconnects.
|
||||||
|
#
|
||||||
|
# Does not work if the peer-exchange reactor is disabled.
|
||||||
|
seed_mode = false
|
||||||
|
|
||||||
|
# Authenticated encryption
|
||||||
|
auth_enc = true
|
||||||
|
|
||||||
|
# Comma separated list of peer IDs to keep private (will not be gossiped to other peers)
|
||||||
|
private_peer_ids = ""
|
||||||
|
|
||||||
|
##### mempool configuration options #####
|
||||||
|
[mempool]
|
||||||
|
|
||||||
|
recheck = true
|
||||||
|
recheck_empty = true
|
||||||
|
broadcast = true
|
||||||
|
wal_dir = "data/mempool.wal"
|
||||||
|
|
||||||
|
##### consensus configuration options #####
|
||||||
|
[consensus]
|
||||||
|
|
||||||
|
wal_file = "data/cs.wal/wal"
|
||||||
|
wal_light = false
|
||||||
|
|
||||||
|
# All timeouts are in milliseconds
|
||||||
|
timeout_propose = 3000
|
||||||
|
timeout_propose_delta = 500
|
||||||
|
timeout_prevote = 1000
|
||||||
|
timeout_prevote_delta = 500
|
||||||
|
timeout_precommit = 1000
|
||||||
|
timeout_precommit_delta = 500
|
||||||
|
timeout_commit = 1000
|
||||||
|
|
||||||
|
# Make progress as soon as we have all the precommits (as if TimeoutCommit = 0)
|
||||||
|
skip_timeout_commit = false
|
||||||
|
|
||||||
|
# BlockSize
|
||||||
|
max_block_size_txs = 10000
|
||||||
|
max_block_size_bytes = 1
|
||||||
|
|
||||||
|
# EmptyBlocks mode and possible interval between empty blocks in seconds
|
||||||
|
create_empty_blocks = true
|
||||||
|
create_empty_blocks_interval = 0
|
||||||
|
|
||||||
|
# Reactor sleep duration parameters are in milliseconds
|
||||||
|
peer_gossip_sleep_duration = 100
|
||||||
|
peer_query_maj23_sleep_duration = 2000
|
||||||
|
|
||||||
|
##### transactions indexer configuration options #####
|
||||||
|
[tx_index]
|
||||||
|
|
||||||
|
# What indexer to use for transactions
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# 1) "null" (default)
|
||||||
|
# 2) "kv" - the simplest possible indexer, backed by key-value storage (defaults to levelDB; see DBBackend).
|
||||||
|
indexer = "kv"
|
||||||
|
|
||||||
|
# Comma-separated list of tags to index (by default the only tag is tx hash)
|
||||||
|
#
|
||||||
|
# It's recommended to index only a subset of tags due to possible memory
|
||||||
|
# bloat. This is, of course, depends on the indexer's DB and the volume of
|
||||||
|
# transactions.
|
||||||
|
index_tags = ""
|
||||||
|
|
||||||
|
# When set to true, tells indexer to index all tags. Note this may be not
|
||||||
|
# desirable (see the comment above). IndexTags has a precedence over
|
||||||
|
# IndexAllTags (i.e. when given both, IndexTags will be indexed).
|
||||||
|
index_all_tags = false
|
|
@ -0,0 +1,148 @@
|
||||||
|
{
|
||||||
|
"genesis_time": "0001-01-01T00:00:00Z",
|
||||||
|
"chain_id": "gaia-4000",
|
||||||
|
"validators": [
|
||||||
|
{
|
||||||
|
"pub_key": {
|
||||||
|
"type": "AC26791624DE60",
|
||||||
|
"value": "xVpJhOmDiGte+gMqJybHd8B4GDn1lcoA2oanzFhWybI="
|
||||||
|
},
|
||||||
|
"power": 1000,
|
||||||
|
"name": "adrian-67"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pub_key": {
|
||||||
|
"type": "AC26791624DE60",
|
||||||
|
"value": "aKHNZKaGKoYJysWthvRGwUslEhNr5F5s/RpttUNh5EU="
|
||||||
|
},
|
||||||
|
"power": 1000,
|
||||||
|
"name": "adrian-159"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"app_hash": "",
|
||||||
|
"app_state": {
|
||||||
|
"accounts": [
|
||||||
|
{
|
||||||
|
"address": "FD8DA5F512A59A30F8698E3CA638D384A68DF977",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 1000000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "adriancoin",
|
||||||
|
"amount": 33333333
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "photon",
|
||||||
|
"amount": 10000000000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "D86F1E517FC94401BF3AA5FC5667CCB05A2179DC",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "chriscoin",
|
||||||
|
"amount": 33333333
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "BE537272ABBDB84E92908F40685FC04F3F83D036",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "mikecoin",
|
||||||
|
"amount": 100000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "ED25519CD750083D289A4859091A9B6EE43AF91D",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "nickcoin",
|
||||||
|
"amount": 33333333
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "5D9C04412AE20040A0A1618B2A8724DAD9BB8700",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "bianjiecoin",
|
||||||
|
"amount": 33333333
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "8363D802166CD0A0AEDFF44CF1F7A78CD3F94D6F",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "cybermonies",
|
||||||
|
"amount": 1337
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "E1DDCCAAFFECDBEC074947E02F1DEE1CE8C8BA0D",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "linocoin",
|
||||||
|
"amount": 33333333
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "94933F0B43263C24422A72D2AB2C2823D1D23662",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "nuevaxcoin",
|
||||||
|
"amount": 33333333
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "C446B86801B1B67A46C6FABDE7FC7F448755D83F",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "steak",
|
||||||
|
"amount": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"denom": "paulcoin",
|
||||||
|
"amount": 33333333
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
{"chain_id":"internal-1","node_id":"a2dd1751ddcc480710bb06bb3fd93cdb43a62d9f","ip":"94.130.9.167","app_state":{
|
||||||
|
"accounts": [
|
||||||
|
{
|
||||||
|
"address": "0809BCA4DA5C8E44C29FD222AD540842049F1AF6",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "fermion",
|
||||||
|
"amount": 1000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"stake": {
|
||||||
|
"pool": {
|
||||||
|
"total_supply": 100,
|
||||||
|
"bonded_shares": {
|
||||||
|
"num": 100,
|
||||||
|
"denom": 1
|
||||||
|
},
|
||||||
|
"unbonded_shares": {
|
||||||
|
"num": 0,
|
||||||
|
"denom": 1
|
||||||
|
},
|
||||||
|
"bonded_pool": 100,
|
||||||
|
"unbonded_pool": 0,
|
||||||
|
"inflation_last_time": 0,
|
||||||
|
"inflation": {
|
||||||
|
"num": 7,
|
||||||
|
"denom": 100
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"inflation_rate_change": {
|
||||||
|
"num": 13,
|
||||||
|
"denom": 100
|
||||||
|
},
|
||||||
|
"inflation_max": {
|
||||||
|
"num": 20,
|
||||||
|
"denom": 100
|
||||||
|
},
|
||||||
|
"inflation_min": {
|
||||||
|
"num": 7,
|
||||||
|
"denom": 100
|
||||||
|
},
|
||||||
|
"goal_bonded": {
|
||||||
|
"num": 67,
|
||||||
|
"denom": 100
|
||||||
|
},
|
||||||
|
"max_validators": 100,
|
||||||
|
"bond_denom": "fermion"
|
||||||
|
},
|
||||||
|
"candidates": [
|
||||||
|
{
|
||||||
|
"status": 1,
|
||||||
|
"owner": "0809BCA4DA5C8E44C29FD222AD540842049F1AF6",
|
||||||
|
"pub_key": {
|
||||||
|
"type": "AC26791624DE60",
|
||||||
|
"value": "F5qF1KbyNuCGcUEVNPHOirrQzMPc1j1HeQjnArVWhBU="
|
||||||
|
},
|
||||||
|
"assets": {
|
||||||
|
"num": 100,
|
||||||
|
"denom": 1
|
||||||
|
},
|
||||||
|
"liabilities": {
|
||||||
|
"num": 0,
|
||||||
|
"denom": 1
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"moniker": "adrian",
|
||||||
|
"identity": "",
|
||||||
|
"website": "",
|
||||||
|
"details": ""
|
||||||
|
},
|
||||||
|
"validator_bond_height": 0,
|
||||||
|
"validator_bond_counter": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},"validators":[{"pub_key":{"type":"AC26791624DE60","value":"F5qF1KbyNuCGcUEVNPHOirrQzMPc1j1HeQjnArVWhBU="},"power":100,"name":""}]}
|
|
@ -0,0 +1,79 @@
|
||||||
|
{"chain_id":"internal-1","node_id":"be19a7d6c3f8472ad0073b5dcfcbc39f7e0ec9b3","ip":"167.99.160.171","app_state":{
|
||||||
|
"accounts": [
|
||||||
|
{
|
||||||
|
"address": "90A9EF09EEB2A6658F9D5B4617727F2ED51FB59C",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "fermion",
|
||||||
|
"amount": 1000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"stake": {
|
||||||
|
"pool": {
|
||||||
|
"total_supply": 100,
|
||||||
|
"bonded_shares": {
|
||||||
|
"num": 100,
|
||||||
|
"denom": 1
|
||||||
|
},
|
||||||
|
"unbonded_shares": {
|
||||||
|
"num": 0,
|
||||||
|
"denom": 1
|
||||||
|
},
|
||||||
|
"bonded_pool": 100,
|
||||||
|
"unbonded_pool": 0,
|
||||||
|
"inflation_last_time": 0,
|
||||||
|
"inflation": {
|
||||||
|
"num": 7,
|
||||||
|
"denom": 100
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"inflation_rate_change": {
|
||||||
|
"num": 13,
|
||||||
|
"denom": 100
|
||||||
|
},
|
||||||
|
"inflation_max": {
|
||||||
|
"num": 20,
|
||||||
|
"denom": 100
|
||||||
|
},
|
||||||
|
"inflation_min": {
|
||||||
|
"num": 7,
|
||||||
|
"denom": 100
|
||||||
|
},
|
||||||
|
"goal_bonded": {
|
||||||
|
"num": 67,
|
||||||
|
"denom": 100
|
||||||
|
},
|
||||||
|
"max_validators": 100,
|
||||||
|
"bond_denom": "fermion"
|
||||||
|
},
|
||||||
|
"candidates": [
|
||||||
|
{
|
||||||
|
"status": 1,
|
||||||
|
"owner": "90A9EF09EEB2A6658F9D5B4617727F2ED51FB59C",
|
||||||
|
"pub_key": {
|
||||||
|
"type": "AC26791624DE60",
|
||||||
|
"value": "Y+FiWjkDJTIRg1v25LaojD0MCCp37yVNqy6eFgO3Q4U="
|
||||||
|
},
|
||||||
|
"assets": {
|
||||||
|
"num": 100,
|
||||||
|
"denom": 1
|
||||||
|
},
|
||||||
|
"liabilities": {
|
||||||
|
"num": 0,
|
||||||
|
"denom": 1
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"moniker": "rigel",
|
||||||
|
"identity": "",
|
||||||
|
"website": "",
|
||||||
|
"details": ""
|
||||||
|
},
|
||||||
|
"validator_bond_height": 0,
|
||||||
|
"validator_bond_counter": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},"validators":[{"pub_key":{"type":"AC26791624DE60","value":"Y+FiWjkDJTIRg1v25LaojD0MCCp37yVNqy6eFgO3Q4U="},"power":100,"name":""}]}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"node_id": "efeba710629d9a7ace99ffa3c0767fc0079b4dc7",
|
||||||
|
"ip": "158.69.63.13",
|
||||||
|
"validator": {
|
||||||
|
"pub_key": {
|
||||||
|
"type": "AC26791624DE60",
|
||||||
|
"value": "DyC8LAqZFmXGkX+hJb0p3iu/oYphvx3JZqHz1VLJ/A0="
|
||||||
|
},
|
||||||
|
"power": 100,
|
||||||
|
"name": ""
|
||||||
|
},
|
||||||
|
"app_gen_tx": {
|
||||||
|
"name": "cwgoes",
|
||||||
|
"address": "A425870C82ECC0943212A857D1C9D45E0C381C5F",
|
||||||
|
"pub_key": {
|
||||||
|
"type": "AC26791624DE60",
|
||||||
|
"value": "DyC8LAqZFmXGkX+hJb0p3iu/oYphvx3JZqHz1VLJ/A0="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"node_id": "03b977aaecb87315fb64d4925c3cd72305129f2a",
|
||||||
|
"ip": "138.197.161.235",
|
||||||
|
"validator": {
|
||||||
|
"pub_key": {
|
||||||
|
"type": "AC26791624DE60",
|
||||||
|
"value": "qwQyuWl3e6bx2S6lZpUA8cI/J0I4CrVZPLagFxrFAVc="
|
||||||
|
},
|
||||||
|
"power": 100,
|
||||||
|
"name": ""
|
||||||
|
},
|
||||||
|
"app_gen_tx": {
|
||||||
|
"name": "rigel",
|
||||||
|
"address": "B2C472941BA3803E12CD0340047A25F2143AD13B",
|
||||||
|
"pub_key": {
|
||||||
|
"type": "AC26791624DE60",
|
||||||
|
"value": "qwQyuWl3e6bx2S6lZpUA8cI/J0I4CrVZPLagFxrFAVc="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue