Format of the config.yaml file¶
config.yaml file is the file where you configure the tools to match your environment.
It is located in
~/.bts_tools/config.yaml. If you properly fill in
all the values in it, there is no need for you to edit anything in the data-dir of the witness
client (ie: no config.ini editing) and the tools can manage everything from the command line.
This allows you to keep all the information in one single file, much easier to manage.
Instead of going over all the parameters in an arbitrary order and explaining them, we will just show a working example file that is fully commented and serves as the reference documentation.
Please make sure that you fully understand some Core concepts / architecture before proceeding.
Also know that there are a lot of other options under the hood, but in order to not be overwhelming,
those have default values and are contained in a bigger config.yaml file. At startup, your config file is merged into it
before being used by the application. If you want to see the full configuration file generated from it,
it is located in
And now, without further ado, here is the reference
--- # For a more detailed description of the format of this file, visit: # https://bts-tools.readthedocs.io/en/latest/config_yaml.html # hostname: xxxxxxxx # [OPTIONAL] label used as source of notification messages # the logging levels for the different submodules # can be any of DEBUG, INFO, WARNING, ERROR logging: bts_tools.cmdline: DEBUG bts_tools.feeds: INFO # # These are the types of clients that you can build. `bts`, `steem`, `ppy`, etc. # Mostly the default should work and you shouldn't need to change those values. # Still, if you want to add other git remote repositories to pull from or # extra flags to use for compiling, this is the place to do so. # # The full list of build_environments can be found here: # https://github.com/wackou/bts_tools/blob/master/bts_tools/templates/config/build_environments.yaml # build_environments: cmake_args:  # [OPTIONAL] shared among all build environments make_args: ['-j4'] # [OPTIONAL] shared among all build environments bts: cmake_args:  # [OPTIONAL] build environment specific witness_filename: witness_node # [OPTIONAL] filename for the compiled witness binary wallet_filename: cli_wallet # [OPTIONAL] filename for the compiled wallet binary steem: cmake_args: ['-DLOW_MEMORY_NODE=ON'] # [OPTIONAL] see https://github.com/steemit/steem/blob/master/doc/building.md muse: boost_root: ~/boost1.60_install # [OPTIONAL] if boost was installed manually cmake_args:  #'-DBUILD_MUSE_TEST=ON'] # # list of clients (witness accounts / seed nodes) that are being monitored # # the following file tries to keep a balanced distribution of the options between each client # in order to make for easier reading, but (unless otherwise noted) all the options declared # in a client also apply in the other ones # clients: bts: type: bts # [REQUIRED] build environment used for compiling the binary [bts, muse, steem, ppy, etc.] data_dir: ~/.BitShares2 # [REQUIRED] the data dir of the client is where the blockchain data and the wallet file are stored api_access: ~/api_access.json # [REQUIRED] api_access.json should be created according to https://github.com/BitShares/bitshares-2#accessing-restricted-apis seed_nodes: # [OPTIONAL] - bts-seed1.abit-more.com:62015 - seed.bitsharesnodes.com:1776 p2p_port: 1778 # [OPTIONAL] network port to be used for p2p communication of the witness node track_accounts: # [OPTIONAL] [bts only] reduce RAM usage by specifying the only accounts that should be tracked - 1.2.1 # witness-account - 1.2.111226 # bittwenty - 1.2.126782 # bittwenty.feed witness_host: localhost # [OPTIONAL] defaults to 'localhost', but can be a remote host if desired witness_port: 8090 # [OPTIONAL] some defaults are provided for each different chain witness_user: xxxxxxxx # [REQUIRED] as in api_access.json witness_password: xxxxxxxx # [REQUIRED] as in api_access.json wallet_host: localhost # [OPTIONAL] defaults to 'localhost', but can be a remote host if desired wallet_port: 8093 # [OPTIONAL] some defaults are provided for each different chain wallet_password: xxxxxxxx # [OPTIONAL] only needed for feed publishing # FIXME: not true, currently unused param notification: email, telegram # [OPTIONAL] type of notification channel to be used: [email, boxcar, telegram] # roles are optional, and you can have as many as you want for a given client # a client that doesn't define any role will not be monitored by the web interface, # but can still be used for building and running a client roles: - role: witness name: xxxxxxxx # [REQUIRED] name of the witness account on the blockchain witness_id: 1.6.xxx # [REQUIRED] signing_key: 5xxxxxxxx # [REQUIRED] private key used by this witness for signing - role: feed_publisher name: xxxxxxxx # [REQUIRED] name of the account that publishes the feed on the blockchain - role: seed name: seed01 # [REQUIRED] name has no relevance for seed nodes, except for identifying them in the UI # most of the clients try to have sensible defaults as much as possible, but you # need to specify at least: type, data_dir, api_access, witness_user, witness_password muse: type: muse data_dir: ~/.Muse witness_user: xxxxxxxx # defined in api_access.json witness_password: xxxxxxxx # defined in api_access.json roles: - role: seed name: seed-muse steem: type: steem data_dir: ~/.Steem shared_file_size: 80G # [OPTIONAL] size for the shared memory file run_args: ['--replay-blockchain'] # [OPTIONAL] additional args for running the witness client run_cli_args: ['--rpc-http-allowip', '127.0.0.1'] # [OPTIONAL] additional args for running the cli wallet plugins: ['witness'] # [OPTIONAL] defaults to ['witness', 'account_history'] seed_nodes: ["18.104.22.168:2001", "22.214.171.124:40696", "126.96.36.199:2001", "gtg.steem.house:2001"] # FIXME: implement me! override_default_seed_nodes: true # [OPTIONAL] [default=false] if true, the client will only use the given seed nodes, otherwise it adds them to the list of built-in seed nodes # Steemd (and Mused) can now accept the contents of the api_access.json directly as argument on the command line, # hence the field api_access.json is not required anymore here (and you don't need to create the file either), # as bts_tools will generate the proper arguments from the user and password given here. witness_user: xxxxxxxx witness_password: xxxxxxxx notification: telegram roles: - role: witness # for steem only, the 'witness_id' field is not required, only 'name' and 'signing_key' name: xxxxxxxx signing_key: 5xxxxxxxx ppy: type: ppy data_dir: ~/.PeerPlays seed_nodes: ['188.8.131.52:59500'] p2p_port: 9777 witness_host: localhost witness_port: 8590 witness_user: xxxxxxxx witness_password: xxxxxxxx wallet_host: localhost wallet_port: 8593 api_access: ~/api_access.json roles: - role: seed name: seed01ppy # # configuration of the monitoring plugins # most default values should work, see reference here: # https://github.com/wackou/bts_tools/blob/master/bts_tools/templates/config/monitoring.yaml # monitoring: seed: desired_number_of_connections: 200 maximum_number_of_connections: 400 feeds: check_time_interval: 600 # [OPTIONAL, default=600] interval at which the external feed providers should be queried, in seconds median_time_span: 1800 # [OPTIONAL, default=1800] time span over which the median of the feed price is computed. Shorter values are "fresher" but more sensitive to noise, # higher values indicate a more stable indicator of price at the cost of lack of responsiveness / delay in getting update for a huge price hike steem: feed_providers: [Poloniex, Bittrex] steem_dollar_adjustment: 1.0 bts: feed_providers: [Poloniex, Bittrex, Bitfinex, BitStamp, CoinMarketCap, CoinCap, AEX, ZB, Livecoin] # some assets are not published by default as they are experimental or have some requirements # eg: need to be an approved witness to publish # if you want to publish them you need to say so explicitly here enabled_assets: [RUBLE, ALTCAP, HERO] # BTWTY, HERTZ # explicitly disable some assets (eg: due to black swan) #disabled_assets: [RUB, SEK, GRIDCOIN, KRW, SGD, HKD, BTWTY] # if you have at least 1 feed_publisher role defined in your clients, then # you need to uncomment at least one of the next 2 lines #publish_time_interval: 2400 # use this to publish feeds at fixed time intervals (in seconds) #publish_time_slot: 08 # use this to publish every hour at a fixed number of minutes (in minutes) # # configuration of the notification channels # notification: email: smtp_server: smtp.example.com smtp_user: user smtp_password: secret-password identity: "BTS Monitor <email@example.com>" recipient: firstname.lastname@example.org boxcar: tokens: [xxxxxxxx, xxxxxxxx] telegram: token: xxxxxxxx # create your Telegram bot at @BotFather (https://telegram.me/botfather) recipient_id: xxxxxxxx # get your telegram id at @MyTelegramID_bot (https://telegram.me/mytelegramid_bot) # # List of credentials for external services used by bts_tools # credentials: bitcoinaverage: # developer account recommended, otherwise need to lower 'monitoring.feeds.check_time_interval' secret_key: xxxxxxxx public_key: xxxxxxxx geoip2: user: xxxxxxxx password: xxxxxxxx currencylayer: access_key: xxxxxxxx quandl: api_key: xxxxxxxx
Here’s a minimally useful version of
config.yaml that will build and run a BitShares seed node.
--- hostname: xxxxxxxx logging: bts_tools.cmdline: DEBUG build_environments: make_args: ['-j4'] clients: bts: type: bts data_dir: ~/.BitShares2 api_access: ~/api_access.json # see https://github.com/BitShares/bitshares-2#accessing-restricted-apis witness_user: xxxxxxxx witness_password: xxxxxxxx roles: - role: seed name: seed01-bts