The database fillers connect to the nodeos state-history plugin and populate databases.
PostgreSQL vs. RocksDB
- Supports full history
- Partial history can fall behind on large chains; PostgreSQL sometimes struggles to delete large numbers of rows
- Scaling: supports wasm-ql running on multiple machines connecting to a single database
- Supports full and partial history
- Simpler setup; RocksDB is an in-process database
- Saves disk space compared to PostgreSQL
- Faster filling than PostgreSQL
- Scaling: each machine hosting wasm-ql servers has a separate database
fill-pg for the first time, use the
--fpg-create option to create the schema and tables. To wipe the schema and start over, run with
combo-rocksdb automatically create a database if it doesn't exist; it doesn't have
After starting, a filler will populate the database. It will track real-time updates from nodeos after it catches up.
Use SIGINT or SIGTERM to stop.
|RocksDB fill||PostgreSQL fill||Default||Description|
|--fill-connect-to||--fill-connect-to||127.0.0.1:8080||state-history-plugin endpoint to connect to|
|--pg-schema||chain||schema to use|
|--rdb-threads||Increase number of background RocksDB threads. Recommend 8 for full history on large chains|
|--rdb-max-files||Limit max number of open files (default unlimited). This should be smaller than 'ulimit -n #'. # should be a very large number for full-history nodes.|
|--query-config||query configuration file|
|--fpg-drop||drop (delete) schema and tables|
|--fpg-create||create schema and tables|
|--fill-trim||--fill-trim||trim history before irreversible|
|--fill-skip-to||--fill-skip-to||skip blocks before arg|
|--fill-stop||--fill-stop||stop filling at block arg|
--fill-trx creates a set of transaction filtering rules. It has the following syntax:
It ignores whitespace within the pattern.
|Field||May be empty?||Description|
|status||Yes||Transaction status. May be one of:
|receiver||Yes||The account which originally received the action, or the account which received a copy (
|act_account||Yes||The account which received the original. This is called
|act_name||Yes||The name of the action|
--fill-trx may be specified multiple times. This creates a list of rules. The filter checks an action against each
rule in order. As soon as it finds a rule which matches the action it stops. The action passes if
The action doesn't pass if
-. If no rules match, then the action doesn't pass.
The filler writes a transaction to the database if any of the transaction's actions pass the filter. When this happens, it writes all actions in the transaction, including ones that didn't pass.
Transaction filter examples
- Include all transactions. Includes deferred transactions which haven't executed
yet or have failed. This is the default if no
--fill-trx "+: : : :"
- Include all executed transactions. Excludes deferred transactions which haven't executed yet or have failed:
--fill-trx "+:executed: : :"
- Include all executed transactions, but exclude some spam:
--fill-trx "-: :blocktwitter:blocktwitter:" --fill-trx "+:executed: : :"
- Include all executed transfers. Includes all token contracts:
--fill-trx "+:executed: : :transfer"
- Include all executed transfers. Includes only
--fill-trx "+:executed: :eosio.token :transfer"
- Include all executed transfers which notify specific accounts. Includes all token contracts:
--fill-trx "+:executed:myaccount1 : :transfer" --fill-trx "+:executed:myaccount2 : :transfer"
- Include all executed transfers which notify specific accounts. Only includes
--fill-trx "+:executed:myaccount1 :eosio.token :transfer" --fill-trx "+:executed:myaccount2 :eosio.token :transfer"
fill-pg relies on PostgreSQL environment variables to establish connections; see the PostgreSQL manual.
A quick-and-dirty way to connect to PostgreSQL server running on another machine is to set these:
psql utility to verify your connection.