From 7eeb20f75c0961ae19388c403ea22e190bd0b1e5 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Fri, 30 Nov 2018 00:40:11 +0900 Subject: [PATCH] Make the utxo-set scripts more friendly --- contrib/load-utxo-set.sh | 32 ++++++++++++++++++++-------- contrib/save-utxo-set-in-bitcoind.sh | 2 ++ contrib/save-utxo-set.sh | 11 +++++++--- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/contrib/load-utxo-set.sh b/contrib/load-utxo-set.sh index 8911311..23fd4d6 100755 --- a/contrib/load-utxo-set.sh +++ b/contrib/load-utxo-set.sh @@ -1,6 +1,11 @@ #!/bin/bash -# This script shows the steps to download and update an archive of the current UTXO Set +# This script shows the steps to download and deploy an archive of the current UTXO Set +# It will: +# 1. Download the UTXO Set from UTXO_DOWNLOAD_LINK, if UTXO_DOWNLOAD_LINK is empty, use NBITCOIN_NETWORK to find a default +# 2. Check the tarball against trusted hashes +# 3. Create the container's folders for blocks and chainstate, or empty them if they exists +# 4. Unzip the tarball if ! [ "$0" = "$BASH_SOURCE" ]; then echo "This script must not be sourced" @@ -12,11 +17,20 @@ if [[ $EUID -ne 0 ]]; then exit 1 fi -: "${UTXO_DOWNLOAD_LINK:=http://utxosets.blob.core.windows.net/public/utxo-snapshot-bitcoin-mainnet-551636.tar}" -NETWORK="" -[[ $DOWNLOAD_LINK == *-testnet-* ]] && NETWORK="testnet" -[[ $DOWNLOAD_LINK == *-mainnet-* ]] && NETWORK="mainnet" -[[ $DOWNLOAD_LINK == *-regtest-* ]] && NETWORK="regtest" +if [[ "$NBITCOIN_NETWORK" ]]; then + echo "NBITCOIN_NETWORK should be set to mainnet, testnet or regtest" + exit 1 +fi + +if ! [[ "$UTXO_DOWNLOAD_LINK" ]]; then + [[ $NBITCOIN_NETWORK == "mainnet" ]] && UTXO_DOWNLOAD_LINK="http://utxosets.blob.core.windows.net/public/utxo-snapshot-bitcoin-mainnet-551636.tar" + [[ $NBITCOIN_NETWORK == "testnet" ]] && UTXO_DOWNLOAD_LINK="http://utxosets.blob.core.windows.net/public/utxo-snapshot-bitcoin-testnet-1445586.tar" +fi + +if ! [[ "$UTXO_DOWNLOAD_LINK" ]]; then + echo "No default UTXO_DOWNLOAD_LINK for $NBITCOIN_NETWORK" + exit 1 +fi BITCOIN_DATA_DIR="/var/lib/docker/volumes/generated_bitcoin_datadir/_data" [ ! -d "$BITCOIN_DATA_DIR" ] && mkdir -p "$BITCOIN_DATA_DIR" @@ -48,11 +62,11 @@ fi rm "sig.asc" cd - -NETWORK_DIRECTORY=$NETWORK -if [[ $NETWORK == "mainnet" ]]; then +NETWORK_DIRECTORY=$NBITCOIN_NETWORK +if [[ $NBITCOIN_NETWORK == "mainnet" ]]; then NETWORK_DIRECTORY="." fi -if [[ $NETWORK == "testnet" ]]; then +if [[ $NBITCOIN_NETWORK == "testnet" ]]; then NETWORK_DIRECTORY="testnet3" fi diff --git a/contrib/save-utxo-set-in-bitcoind.sh b/contrib/save-utxo-set-in-bitcoind.sh index 6ebfd73..72a8dec 100755 --- a/contrib/save-utxo-set-in-bitcoind.sh +++ b/contrib/save-utxo-set-in-bitcoind.sh @@ -1,3 +1,4 @@ +# This file is internal and meant to be run by save-utxo-set.sh BITCOIND="bitcoind -datadir=/data" BITCOIN_CLI="bitcoin-cli -datadir=/data" @@ -26,3 +27,4 @@ TAR_NAME="utxo-snapshot-bitcoin-$NBITCOIN_NETWORK-$PRUNED_HEIGHT.tar" echo "Creating $TAR_NAME..." tar -cf "$TAR_NAME" "$NETWORK_DIRECTORY/blocks/" tar -rf "$TAR_NAME" "$NETWORK_DIRECTORY/chainstate/" +exit diff --git a/contrib/save-utxo-set.sh b/contrib/save-utxo-set.sh index b713c94..35286ac 100755 --- a/contrib/save-utxo-set.sh +++ b/contrib/save-utxo-set.sh @@ -1,12 +1,17 @@ #!/bin/bash # This script shows the steps to create an archive of the current UTXO Set +# It will: +# 1. Shutdown BTCPay Server +# 2. Start bitcoind +# 3. Prune it to up to 289 blocks from the tip +# 4. Stop bitcoind +# 5. Archive in a tarball the blocks and chainstate directories +# 6. Restart BTCPay +# 7. If AZURE_STORAGE_CONNECTION_STRING is set, then upload to azure storage and make the blob public, else print hash and tarball : "${AZURE_STORAGE_CONTAINER:=public}" -# IN THE HOST ############################################################# - -# Stop btcpay btcpay-down.sh for i in /var/lib/docker/volumes/generated_bitcoin_datadir/_data/utxo-snapshot-*; do