As of yesterday, the ZMQ plugin for nodeos can be configured with whitelist options in order to limit the exported data to only accounts of interest. For example,
zmq-whitelist-account = watchdoggiee
zmq-whitelist-account = dappscatalog
When enabled, this option switches the output from all-inclusive to whitelist-only mode: the action traces are only sent if the specified accounts were participating in them. If the account is a smart contract, all executed actions are included. Also all system actions, like updating authority or delegating bandwidth, are reflected too. Also token transfers to and from these accouns, as well as notifications from third-party contracts, are included.
There are several typical use cases where you could utilize this functionality:
- smart contract health monitoring: the ZMQ flow receiver can monitor the CPU, RAM, EOS token balance for specified accounts, and send alerts to a monitoring system, such as Icinga. Also it can trigger alerts on events specific to the monitored contract.
- dApp integration node: a server may listen to specific events in a smart contract and trigger some activities in the web application. For example, an incoming payment can trigger a start of a new game.
- inter-chain communication: a gateway contract may trigger events which are reflected with new transactions in a side chain.
Also enabling a whitelist will reduce the CPU consumption of nodeos significantly. Without a whitelist, the nodeos process with ZMQ plugin consumes twice as much CPU as one without the plugin. If a whitelist is enabled, the CPU overhead is very little and almost invisible.