#!/bin/bash set -eu if [[ "$OSTYPE" == "darwin"* ]]; then PARAMS_DIR="$HOME/Library/Application Support/ZcashParams" else PARAMS_DIR="$HOME/.zcash-params" fi SPROUT_PKEY_NAME='sprout-proving.key' SPROUT_VKEY_NAME='sprout-verifying.key' SAPLING_SPEND_NAME='sapling-spend.params' SAPLING_OUTPUT_NAME='sapling-output.params' SAPLING_SPROUT_GROTH16_NAME='sprout-groth16.params' SPROUT_URL="https://verus.io/zcparams" SPROUT_IPFS="/ipfs/QmZKKx7Xup7LiAtFRhYsE1M7waXcv9ir9eCECyXAFGxhEo" SHA256CMD="$(command -v sha256sum || echo shasum)" SHA256ARGS="$(command -v sha256sum >/dev/null || echo '-a 256')" WGETCMD="$(command -v wget || echo '')" IPFSCMD="$(command -v ipfs || echo '')" CURLCMD="$(command -v curl || echo '')" # fetch methods can be disabled with ZC_DISABLE_SOMETHING=1 ZC_DISABLE_WGET="${ZC_DISABLE_WGET:-}" ZC_DISABLE_IPFS="${ZC_DISABLE_IPFS:-}" ZC_DISABLE_CURL="${ZC_DISABLE_CURL:-}" function fetch_wget { if [ -z "$WGETCMD" ] || ! [ -z "$ZC_DISABLE_WGET" ]; then return 1 fi local filename="$1" local dlname="$2" cat <&2 <&2 exit 1 fi fi } # Use flock to prevent parallel execution. function lock() { local lockfile=/tmp/fetch_params.lock if [[ "$OSTYPE" == "darwin"* ]]; then if shlock -f ${lockfile} -p $$; then return 0 else return 1 fi else # create lock file eval "exec 200>$lockfile" # acquire the lock flock -n 200 \ && return 0 \ || return 1 fi } 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" <