Skip to content

Repository files navigation

Mempool — BIP110 edition

A self-hostable Bitcoin mempool explorer based on the Retropex fork of mempool (v3.4-dev), extended with:

  • BIP110 "Reduced Data Temporary Softfork" violation detection. Blocks and transactions that would be invalid under the proposed BIP110 consensus rules are flagged:
    • ☢️ radioactive indicator + violation count on each block in the block list.
    • "BIP110 Violations" row on the block detail page.
    • Per-transaction badge with a tooltip explaining which of the 7 rules it breaks, and a warning banner on the transaction page.
    • All 7 rules per bip-0110.mediawiki (oversized scriptPubKey, large PUSHDATA/witness items, undefined witness versions, Taproot annex, large control blocks, OP_SUCCESS, OP_IF/NOTIF in tapscript).
  • BIP110 miner signaling display (version bit 4) — inherited from Retropex.
  • Node distribution chart split by IPv4 / IPv6 / Tor (Knots nodes), with network percentages computed from active nodes.

Violation detection logic ported from paulscode/mempool-bip110.

Credits & license

Licensed under AGPL-3.0 (see LICENSE).

Build (Docker, self-host)

# 1. Prepare the repo for Dockerization (copies Dockerfiles into backend/ and frontend/, downloads GeoIP data)
sh docker/init.sh

# 2. Build the backend (Rust gbt + Node)
docker buildx build \
  --tag mempoolbackend:bip110 \
  --build-context rustgbt=./rust \
  --build-context backend=./backend \
  --build-arg commitHash=bip110 \
  --load ./backend/

# 3. Build the frontend (Angular)
docker buildx build \
  --tag mempoolfrontend:bip110 \
  --build-arg commitHash=bip110 \
  --load ./frontend/

Then point a docker-compose.yml at your own Bitcoin node (Core/Knots RPC) and an Electrum server (Fulcrum / electrs), set the database, and run. See docker/README.md for full self-hosting instructions.

Note: BIP110 violation counts populate for blocks summarised by this build. To backfill historical blocks, let the summaries indexer re-run (or re-summarise).


The Mempool Open Source Project® mempool

mempool-github.mp4

Mempool is the fully-featured mempool visualizer, explorer, and API service running at mempool.space.

It is an open-source project developed and operated for the benefit of the Bitcoin community, with a focus on the emerging transaction fee market that is evolving Bitcoin into a multi-layer ecosystem.

Installation Methods

Mempool can be self-hosted on a wide variety of your own hardware, ranging from a simple one-click installation on a Raspberry Pi full-node distro all the way to a robust production instance on a powerful FreeBSD server.

Most people should use a one-click install method.

Other install methods are meant for developers and others with experience managing servers. If you want support for your own production instance of Mempool, or if you'd like to have your own instance of Mempool run by the mempool.space team on their own global ISP infrastructure—check out Mempool Enterprise®.

One-Click Installation

Mempool can be conveniently installed on the following full-node distros:

We highly recommend you deploy your own Mempool instance this way. No matter which option you pick, you'll be able to get your own fully-sovereign instance of Mempool up quickly without needing to fiddle with any settings.

Advanced Installation Methods

Mempool can be installed in other ways too, but we only recommend doing so if you're a developer, have experience managing servers, or otherwise know what you're doing.

  • See the docker/ directory for instructions on deploying Mempool with Docker.
  • See the backend/ and frontend/ directories for manual install instructions oriented for developers.
  • See the production/ directory for guidance on setting up a more serious Mempool instance designed for high performance at scale.

Keeping pools-v2.json current for the BLAKE2b chain

pools-v2.json at the repo root is the miner list the backend imports (see MEMPOOL.POOLS_JSON_URL). scripts/blake2b-unknown-tags.py reports coinbases since the fork height that the list does not name, using the backend's own matching rules (per entry: payout addresses, then case-insensitive regex tags):

python3 scripts/blake2b-unknown-tags.py                # against mempool.guide's public API
python3 scripts/blake2b-unknown-tags.py --api http://127.0.0.1:8999/api/v1 --pools pools-v2.json

It prints one line per unmatched identity (block count, first height, coinbase tag, payout address) and one per entry that matched by address while the coinbase carries a different tag, which usually means a placeholder name. Blocks are cached in ~/.cache/blake2b-unknown-tags.json, so a cron run fetches only new blocks; --quiet prints nothing when the list is complete. Standard library only.

About

Mempool explorer (Retropex fork, v3.4-dev) with BIP110 'Reduced Data' violation detection + IPv4/IPv6/Tor node chart. Self-hostable.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages