Commit Graph
100 Commits
Author SHA1 Message Date
Jack Grigg e1d41f21f3 Update tests for CreateNewContextualCMutableTransaction changes 2018-05-07 20:21:55 +01:00
Jack Grigg e1dbec49b7 Add test of Sapling transaction size boundary 2018-05-04 11:17:30 +01:00
Jack Grigg 892ae945f7 Rework z_sendmany z-address recipient limit
From Sapling, the z-address recipients could require either JSDescriptions or
OutputDescriptions. Instead of trying to give an exact number in the help text,
rely on transaction size estimation to guide user behaviour.
2018-05-04 11:17:30 +01:00
Jack Grigg 25fee3509a Rename MAX_TX_SIZE to MAX_TX_SIZE_AFTER_SAPLING 2018-05-04 11:17:30 +01:00
Jack Grigg ddcee7e13a Benchmark the largest valid Sapling transaction in validatelargetx
11130 inputs results in a transaction between 1992301 and 2003431 bytes.
2018-05-04 11:17:30 +01:00
Jack Grigg 15ec5525e3 Raise 100kB transaction size limit from Sapling activation
Closes #2864.
2018-05-04 11:17:30 +01:00
Jack Grigg fa70084c87 Expire Overwinter transactions before the Sapling activation height 2018-05-03 12:27:56 +01:00
Jack Grigg dc889d7f52 Update CreateNewContextualCMutableTransaction to create Sapling transactions 2018-05-03 12:02:51 +01:00
Jack Grigg b6be3e88bb Use CBitcoinAddress wrappers in Zcash-specific code 2018-05-03 01:13:04 +01:00
Jack Grigg 1f9dfbb9f0 Fix -Wstring-plus-int warning on clang 2018-05-01 14:55:47 +01:00
Jack Grigg aeb089ecc7 Attempt to log before terminating if prevector allocation fails 2018-04-26 11:30:33 +01:00
Jack Grigg 3c9dbf3ed8 Improve best-effort logging before termination on OOM
Suggested by @kallewoof in bitcoin/bitcoin#9856
2018-04-26 11:22:07 +01:00
Jack Grigg bf605b2644 Return result of boost::apply_visitor
Not returning a value at the end of a non-void function is undefined behaviour.
Given that this managed to pass our full test suite, I guess that GCC looks for
un-returned values at the end of a function and uses them as the return value,
if the keyword is missing. Clang OTOH complains, which is how we spotted this:
https://ci.z.cash/#/builders/16/builds/282
2018-04-24 23:04:09 +01:00
Jack Grigg b1608eed82 Add a constant for Overwinter's transaction version 2018-04-23 20:39:04 +01:00
Jack GriggandGeorge Tankersley b4f7174a88 Implement SpendDescription and OutputDescription datastructures
Co-authored-by: George Tankersley <george@z.cash>
2018-04-23 20:39:00 +01:00
Jack Grigg 22ffe8ce44 Remove now-unshadowed serialization lines that do nothing
Previously we had both nVersion as a class parameter *and* a serialization
argument, and in several inherited serializers the latter was set to the former,
in order to pass the serialized object's version into underlying parsers. #3180
pulled in the upstream changes to clean this up, and in doing so these lines
became no-ops - setting the class parameter to itself. Clang throws warnings on
this, which turn into errors on the MacOS builder.

We can just remove these, because upstream already had done so in earlier PRs,
indicating that they were not being relied on by underlying parsers.
2018-04-20 09:48:33 +01:00
Jack Grigg 2d922b66b0 Pass transaction header into correct SignatureHash serialization level
We need to indicate whether PHGR or Groth proofs are expected to vjoinsplit,
which is serialized in an inner hash, not the outer hash.
2018-04-19 20:35:33 +01:00
Jack Grigg 72540cee4a Add Sapling v4 transactions to IsStandard 2018-04-19 16:25:04 +01:00
Jack Grigg b7e75b17af Implement basic Sapling v4 transaction parser
Details of Sapling datatypes will be filled in later; for now, they are treated
as binary blobs.

Includes code cherry-picked from upstream commit:
    7030d9eb47254499bba14f1c00abc6bf493efd91
    BIP144: Serialization, hashes, relay (sender side)
2018-04-19 05:01:47 +01:00
Jack Grigg 987b8ee60e Adjust consensus rules to require v4 transactions from Sapling activation 2018-04-19 05:01:47 +01:00
Jack Grigg 68a1a592ca Remove nType and nVersion from Zcash-specific code 2018-04-17 13:09:47 +01:00
Jack Grigg a8e5ae92ba GetSerializeSize changes in Zcash-specific code 2018-04-16 07:38:38 -06:00
Jack Grigg d2fb34fb7c Handle usage of prevector for CScript in Zcash-specific code 2018-04-16 07:38:36 -06:00
Jack Grigg ee6220c0ed [Bitcoin-Tx] Adjust util-test test cases for Zcash 2018-04-12 19:36:48 -06:00
Jack Grigg abf5dd31af Add static asserts to ensure CONTINUE_EXECUTION doesn't collide 2018-04-12 18:11:46 -06:00
Jack Grigg 176fada24d Add Sapling to upgrade list 2018-04-12 12:13:05 -06:00
Jack Grigg 39ee63c876 When rewinding, reset pindexBestInvalid if it is pointing to a removed block 2018-04-11 21:46:58 -06:00
Jack Grigg 4d234cd2f8 Overwinter mainnet activation height 2018-04-11 20:21:45 -06:00
Jack Grigg 2141de16e8 make-release.py: Updated release notes and changelog for 1.1.0. 2018-04-11 20:15:29 -06:00
Jack Grigg 145ee79099 make-release.py: Updated manpages for 1.1.0. 2018-04-11 20:15:13 -06:00
Jack Grigg f64c346eca make-release.py: Versioning changes for 1.1.0. 2018-04-11 20:02:10 -06:00
Jack Grigg a560c24d6b depends: Update to latest librustzcash with sapling-crypto dependencies 2018-04-11 08:06:40 -06:00
Jack Grigg c63c9f20e4 depends: Add support for unpackaged Rust crates 2018-04-11 08:00:23 -06:00
Jack Grigg b123b9bb79 depends: Upgrade Rust to 1.26.0-beta.3 2018-04-11 07:59:46 -06:00
Jack Grigg 47fe5f72f4 Disable building libzcashconsensus by default
The library is not currently a supported build artifact; it needs work in
order to build on certain platforms (e.g. MacOS), and its dependencies need to
be narrowed down (Equihash is not a requirement for validating scripts).
2018-04-06 15:09:50 +01:00
Jack Grigg ecf544d062 Set Overwinter protocol version to 170005
170004 is the protocol version for the NODE_BLOOM change, which is being
"released" in this RC. The activation height is being set in the final release,
which means that we may end up with both RC and final release versions online
when Overwinter activates. Bumping the protocol version for Overwinter enables
RC nodes to be correctly disconnected.
2018-04-05 12:07:44 +01:00
Jack Grigg 776b494aec make-release.py: Updated release notes and changelog for 1.1.0-rc1. 2018-04-05 03:26:17 +01:00
Jack Grigg 13d491c7bf make-release.py: Updated manpages for 1.1.0-rc1. 2018-04-05 03:26:07 +01:00
Jack Grigg 5e11533408 make-release.py: Versioning changes for 1.1.0-rc1. 2018-04-05 03:08:20 +01:00
Jack Grigg 3fe2f3d143 Update -enforcenodebloom RPC test with filterclear vs filteradd 2018-04-05 01:30:38 +01:00
Jack Grigg 2b7fcab8fc Move bloom filter filtering logic back into command "switch" 2018-04-05 01:30:38 +01:00
Jack Grigg 0a284ecaf6 Fix NODE_BLOOM documentation errors 2018-04-05 01:30:38 +01:00
Jack Grigg b77e46fe01 Add RPC test for -enforcenodebloom 2018-04-05 01:30:38 +01:00
Jack Grigg 10e97b8f00 test: Add missing Overwinter fields to mininode's CTransaction 2018-04-04 22:49:49 +01:00
Jack Grigg 8a22734ec1 test: Check return value of snprintf 2018-04-04 19:18:23 +01:00
Jack Grigg 162cc4240e Fix typo 2018-04-04 14:59:07 +01:00
Jack Grigg 2d7bae5b33 Update CBlockTreeDB::EraseBatchSync for dbwrapper refactor 2018-04-03 21:38:34 +01:00
Jack Grigg 26cdb83add Update blockchain.py RPC test for Zcash 2018-04-03 20:40:54 +01:00
Jack Grigg 3a8e1d0cf4 Refactor Zcash changes to CCoinsViewDB
To match upstream changes.
2018-04-03 20:40:54 +01:00
Jack Grigg 6c44424322 Adjust deprecation message to work in both UI and -alertnotify 2018-04-03 12:17:30 +01:00
Jack Grigg f5007d8912 When rewinding, remove insufficiently-validated blocks
If a block is insufficiently-validated against a particular branch ID, then we
cannot guarantee that even the block header will be valid under the actual
consensus rules the node will want to apply. Instead require that the blocks are
completely re-validated, by removing them from the block index (which is
equivalent to reducing their validity to BLOCK_VALID_UNKNOWN).
2018-04-03 10:58:31 +01:00
Jack Grigg fe87fd2b36 Add RPC test of RewindBlockIndex 2018-04-03 10:58:27 +01:00
Jack Grigg 28915c30ca Fix z_importviewingkey startHeight parameter
Closes #2937.
2018-04-03 02:43:52 +01:00
Jack Grigg 0e400c8854 depends: Fix regex bugs in cargo-checksum.sh 2018-03-30 19:06:51 +01:00
Jack Grigg 9666cc912a Test calling z_mergetoaddress to merge notes while a note merge is ongoing 2018-03-29 15:38:26 -06:00
Jack Grigg b96f7d692d wallet: Cast size_t to uint64_t before passing to UniValue 2018-03-29 01:05:45 +02:00
Jack Grigg 4ff92bb6d8 rpcwallet.cpp: Cast size_t to uint64_t before passing to UniValue 2018-03-29 01:02:58 +02:00
Jack Grigg 8e95a12b63 Cast ZCIncrementalMerkleTree::size() to uint64_t before passing to UniValue
size_t is ambiguous for serialization, and UniValue doesn't have an API for
handling this internally.
2018-03-28 19:51:48 +02:00
Jack Grigg f0118aaa0b Add base case to CurrentEpoch() 2018-03-28 18:29:20 +02:00
Jack Grigg 792c05d8a9 Set PLATFORM flag when compiling libsnark 2018-03-28 18:29:19 +02:00
Jack Griggandkozyilmaz 381a79a909 libsnark: Don't set -static on Darwin
Co-authored-by: kozyilmaz <kazim@monolytic.com>
2018-03-28 18:29:19 +02:00
Jack Grigg 4fe053e6e8 Move explicit instantiation of IncrementalMerkleTree::emptyroots into header
Fixes a -Wundefined-var-template warning with clang.
2018-03-28 18:29:19 +02:00
Jack Grigg 6c7930f688 Use uint64_t instead of size_t for serialized indices into tx.vjoinsplit
size_t has no guarantee of uniform size, and thus far has been serialized as a
uint64_t on supported platforms.
2018-03-28 18:29:19 +02:00
Jack Grigg d58ed91af0 Optimise serialization of MerklePath, avoiding ambiguity of std::vector<bool>
The serialization enforces a maximum supported Merkle tree depth of 64.

Closes #2831.
2018-03-28 18:26:08 +02:00
Jack Grigg d9cd254e5e Make Rust compilation mandatory
The temporary integration check in CheckEquihashSolution() remains, until we
have "real" Rust code to integrate.

Closes #2688.
2018-03-28 17:55:45 +02:00
Jack Grigg 0adfdc99b2 depends: Explicitly download and vendor Rust dependencies
Closes #2231.
2018-03-28 15:46:51 +02:00
Jack Grigg 31afbcc5c9 Ignore -mempooltxinputlimit once Overwinter activates 2018-03-28 14:25:42 +02:00
Jack Grigg b466c1c90c cleanup: Ensure code is pyflakes-clean for CI 2018-03-27 02:47:57 +02:00
Jack Grigg 31e6dde842 snark: Remove -mt suffix from Boost library 2018-03-26 18:28:07 +02:00
Jack Grigg 1c4a74d40b depends: Remove -mt suffix from Boost libraries
Requires disabling --build-type=complete, because in Boost 1.66 it appears to be
broken (only the tagged libraries are built).
2018-03-26 16:33:27 +02:00
Jack Grigg e6e4b619a9 Use correct Boost::System linker flag for libzcash 2018-03-26 16:22:35 +02:00
Jack Grigg e6a34c283a Revert "remove -mt suffix from boost libraries built by depends"
This reverts commit 33ae5edd2c.
2018-03-26 16:20:55 +02:00
Jack Grigg 7346f09026 Only set multicore flags if OpenMP is available 2018-03-19 17:32:21 +01:00
Jack Grigg c64108d1a0 Don't require RELRO and BIND_NOW for Darwin
Xcode's ld (at least ld64-302.3) doesn't support -z
2018-03-19 17:32:21 +01:00
Jack Grigg b7caaf954b test: Move wait_and_assert_operationid_status debug output before asserts
Otherwise we don't see them for failed tests :)
2018-03-19 14:00:18 +01:00
Jack Grigg 7b4d0c7762 Notify users about auto-senescence via -alertnotify
Closes #2829.
2018-03-16 10:25:45 +01:00
Jack Grigg 132a255000 Add link to Overwinter info page 2018-03-13 00:47:10 +00:00
Jack Grigg a6ae8f55ae Split declaration and definition of SPROUT_BRANCH_ID constant
Fixes an initialization-order-fiasco error detected by ASan:
https://ci.z.cash/#/builders/7/builds/149
2018-03-09 09:42:20 +00:00
Jack GriggandRobert Seacord c4379e3a22 Add configure flags for enabling ASan/UBSan and TSan
Co-authored-by: Robert Seacord <rcseacord@gmail.com>
2018-03-01 16:04:42 +00:00
Jack Grigg 326fc65e66 Add environment variable for setting ./configure flags in zcutil/build.sh
Closes #2066.
2018-03-01 16:04:12 +00:00
Jack Grigg 25b080a33b make-release.py: Updated release notes and changelog for 1.0.15. 2018-02-28 16:58:19 +00:00
Jack Grigg f58b1536b4 make-release.py: Updated manpages for 1.0.15. 2018-02-28 16:58:10 +00:00
Jack Grigg 1d6f7acf4d make-release.py: Versioning changes for 1.0.15. 2018-02-28 16:44:07 +00:00
Jack Grigg 138cf77004 Overwinter release notes and testnet activation height
Closes #2957.
2018-02-28 13:19:36 +00:00
Jack GriggandBrad Miller 704b76358d Use block hash comparison for consistency check when loading block index
The Equihash check caused block index loading to take around 38x longer.
However, we don't need to check it directly, as the only paths to writing a
block header to disk already go through a proof-of-work check (e.g. receiving a
block over the network). By forcing the block header inside the CBlockIndex to
be re-serialized, we retain the benefits of the consistency check without the
overhead at startup.

Co-authored-by: Brad Miller <brad@z.cash>
2018-02-27 00:47:56 +00:00
Jack Grigg 34ce29b3ee make-release.py: Updated release notes and changelog for 1.0.15-rc1. 2018-02-24 04:20:05 +00:00
Jack Grigg 7d0c1df409 make-release.py: Updated manpages for 1.0.15-rc1. 2018-02-24 04:17:59 +00:00
Jack Grigg 1dd95be4a9 make-release.py: Versioning changes for 1.0.15-rc1. 2018-02-24 04:08:36 +00:00
Jack Grigg 15ced9b153 wallet_mergetoaddress: Add additional syncs to prevent race conditions 2018-02-23 04:28:04 +00:00
Jack Grigg 713b366231 Regenerate sighash tests 2018-02-23 01:40:08 +00:00
Jack Grigg 50a90615af Document that consensus.chaintip != consensus.nextblock just before an upgrade 2018-02-22 14:01:43 +00:00
Jack Grigg 4c3d2b3bbe Check upgrade status in wallet_overwintertx RPC test 2018-02-22 13:44:40 +00:00
Jack Grigg 2bda6a9b22 Add z_mergetoaddress to release notes 2018-02-22 13:23:25 +00:00
Jack Grigg 553a5c1ab2 Gate z_mergetoaddress as an experimental feature 2018-02-22 13:23:25 +00:00
Jack Grigg 6e9c7629af Implement z_mergetoaddress for combining UTXOs and notes
Closes #2493.
2018-02-22 13:23:18 +00:00
Jack Grigg 44488400c1 Check Equihash solution when loading block index 2018-02-21 22:37:19 +00:00
Jack Grigg ed9aa2b62a Add branch IDs for current and next block to getblockchaininfo
Closes #2974.
2018-02-21 21:18:03 +00:00
Jack Grigg bdbe8e8591 Extend CWallet::GetFilteredNotes to enable filtering on a set of addresses 2018-02-20 13:19:07 +00:00
Jack Grigg 4553901850 Use v3 transactions with caching for validatelargetx benchmark 2018-02-20 04:22:22 +00:00
Jack Grigg 818b94f94f Make number of inputs configurable in validatelargetx test 2018-02-20 04:22:22 +00:00