diff --git a/docs/docs/kb/03-config.md b/docs/docs/kb/03-config.md index 278498af6b..b51afb96c6 100644 --- a/docs/docs/kb/03-config.md +++ b/docs/docs/kb/03-config.md @@ -4,183 +4,52 @@ description: Primary configuration file to describe the development environment title: config.yml reference --- -# config.yml reference +# Configuration file reference The `config.yml` file generated in your blockchain folder uses key-value pairs to describe the development environment for your blockchain. Only a default set of parameters is provided. If more nuanced configuration is required, you can add these parameters to the `config.yml` file. -## accounts +## Accounts A list of user accounts created during genesis of the blockchain. -| Key | Required | Type | Description | -| -------- | -------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------- | -| name | Y | String | Local name of a key pair. An account name must be listed to gain access to the account tokens after the blockchain is launched. | -| coins | Y | List of Strings | Initial coins with denominations. For example, "1000token" | -| address | N | String | Account address in Bech32 address format. | -| mnemonic | N | String | Mnemonic used to generate an account. This field is ignored if `address` is specified. | - -Note that you can only use `address` OR `mnemonic` for an account. You can't use both, because an address is derived from a mnemonic. - -If an account is a validator account (`alice` by default), it cannot have an `address` field. - -**accounts example** - -```yaml +```yml accounts: - name: alice - coins: ["1000token", "100000000stake"] + coins: ['20000token', '200000000stake'] - name: bob - coins: ["500token"] - address: cosmos1adn9gxjmrc3hrsdx5zpc9sj2ra7kgqkmphf8yw + coins: ['10000token', '100000000stake'] ``` -## build +Ignite uses information from `accounts` when initializing the chain with `ignite chain init` and `ignite chain start`. In the example above Ignite will add two accounts to the `genesis.json` file of the chain. -| Key | Required | Type | Description | -|----------|----------|------------------|--------------------------------------------------------------------------------------------------------------| -| main | N | String | When an app contains more than one main Go package, required to define the path of the chain's main package. | -| binary | N | String | Name of the node binary that is built, typically ends with `d`. | -| ldflags | N | List of Strings | ldflags to set version information for go applications. | - -**build example** - -```yaml -build: - binary: "mychaind" - ldflags: [ "-X main.Version=development", "-X main.Date=01/05/2022T19:54" ] -``` +`name` is a local name of a key pair associated with an account. Once the chain is initialized and started, you will be able to use `name` when signing transactions. With the configuration above, you'd be able to sign transactions both with Alice's and Bob's accounts like so `exampled tx bank send ... --from alice`. -### build.proto - -| Key | Required | Type | Description | -| ----------------- | -------- | --------------- | ------------------------------------------------------------------------------------------ | -| path | N | String | Path to protocol buffer files. Default: `"proto"`. | -| third_party_paths | N | List of Strings | Path to third-party protocol buffer files. Default: `["third_party/proto", "proto_vendor"]`. | - -## client - -Configures and enables client code generation. To prevent Ignite CLI from regenerating the client, remove the `client` property. - -### client.vuex - -```yaml -client: - vuex: - path: "vue/src/store" -``` +`coins` is a list of token balances for the account. If a token denomination is in this list, it will exist in the genesis balance and will be a valid token. When initialized with the config file above, a chain will only have two accounts at genesis (Alice and Bob) and two native tokens (with denominations `token` and `stake`). -Generates Vuex stores for the blockchain in `path` on `serve` and `build` commands. +By default, every time a chain is re-initialized, Ignite will create a new key pair for each account. So even though the account name can remain the same (`bob`), every chain reinitialize it will have a different mnemonic and address. -### client.typescript +If you want an account to have a specific address, provide the `address` field with a valid bech32 address. The prefix (by default, `cosmos`) should match the one expected by your chain. When an account is provided with an `address` a key pair will not be generated, because it's impossible to derive a key from an address. -```yaml -client: - typescript: - path: "vue/src/generated" -``` - -Generates TypeScript clients for the blockchain in `path` on `serve` and `build` commands. - -### client.openapi - -```yaml -client: - openapi: - path: "docs/static/openapi.yml" -``` - -Generates OpenAPI YAML file in `path`. By default this file is embedded in the node's binary. - -## faucet - -The faucet service sends tokens to addresses. The default address for the web user interface is . - -| Key | Required | Type | Description | -| ----------------- | -------- | --------------- | ----------------------------------------------------------- | -| name | Y | String | Name of a key pair. The `name` key pair must be in `accounts`. | -| coins | Y | List of Strings | One or more coins with denominations sent per request. | -| coins_max | N | List of Strings | One or more maximum amounts of tokens sent for each address. | -| host | N | String | Host and port number. Default: `:4500`. Cannot be higher than 65536 | -| rate_limit_window | N | String | Time after which the token limit is reset (in seconds). | - -**faucet example** - -```yaml -faucet: - name: faucet - coins: ["100token", "5foo"] - coins_max: ["2000token", "1000foo"] - port: 4500 -``` - -## validator - -A blockchain requires one or more validators. - -| Key | Required | Type | Description | -| ------ | -------- | ------ | ----------------------------------------------------------------------------------------------- | -| name | Y | String | The account that is used to initialize the validator. The `name` key pair must be in `accounts`. | -| staked | Y | String | Amount of coins to bond. Must be less than or equal to the amount of coins in the account. | - -**validator example** - -```yaml +```yml accounts: - - name: alice - coins: ["1000token", "100000000stake"] -validator: - name: user1 - staked: "100000000stake" -``` - -## init.home - -The path to the data directory that stores blockchain data and blockchain configuration. - -**init example** - -```yaml -init: - home: "~/.myblockchain" + - name: bob + address: cosmos1s39200s6v4c96ml2xzuh389yxpd0guk2mzn3mz + coins: ['20000token', '200000000stake'] ``` -## init.config +If you want an account to be initialized from a specific mnemonic, provide the `mnemonic` field with a valid mnemonic. A private key, a public key and an address will be derived from a mnemonic. -Overwrites properties in `config/config.toml` in the data directory. - -## init.app - -Overwrites properties in `config/app.toml` in the data directory. - -## init.client - -Overwrites properties in `config/client.toml` in the data directory. - -**init.client example** - -```yaml -init: - client: - keyring-backend: "os" +```yml +accounts: + - name: bob + mnemonic: cargo ramp supreme review change various throw air figure humble soft steel slam pole betray inhale already dentist enough away office apple sample glue + coins: ['20000token', '200000000stake'] ``` -## host - -Configuration of host names and ports for processes started by Ignite CLI. Port numbers can't exceed 65536. - -**host example** - -```yaml -host: - rpc: ":26659" - p2p: ":26658" - prof: ":6061" - grpc: ":9091" - api: ":1318" -``` +You cannot have both `address` and `mnemonic` defined for a single account. -## genesis +Some accounts are used as validator accounts (see `validators` section). Validator accounts cannot have an `address` field, because Ignite needs to be able to derive a private key (either from a random mnemonic or from a specific one provided in the `mnemonic` field). Validator accounts should have enough tokens of the staking denomination for self-delegation. -Use to overwrite values in `genesis.json` in the data directory to test different values in development environments. See [Genesis Overwrites for Development](../kb/04-genesis.md). +By default, the `alice` account is used as a validator account, its key is derived from a mnemonic generated randomly at genesis, the staking denomination is `stake`, and this account has enough `stake` for self-delegation. \ No newline at end of file