| .. | ||
| helpers | ||
| params | ||
| simd | ||
| app_test.go | ||
| app.go | ||
| config.go | ||
| encoding.go | ||
| export.go | ||
| genesis_account_test.go | ||
| genesis_account.go | ||
| genesis.go | ||
| README.md | ||
| sim_bench_test.go | ||
| sim_test.go | ||
| state.go | ||
| test_helpers.go | ||
| types.go | ||
| utils_test.go | ||
| utils.go | ||
| order |
|---|
| false |
simapp
simapp is an application built using the Cosmos SDK for testing and educational purposes.
Running testnets with simd
If you want to spin up a quick testnet with your friends, you can follow these steps. Unless otherwise noted, every step must be done by everyone who wants to participate in this testnet.
-
$ make build. This will build thesimdbinary and install it in your Cosmos SDK repo, inside a newbuilddirectory. The following instructions are run from inside that directory. -
If you've run
simdbefore, you may need to reset your database before starting a new testnet:$ ./simd unsafe-reset-all -
$ ./simd init [moniker]. This will initialize a new working directory, by default at~/.simapp. You need a provide a "moniker," but it doesn't matter what it is. -
$ ./simd keys add [key_name]. This will create a new key, with a name of your choosing. Save the output of this command somewhere; you'll need the address generated here later. -
$ ./simd add-genesis-account $(simd keys show [key_name] -a) [amount], wherekey_nameis the same key name as before; andamountis something like10000000000000000000000000stake. -
$ ./simd gentx [key_name] [amount] --chain-id [chain-id]. This will create the genesis transaction for your new chain. -
Now, one person needs to create the genesis file
genesis.jsonusing the genesis transactions from every participant, by gathering all the genesis transactions underconfig/gentxand then calling./simd collect-gentxs. This will create a newgenesis.jsonfile that includes data from all the validators (we sometimes call it the "super genesis file" to distinguish it from single-validator genesis files). -
Once you've received the super genesis file, overwrite your original
genesis.jsonfile with the new supergenesis.json. -
Modify your
config/config.toml(in the simapp working directory) to include the other participants as persistent peers:# Comma separated list of nodes to keep persistent connections to persistent_peers = "[validator address]@[ip address]:[port],[validator address]@[ip address]:[port]"You can find
validator addressby running./simd tendermint show-node-id. (It will be hex-encoded.) By default,portis 26656. -
Now you can start your nodes:
$ ./simd start.
Now you have a small testnet that you can use to try out changes to the Cosmos SDK or Tendermint!
NOTE: Sometimes creating the network through the collect-gentxs will fail, and validators will start
in a funny state (and then panic). If this happens, you can try to create and start the network first
with a single validator and then add additional validators using a create-validator transaction.