diff --git a/mkbootstrapdat/Dockerfile b/mkbootstrapdat/Dockerfile new file mode 100644 index 0000000..6567736 --- /dev/null +++ b/mkbootstrapdat/Dockerfile @@ -0,0 +1,22 @@ +FROM ubuntu:14.04 + +VOLUME /bitcoin + +ADD ./sources.list /etc/apt/sources.list +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get -y upgrade && \ + apt-get -y install git build-essential jq curl python pv + +RUN cd /usr/local/src && \ + git clone https://github.com/bitcoin/bitcoin.git && \ + cd bitcoin && \ + git checkout a9149688f87cb790a600400abd9af72c3ee0c312 + +VOLUME /input +VOLUME /output + +ADD ./mkbootstrap /usr/local/bin/mkbootstrap +RUN chmod +x /usr/local/bin/mkbootstrap + +ENTRYPOINT /usr/local/bin/mkbootstrap diff --git a/mkbootstrapdat/Makefile b/mkbootstrapdat/Makefile new file mode 100644 index 0000000..a2ea569 --- /dev/null +++ b/mkbootstrapdat/Makefile @@ -0,0 +1,7 @@ +default: build + +build: + docker-compose build + +up: + docker-compose up diff --git a/mkbootstrapdat/docker-compose.yml b/mkbootstrapdat/docker-compose.yml new file mode 100644 index 0000000..355ea11 --- /dev/null +++ b/mkbootstrapdat/docker-compose.yml @@ -0,0 +1,16 @@ +version: '2.0' + +services: + mkbootstrap: + hostname: mkbootstrap.local + build: . + image: tmp/mkbootstrap + network_mode: bridge + env_file: "${HOME}/Documents/workstation/envfile/mkbootstrap.env" + volumes: + - "/storage/nobackup/bitcoin:/input:ro" + - "/storage/nobackup/bitcoin/bootstrap:/output" + logging: + driver: syslog + options: + syslog-address: "tcp://172.17.0.1:514" diff --git a/mkbootstrapdat/mkbootstrap b/mkbootstrapdat/mkbootstrap new file mode 100644 index 0000000..ea21e91 --- /dev/null +++ b/mkbootstrapdat/mkbootstrap @@ -0,0 +1,57 @@ +#!/bin/bash + +exec 1> >(logger -s -t mkbootstrap) 2>&1 + +if [[ ! -d /input/blocks ]]; then + echo "unable to find blocksource" > /dev/stderr + exit 1 +fi + +set -x + +JSON="$(curl --user $RPCUSER:$RPCPASSWORD \ + --max-time 20 \ + --data-binary \ + '{"jsonrpc": "1.0", "id":"curltest", "method": "getblockchaininfo", "params": [] }' \ + -H 'content-type: text/plain;' \ + http://$RPCHOST:8332/)" + +BLOCKS=$(jq -r .result.blocks <<< """$JSON""") +HEADERS=$(jq -r .result.headers <<< """$JSON""") + +if [[ ! $BLOCKS -gt 405749 ]]; then + echo "bitcoind does not have full chain yet" > /dev/stderr + exit 1 +fi + +if [[ ! $HEADERS -gt 405749 ]]; then + echo "bitcoind does not have full chain yet" > /dev/stderr + exit 1 +fi + +if [[ $HEADERS -gt $BLOCKS ]]; then + echo "bitcoind does not have full chain yet" > /dev/stderr + exit 1 +fi + +cd /usr/local/src/bitcoin/contrib/linearize +C="/etc/linearize.conf" + +cat > $C <