58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/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 <<EOF
 | 
						|
rpcuser=$RPCUSER
 | 
						|
rpcpassword=$RPCPASSWORD
 | 
						|
host=$RPCHOST
 | 
						|
min_height=0
 | 
						|
max_height=$BLOCKS
 | 
						|
input=/input/blocks
 | 
						|
hashlist=/tmp/hashlist.txt
 | 
						|
output_file=/tmp/bootstrap.dat
 | 
						|
EOF
 | 
						|
 | 
						|
python ./linearize-hashes.py $C | tee /tmp/hashlist.new &&
 | 
						|
    mv /tmp/hashlist.new /tmp/hashlist.txt
 | 
						|
python ./linearize-data.py $C || exit 1
 | 
						|
YYYYMMDD="$(date -u +%Y%m%d)"
 | 
						|
 | 
						|
rsync -avP /tmp/bootstrap.dat /output/bootstrap.tmp && \
 | 
						|
    mv /output/bootstrap.tmp /output/bootstrap.$YYYYMMDD.dat
 |