#!/bin/bash set -eu PARAMS_DIR="$HOME/.zcash-params" REGTEST_PKEY_NAME='z9-proving.key' REGTEST_VKEY_NAME='z9-verifying.key' REGTEST_PKEY_URL="https://z.cash/downloads/$REGTEST_PKEY_NAME" REGTEST_VKEY_URL="https://z.cash/downloads/$REGTEST_VKEY_NAME" REGTEST_DIR="$PARAMS_DIR/regtest" # This should have the same params as regtest. We use symlinks for now. TESTNET3_DIR="$PARAMS_DIR/testnet3" function fetch_params { local url="$1" local output="$2" local dlname="${output}.dl" if ! [ -f "$output" ] then echo "Retrieving: $url" wget \ --progress=dot:giga \ --output-document="$dlname" \ --continue \ "$url" # Only after successful download do we update the parameter load path: mv -v "$dlname" "$output" fi } # Use flock to prevent parallel execution. function lock() { local lockfile=/tmp/fetch_params.lock # create lock file eval "exec 200>/$lockfile" # acquire the lock flock -n 200 \ && return 0 \ || return 1 } function exit_locked_error { echo "Only one instance of fetch-params.sh can be run at a time." >&2 exit 1 } function main() { lock fetch-params.sh \ || exit_locked_error cat <> "$README_PATH" <