Skip to content
A modified version of the EOSIO Watcher Plugin that utilizes the ZeroMQ messages from
C++ CMake Shell
Branch: master
Clone or download
Pull request Compare This branch is 32 commits ahead, 17 commits behind eosauthority:master.
Type Name Latest commit message Commit time
Failed to load latest commit information.
watcher_plugin Ignore failed deferred tx Nov 2, 2018
.gitignore Remove JSON file + update gitignore Sep 3, 2018
LICENSE.txt LICENSE update Jul 26, 2018 Update Sep 8, 2018 Update watcher plugin to push notifications for cancelorder actions Sep 10, 2018

EOSIO Watcher Plugin + ZeroMQ

This is a modified version of the EOSIO Watcher Plugin ( with the ZeroMQ Plugin ( It uses the approach in the watcher plugin where only transactions that make it into an accepted block are processed, but uses ZeroMQ to avoid http endpoint saturation when replaying the blockchain. Additionally since ZeroMQ push is a blocking operation, it is guaranteed that events (blocks) are processed in order at the work receiver endpoint performing the pull.


Building the plugin [Install on your nodeos server]

  1. Copy watcher_plugin folder to <eosio-source-dir>/plugins/ You should now have <eosio-source-dir>/plugins/watcher_plugin
  2. Add the following line to <eosio-source-dir>/plugins/CMakeLists.txt with other add_subdirectory items
  1. Add the following line to the bottom of <eosio-source-dir>/programs/nodeos/CMakeLists.txt
target_link_libraries( nodeos PRIVATE -Wl,${whole_archive_flag} watcher_plugin -Wl,${no_whole_archive_flag})
  1. Install dependencies:


brew install pkg-config
brew link pkg-config
brew install zmq

Download the C++ bindings for ZeroMQ by cloning this repository:, and copy zmq.hpp to /usr/local/include putting it next to zmq.h

  1. Build and install nodeos with and You could even just cd <eosio-source-dir>/build and then sudo make install

How to setup on your nodeos

Enable this plugin using --plugin option to nodeos or in your config.ini. Use nodeos --help to see options used by this plugin.


Add the following to config.ini to enable the plugin:

#Enable watcher plugin
plugin = eosio::watcher_plugin

#Set account:action so eosauthority:spaceinvader or just eosauthority: for all actions on eosauthority

#Age limit in seconds for blocks to send notifications. No age limit if set to negative. Used to prevent old actions from trigger HTTP request while on replay (seconds)
watch-age-limit = -1

#ZMQ sender socket binding
zmq-sender-bind = tcp://
You can’t perform that action at this time.