Merge pull request #13 from andrerfneves/refactor/docs-package

[chore] Documentation improvements and package json cleanups
This commit is contained in:
Simon Lindh 2019-10-29 02:00:17 +08:00 committed by GitHub
commit d8407080ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 147 additions and 119 deletions

207
README.md
View file

@ -6,150 +6,169 @@ Mempool visualizer for the Bitcoin blockchain. Live demo: https://mempool.space/
![blockchain](https://pbs.twimg.com/media/EAETXWAU8AAj4IP?format=jpg&name=4096x4096) ![blockchain](https://pbs.twimg.com/media/EAETXWAU8AAj4IP?format=jpg&name=4096x4096)
![mempool](https://pbs.twimg.com/media/EAETXWCU4AAv2v-?format=jpg&name=4096x4096) ![mempool](https://pbs.twimg.com/media/EAETXWCU4AAv2v-?format=jpg&name=4096x4096)
## deps ## Dependencies
* Bitcoin (full node required, no pruning, txindex=1) * Bitcoin (full node required, no pruning, txindex=1)
* NodeJS (official stable LTS) * NodeJS (official stable LTS)
* MySQL or MariaDB (default config) * MySQL or MariaDB (default config)
* Nginx (use supplied nginx.conf) * Nginx (use supplied nginx.conf)
## nodejs ## Bitcoin Core (bitcoind)
Install dependencies and build code:
```
cd mempool.space
npm install -g typescript
cd frontend
npm install
cd ../backend/
npm install
tsc
```
## bitcoind
Enable RPC and txindex in bitcoin.conf Enable RPC and txindex in bitcoin.conf
```
rpcuser=mempool ```bash
rpcpassword=71b61986da5b03a5694d7c7d5165ece5 rpcuser=mempool
txindex=1 rpcpassword=71b61986da5b03a5694d7c7d5165ece5
txindex=1
``` ```
## mempool config ## NodeJS
Make a copy of the sample config and edit it
``` Install dependencies and build code:
cp mempool-config.sample.json mempool-config.json
```bash
cd mempool.space
# Install TypeScript Globally
npm install -g typescript
# Frontend
cd frontend
npm install
npm run build
# Backend
cd ../backend/
npm install
npm run build
``` ```
Edit mempool-config.json to add your Bitcoin node RPC credentials: ## Mempool Configuration
In the `backend` folder, make a copy of the sample config and modify it to fit your settings.
```bash
cp mempool-config.sample.json mempool-config.json
``` ```
Edit `mempool-config.json` to add your Bitcoin Core node RPC credentials:
```bash
"BITCOIN_NODE_HOST": "192.168.1.5", "BITCOIN_NODE_HOST": "192.168.1.5",
"BITCOIN_NODE_PORT": 8332, "BITCOIN_NODE_PORT": 8332,
"BITCOIN_NODE_USER": "mempool", "BITCOIN_NODE_USER": "mempool",
"BITCOIN_NODE_PASS": "71b61986da5b03a5694d7c7d5165ece5", "BITCOIN_NODE_PASS": "71b61986da5b03a5694d7c7d5165ece5",
``` ```
## mysql ## MySQL
Install MariaDB: Install MariaDB:
```
apt-get install mariadb-server mariadb-client ```bash
# Linux
apt-get install mariadb-server mariadb-client
# macOS
brew install mariadb
brew services start mariadb
``` ```
Create database and grant privileges: Create database and grant privileges:
``` ```bash
MariaDB [(none)]> drop database mempool; MariaDB [(none)]> drop database mempool;
Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> create database mempool; MariaDB [(none)]> create database mempool;
Query OK, 1 row affected (0.00 sec) Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on mempool.* to 'mempool' identified by 'mempool'; MariaDB [(none)]> grant all privileges on mempool.* to 'mempool' identified by 'mempool';
Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec)
``` ```
Initialize database structure: From the root folder, initialize database structure:
```
mysql -u mempool -p mempool < mariadb-structure.sql ```bash
mysql -u mempool -p mempool < mariadb-structure.sql
``` ```
## mempool backend ## Running (Backend)
Create an initial empty cache and start the app: Create an initial empty cache and start the app:
```
touch cache.json ```bash
node dist/index.js touch cache.json
npm run start # node dist/index.js
``` ```
After starting you should see: After starting you should see:
```
Server started on port 8999 :)
New block found (#586498)! 0 of 1986 found in mempool. 1985 not found.
New block found (#586499)! 0 of 1094 found in mempool. 1093 not found.
New block found (#586500)! 0 of 2735 found in mempool. 2734 not found.
New block found (#586501)! 0 of 2675 found in mempool. 2674 not found.
New block found (#586502)! 0 of 975 found in mempool. 974 not found.
New block found (#586503)! 0 of 2130 found in mempool. 2129 not found.
New block found (#586504)! 0 of 2770 found in mempool. 2769 not found.
New block found (#586505)! 0 of 2759 found in mempool. 2758 not found.
Updating mempool
Calculated fee for transaction 1 / 3257
Calculated fee for transaction 2 / 3257
Calculated fee for transaction 3 / 3257
Calculated fee for transaction 4 / 3257
Calculated fee for transaction 5 / 3257
Calculated fee for transaction 6 / 3257
Calculated fee for transaction 7 / 3257
Calculated fee for transaction 8 / 3257
Calculated fee for transaction 9 / 3257
```
You need to wait for 8 blocks to be mined, so please wait ~80 minutes. ```bash
Server started on port 8999 :)
New block found (#586498)! 0 of 1986 found in mempool. 1985 not found.
New block found (#586499)! 0 of 1094 found in mempool. 1093 not found.
New block found (#586500)! 0 of 2735 found in mempool. 2734 not found.
New block found (#586501)! 0 of 2675 found in mempool. 2674 not found.
New block found (#586502)! 0 of 975 found in mempool. 974 not found.
New block found (#586503)! 0 of 2130 found in mempool. 2129 not found.
New block found (#586504)! 0 of 2770 found in mempool. 2769 not found.
New block found (#586505)! 0 of 2759 found in mempool. 2758 not found.
Updating mempool
Calculated fee for transaction 1 / 3257
Calculated fee for transaction 2 / 3257
Calculated fee for transaction 3 / 3257
Calculated fee for transaction 4 / 3257
Calculated fee for transaction 5 / 3257
Calculated fee for transaction 6 / 3257
Calculated fee for transaction 7 / 3257
Calculated fee for transaction 8 / 3257
Calculated fee for transaction 9 / 3257
```
You need to wait for at least *8 blocks to be mined*, so please wait ~80 minutes.
The backend also needs to index transactions, calculate fees, etc. The backend also needs to index transactions, calculate fees, etc.
When it's ready you will see output like this: When it's ready you will see output like this:
``` ```bash
Mempool updated in 0.189 seconds Mempool updated in 0.189 seconds
Updating mempool Updating mempool
Mempool updated in 0.096 seconds Mempool updated in 0.096 seconds
Updating mempool Updating mempool
Mempool updated in 0.099 seconds Mempool updated in 0.099 seconds
Updating mempool Updating mempool
Calculated fee for transaction 1 / 10 Calculated fee for transaction 1 / 10
Calculated fee for transaction 2 / 10 Calculated fee for transaction 2 / 10
Calculated fee for transaction 3 / 10 Calculated fee for transaction 3 / 10
Calculated fee for transaction 4 / 10 Calculated fee for transaction 4 / 10
Calculated fee for transaction 5 / 10 Calculated fee for transaction 5 / 10
Calculated fee for transaction 6 / 10 Calculated fee for transaction 6 / 10
Calculated fee for transaction 7 / 10 Calculated fee for transaction 7 / 10
Calculated fee for transaction 8 / 10 Calculated fee for transaction 8 / 10
Calculated fee for transaction 9 / 10 Calculated fee for transaction 9 / 10
Calculated fee for transaction 10 / 10 Calculated fee for transaction 10 / 10
Mempool updated in 0.243 seconds Mempool updated in 0.243 seconds
Updating mempool Updating mempool
``` ```
## nginx + certbot (let's encrypt) ## nginx + CertBot (LetsEncrypt)
Setup nginx using the supplied nginx.conf, replacing example.com with your domain name. Setup nginx using the supplied nginx.conf, replacing `example.com` with your domain name.
```
apt-get install -y nginx python-certbot-nginx ```bash
cp nginx.conf /etc/nginx/nginx.conf apt-get install -y nginx python-certbot-nginx
certbot -d example.com # replace with your domain name cp nginx.conf /etc/nginx/nginx.conf
certbot -d example.com # replace with your domain name
``` ```
Make sure you can access https://example.com/ in browser before proceeding Make sure you can access https://example.com/ in browser before proceeding
## mempool frontend ## Running (Frontend)
Build the frontend static HTML/CSS/JS, rsync the output into nginx folder: Build the frontend static HTML/CSS/JS, rsync the output into nginx folder:
``` ```bash
cd frontend/ cd frontend/
npm run build npm run build
sudo rsync -av --delete dist/mempool/ /var/www/html/ sudo rsync -av --delete dist/mempool/ /var/www/html/
``` ```
## try it out ## Try It Out
If everything went okay you should see the beautiful mempool :grin: If everything went okay you should see the beautiful mempool :grin:

View file

@ -1,13 +1,17 @@
{ {
"name": "mempool-backend", "name": "mempool-backend",
"version": "1.0.0", "version": "1.0.0",
"description": "Bitcoin mempool visualizer", "description": "Bitcoin Mempool Visualizer",
"main": "index.ts", "main": "index.ts",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "build": "tsc",
"start": "npm run build && node dist/index.js"
}, },
"author": "", "author": {
"license": "ISC", "name": "Simon Lindh",
"url": "https://github.com/mempool-space/mempool.space"
},
"license": "MIT",
"dependencies": { "dependencies": {
"axios": "^0.19.0", "axios": "^0.19.0",
"bitcoin": "^3.0.1", "bitcoin": "^3.0.1",

View file

@ -1,20 +1,20 @@
{ {
"compilerOptions": { "compilerOptions": {
"module": "commonjs", "module": "commonjs",
"target": "es2015", "target": "es2015",
"strict": true, "strict": true,
"noImplicitAny": false, "noImplicitAny": false,
"sourceMap": false, "sourceMap": false,
"outDir": "dist", "outDir": "dist",
"moduleResolution": "node", "moduleResolution": "node",
"typeRoots": [ "typeRoots": [
"node_modules/@types" "node_modules/@types"
]
},
"include": [
"src/**/*.ts",
],
"exclude": [
"dist/**"
] ]
},
"include": [
"src/**/*.ts"
],
"exclude": [
"dist/**"
]
} }

View file

@ -1,6 +1,7 @@
{ {
"name": "mempool", "name": "mempool-frontend",
"version": "0.0.0", "version": "1.0.0",
"description": "Bitcoin Mempool Visualizer",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve --aot --proxy-config proxy.conf.json", "start": "ng serve --aot --proxy-config proxy.conf.json",
@ -9,7 +10,11 @@
"lint": "ng lint", "lint": "ng lint",
"e2e": "ng e2e" "e2e": "ng e2e"
}, },
"private": true, "author": {
"name": "Simon Lindh",
"url": "https://github.com/mempool-space/mempool.space"
},
"license": "MIT",
"dependencies": { "dependencies": {
"@angular/animations": "^8.2.11", "@angular/animations": "^8.2.11",
"@angular/common": "^8.2.11", "@angular/common": "^8.2.11",