From 198dfd3c36a9b92a09e906c97ac0a8465343ff0c Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Sat, 4 Aug 2018 16:28:39 -0600 Subject: [PATCH] Switch to use the official Sapling parameters. --- src/gtest/main.cpp | 12 ++++---- src/init.cpp | 60 ++++++++++++++++----------------------- src/test/test_bitcoin.cpp | 12 ++++---- zcutil/fetch-params.sh | 24 ++++++---------- 4 files changed, 45 insertions(+), 63 deletions(-) diff --git a/src/gtest/main.cpp b/src/gtest/main.cpp index 43820f1df..00700d05b 100644 --- a/src/gtest/main.cpp +++ b/src/gtest/main.cpp @@ -30,9 +30,9 @@ int main(int argc, char **argv) { boost::filesystem::path vk_path = ZC_GetParamsDir() / "sprout-verifying.key"; params = ZCJoinSplit::Prepared(vk_path.string(), pk_path.string()); - boost::filesystem::path sapling_spend = ZC_GetParamsDir() / "sapling-spend-testnet.params"; - boost::filesystem::path sapling_output = ZC_GetParamsDir() / "sapling-output-testnet.params"; - boost::filesystem::path sprout_groth16 = ZC_GetParamsDir() / "sprout-groth16-testnet.params"; + boost::filesystem::path sapling_spend = ZC_GetParamsDir() / "sapling-spend.params"; + boost::filesystem::path sapling_output = ZC_GetParamsDir() / "sapling-output.params"; + boost::filesystem::path sprout_groth16 = ZC_GetParamsDir() / "sprout-groth16.params"; std::string sapling_spend_str = sapling_spend.string(); std::string sapling_output_str = sapling_output.string(); @@ -40,11 +40,11 @@ int main(int argc, char **argv) { librustzcash_init_zksnark_params( sapling_spend_str.c_str(), - "35f6afd7d7514531aaa9fa529bdcddf116865f02abdd42164322bb1949227d82bdae295cad9c7b98d4bbbb00e045fa17aca79c90f53433a66bce4e82b6a1936d", + "8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c", sapling_output_str.c_str(), - "f9d0b98ea51830c4974878f1b32bb68b2bf530e2e0ae09cd2a9b609d6fda37f1a1928e2d1ca91c31835c75dcc16057db53a807cc5cb37ebcfb753aa843a8ac21", + "657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028", sprout_groth16_str.c_str(), - "7a6723311162cb0c664c742d2fa42278195ade98ba3f21ef4fa02b82c83aed696e107e389ac7b3b0f33f417aeefe5be775d117910a473a422b4a1b97489fbdd6" + "e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a" ); testing::InitGoogleMock(&argc, argv); diff --git a/src/init.cpp b/src/init.cpp index 71630ac95..8e94c94e6 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -688,24 +688,16 @@ static void ZC_LoadParams( boost::filesystem::path pk_path = ZC_GetParamsDir() / "sprout-proving.key"; boost::filesystem::path vk_path = ZC_GetParamsDir() / "sprout-verifying.key"; - boost::filesystem::path sapling_spend = ZC_GetParamsDir() / "sapling-spend-testnet.params"; - boost::filesystem::path sapling_output = ZC_GetParamsDir() / "sapling-output-testnet.params"; - boost::filesystem::path sprout_groth16 = ZC_GetParamsDir() / "sprout-groth16-testnet.params"; - - bool sapling_paths_valid = true; - - // We don't load Sapling zk-SNARK params if mainnet is configured - if (chainparams.NetworkIDString() != "main") { - sapling_paths_valid = - boost::filesystem::exists(sapling_spend) && - boost::filesystem::exists(sapling_output) && - boost::filesystem::exists(sprout_groth16); - } + boost::filesystem::path sapling_spend = ZC_GetParamsDir() / "sapling-spend.params"; + boost::filesystem::path sapling_output = ZC_GetParamsDir() / "sapling-output.params"; + boost::filesystem::path sprout_groth16 = ZC_GetParamsDir() / "sprout-groth16.params"; if (!( boost::filesystem::exists(pk_path) && boost::filesystem::exists(vk_path) && - sapling_paths_valid + boost::filesystem::exists(sapling_spend) && + boost::filesystem::exists(sapling_output) && + boost::filesystem::exists(sprout_groth16) )) { uiInterface.ThreadSafeMessageBox(strprintf( _("Cannot find the Zcash network parameters in the following directory:\n" @@ -726,31 +718,27 @@ static void ZC_LoadParams( elapsed = float(tv_end.tv_sec-tv_start.tv_sec) + (tv_end.tv_usec-tv_start.tv_usec)/float(1000000); LogPrintf("Loaded verifying key in %fs seconds.\n", elapsed); - if (chainparams.NetworkIDString() != "main") { - std::string sapling_spend_str = sapling_spend.string(); - std::string sapling_output_str = sapling_output.string(); - std::string sprout_groth16_str = sprout_groth16.string(); + std::string sapling_spend_str = sapling_spend.string(); + std::string sapling_output_str = sapling_output.string(); + std::string sprout_groth16_str = sprout_groth16.string(); - LogPrintf("Loading Sapling (Spend) parameters from %s\n", sapling_spend_str.c_str()); - LogPrintf("Loading Sapling (Output) parameters from %s\n", sapling_output_str.c_str()); - LogPrintf("Loading Sapling (Sprout Groth16) parameters from %s\n", sprout_groth16_str.c_str()); - gettimeofday(&tv_start, 0); + LogPrintf("Loading Sapling (Spend) parameters from %s\n", sapling_spend_str.c_str()); + LogPrintf("Loading Sapling (Output) parameters from %s\n", sapling_output_str.c_str()); + LogPrintf("Loading Sapling (Sprout Groth16) parameters from %s\n", sprout_groth16_str.c_str()); + gettimeofday(&tv_start, 0); - librustzcash_init_zksnark_params( - sapling_spend_str.c_str(), - "35f6afd7d7514531aaa9fa529bdcddf116865f02abdd42164322bb1949227d82bdae295cad9c7b98d4bbbb00e045fa17aca79c90f53433a66bce4e82b6a1936d", - sapling_output_str.c_str(), - "f9d0b98ea51830c4974878f1b32bb68b2bf530e2e0ae09cd2a9b609d6fda37f1a1928e2d1ca91c31835c75dcc16057db53a807cc5cb37ebcfb753aa843a8ac21", - sprout_groth16_str.c_str(), - "7a6723311162cb0c664c742d2fa42278195ade98ba3f21ef4fa02b82c83aed696e107e389ac7b3b0f33f417aeefe5be775d117910a473a422b4a1b97489fbdd6" - ); + librustzcash_init_zksnark_params( + sapling_spend_str.c_str(), + "8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c", + sapling_output_str.c_str(), + "657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028", + sprout_groth16_str.c_str(), + "e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a" + ); - gettimeofday(&tv_end, 0); - elapsed = float(tv_end.tv_sec-tv_start.tv_sec) + (tv_end.tv_usec-tv_start.tv_usec)/float(1000000); - LogPrintf("Loaded Sapling parameters in %fs seconds.\n", elapsed); - } else { - LogPrintf("Not loading Sapling parameters in mainnet\n"); - } + gettimeofday(&tv_end, 0); + elapsed = float(tv_end.tv_sec-tv_start.tv_sec) + (tv_end.tv_usec-tv_start.tv_usec)/float(1000000); + LogPrintf("Loaded Sapling parameters in %fs seconds.\n", elapsed); } bool AppInitServers(boost::thread_group& threadGroup) diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp index 95e60a93d..2b4acad84 100644 --- a/src/test/test_bitcoin.cpp +++ b/src/test/test_bitcoin.cpp @@ -41,9 +41,9 @@ JoinSplitTestingSetup::JoinSplitTestingSetup() boost::filesystem::path vk_path = ZC_GetParamsDir() / "sprout-verifying.key"; pzcashParams = ZCJoinSplit::Prepared(vk_path.string(), pk_path.string()); - boost::filesystem::path sapling_spend = ZC_GetParamsDir() / "sapling-spend-testnet.params"; - boost::filesystem::path sapling_output = ZC_GetParamsDir() / "sapling-output-testnet.params"; - boost::filesystem::path sprout_groth16 = ZC_GetParamsDir() / "sprout-groth16-testnet.params"; + boost::filesystem::path sapling_spend = ZC_GetParamsDir() / "sapling-spend.params"; + boost::filesystem::path sapling_output = ZC_GetParamsDir() / "sapling-output.params"; + boost::filesystem::path sprout_groth16 = ZC_GetParamsDir() / "sprout-groth16.params"; std::string sapling_spend_str = sapling_spend.string(); std::string sapling_output_str = sapling_output.string(); @@ -51,11 +51,11 @@ JoinSplitTestingSetup::JoinSplitTestingSetup() librustzcash_init_zksnark_params( sapling_spend_str.c_str(), - "35f6afd7d7514531aaa9fa529bdcddf116865f02abdd42164322bb1949227d82bdae295cad9c7b98d4bbbb00e045fa17aca79c90f53433a66bce4e82b6a1936d", + "8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c", sapling_output_str.c_str(), - "f9d0b98ea51830c4974878f1b32bb68b2bf530e2e0ae09cd2a9b609d6fda37f1a1928e2d1ca91c31835c75dcc16057db53a807cc5cb37ebcfb753aa843a8ac21", + "657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028", sprout_groth16_str.c_str(), - "7a6723311162cb0c664c742d2fa42278195ade98ba3f21ef4fa02b82c83aed696e107e389ac7b3b0f33f417aeefe5be775d117910a473a422b4a1b97489fbdd6" + "e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a" ); } diff --git a/zcutil/fetch-params.sh b/zcutil/fetch-params.sh index 9f7e2e1c9..522de8099 100755 --- a/zcutil/fetch-params.sh +++ b/zcutil/fetch-params.sh @@ -10,9 +10,9 @@ fi SPROUT_PKEY_NAME='sprout-proving.key' SPROUT_VKEY_NAME='sprout-verifying.key' -SAPLING_SPEND_NAME='sapling-spend-testnet.params' -SAPLING_OUTPUT_NAME='sapling-output-testnet.params' -SAPLING_SPROUT_GROTH16_NAME='sprout-groth16-testnet.params' +SAPLING_SPEND_NAME='sapling-spend.params' +SAPLING_OUTPUT_NAME='sapling-output.params' +SAPLING_SPROUT_GROTH16_NAME='sprout-groth16.params' SPROUT_URL="https://z.cash/downloads" SPROUT_IPFS="/ipfs/QmZKKx7Xup7LiAtFRhYsE1M7waXcv9ir9eCECyXAFGxhEo" @@ -164,10 +164,6 @@ Zcash - fetch-params.sh This script will fetch the Zcash zkSNARK parameters and verify their integrity with sha256sum. -NOTE: If you're using testnet or regtest, you will need to invoke this -script with --testnet in order to download additional parameters. This -is temporary. - If they already exist locally, it will exit now and do nothing else. EOF @@ -198,18 +194,16 @@ EOF 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" - if [ "x${1:-}" = 'x--testnet' ] - then - echo "(NOTE) Testnet parameters enabled." - fetch_params "$SAPLING_SPEND_NAME" "$PARAMS_DIR/$SAPLING_SPEND_NAME" "0459ac407b95de2b3cbd6876358920c1e2044680f28badaeb6b49169d210a31e" - fetch_params "$SAPLING_OUTPUT_NAME" "$PARAMS_DIR/$SAPLING_OUTPUT_NAME" "53fea4df10540c7979a72497f16a3932d953758b356e637747caa4a25d0ab914" - fetch_params "$SAPLING_SPROUT_GROTH16_NAME" "$PARAMS_DIR/$SAPLING_SPROUT_GROTH16_NAME" "58ae56ce8d2c4d4001a55c002c7d6be273835818187881aab41cdfc704b9dbf9" - fi + # Sapling parameters: + 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_SPROUT_GROTH16_NAME" "$PARAMS_DIR/$SAPLING_SPROUT_GROTH16_NAME" "b685d700c60328498fbde589c8c7c484c722b788b265b72af448a5bf0ee55b50" } -main ${1:-} +main rm -f /tmp/fetch_params.lock exit 0