Configuration
The default configuration file is ./config.yml.
- For bundled/manual installs this is typically in your install directory.
- For Debian packages this is usually
/etc/thalos/config.yml.
CLI flags override configuration values when provided.
name: "my-thalos-node"
api: "http://127.0.0.1:8888"
message_codec: "json"
ship:
url: "ws://127.0.0.1:8080"
redis:
addr: "127.0.0.1:6379"2
3
4
5
6
7
8
9
There is also the option to configure Thalos via command line flags. See CLI Flags.
General
name (string) - Name of the Thalos node.
api (string) - Nodeos API Endpoint.
message_codec (string) default: json
What codec Thalos should use when publishing messages to Redis.
ABI Cache
abi_cache.api_timeout (duration_string) default: 1s
Timeout used when fetching ABI definitions from the API.
Ship
ship.url (string) - URL to the nodeos SHIP endpoint.
ship.chain (string)
Name of the chain namespace. If not defined, Thalos uses the chain id reported by api. This value (or the chain id) is prepended to channel names to allow multiple Thalos instances to run against the same Redis database.
ship.irreversible_only (boolean)
If true, the ship node will only send transactions once they are considered irreversible. If false the transactions are posted as soon as possible.
ship.max_messages_in_flight (integer) default: 10
Maximum number of SHIP messages in flight before acknowledgement.
ship.table_deltas (boolean)
If set to true, Thalos publishes table delta updates to clients.
ship.table_delta_whitelist (ContractList)
Optional whitelist for table deltas (contract:table). Use * as wildcard for table names.
ship.transactions (boolean) default: true
If false, Thalos skips transaction trace messages.
ship.actions (boolean) default: true
If false, Thalos skips action trace messages.
ship.start_block_num (integer)
Thalos will start streaming blocks starting from this one. If undefined, Thalos will use cached state when available, otherwise API head/LIB depending on mode.
ship.end_block_num (integer)
Thalos will stop streaming when this block number is reached. If undefined, Thalos will keep streaming.
ship.blacklist (ContractList)
List of contract:action pairs that Thalos will skip.
ship.blacklist_is_whitelist (boolean)
Thalos will treat ship.blacklist as a whitelist.
Redis
redis.addr (string) - Address (and port) to redis server
redis.user (string) - Username to use when authenticating
redis.password (string) - Password to use when authenticating
redis.db (integer) - Database index to use
redis.prefix (string) - Key prefix prepended to all Thalos channels to avoid name collisions.
Cache
These settings control the cache used by Thalos to cache abi definitions and internal state.
cache.storage (string default: redis) - Cache storage to use.
Available values: memory, redis
cache.options (map) - Options for the cache storage, see section for each cache storage.
Memory
No configuration.
Redis
cache.options.stats (boolean default: false) - True if statistics should be collected
cache.options.size (integer default: 1000) - How many items to store in process local memory for faster lookup of popular items
cache.options.ttl (integer default: 10) - How long (in minutes) each item should be kept in process local memory before being discarded (and has to be fetched from redis again.)
Logging
This block configures how Thalos logs information.
log.filename (string) - Filename (without extension)
log.directory (string) - Directory where to store log files.
log.file_timestamp_format (dateformat) - Format to rename log files when rotating
log.maxfilesize (string) - Rotate when the file reaches this size (for example 10mb, 200mb).
log.maxtime (duration_string) - Rotate when the file is this old.
Telegram notifications
These settings control the Telegram notification mechanism built into Thalos. If undefined, Thalos skips Telegram notifications. If defined, Thalos sends messages when important events happen.
telegram.id (string) - bot id
telegram.channel (integer) - channel id to use.
Datatypes
string
A sequence of characters.
integer
A valid integer.
boolean
Boolean value (true or false)
dateformat
The dateformat type is a string but describes a date format in Go.
Go uses a different approach than many other languages. Usually you might format a date like 2023-03-22 as YYYY-MM-DD. Go uses a reference time when parsing time:
Mon Jan 2 15:04:05 MST 2006
| Format | Description | Example |
|---|---|---|
| Date | - | - |
2006 | Full year | 2018,1989 |
06 | 2-digit year | 18, 89 |
Jan | Three letter word of month | Oct, Jun |
January | Full name of month | April, September |
2 | Day in month without leading zero | 1 to 31 |
02,_2 | Day in month with leading zero | 01 to 31 |
002,__2 | Day in year | 002 |
Mon | Three letter word for day in week | Tue, Fri |
Monday | Full name of day in week | Friday, Saturday |
| Time | - | - |
15 | Hour in 24-format | 12,23 |
3,03 | Hour in 12-format with/without leading zero | 2, 07 |
PM | AM/PM Mark | AM |
4,04 | Minute with/without leading zero | 08, 45 |
5,05 | Second with/without leading zero | 01, 59 |
| Timezone | - | - |
-0700 | ±hhmm | -0100 |
-07:00 | ±hh:mm | +04:00 |
-07 | ±hh | +10 |
-070000 | ±hhmmss | +053000 |
-07:07:07 | ±hh:mm:ss | -02:30:12 |
MST | Named timezone | CEST, GMT |
duration_string
A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as 300ms, -1.5h or 2h45m.
Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
ContractList
An array/map of contract:value pairs.
Keys (contracts) are of type string and values are an array of string.
For ship.blacklist the values are action names. For ship.table_delta_whitelist the values are table names.
Action array can hold a special string * that matches any action.
The special contract "*" matches all contracts.
example:
mycontract: [ action1, action2 ]
# or
mycontract:
- action1
- action2
# To target all actions on a contract:
mycontract: [ "*" ]
# Matches the transfer and refund actions for all contracts
"*": [ transfer, refund ]2
3
4
5
6
7
8
9
10
11