Transparency for Mining Pool Transaction Selection
The miningpool-observer project compares block templates produced by a Bitcoin Core node to blocks produced by mining pools to provide insights about:
- Shared, missing, and extra transactions per template and block pair
- Transactions missing from multiple blocks they should have been included in
- Template and block transactions conflicting with each other
- Blocks not including transactions to or from OFAC sanctioned addresses
This project is inspired by BitMex Research: Bitcoin Miner Transaction Fee Gathering Capability and motivated by 9f6f1a8e55623aa320f430f9e3c6dc762c147035e713b96d72c20a58cf45fbbf.
The miningpool-observer project is built with self-hosting in mind. Both private and public instances, like e.g. miningpool.observer, are supported. Requirements are a Bitcoin Core node v22.0 and a PostgreSQL database.
See docs/self-hosting.md for more information.
This repository is organized as follows:
├── artwork # Inkscape sources for the icons and images ├── contrib # e.g. Dockerfiles ├── daemon # Rust crate for the miningpool-observer-daemon ├── daemon-config.toml.example # Example configuration file for the miningpool-observer-daemon ├── docs # Documentation ├── migrations # SQL files automatically ran by the miningpool-observer-daemon on startup ├── shared # Rust crate for code shared between the miningpool-observer-daemon and miningpool-observer-web ├── web # Rust crate for the miningpool-observer-web (web-server) ├── web-config.toml.example # Example configuration file for the miningppool-observer-web └── www # Static resources and HTML page templates used by the miningpool-observer-web web-server
See docs/development.md for more information.
This work is licensed under the MIT License.
See LICENSE for more information.