Skip to content

Commit

Permalink
docs: config file
Browse files Browse the repository at this point in the history
  • Loading branch information
fadeev committed Nov 2, 2022
1 parent 2c16806 commit b2f8eaa
Showing 1 changed file with 23 additions and 154 deletions.
177 changes: 23 additions & 154 deletions docs/docs/kb/03-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <http://localhost:4500>.

| 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.

0 comments on commit b2f8eaa

Please sign in to comment.