EOS block producer heartbeat plugin to coordinate BP node status and metadata on-chain
Clone or download
Latest commit 5ee6222 Dec 10, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
include/eosio/producer_heartbeat_plugin fixing compilation Aug 31, 2018
CMakeLists.txt fixing compilation Aug 31, 2018
LICENSE Create LICENSE Dec 10, 2018
install.patch fixed: support for v1.5.0 Dec 5, 2018
producer_heartbeat_plugin.cpp fixed: support for v1.5.0 Dec 5, 2018


EOSIO Block Producer Heartbeat Plugin by LiquidEOS

Heartbeat plugin to coordinate BP node status and metadata on-chain.

The goal is to show that a standby or active BP is ready for block production in terms version, blacklist sync, configuration, etc.

This plugin is intended for both standby and active BPs. it is intended to run on the block producing node.

Contract deployed at: eosheartbeat (on mainnet and on the jungle testnet)

Monitor: http://heartbeat.liquideos.com/

Repository for monitor frontend and contract: https://github.com/bancorprotocol/eos-producer-heartbeat

Make sure you allocate enough CPU/NET to your account (100 EOS each is enough). so you are still able to perform the daily claim

producer-heartbeat plugin features

Periodic on-chain heartbeat

Contains version, head_block_num

Blacklist Hashes

actor-blacklist hash

automatic submission to https://github.com/EOSLaoMao/theblacklist

System resources

Total system ram, state_db_size, Processor type, VM or not, etc.

Latency data from other BPs

Local time, NTP time diff and timezone - TBD

Sign a field with the real producer private key - TBD

Installation instructions


  • Works on any EOSIO node that runs v1.5.0 and up. (see older tags for older versions)

Building the plugin [Install on your nodeos server]

  1. run
cd <eosio-source-dir>
cd plugins
git clone https://github.com/LiquidEOS/eos-producer-heartbeat-plugin.git producer_heartbeat_plugin
cd producer_heartbeat_plugin
git checkout tags/v1.5.01
cd ../..
git apply plugins/producer_heartbeat_plugin/install.patch
./eosio_build.sh -s "EOS"
sudo ./eosio_install.sh
  1. Build and install nodeos as usual.

Setup permissions

Use a dedicated key for this action. This step is not mandatory (especially on testnets), you can use your active key instead and set heartbeat-permission = active

cleos set account permission PRODUCERACCT heartbeat '{"threshold":1,"keys":[{"key":"HEARTBEAT_PUB_KEY","weight":1}]}' "active" -p PRODUCERACCT@active
cleos set action permission PRODUCERACCT eosheartbeat heartbeat heartbeat
cleos set action permission PRODUCERACCT theblacklist sethash heartbeat

How to setup on your nodeos

Enable plugin in config.ini

plugin = eosio::producer_heartbeat_plugin
heartbeat-period = 1500
heartbeat-signature-provider = HEARTBEAT_PUB_KEY=KEY:HEARTBEAT_PRIVATE_KEY
heartbeat-contract = eosheartbeat
heartbeat-permission = heartbeat
heartbeat-oncall = telegram:johndoe

Set heartbeat-oncall to your oncall contacts

Check if the plugin has loaded

  • You should see an entry for producer_heartbeat_plugin in the logs when you restart nodeos.

Feedback & development

  • Any suggestions and pull requests are welcome :)