Do not fetch sprout params, which saves every new Hush node from needing to download over 1.5GB of stuff it will never use

This commit is contained in:
Jonathan "Duke" Leto
2019-06-17 19:38:45 -07:00
parent 5faa6c3fea
commit 9d968518a3
2 changed files with 22 additions and 40 deletions

View File

@@ -4,26 +4,14 @@ cd %THIS_DIR%
IF NOT EXIST %APPDATA%\ZcashParams ( IF NOT EXIST %APPDATA%\ZcashParams (
MKDIR %APPDATA%\ZcashParams MKDIR %APPDATA%\ZcashParams
) )
IF NOT EXIST %APPDATA%\ZcashParams\sprout-proving.key (
ECHO Downloading Zcash trusted setup sprout-proving.key, this may take a while ...
.\wget64.exe --progress=dot:giga --continue --retry-connrefused --waitretry=3 --timeout=30 https://z.cash/downloads/sprout-proving.key -O %APPDATA%\ZcashParams\sprout-proving.key
)
IF NOT EXIST %APPDATA%\ZcashParams\sprout-verifying.key (
ECHO Downloading Zcash trusted setup sprout-verifying.key, this may take a while ...
.\wget64.exe --progress=dot:giga --continue --retry-connrefused --waitretry=3 --timeout=30 https://z.cash/downloads/sprout-verifying.key -O %APPDATA%\ZcashParams\sprout-verifying.key
)
IF NOT EXIST %APPDATA%\ZcashParams\sapling-spend.params ( IF NOT EXIST %APPDATA%\ZcashParams\sapling-spend.params (
ECHO Downloading Zcash trusted setup sprout-proving.key, this may take a while ... ECHO Downloading Zcash trusted setup sapling-spend.key, this may take a while ...
.\wget64.exe --progress=dot:giga --continue --retry-connrefused --waitretry=3 --timeout=30 https://z.cash/downloads/sapling-spend.params -O %APPDATA%\ZcashParams\sapling-spend.params .\wget64.exe --progress=dot:giga --continue --retry-connrefused --waitretry=3 --timeout=30 https://z.cash/downloads/sapling-spend.params -O %APPDATA%\ZcashParams\sapling-spend.params
) )
IF NOT EXIST %APPDATA%\ZcashParams\sapling-output.params ( IF NOT EXIST %APPDATA%\ZcashParams\sapling-output.params (
ECHO Downloading Zcash trusted setup sprout-verifying.key, this may take a while ... ECHO Downloading Zcash trusted setup sapling-output.key, this may take a while ...
.\wget64.exe --progress=dot:giga --continue --retry-connrefused --waitretry=3 --timeout=30 https://z.cash/downloads/sapling-output.params -O %APPDATA%\ZcashParams\sapling-output.params .\wget64.exe --progress=dot:giga --continue --retry-connrefused --waitretry=3 --timeout=30 https://z.cash/downloads/sapling-output.params -O %APPDATA%\ZcashParams\sapling-output.params
) )
IF NOT EXIST %APPDATA%\ZcashParams\sprout-groth16.params (
ECHO Downloading Zcash trusted setup sprout-verifying.key, this may take a while ...
.\wget64.exe --progress=dot:giga --continue --retry-connrefused --waitretry=3 --timeout=30 https://z.cash/downloads/sprout-groth16.params -O %APPDATA%\ZcashParams\sprout-groth16.params
)
goto :EOF goto :EOF
:GET_CURRENT_DIR :GET_CURRENT_DIR
pushd %~dp0 pushd %~dp0

View File

@@ -1,20 +1,20 @@
#!/bin/bash #!/bin/bash
# Copyright 2019 The Hush developers
set -eu set -eu
# We do not declare our own location because we can use the params
# from any other installed coins
if [[ "$OSTYPE" == "darwin"* ]]; then if [[ "$OSTYPE" == "darwin"* ]]; then
PARAMS_DIR="$HOME/Library/Application Support/ZcashParams" PARAMS_DIR="$HOME/Library/Application Support/ZcashParams"
else else
PARAMS_DIR="$HOME/.zcash-params" PARAMS_DIR="$HOME/.zcash-params"
fi fi
SPROUT_PKEY_NAME='sprout-proving.key'
SPROUT_VKEY_NAME='sprout-verifying.key'
SAPLING_SPEND_NAME='sapling-spend.params' SAPLING_SPEND_NAME='sapling-spend.params'
SAPLING_OUTPUT_NAME='sapling-output.params' SAPLING_OUTPUT_NAME='sapling-output.params'
SAPLING_SPROUT_GROTH16_NAME='sprout-groth16.params' URL="https://z.cash/downloads"
SPROUT_URL="https://z.cash/downloads" IPFS="/ipfs/QmZKKx7Xup7LiAtFRhYsE1M7waXcv9ir9eCECyXAFGxhEo"
SPROUT_IPFS="/ipfs/QmZKKx7Xup7LiAtFRhYsE1M7waXcv9ir9eCECyXAFGxhEo"
SHA256CMD="$(command -v sha256sum || echo shasum)" SHA256CMD="$(command -v sha256sum || echo shasum)"
SHA256ARGS="$(command -v sha256sum >/dev/null || echo '-a 256')" SHA256ARGS="$(command -v sha256sum >/dev/null || echo '-a 256')"
@@ -38,7 +38,7 @@ function fetch_wget {
cat <<EOF cat <<EOF
Retrieving (wget): $SPROUT_URL/$filename Retrieving (wget): $URL/$filename
EOF EOF
wget \ wget \
@@ -46,7 +46,7 @@ EOF
--output-document="$dlname" \ --output-document="$dlname" \
--continue \ --continue \
--retry-connrefused --waitretry=3 --timeout=30 \ --retry-connrefused --waitretry=3 --timeout=30 \
"$SPROUT_URL/$filename" "$URL/$filename"
} }
function fetch_ipfs { function fetch_ipfs {
@@ -59,10 +59,10 @@ function fetch_ipfs {
cat <<EOF cat <<EOF
Retrieving (ipfs): $SPROUT_IPFS/$filename Retrieving (ipfs): $IPFS/$filename
EOF EOF
ipfs get --output "$dlname" "$SPROUT_IPFS/$filename" ipfs get --output "$dlname" "$IPFS/$filename"
} }
function fetch_curl { function fetch_curl {
@@ -75,13 +75,13 @@ function fetch_curl {
cat <<EOF cat <<EOF
Retrieving (curl): $SPROUT_URL/$filename Retrieving (curl): $URL/$filename
EOF EOF
curl \ curl \
--output "$dlname" \ --output "$dlname" \
-# -L -C - \ -# -L -C - \
"$SPROUT_URL/$filename" "$URL/$filename"
} }
@@ -159,30 +159,29 @@ function main() {
|| exit_locked_error || exit_locked_error
cat <<EOF cat <<EOF
Zcash - fetch-params.sh Hush - fetch-params.sh
This script will fetch the Zcash zkSNARK parameters and verify their This script will fetch the zkSNARK parameters used in shield
integrity with sha256sum. transactions and verify their integrity with sha256sum.
If they already exist locally, it will exit now and do nothing else. If they already exist locally, it will exit now and do nothing else.
EOF EOF
# Now create PARAMS_DIR and insert a README if necessary: # Now create PARAMS_DIR and insert a README if necessary:
if ! [ -d "$PARAMS_DIR" ] if ! [ -d "$PARAMS_DIR" ]; then
then
mkdir -p "$PARAMS_DIR" mkdir -p "$PARAMS_DIR"
README_PATH="$PARAMS_DIR/README" README_PATH="$PARAMS_DIR/README"
cat >> "$README_PATH" <<EOF cat >> "$README_PATH" <<EOF
This directory stores common Zcash zkSNARK parameters. Note that it is This directory stores common zkSNARK parameters needed for shielded
distinct from the daemon's -datadir argument because the parameters are transactions. Note that it is distinct from the daemon's -datadir argument
large and may be shared across multiple distinct -datadir's such as when because the parameters are large and may be shared across multiple distinct
setting up test networks. -datadir's such as when setting up test networks.
EOF EOF
# This may be the first time the user's run this script, so give # This may be the first time the user's run this script, so give
# them some info, especially about bandwidth usage: # them some info, especially about bandwidth usage:
cat <<EOF cat <<EOF
The parameters are currently just under 911MB in size, so plan accordingly The parameters are currently about 50MB, so plan accordingly
for your bandwidth constraints. If the files are already present and for your bandwidth constraints. If the files are already present and
have the correct sha256sum, no networking is used. have the correct sha256sum, no networking is used.
@@ -194,14 +193,9 @@ EOF
cd "$PARAMS_DIR" cd "$PARAMS_DIR"
# Sprout parameters:
fetch_params "$SPROUT_PKEY_NAME" "$PARAMS_DIR/$SPROUT_PKEY_NAME" "8bc20a7f013b2b58970cddd2e7ea028975c88ae7ceb9259a5344a16bc2c0eef7"
fetch_params "$SPROUT_VKEY_NAME" "$PARAMS_DIR/$SPROUT_VKEY_NAME" "4bd498dae0aacfd8e98dc306338d017d9c08dd0918ead18172bd0aec2fc5df82"
# Sapling parameters: # Sapling parameters:
fetch_params "$SAPLING_SPEND_NAME" "$PARAMS_DIR/$SAPLING_SPEND_NAME" "8e48ffd23abb3a5fd9c5589204f32d9c31285a04b78096ba40a79b75677efc13" fetch_params "$SAPLING_SPEND_NAME" "$PARAMS_DIR/$SAPLING_SPEND_NAME" "8e48ffd23abb3a5fd9c5589204f32d9c31285a04b78096ba40a79b75677efc13"
fetch_params "$SAPLING_OUTPUT_NAME" "$PARAMS_DIR/$SAPLING_OUTPUT_NAME" "2f0ebbcbb9bb0bcffe95a397e7eba89c29eb4dde6191c339db88570e3f3fb0e4" fetch_params "$SAPLING_OUTPUT_NAME" "$PARAMS_DIR/$SAPLING_OUTPUT_NAME" "2f0ebbcbb9bb0bcffe95a397e7eba89c29eb4dde6191c339db88570e3f3fb0e4"
fetch_params "$SAPLING_SPROUT_GROTH16_NAME" "$PARAMS_DIR/$SAPLING_SPROUT_GROTH16_NAME" "b685d700c60328498fbde589c8c7c484c722b788b265b72af448a5bf0ee55b50"
} }
main main