## Description Closes: #9404 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [x] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [x] reviewed "Files changed" and left comments if necessary - [x] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable)
54 lines
3.1 KiB
Markdown
54 lines
3.1 KiB
Markdown
---
|
|
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.
|
|
|
|
1. From the root directory of the Cosmos SDK repository, run `$ make build`. This will build the
|
|
`simd` binary inside a new `build` directory. The following instructions are run from inside
|
|
the `build` directory.
|
|
2. If you've run `simd` before, you may need to reset your database before starting a new
|
|
testnet. You can reset your database with the following command: `$ ./simd unsafe-reset-all`.
|
|
3. `$ ./simd init [moniker] --chain-id [chain-id]`. This will initialize a new working directory
|
|
at the default location `~/.simapp`. You need to provide a "moniker" and a "chain id". These
|
|
two names can be anything, but you will need to use the same "chain id" in the following steps.
|
|
4. `$ ./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.
|
|
5. `$ ./simd add-genesis-account [key_name] [amount]`, where `key_name` is the same key name as
|
|
before; and `amount` is something like `10000000000000000000000000stake`.
|
|
6. `$ ./simd gentx [key_name] [amount] --chain-id [chain-id]`. This will create the genesis
|
|
transaction for your new chain. Here `amount` should be at least `1000000000stake`. If you
|
|
provide too much or too little, you will encounter an error when starting your node.
|
|
7. Now, one person needs to create the genesis file `genesis.json` using the genesis transactions
|
|
from every participant, by gathering all the genesis transactions under `config/gentx` and then
|
|
calling `$ ./simd collect-gentxs`. This will create a new `genesis.json` file that includes data
|
|
from all the validators (we sometimes call it the "super genesis file" to distinguish it from
|
|
single-validator genesis files).
|
|
8. Once you've received the super genesis file, overwrite your original `genesis.json` file with
|
|
the new super `genesis.json`.
|
|
9. Modify your `config/config.toml` (in the simapp working directory) to include the other participants as
|
|
persistent peers:
|
|
|
|
```text
|
|
# 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_address` by running `$ ./simd tendermint show-node-id`. The output will
|
|
be the hex-encoded `validator_address`. The default `port` is 26656.
|
|
10. 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.
|