From 2e4edc507d41cf99aa3f2bdb8dc4fffeba8d79f6 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Thu, 9 Jul 2020 12:46:38 +1200 Subject: [PATCH 1/5] Remove crypto/equihash from libzcashconsensus This library (in the version we inherited from Bitcoin Core 0.11.2) is entirely focused on transparent script verification; a full Equihash solver is out of scope. Now that Heartwood has activated, the canonical Equihash validator is the Rust implementation in the equihash crate. --- src/Makefile.am | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index 4118a4488..3eb74e829 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -547,7 +547,6 @@ libzcash_a_LDFLAGS = $(AM_LDFLAGS) if BUILD_BITCOIN_LIBS include_HEADERS = script/zcashconsensus.h libzcashconsensus_la_SOURCES = \ - crypto/equihash.cpp \ crypto/hmac_sha512.cpp \ crypto/ripemd160.cpp \ crypto/sha1.cpp \ From 308bb1083ae4b457408e779b27a4e5479ff569d2 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Thu, 9 Jul 2020 12:48:21 +1200 Subject: [PATCH 2/5] Add amount and consensus branch ID to zcashconsensus_verify_script We didn't initially expose these because we assumed that this API was likely being used somewhere in the ecosystem. However, the build system for libzcashconsensus has been broken since 2018, and no issues were raised, which strongly indicates that this API is not currently in use. --- src/script/zcashconsensus.cpp | 14 ++++++++------ src/script/zcashconsensus.h | 10 +++++++--- src/test/script_tests.cpp | 8 +++++++- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/script/zcashconsensus.cpp b/src/script/zcashconsensus.cpp index ec6091551..e8fbf9ed2 100644 --- a/src/script/zcashconsensus.cpp +++ b/src/script/zcashconsensus.cpp @@ -71,9 +71,13 @@ struct ECCryptoClosure ECCryptoClosure instance_of_eccryptoclosure; } -int zcashconsensus_verify_script(const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, - const unsigned char *txTo , unsigned int txToLen, - unsigned int nIn, unsigned int flags, zcashconsensus_error* err) +int zcashconsensus_verify_script( + const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, + int64_t amount, + const unsigned char *txTo, unsigned int txToLen, + unsigned int nIn, unsigned int flags, + uint32_t consensusBranchId, + zcashconsensus_error* err) { try { TxInputStream stream(SER_NETWORK, PROTOCOL_VERSION, txTo, txToLen); @@ -87,13 +91,11 @@ int zcashconsensus_verify_script(const unsigned char *scriptPubKey, unsigned int // Regardless of the verification result, the tx did not error. set_error(err, zcashconsensus_ERR_OK); PrecomputedTransactionData txdata(tx); - CAmount am(0); - uint32_t consensusBranchId = SPROUT_BRANCH_ID; return VerifyScript( tx.vin[nIn].scriptSig, CScript(scriptPubKey, scriptPubKey + scriptPubKeyLen), flags, - TransactionSignatureChecker(&tx, nIn, am, txdata), + TransactionSignatureChecker(&tx, nIn, amount, txdata), consensusBranchId, NULL); } catch (const std::exception&) { diff --git a/src/script/zcashconsensus.h b/src/script/zcashconsensus.h index c7b3a6045..ba3b25b92 100644 --- a/src/script/zcashconsensus.h +++ b/src/script/zcashconsensus.h @@ -55,9 +55,13 @@ enum /// txTo correctly spends the scriptPubKey pointed to by scriptPubKey under /// the additional constraints specified by flags. /// If not NULL, err will contain an error/success code for the operation -EXPORT_SYMBOL int zcashconsensus_verify_script(const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, - const unsigned char *txTo , unsigned int txToLen, - unsigned int nIn, unsigned int flags, zcashconsensus_error* err); +EXPORT_SYMBOL int zcashconsensus_verify_script( + const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, + int64_t amount, + const unsigned char *txTo, unsigned int txToLen, + unsigned int nIn, unsigned int flags, + uint32_t consensusBranchId, + zcashconsensus_error* err); EXPORT_SYMBOL unsigned int zcashconsensus_version(); diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index e3e6f8087..b510d7851 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -84,7 +84,13 @@ void DoTest(const CScript& scriptPubKey, const CScript& scriptSig, int flags, ui #if defined(HAVE_CONSENSUS_LIB) CDataStream stream(SER_NETWORK, PROTOCOL_VERSION); stream << tx2; - BOOST_CHECK_MESSAGE(zcashconsensus_verify_script(begin_ptr(scriptPubKey), scriptPubKey.size(), (const unsigned char*)&stream[0], stream.size(), 0, flags, NULL) == expect,message); + BOOST_CHECK_MESSAGE(zcashconsensus_verify_script( + begin_ptr(scriptPubKey), scriptPubKey.size(), + txCredit.vout[0].nValue, + (const unsigned char*)&stream[0], stream.size(), + 0, flags, + consensusBranchId, + NULL) == expect,message); #endif } From c5e7b84e9b05bccfe245f602e5a39ff9d2b8a4db Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 11 Aug 2020 21:19:16 +0100 Subject: [PATCH 3/5] Rename src/script/zcashconsensus.* -> src/script/zcash_script.* --- src/Makefile.am | 4 ++-- src/script/{zcashconsensus.cpp => zcash_script.cpp} | 2 +- src/script/{zcashconsensus.h => zcash_script.h} | 0 src/test/script_tests.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename src/script/{zcashconsensus.cpp => zcash_script.cpp} (99%) rename src/script/{zcashconsensus.h => zcash_script.h} (100%) diff --git a/src/Makefile.am b/src/Makefile.am index 3eb74e829..ab1ed882e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -545,7 +545,7 @@ libzcash_a_LDFLAGS = $(AM_LDFLAGS) # zcashconsensus library # if BUILD_BITCOIN_LIBS -include_HEADERS = script/zcashconsensus.h +include_HEADERS = script/zcash_script.h libzcashconsensus_la_SOURCES = \ crypto/hmac_sha512.cpp \ crypto/ripemd160.cpp \ @@ -555,7 +555,7 @@ libzcashconsensus_la_SOURCES = \ hash.cpp \ primitives/transaction.cpp \ pubkey.cpp \ - script/zcashconsensus.cpp \ + script/zcash_script.cpp \ script/interpreter.cpp \ script/script.cpp \ uint256.cpp \ diff --git a/src/script/zcashconsensus.cpp b/src/script/zcash_script.cpp similarity index 99% rename from src/script/zcashconsensus.cpp rename to src/script/zcash_script.cpp index e8fbf9ed2..d6af677c7 100644 --- a/src/script/zcashconsensus.cpp +++ b/src/script/zcash_script.cpp @@ -3,7 +3,7 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or https://www.opensource.org/licenses/mit-license.php . -#include "zcashconsensus.h" +#include "zcash_script.h" #include "consensus/upgrades.h" #include "primitives/transaction.h" diff --git a/src/script/zcashconsensus.h b/src/script/zcash_script.h similarity index 100% rename from src/script/zcashconsensus.h rename to src/script/zcash_script.h diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index b510d7851..76d22c750 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -18,7 +18,7 @@ #include "test/test_util.h" #if defined(HAVE_CONSENSUS_LIB) -#include "script/zcashconsensus.h" +#include "script/zcash_script.h" #endif #include From ea8065917e3e3fc287a2b62651660553bc3b037c Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 11 Aug 2020 21:49:46 +0100 Subject: [PATCH 4/5] Rename zcashconsensus_* -> zcash_script_* in APIs --- src/script/zcash_script.cpp | 18 +++++++++--------- src/script/zcash_script.h | 26 +++++++++++++------------- src/test/script_tests.cpp | 2 +- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/script/zcash_script.cpp b/src/script/zcash_script.cpp index d6af677c7..799ca5bdd 100644 --- a/src/script/zcash_script.cpp +++ b/src/script/zcash_script.cpp @@ -56,7 +56,7 @@ private: size_t m_remaining; }; -inline int set_error(zcashconsensus_error* ret, zcashconsensus_error serror) +inline int set_error(zcash_script_error* ret, zcash_script_error serror) { if (ret) *ret = serror; @@ -71,25 +71,25 @@ struct ECCryptoClosure ECCryptoClosure instance_of_eccryptoclosure; } -int zcashconsensus_verify_script( +int zcash_script_verify( const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, int64_t amount, const unsigned char *txTo, unsigned int txToLen, unsigned int nIn, unsigned int flags, uint32_t consensusBranchId, - zcashconsensus_error* err) + zcash_script_error* err) { try { TxInputStream stream(SER_NETWORK, PROTOCOL_VERSION, txTo, txToLen); CTransaction tx; stream >> tx; if (nIn >= tx.vin.size()) - return set_error(err, zcashconsensus_ERR_TX_INDEX); + return set_error(err, zcash_script_ERR_TX_INDEX); if (GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION) != txToLen) - return set_error(err, zcashconsensus_ERR_TX_SIZE_MISMATCH); + return set_error(err, zcash_script_ERR_TX_SIZE_MISMATCH); // Regardless of the verification result, the tx did not error. - set_error(err, zcashconsensus_ERR_OK); + set_error(err, zcash_script_ERR_OK); PrecomputedTransactionData txdata(tx); return VerifyScript( tx.vin[nIn].scriptSig, @@ -99,12 +99,12 @@ int zcashconsensus_verify_script( consensusBranchId, NULL); } catch (const std::exception&) { - return set_error(err, zcashconsensus_ERR_TX_DESERIALIZE); // Error deserializing + return set_error(err, zcash_script_ERR_TX_DESERIALIZE); // Error deserializing } } -unsigned int zcashconsensus_version() +unsigned int zcash_script_version() { // Just use the API version for now - return ZCASHCONSENSUS_API_VER; + return ZCASH_SCRIPT_API_VER; } diff --git a/src/script/zcash_script.h b/src/script/zcash_script.h index ba3b25b92..17287c241 100644 --- a/src/script/zcash_script.h +++ b/src/script/zcash_script.h @@ -33,37 +33,37 @@ extern "C" { #endif -#define ZCASHCONSENSUS_API_VER 0 +#define ZCASH_SCRIPT_API_VER 0 -typedef enum zcashconsensus_error_t +typedef enum zcash_script_error_t { - zcashconsensus_ERR_OK = 0, - zcashconsensus_ERR_TX_INDEX, - zcashconsensus_ERR_TX_SIZE_MISMATCH, - zcashconsensus_ERR_TX_DESERIALIZE, -} zcashconsensus_error; + zcash_script_ERR_OK = 0, + zcash_script_ERR_TX_INDEX, + zcash_script_ERR_TX_SIZE_MISMATCH, + zcash_script_ERR_TX_DESERIALIZE, +} zcash_script_error; /** Script verification flags */ enum { - zcashconsensus_SCRIPT_FLAGS_VERIFY_NONE = 0, - zcashconsensus_SCRIPT_FLAGS_VERIFY_P2SH = (1U << 0), // evaluate P2SH (BIP16) subscripts - zcashconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY = (1U << 9), // enable CHECKLOCKTIMEVERIFY (BIP65) + zcash_script_SCRIPT_FLAGS_VERIFY_NONE = 0, + zcash_script_SCRIPT_FLAGS_VERIFY_P2SH = (1U << 0), // evaluate P2SH (BIP16) subscripts + zcash_script_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY = (1U << 9), // enable CHECKLOCKTIMEVERIFY (BIP65) }; /// Returns 1 if the input nIn of the serialized transaction pointed to by /// txTo correctly spends the scriptPubKey pointed to by scriptPubKey under /// the additional constraints specified by flags. /// If not NULL, err will contain an error/success code for the operation -EXPORT_SYMBOL int zcashconsensus_verify_script( +EXPORT_SYMBOL int zcash_script_verify( const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, int64_t amount, const unsigned char *txTo, unsigned int txToLen, unsigned int nIn, unsigned int flags, uint32_t consensusBranchId, - zcashconsensus_error* err); + zcash_script_error* err); -EXPORT_SYMBOL unsigned int zcashconsensus_version(); +EXPORT_SYMBOL unsigned int zcash_script_version(); #ifdef __cplusplus } // extern "C" diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index 76d22c750..3a4c0064e 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -84,7 +84,7 @@ void DoTest(const CScript& scriptPubKey, const CScript& scriptSig, int flags, ui #if defined(HAVE_CONSENSUS_LIB) CDataStream stream(SER_NETWORK, PROTOCOL_VERSION); stream << tx2; - BOOST_CHECK_MESSAGE(zcashconsensus_verify_script( + BOOST_CHECK_MESSAGE(zcash_script_verify( begin_ptr(scriptPubKey), scriptPubKey.size(), txCredit.vout[0].nValue, (const unsigned char*)&stream[0], stream.size(), From 90232f65ae66993e445d194c0e5b6343b924c52e Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 11 Aug 2020 21:56:23 +0100 Subject: [PATCH 5/5] Rename libzcashconsensus.la -> libzcash_script.la --- .gitignore | 2 +- Makefile.am | 2 +- configure.ac | 4 ++-- libzcash_script.pc.in | 10 ++++++++++ libzcashconsensus.pc.in | 10 ---------- src/Makefile.am | 18 +++++++++--------- src/Makefile.gtest.include | 2 +- src/Makefile.test.include | 2 +- src/test/script_tests.cpp | 4 ++-- zcutil/make-release.py | 2 +- 10 files changed, 28 insertions(+), 28 deletions(-) create mode 100644 libzcash_script.pc.in delete mode 100644 libzcashconsensus.pc.in diff --git a/.gitignore b/.gitignore index e1ade7a55..56b26fdbc 100644 --- a/.gitignore +++ b/.gitignore @@ -112,7 +112,7 @@ qa/cache/* /doc/doxygen/ -libzcashconsensus.pc +libzcash_script.pc contrib/debian/files contrib/debian/substvars diff --git a/Makefile.am b/Makefile.am index 0cbef9ee5..a77f7e980 100644 --- a/Makefile.am +++ b/Makefile.am @@ -19,7 +19,7 @@ GZIP_ENV="-9n" if BUILD_BITCOIN_LIBS pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libzcashconsensus.pc +pkgconfig_DATA = libzcash_script.pc endif BITCOIND_BIN=$(top_builddir)/src/$(BITCOIN_DAEMON_NAME)$(EXEEXT) diff --git a/configure.ac b/configure.ac index 3e1f8f11a..1748721d4 100644 --- a/configure.ac +++ b/configure.ac @@ -872,8 +872,8 @@ AC_MSG_RESULT($build_bitcoin_utils) AC_MSG_CHECKING([whether to build libraries]) AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes]) if test x$build_bitcoin_libs = xyes; then - AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built]) - AC_CONFIG_FILES([libzcashconsensus.pc:libzcashconsensus.pc.in]) + AC_DEFINE(HAVE_SCRIPT_LIB, 1, [Define this symbol if the script lib has been built]) + AC_CONFIG_FILES([libzcash_script.pc:libzcash_script.pc.in]) fi AC_MSG_RESULT($build_bitcoin_libs) diff --git a/libzcash_script.pc.in b/libzcash_script.pc.in new file mode 100644 index 000000000..bd288484f --- /dev/null +++ b/libzcash_script.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: Zcash transparent script verification library +Description: Library for verifying scripts against the Zcash consensus protocol. +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -lzcash_script +Cflags: -I${includedir} diff --git a/libzcashconsensus.pc.in b/libzcashconsensus.pc.in deleted file mode 100644 index 7391bb9da..000000000 --- a/libzcashconsensus.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: Zcash consensus library -Description: Library for the Zcash consensus protocol. -Version: @PACKAGE_VERSION@ -Libs: -L${libdir} -lzcashconsensus -Cflags: -I${includedir} diff --git a/src/Makefile.am b/src/Makefile.am index ab1ed882e..7e2112a9d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -33,7 +33,7 @@ if ENABLE_ZMQ LIBBITCOIN_ZMQ=libbitcoin_zmq.a endif if BUILD_BITCOIN_LIBS -LIBZCASH_CONSENSUS=libzcashconsensus.la +LIBZCASH_SCRIPT=libzcash_script.la endif if ENABLE_WALLET LIBBITCOIN_WALLET=libbitcoin_wallet.a @@ -88,7 +88,7 @@ EXTRA_LIBRARIES += \ $(LIBBITCOIN_ZMQ) \ $(LIBZCASH) -lib_LTLIBRARIES = $(LIBZCASH_CONSENSUS) +lib_LTLIBRARIES = $(LIBZCASH_SCRIPT) bin_PROGRAMS = noinst_PROGRAMS = @@ -543,10 +543,10 @@ libzcash_a_CPPFLAGS = $(AM_CPPFLAGS) $(PIC_FLAGS) $(BITCOIN_INCLUDES) libzcash_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) libzcash_a_LDFLAGS = $(AM_LDFLAGS) -# zcashconsensus library # +# zcash_script library # if BUILD_BITCOIN_LIBS include_HEADERS = script/zcash_script.h -libzcashconsensus_la_SOURCES = \ +libzcash_script_la_SOURCES = \ crypto/hmac_sha512.cpp \ crypto/ripemd160.cpp \ crypto/sha1.cpp \ @@ -562,13 +562,13 @@ libzcashconsensus_la_SOURCES = \ utilstrencodings.cpp if GLIBC_BACK_COMPAT - libzcashconsensus_la_SOURCES += compat/glibc_compat.cpp + libzcash_script_la_SOURCES += compat/glibc_compat.cpp endif -libzcashconsensus_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(RELDFLAGS) -libzcashconsensus_la_LIBADD = $(LIBSECP256K1) -libzcashconsensus_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/rust/include -I$(srcdir)/secp256k1/include -DBUILD_BITCOIN_INTERNAL -libzcashconsensus_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) +libzcash_script_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(RELDFLAGS) +libzcash_script_la_LIBADD = $(LIBSECP256K1) +libzcash_script_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/rust/include -I$(srcdir)/secp256k1/include -DBUILD_BITCOIN_INTERNAL +libzcash_script_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) endif # diff --git a/src/Makefile.gtest.include b/src/Makefile.gtest.include index d3f28d159..0817ee51a 100644 --- a/src/Makefile.gtest.include +++ b/src/Makefile.gtest.include @@ -80,7 +80,7 @@ zcash_gtest_LDADD = \ $(LIBSECP256K1) zcash_gtest_LDADD += \ - $(LIBZCASH_CONSENSUS) \ + $(LIBZCASH_SCRIPT) \ $(BOOST_LIBS) \ $(BOOST_UNIT_TEST_FRAMEWORK_LIB) \ $(BDB_LIBS) \ diff --git a/src/Makefile.test.include b/src/Makefile.test.include index 3db8cbf12..3bcff11da 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -130,7 +130,7 @@ test_test_bitcoin_LDADD += $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_C $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) $(EVENT_LIBS) $(EVENT_PTHREADS_LIBS) test_test_bitcoin_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -test_test_bitcoin_LDADD += $(LIBZCASH_CONSENSUS) $(BDB_LIBS) $(LIBZCASH) $(LIBRUSTZCASH) $(LIBZCASH_LIBS) +test_test_bitcoin_LDADD += $(LIBZCASH_SCRIPT) $(BDB_LIBS) $(LIBZCASH) $(LIBRUSTZCASH) $(LIBZCASH_LIBS) test_test_bitcoin_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) -static if ENABLE_ZMQ diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index 3a4c0064e..9f5a36b3a 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -17,7 +17,7 @@ #include "test/test_bitcoin.h" #include "test/test_util.h" -#if defined(HAVE_CONSENSUS_LIB) +#if defined(HAVE_SCRIPT_LIB) #include "script/zcash_script.h" #endif @@ -81,7 +81,7 @@ void DoTest(const CScript& scriptPubKey, const CScript& scriptSig, int flags, ui CMutableTransaction tx2 = tx; BOOST_CHECK_MESSAGE(VerifyScript(scriptSig, scriptPubKey, flags, MutableTransactionSignatureChecker(&tx, 0, txCredit.vout[0].nValue), consensusBranchId, &err) == expect, message); BOOST_CHECK_MESSAGE(expect == (err == SCRIPT_ERR_OK), std::string(ScriptErrorString(err)) + ": " + message); -#if defined(HAVE_CONSENSUS_LIB) +#if defined(HAVE_SCRIPT_LIB) CDataStream stream(SER_NETWORK, PROTOCOL_VERSION); stream << tx2; BOOST_CHECK_MESSAGE(zcash_script_verify( diff --git a/zcutil/make-release.py b/zcutil/make-release.py index 8134bdfde..861566eb3 100755 --- a/zcutil/make-release.py +++ b/zcutil/make-release.py @@ -276,7 +276,7 @@ def build(): 'Staging zeromq...', 'Staging libsodium...', "Leaving directory '%s'" % depends_dir, - 'config.status: creating libzcashconsensus.pc', + 'config.status: creating libzcash_script.pc', "Entering directory '%s'" % src_dir, 'httpserver.cpp', 'torcontrol.cpp',