#zmq #bitcoin #bitcoin-core

bitcoincore-zmq

Bitcoin Core ZMQ subscriber with minimal dependencies

16 stable releases

1.5.2 Aug 6, 2024
1.5.1 Jul 10, 2024
1.5.0 May 17, 2024
1.4.0 Jan 23, 2024
1.2.0 Jul 28, 2023

#3 in #bitcoin-core

Download history 82/week @ 2024-07-31 67/week @ 2024-08-07 4/week @ 2024-08-14 3/week @ 2024-08-21 15/week @ 2024-08-28 11/week @ 2024-09-04 17/week @ 2024-09-11 54/week @ 2024-09-18 148/week @ 2024-09-25 88/week @ 2024-10-02 74/week @ 2024-10-09 65/week @ 2024-10-16 15/week @ 2024-10-23 47/week @ 2024-10-30 52/week @ 2024-11-06 28/week @ 2024-11-13

172 downloads per month

MIT license

57KB
1.5K SLoC

Build and test Integration tests crates.io docs.rs

Rust Bitcoin Core ZMQ Subscriber

Usage example

fn main() {
    for msg in bitcoincore_zmq::subscribe_receiver(&["tcp://127.0.0.1:28359"]).unwrap() {
        match msg {
            Ok(msg) => println!("Received message: {msg}"),
            Err(err) => println!("Error receiving message: {err}"),
        }
    }
}

For more examples, have a look in the examples directory.

Features

  • Minimal dependencies: the 2 crates bitcoin and zmq, optionally 2 additional crates are needed for the async subscriber, async_zmq and futures-util.
  • Handles all message types from Bitcoin Core: hashblock, hashtx, block, tx and sequence.
  • Flexible: choose between blocking functions with a callback, reading from a Receiver or reading from an asynchronous Stream without locking to a specific async runtime.

Testing

Tests run on every push and pull request. Integration tests use the latest version of the 5 most recent major Bitcoin Core versions, see integration_tests.yml.

Useful resources


TODO:

  • This README
  • SequenceMessage itest
  • Easy addEventListener like functionality with help of the getzmqnotifications rpc
  • raw messages
  • zmq publisher
  • include source in message

Dependencies

~9.5MB
~126K SLoC