An open-source explorer developed for the Bitcoin community, focusing on the emerging transaction fee market to help our transition into a multi-layer ecosystem.
Go to file
2022-05-10 16:41:23 +02:00
.github Merge pull request #1341 from naveensrinivasan/naveen/pin-workflow-actions 2022-04-14 21:34:40 +00:00
.vscode Backend: Bumping Typescript version to 4.4.2 (#748) 2021-08-31 15:09:33 +03:00
backend Add /api/v1/mining/blocks/sizes-weights/:interval API 2022-05-10 16:41:23 +02:00
contributors Merge pull request #1339 from naveensrinivasan/naveensrinivasan/dependabot 2022-04-14 21:11:48 +00:00
docker Remove $ from commands in repo docs 2022-05-09 02:35:03 -04:00
frontend Merge branch 'master' into recvd-htlcs 2022-05-10 23:11:28 +09:00
production Add versions for node.js and npm 2022-05-09 01:07:21 -04:00
.gitattributes Fix .gitattributes for line endings again 2020-07-24 22:42:08 +09:00
.gitignore deploy: add Makefile for easier docker deploy 2021-03-23 19:57:04 -04:00
.nvmrc Add .nvmrc to set node to 16.10.0 when changing into the project 2021-12-07 22:55:10 -08:00
CONTRIBUTING.md Add new Contributor License Agreement policy 2022-01-25 09:30:11 +00:00
GNUmakefile Remove all references to SQL tables import 2022-01-05 13:26:36 +04:00
LICENSE Update copyright years in legal notices 2022-01-25 09:36:02 +00:00
LICENSE.AGPL-3.md Dual-license mempool under both the GNU AGPLv3 and GNU GPLv3 licenses 2021-03-27 20:02:53 +09:00
LICENSE.GPL-3.md Dual-license mempool under both the GNU AGPLv3 and GNU GPLv3 licenses 2021-03-27 20:02:53 +09:00
Makefile deploy: add Makefile for easier docker deploy 2021-03-23 19:57:04 -04:00
nginx-mempool.conf Update nginx.conf for mempool.space services APIs 2022-01-14 20:56:41 +09:00
nginx.conf Increase nginx send_timeout and keepalive_requests 2022-01-27 05:56:38 +00:00
README.md Remove $ from commands in repo docs 2022-05-09 02:35:03 -04:00

The Mempool Open Source Project™ mempool

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.

mempool

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.

We support the following installation methods, ranked in order from simple to advanced:

  1. One-click installation on full-node distros
  2. Docker installation on Linux using docker-compose
  3. Manual installation on Linux or FreeBSD
  4. Production installation on a powerful FreeBSD server

This doc offers install notes on the one-click method and manual install method. Follow the links above for install notes on Docker and production installations.

One-Click Installation

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

Manual Installation

The following instructions are for a manual installation on Linux or FreeBSD. You may need to change file and directory paths to match your OS.

You will need Bitcoin Core, Electrum Server, Node.js, MariaDB, and Nginx. Below, we walk through how to configure each of these.

1. Get Latest Mempool Release

Clone the Mempool repo, and checkout the latest release tag:

git clone https://github.com/mempool/mempool
cd mempool
latestrelease=$(curl -s https://api.github.com/repos/mempool/mempool/releases/latest|grep tag_name|head -1|cut -d '"' -f4)
git checkout $latestrelease

2. Configure Bitcoin Core

Enable RPC and txindex in bitcoin.conf:

rpcuser=mempool
rpcpassword=mempool
txindex=1

3. Get & Configure MySQL

Install MariaDB from your OS package manager:

# Debian, Ubuntu, etc.
apt-get install mariadb-server mariadb-client

# macOS
brew install mariadb
mysql.server start

Create a database and grant privileges:

MariaDB [(none)]> drop database mempool;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> create database mempool;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on mempool.* to 'mempool'@'%' identified by 'mempool';
Query OK, 0 rows affected (0.00 sec)

4. Build Mempool Backend

Install Mempool dependencies with npm and build the backend:

cd backend
npm install --prod
npm run build

In the backend folder, make a copy of the sample config:

cp mempool-config.sample.json mempool-config.json

Edit mempool-config.json with your Bitcoin Core node RPC credentials:

{
  "MEMPOOL": {
    "NETWORK": "mainnet",
    "BACKEND": "electrum",
    "HTTP_PORT": 8999
  },
  "CORE_RPC": {
    "HOST": "127.0.0.1",
    "PORT": 8332,
    "USERNAME": "mempool",
    "PASSWORD": "mempool"
  },
  "ELECTRUM": {
    "HOST": "127.0.0.1",
    "PORT": 50002,
    "TLS_ENABLED": true
  },
  "DATABASE": {
    "ENABLED": true,
    "HOST": "127.0.0.1",
    "PORT": 3306,
    "USERNAME": "mempool",
    "PASSWORD": "mempool",
    "DATABASE": "mempool"
  }
}

Start the backend:

npm run start

When it's running, you should see output like this:

Mempool updated in 0.189 seconds
Updating mempool
Mempool updated in 0.096 seconds
Updating mempool
Mempool updated in 0.099 seconds
Updating mempool
Calculated fee for transaction 1 / 10
Calculated fee for transaction 2 / 10
Calculated fee for transaction 3 / 10
Calculated fee for transaction 4 / 10
Calculated fee for transaction 5 / 10
Calculated fee for transaction 6 / 10
Calculated fee for transaction 7 / 10
Calculated fee for transaction 8 / 10
Calculated fee for transaction 9 / 10
Calculated fee for transaction 10 / 10
Mempool updated in 0.243 seconds
Updating mempool

5. Build Mempool Frontend

Install the Mempool dependencies with npm and build the frontend:

cd frontend
npm install --prod
npm run build

Install the output into the nginx webroot folder:

sudo rsync -av --delete dist/ /var/www/

6. nginx + certbot

Install the supplied nginx.conf and nginx-mempool.conf in /etc/nginx:

# install nginx and certbot
apt-get install -y nginx python3-certbot-nginx

# install the mempool configuration for nginx
cp nginx.conf nginx-mempool.conf /etc/nginx/

# replace example.com with your domain name
certbot --nginx -d example.com

If everything went well, you should see the beautiful mempool 😁

If you get stuck on "loading blocks", this means the websocket can't connect. Check your nginx proxy setup, firewalls, etc. and open an issue if you need help.