This commit is contained in:
Martin Boehm 2018-05-23 11:09:19 +02:00
commit 181c3090da
21 changed files with 92 additions and 62 deletions

View File

@ -87,7 +87,7 @@ The data are separated to different column families:
- **height** - maps *block height* to *block hash*
*Block heigh* stored as array of 4 bytes (big endian uint32)
*Block heigh* stored as array of 4 bytes (big endian uint32)
*Block hash* stored as array of 32 bytes
Example - the first four blocks (all data hex encoded)
@ -100,7 +100,7 @@ The data are separated to different column families:
- **outputs** - maps *output script+block height* to *array of outpoints*
*Output script (ScriptPubKey)+block height* stored as variable length array of bytes for output script + 4 bytes (big endian uint32) block height
*Output script (ScriptPubKey)+block height* stored as variable length array of bytes for output script + 4 bytes (big endian uint32) block height
*array of outpoints* stored as array of 32 bytes for transaction id + variable length outpoint index for each outpoint
Example - (all data hex encoded)
@ -111,7 +111,7 @@ The data are separated to different column families:
- **inputs** - maps *transaction outpoint* to *input transaction* that spends it
*Transaction outpoint* stored as array of 32 bytes for transaction id + variable length outpoint index
*Transaction outpoint* stored as array of 32 bytes for transaction id + variable length outpoint index
*Input transaction* stored as array of 32 bytes for transaction id + variable length input index
Example - (all data hex encoded)
@ -120,6 +120,24 @@ The data are separated to different column families:
0x7246e79f97b5f82e7f51e291d533964028ec90be0634af8a8ef7d5a903c7f6d301 : 0x4303a9fcfe6026b4d33ba488df6443c9a99bca7b7fcb7c6f6cd65cea24a749b700
```
## Registry of ports
| coin | blockbook http port | blockbook socket.io port | RPC port | zmq port |
|-------------|---------------------|--------------------------|----------|----------|
| btc | 9030 | 9130 | 8030 | 38330 |
| bch | 9031 | 9131 | 8031 | 38331 |
| zec | 9032 | 9132 | 8032 | 38332 |
| dash | 9033 | 9133 | 8033 | 38333 |
| ltc | 9034 | 9134 | 8034 | 38334 |
| btg | 9035 | 9135 | 8035 | 38335 |
| eth | 9036 | 9136 | 8036 | |
| etc | 9037 | 9137 | 8037 | |
| xem | 9038 | 9138 | 8038 | 38336 |
| btc-testnet | 19030 | 19130 | 18030 | 48330 |
| bch-testnet | 19031 | 19131 | 18031 | 48331 |
| zec-testnet | 19032 | 19132 | 18032 | 48332 |
| eth-testnet | 19036 | 19136 | 18036 | |
## Todo
- add db data version (column data version) checking to db to avoid data corruption

View File

@ -2,7 +2,7 @@
Get Bitcoin Core
```
wget https://bitcoin.org/bin/bitcoin-core-0.16.0/bitcoin-0.15.1-x86_64-linux-gnu.tar.gz
tar -xf bitcoin-0.16.0-x86_64-linux-gnu.tar.gz
tar -xf bitcoin-0.16.0-x86_64-linux-gnu.tar.gz
```
Data are stored in */data/btc*, in folders */data/btc/bitcoin* for Bitcoin Core data, */data/btc/blockbook* for Blockbook data.
@ -13,26 +13,26 @@ daemon=1
server=1
rpcuser=rpc
rpcpassword=rpc
rpcport=8332
rpcport=8030
txindex=1
```
Create script that starts the bitcoind daemon *run-btc-bitcoind.sh* with increased rpcworkqueue and configured zeromq
```
#!/bin/bash
bitcoin-0.15.1/bin/bitcoind -datadir=/data/btc/bitcoin -rpcworkqueue=32 -zmqpubhashtx=tcp://127.0.0.1:8334 -zmqpubhashblock=tcp://127.0.0.1:8334 -zmqpubrawblock=tcp://127.0.0.1:8334 -zmqpubrawtx=tcp://127.0.0.1:8334
bitcoin-0.15.1/bin/bitcoind -datadir=/data/btc/bitcoin -rpcworkqueue=32 -zmqpubhashtx=tcp://127.0.0.1:38330 -zmqpubhashblock=tcp://127.0.0.1:38330 -zmqpubrawblock=tcp://127.0.0.1:38330 -zmqpubrawtx=tcp://127.0.0.1:38330
```
Run the *run-btc-bitcoind.sh* to get initial import of data.
Create blockchain configuration file */data/testnet/blockbook/btc.json*
```
{
"rpcURL": "http://127.0.0.1:8332",
"rpcURL": "http://127.0.0.1:8030",
"rpcUser": "rpc",
"rpcPass": "rpc",
"rpcTimeout": 25,
"parse": true,
"zeroMQBinding": "tcp://127.0.0.1:8334"
"zeroMQBinding": "tcp://127.0.0.1:38330"
}
```
@ -41,7 +41,7 @@ Create script that runs blockbook *run-btc-blockbook.sh*
#!/bin/bash
cd go/src/blockbook
./blockbook -coin=btc -blockchaincfg=/data/btc/blockbook/btc.json -datadir=/data/btc/blockbook/db -sync -httpserver=:8335 -socketio=:8336 -certfile=server/testcert -explorer=https://bitcore1.trezor.io/ $1
./blockbook -coin=btc -blockchaincfg=/data/btc/blockbook/btc.json -datadir=/data/btc/blockbook/db -sync -httpserver=:9030 -socketio=:9130 -certfile=server/testcert -explorer=https://bitcore1.trezor.io/ $1
```
To run blockbook with logging to file (run with nohup or daemonize or using screen)
```

View File

@ -2,7 +2,7 @@
Get Bitcoin Core
```
wget https://bitcoin.org/bin/bitcoin-core-0.16.0/bitcoin-0.15.1-x86_64-linux-gnu.tar.gz
tar -xf bitcoin-0.16.0-x86_64-linux-gnu.tar.gz
tar -xf bitcoin-0.16.0-x86_64-linux-gnu.tar.gz
```
Data are stored in */data/testnet*, in folders */data/testnet/bitcoin* for Bitcoin Core data, */data/testnet/blockbook* for Blockbook data.
@ -13,26 +13,26 @@ daemon=1
server=1
rpcuser=rpc
rpcpassword=rpc
rpcport=18332
rpcport=18030
txindex=1
```
Create script that starts the bitcoind daemon *run-testnet-bitcoind.sh* with increased rpcworkqueue and configured zeromq
```
#!/bin/bash
bitcoin-0.15.1/bin/bitcoind -datadir=/data/testnet/bitcoin -rpcworkqueue=32 -zmqpubhashtx=tcp://127.0.0.1:18334 -zmqpubhashblock=tcp://127.0.0.1:18334 -zmqpubrawblock=tcp://127.0.0.1:18334 -zmqpubrawtx=tcp://127.0.0.1:18334
bitcoin-0.15.1/bin/bitcoind -datadir=/data/testnet/bitcoin -rpcworkqueue=32 -zmqpubhashtx=tcp://127.0.0.1:48330 -zmqpubhashblock=tcp://127.0.0.1:48330 -zmqpubrawblock=tcp://127.0.0.1:48330 -zmqpubrawtx=tcp://127.0.0.1:48330
```
Run the *run-testnet-bitcoind.sh* to get initial import of data.
Create blockchain configuration file */data/testnet/blockbook/btc-testnet.json*
```
{
"rpcURL": "http://127.0.0.1:18332",
"rpcURL": "http://127.0.0.1:18030",
"rpcUser": "rpc",
"rpcPass": "rpc",
"rpcTimeout": 25,
"parse": true,
"zeroMQBinding": "tcp://127.0.0.1:18334"
"zeroMQBinding": "tcp://127.0.0.1:48330"
}
```
@ -41,7 +41,7 @@ Create script that runs blockbook *run-testnet-blockbook.sh*
#!/bin/bash
cd go/src/blockbook
./blockbook -coin=btc-testnet -blockchaincfg=/data/testnet/blockbook/btc-testnet.json -datadir=/data/testnet/blockbook/db -sync -httpserver=:18335 -socketio=:18336 -certfile=server/testcert -explorer=https://testnet-bitcore1.trezor.io $1
./blockbook -coin=btc-testnet -blockchaincfg=/data/testnet/blockbook/btc-testnet.json -datadir=/data/testnet/blockbook/db -sync -httpserver=:19030 -socketio=:19130 -certfile=server/testcert -explorer=https://testnet-bitcore1.trezor.io $1
```
To run blockbook with logging to file (run with nohup or daemonize or using screen)
```

View File

@ -18,7 +18,7 @@ daemon=1
server=1
rpcuser=rpc
rpcpassword=rpc
rpcport=8232
rpcport=8032
txindex=1
mainnet=1
addnode=mainnet.z.cash
@ -28,15 +28,27 @@ Create script *run-zec-zcashd.sh* that starts the zcashd daemon with increased r
```
#!/bin/bash
zcash-1.0.15/bin/zcashd -datadir=/data/zec/zcash -rpcworkqueue=32 -zmqpubhashblock=tcp://127.0.0.1:8234 -zmqpubrawblock=tcp://127.0.0.1:8234 -zmqpubhashtx=tcp://127.0.0.1:8234 -zmqpubrawtx=tcp://127.0.0.1:8234
zcash-1.0.15/bin/zcashd -datadir=/data/zec/zcash -rpcworkqueue=32 -zmqpubhashblock=tcp://127.0.0.1:38332 -zmqpubrawblock=tcp://127.0.0.1:38332 -zmqpubhashtx=tcp://127.0.0.1:38332 -zmqpubrawtx=tcp://127.0.0.1:38332
```
Run the *run-zec-zcashd.sh* to get initial import of data.
Create blockchain configuration file */data/zec/blockbook/zec.json*
```
{
"rpcURL": "http://127.0.0.1:8032",
"rpcUser": "rpc",
"rpcPass": "rpc",
"rpcTimeout": 25,
"parse": true,
"zeroMQBinding": "tcp://127.0.0.1:38332"
}
```
Create *run-zec-blockbook.sh* script that starts blockbook
```
#!/bin/bash
./blockbook -path=/data/zec/blockbook/db -sync -parse -rpcurl=http://127.0.0.1:8232 -httpserver=:8235 -socketio=:8236 -certfile=server/testcert -zeromq=tcp://127.0.0.1:8234 -explorer=https://zec-bitcore1.trezor.io -coin=zec $1
./blockbook -coin=zec -blockchaincfg=/data/zec/blockbook/zec.json -datadir=/data/zec/blockbook/db -sync -httpserver=:9032 -socketio=:9132 -certfile=server/testcert -explorer=https://zec-bitcore1.trezor.io $1
```
To run blockbook with logging to file (run with nohup or daemonize using screen)

View File

@ -10,7 +10,7 @@ After=network.target
Wants=bcash-testnet.service
[Service]
ExecStart=/opt/coins/blockbook/bch-testnet/bin/blockbook -coin=bch-testnet -blockchaincfg=/opt/coins/blockbook/bch-testnet/config/blockchaincfg.json -datadir=/opt/coins/data/bch-testnet/blockbook/db -sync -httpserver=:18435 -socketio=:18436 -certfile=/opt/coins/blockbook/bch-testnet/cert/blockbook -explorer=https://bitcoincash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/bch-testnet/logs
ExecStart=/opt/coins/blockbook/bch-testnet/bin/blockbook -coin=bch-testnet -blockchaincfg=/opt/coins/blockbook/bch-testnet/config/blockchaincfg.json -datadir=/opt/coins/data/bch-testnet/blockbook/db -sync -httpserver=:19031 -socketio=:19131 -certfile=/opt/coins/blockbook/bch-testnet/cert/blockbook -explorer=https://bitcoincash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/bch-testnet/logs
User=blockbook-bch
Type=simple
Restart=on-failure

View File

@ -10,7 +10,7 @@ After=network.target
Wants=bcash-bch.service
[Service]
ExecStart=/opt/coins/blockbook/bch/bin/blockbook -coin=bch -blockchaincfg=/opt/coins/blockbook/bch/config/blockchaincfg.json -datadir=/opt/coins/data/bch/blockbook/db -sync -httpserver=:8435 -socketio=:8436 -certfile=/opt/coins/blockbook/bch/cert/blockbook -explorer=https://bitcoincash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/bch/logs
ExecStart=/opt/coins/blockbook/bch/bin/blockbook -coin=bch -blockchaincfg=/opt/coins/blockbook/bch/config/blockchaincfg.json -datadir=/opt/coins/data/bch/blockbook/db -sync -httpserver=:9031 -socketio=:9131 -certfile=/opt/coins/blockbook/bch/cert/blockbook -explorer=https://bitcoincash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/bch/logs
User=blockbook-bch
Type=simple
Restart=on-failure

View File

@ -10,7 +10,7 @@ After=network.target
Wants=bitcoin-testnet.service
[Service]
ExecStart=/opt/coins/blockbook/btc-testnet/bin/blockbook -coin=btc-testnet -blockchaincfg=/opt/coins/blockbook/btc-testnet/config/blockchaincfg.json -datadir=/opt/coins/data/btc-testnet/blockbook/db -sync -httpserver=:18335 -socketio=:18336 -certfile=/opt/coins/blockbook/btc-testnet/cert/blockbook -explorer=https://bitcore1.trezor.io/ -log_dir=/opt/coins/blockbook/btc-testnet/logs
ExecStart=/opt/coins/blockbook/btc-testnet/bin/blockbook -coin=btc-testnet -blockchaincfg=/opt/coins/blockbook/btc-testnet/config/blockchaincfg.json -datadir=/opt/coins/data/btc-testnet/blockbook/db -sync -httpserver=:19030 -socketio=:19130 -certfile=/opt/coins/blockbook/btc-testnet/cert/blockbook -explorer=https://bitcore1.trezor.io/ -log_dir=/opt/coins/blockbook/btc-testnet/logs
User=blockbook-btc
Type=simple
Restart=on-failure

View File

@ -10,7 +10,7 @@ After=network.target
Wants=bitcoin-btc.service
[Service]
ExecStart=/opt/coins/blockbook/btc/bin/blockbook -coin=btc -blockchaincfg=/opt/coins/blockbook/btc/config/blockchaincfg.json -datadir=/opt/coins/data/btc/blockbook/db -sync -httpserver=:8335 -socketio=:8336 -certfile=/opt/coins/blockbook/btc/cert/blockbook -explorer=https://bitcore1.trezor.io/ -log_dir=/opt/coins/blockbook/btc/logs
ExecStart=/opt/coins/blockbook/btc/bin/blockbook -coin=btc -blockchaincfg=/opt/coins/blockbook/btc/config/blockchaincfg.json -datadir=/opt/coins/data/btc/blockbook/db -sync -httpserver=:9030 -socketio=:9130 -certfile=/opt/coins/blockbook/btc/cert/blockbook -explorer=https://bitcore1.trezor.io/ -log_dir=/opt/coins/blockbook/btc/logs
User=blockbook-btc
Type=simple
Restart=on-failure

View File

@ -10,7 +10,7 @@ After=network.target
Wants=zcash-zec.service
[Service]
ExecStart=/opt/coins/blockbook/zec/bin/blockbook -coin=zec -blockchaincfg=/opt/coins/blockbook/zec/config/blockchaincfg.json -datadir=/opt/coins/data/zec/blockbook/db -sync -httpserver=:8235 -socketio=:8236 -certfile=/opt/coins/blockbook/zec/cert/blockbook -explorer=https://zec-bitcore1.trezor.io/ -log_dir=/opt/coins/blockbook/zec/logs
ExecStart=/opt/coins/blockbook/zec/bin/blockbook -coin=zec -blockchaincfg=/opt/coins/blockbook/zec/config/blockchaincfg.json -datadir=/opt/coins/data/zec/blockbook/db -sync -httpserver=:9032 -socketio=:9132 -certfile=/opt/coins/blockbook/zec/cert/blockbook -explorer=https://zec-bitcore1.trezor.io/ -log_dir=/opt/coins/blockbook/zec/logs
User=blockbook-zec
Type=simple
Restart=on-failure

View File

@ -1,9 +1,9 @@
{
"rpcURL": "http://localhost:18432",
"rpcURL": "http://localhost:18031",
"rpcUser": "rpc",
"rpcPass": "rpc",
"rpcTimeout": 25,
"parse": true,
"zeroMQBinding": "tcp://127.0.0.1:18434",
"zeroMQBinding": "tcp://127.0.0.1:48331",
"subversion": "/Bitcoin ABC:0.17.1/"
}

View File

@ -1,9 +1,9 @@
{
"rpcURL": "http://127.0.0.1:8432",
"rpcURL": "http://127.0.0.1:8031",
"rpcUser": "rpc",
"rpcPass": "rpc",
"rpcTimeout": 25,
"parse": true,
"zeroMQBinding": "tcp://127.0.0.1:8434",
"zeroMQBinding": "tcp://127.0.0.1:38331",
"subversion": "/Bitcoin ABC:0.17.1/"
}

View File

@ -1,8 +1,8 @@
{
"rpcURL": "http://localhost:18332",
"rpcURL": "http://localhost:18030",
"rpcUser": "rpc",
"rpcPass": "rpc",
"rpcTimeout": 25,
"parse": true,
"zeroMQBinding": "tcp://127.0.0.1:18334"
"zeroMQBinding": "tcp://127.0.0.1:48330"
}

View File

@ -1,8 +1,8 @@
{
"rpcURL": "http://127.0.0.1:8332",
"rpcURL": "http://127.0.0.1:8030",
"rpcUser": "rpc",
"rpcPass": "rpc",
"rpcTimeout": 25,
"parse": true,
"zeroMQBinding": "tcp://127.0.0.1:8334"
"zeroMQBinding": "tcp://127.0.0.1:38330"
}

View File

@ -1,4 +1,4 @@
{
"rpcURL": "ws://localhost:18546",
"rpcURL": "ws://localhost:18036",
"rpcTimeout": 25
}
}

View File

@ -1,4 +1,4 @@
{
"rpcURL": "ws://localhost:8546",
"rpcURL": "ws://localhost:8036",
"rpcTimeout": 25
}
}

View File

@ -1,8 +1,8 @@
{
"rpcURL": "http://127.0.0.1:8232",
"rpcURL": "http://127.0.0.1:8032",
"rpcUser": "rpc",
"rpcPass": "rpc",
"rpcTimeout": 25,
"parse": true,
"zeroMQBinding": "tcp://127.0.0.1:8234"
"zeroMQBinding": "tcp://127.0.0.1:38332"
}

View File

@ -4,10 +4,10 @@ testnet=1
nolisten=1
rpcuser=rpc
rpcpassword=rpc
rpcport=18432
rpcport=18031
txindex=1
rpcworkqueue=32
zmqpubhashtx=tcp://127.0.0.1:18434
zmqpubhashblock=tcp://127.0.0.1:18434
zmqpubrawblock=tcp://127.0.0.1:18434
zmqpubrawtx=tcp://127.0.0.1:18434
zmqpubhashtx=tcp://127.0.0.1:48331
zmqpubhashblock=tcp://127.0.0.1:48331
zmqpubrawblock=tcp://127.0.0.1:48331
zmqpubrawtx=tcp://127.0.0.1:48331

View File

@ -3,10 +3,10 @@ server=1
nolisten=1
rpcuser=rpc
rpcpassword=rpc
rpcport=8432
rpcport=8031
txindex=1
rpcworkqueue=32
zmqpubhashtx=tcp://127.0.0.1:8434
zmqpubhashblock=tcp://127.0.0.1:8434
zmqpubrawblock=tcp://127.0.0.1:8434
zmqpubrawtx=tcp://127.0.0.1:8434
zmqpubhashtx=tcp://127.0.0.1:38331
zmqpubhashblock=tcp://127.0.0.1:38331
zmqpubrawblock=tcp://127.0.0.1:38331
zmqpubrawtx=tcp://127.0.0.1:38331

View File

@ -3,10 +3,10 @@ server=1
testnet=1
rpcuser=rpc
rpcpassword=rpc
rpcport=18332
rpcport=18030
txindex=1
rpcworkqueue=32
zmqpubhashtx=tcp://127.0.0.1:18334
zmqpubhashblock=tcp://127.0.0.1:18334
zmqpubrawblock=tcp://127.0.0.1:18334
zmqpubrawtx=tcp://127.0.0.1:18334
zmqpubhashtx=tcp://127.0.0.1:48330
zmqpubhashblock=tcp://127.0.0.1:48330
zmqpubrawblock=tcp://127.0.0.1:48330
zmqpubrawtx=tcp://127.0.0.1:48330

View File

@ -2,10 +2,10 @@ daemon=1
server=1
rpcuser=rpc
rpcpassword=rpc
rpcport=8332
rpcport=8030
txindex=1
rpcworkqueue=32
zmqpubhashtx=tcp://127.0.0.1:8334
zmqpubhashblock=tcp://127.0.0.1:8334
zmqpubrawblock=tcp://127.0.0.1:8334
zmqpubrawtx=tcp://127.0.0.1:8334
zmqpubhashtx=tcp://127.0.0.1:38330
zmqpubhashblock=tcp://127.0.0.1:38330
zmqpubrawblock=tcp://127.0.0.1:38330
zmqpubrawtx=tcp://127.0.0.1:38330

View File

@ -2,12 +2,12 @@ daemon=1
server=1
rpcuser=rpc
rpcpassword=rpc
rpcport=8232
rpcport=8032
txindex=1
mainnet=1
addnode=mainnet.z.cash
rpcworkqueue=32
zmqpubhashtx=tcp://127.0.0.1:8234
zmqpubhashblock=tcp://127.0.0.1:8234
zmqpubrawblock=tcp://127.0.0.1:8234
zmqpubrawtx=tcp://127.0.0.1:8234
zmqpubhashtx=tcp://127.0.0.1:38332
zmqpubhashblock=tcp://127.0.0.1:38332
zmqpubrawblock=tcp://127.0.0.1:38332
zmqpubrawtx=tcp://127.0.0.1:38332