From 6a0c7ceae9f604df57a93e790d24ec2679b7e2c0 Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Fri, 17 Mar 2017 11:46:41 -0600 Subject: [PATCH] Introduce librustzcash and Rust to depends system. --- configure.ac | 2 +- depends/packages/librustzcash.mk | 19 +++++++++++++++++++ depends/packages/packages.mk | 2 +- depends/packages/rust.mk | 9 +++++++++ src/pow.cpp | 8 ++++++++ 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 depends/packages/librustzcash.mk create mode 100644 depends/packages/rust.mk diff --git a/configure.ac b/configure.ac index 44dd34bd5..7be76833c 100644 --- a/configure.ac +++ b/configure.ac @@ -751,7 +751,7 @@ CPPFLAGS="-I$LIBSNARK_INCDIR $CPPFLAGS" AC_CHECK_HEADER([libsnark/gadgetlib1/gadget.hpp],,AC_MSG_ERROR(libsnark headers missing)) AC_CHECK_LIB([snark],[main],LIBSNARK_LIBS=-lsnark, [AC_MSG_ERROR(libsnark missing)], [-lgmpxx]) -LIBZCASH_LIBS="-lsnark -lgmp -lgmpxx -lboost_system-mt -lcrypto -lsodium -fopenmp" +LIBZCASH_LIBS="-lrustzcash -lsnark -lgmp -lgmpxx -lboost_system-mt -lcrypto -lsodium -fopenmp" CXXFLAGS_TEMP="$CXXFLAGS" LIBS_TEMP="$LIBS" diff --git a/depends/packages/librustzcash.mk b/depends/packages/librustzcash.mk new file mode 100644 index 000000000..e27adec26 --- /dev/null +++ b/depends/packages/librustzcash.mk @@ -0,0 +1,19 @@ +package=librustzcash +$(package)_version=0.1 +$(package)_download_path=https://github.com/zcash/$(package)/archive/ +$(package)_file_name=$(package)-$($(package)_git_commit).tar.gz +$(package)_download_file=$($(package)_git_commit).tar.gz +$(package)_sha256_hash=a5760a90d4a1045c8944204f29fa2a3cf2f800afee400f88bf89bbfe2cce1279 +$(package)_git_commit=91348647a86201a9482ad4ad68398152dc3d635e +$(package)_dependencies=rust + +define $(package)_build_cmds + cargo build --release +endef + +define $(package)_stage_cmds + mkdir $($(package)_staging_dir)$(host_prefix)/lib/ && \ + mkdir $($(package)_staging_dir)$(host_prefix)/include/ && \ + cp target/release/librustzcash.a $($(package)_staging_dir)$(host_prefix)/lib/ && \ + cp include/librustzcash.h $($(package)_staging_dir)$(host_prefix)/include/ +endef diff --git a/depends/packages/packages.mk b/depends/packages/packages.mk index 28c7afb25..7710c0f47 100644 --- a/depends/packages/packages.mk +++ b/depends/packages/packages.mk @@ -1,4 +1,4 @@ -zcash_packages := libsnark libgmp libsodium +zcash_packages := libsnark libgmp libsodium rust librustzcash packages := boost openssl zeromq $(zcash_packages) googletest googlemock native_packages := native_ccache diff --git a/depends/packages/rust.mk b/depends/packages/rust.mk new file mode 100644 index 000000000..cdefbdbee --- /dev/null +++ b/depends/packages/rust.mk @@ -0,0 +1,9 @@ +package=rust +$(package)_version=1.16.0 +$(package)_download_path=https://static.rust-lang.org/dist +$(package)_file_name=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz +$(package)_sha256_hash=48621912c242753ba37cad5145df375eeba41c81079df46f93ffb4896542e8fd + +define $(package)_stage_cmds + ./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig +endef diff --git a/src/pow.cpp b/src/pow.cpp index 18873d4ee..298b77fd0 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -5,6 +5,8 @@ #include "pow.h" +#include "librustzcash.h" + #include "arith_uint256.h" #include "chain.h" #include "chainparams.h" @@ -96,6 +98,12 @@ bool CheckEquihashSolution(const CBlockHeader *pblock, const CChainParams& param // H(I||V||... crypto_generichash_blake2b_update(&state, (unsigned char*)&ss[0], ss.size()); + // Ensure that our Rust interactions are working in production builds. This is + // temporary and should be removed. + { + assert(librustzcash_xor(0x0f0f0f0f0f0f0f0f, 0x1111111111111111) == 0x1e1e1e1e1e1e1e1e); + } + bool isValid; EhIsValidSolution(n, k, state, pblock->nSolution, isValid); if (!isValid)