Monetd Configuration

All the configuration required to run a node is stored under a directory with a specific structure. By default, monetd will look for this directory in $HOME/.monet/monetd-dir/ [1] (on Linux), but it is possible to override this with the --config flag.

The directory must respect the following stucture:

.monet/monetd-config/
├── babble
│   ├── peers.genesis.json
│   ├── peers.json
│   └── priv_key
├── eth
│   ├── genesis.json
└── monetd.toml

You would not normally need to access these configuration files directly. The monetd config tool provides a CLI interfaces to set up a network. The command monetd config location provides further details of the default filepaths used for your instance.

Eth

The eth/genesis.json file defines prefunded accounts in the state, as well as the POA smart-contract. This file is useful to predefine a set of accounts that own all the initial tokens at the inception of the network. In addition, the poa section contains information about the POA smart-contract.

Example genesis.json defining one prefunded account (the ABI and bytecode of the smart-contract have been truncated):

{
    "alloc": {
            "a10aae5609643848ff1bceb76172652261db1d6c": {
                    "balance": "1234567890000000000000",
                    "moniker": "node0"
            }
    },
    "poa": {
            "address": "0xaBBAABbaaBbAABbaABbAABbAABbaAbbaaBbaaBBa",
            "abi": "[\n\t{\n\t\t\"constant\": true, ... ]",
            "code": "6080604052600436106101095760003560e01c8063..."
            }
}

Babble

  • babble/genesis.peers.json: defines Babble’s initial peer-set.
  • babble/peers.json: defines Babble’s current peer-set
  • babble/priv_key: contains the validator’s private key for Babble.

Run Options

Options pertaining to the operation of the node are read from the <config>/monetd.toml file, or overwritten by the following flags:

Flags:
      --api-listen string           IP:PORT of HTTP API service (default ":8080")
      --babble.advertise string     advertise IP:PORT of Babble node
      --babble.bootstrap            bootstrap Babble from database (default true)
      --babble.cache-size int       number of items in LRU caches (default 50000)
      --babble.heartbeat duration   heartbeat timer milliseconds (time between gossips) (default 200ms)
      --babble.listen string        bind IP:PORT of Babble node (default "192.168.0.13:1337")
      --babble.maintenance-mode     start babble in suspended (non-gossipping) state
      --babble.max-pool int         max number of pool connections (default 2)
      --babble.moniker string       friendly name
      --babble.suspend-limit int    number of undetermined-events since last run that will trigger automatic suspension (default 300)
      --babble.sync-limit int       max number of Events per sync (default 1000)
      --babble.timeout duration     TCP timeout milliseconds (default 1s)
  -c, --config string               configuration directory (default "/home/martin/.monet/monetd-config")
  -d, --data string                 data directory (default "/home/martin/.monet/monetd-data")
      --eth.cache int               megabytes of memory allocated to internal caching (min 16MB / database forced) (default 128)
      --eth.min-gas-price string    minimum gasprice of transactions submitted through this node (ex 1K, 1M, 1G, etc.) (default "0")
  -h, --help                        help for run

Global Flags:
  -v, --verbose   verbose output

Example of a monet.toml file:

verbose = "false"
api-listen = ":8080"

[babble]
  listen = "192.168.1.3:1337"
  advertise = "mypublicaddress:1337"
  heartbeat = "500ms"
  timeout = "1s"
  cache-size = 50000
  sync-limit = 1000
  max-pool = 2
  bootstrap = false

[eth]
  cache = 128
[1]This location is for Linux instances. Mac and Windows uses a different path. The path for your instance can be ascertained with this command: monetd config location