Commit Graph

13860 Commits

Author SHA1 Message Date
Daira Hopwood 64cfbab3db
Apply suggestions from code review
keyInfo -> keyConstants

Co-authored-by: ying tong <yingtong@z.cash>
2020-07-10 12:33:27 +01:00
Homu 66d4c88943 Auto merge of #4572 - oxarbitrage:issue4571, r=str4d
Add solution rates aproximation to metrics

Closes https://github.com/zcash/zcash/issues/4571
2020-07-10 07:02:14 +00:00
Daira Hopwood aa1b924427 Cosmetic spacing changes.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-10 02:14:42 +01:00
Daira Hopwood 9161071b02 Use ValueFromAmount instead of double arithmetic, and improve variable names.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-10 02:08:30 +01:00
Kris Nuttycombe 9228c3113d Fix typo in constant. 2020-07-09 18:26:11 -06:00
Kris Nuttycombe 9119ca8f86 Rename KeyInfo -> KeyConstants and move out of Consensus namespace. 2020-07-09 18:19:13 -06:00
Kris Nuttycombe 07ff0d19a0 Make evident the relationship between chainparams and key IO. 2020-07-09 17:48:47 -06:00
Daira Hopwood 8121e874e2 Change getblocksubsidy RPC to take into account funding streams.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-09 23:33:14 +01:00
Daira Hopwood 6bd85925e7 Tests for changes to getblocksubsidy.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-09 23:33:14 +01:00
Kris Nuttycombe 7555a7c26a
Use for..in rather than an indexed loop.
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-07-09 11:40:23 -06:00
Daira Hopwood 50c1d5cee6 Add GetActiveFundingStreams function.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-09 18:32:39 +01:00
Kris Nuttycombe e456d87cbf Merge remote-tracking branch 'upstream/master' into zip-207 2020-07-09 08:23:57 -06:00
Homu 3f4a532588 Auto merge of #4573 - LarryRuane:issue4301-CopyPreviousWitnesses, r=daira
Flush witness data to disk only when it's consistent

Closes #4301. Running this PR's code will not repair a data directory that has been affected by this problem; that requires starting zcashd with the `-rescan` or `-reindex` options.
2020-07-09 11:50:41 +00:00
Larry Ruane 4811dcc426 sync before stopping nodes
This makes the test more deterministic. When the nodes are split, and
partition B (node 1) mines a joinsplit transaction, that block only
sometimes appears on the blockchain after the nodes are all reconnected.
2020-07-08 20:48:50 -06:00
Homu 701adc38cb Auto merge of #4578 - therealyingtong:zip212-impl, r=str4d
ZIP212 implementation

Closes #4557.
(description by @ebfull, taken from #4575)

* The `SaplingNote` structure has a new enum called `zip212Enabled`. This
  member is private and reflects whether the note was or is being created
  using the derivation method of ZIP 212 (i.e., `BeforeZip212` or `AfterZip212`).
* The `SaplingNotePlaintext` structure has a new unsigned char member
  `leadbyte`. This member is private and contains the leading byte of the
  plaintext (e.g. `0x01`, `0x02`).
* The serialization of `SaplingNotePlaintext` sets `zip212Enabled` to
  `BeforeZip212` iff the serialized note plaintext version is not `0x01`.
* The `r`/`rcm` fields have been removed and replaced with a private field
  `rseed`. `SaplingNote` and `SaplingNotePlaintext` now have a helper method
  `rcm()` which returns the `rcm` either by deriving it with `rseed`
  (if `zip212Enabled` is `AfterZip212`) or returning `rseed` by interpreting
  `rseed` as `rcm`.
* All the methods of obtaining a `SaplingNote` account for these changes:
  - The `SaplingNote` constructor that is used by e.g. the transaction builder,
    and internally samples random `rcm`, now takes a `zip212Enabled` argument
    to decide whether to sample `rcm` the "old" way or the "new" way.
  - The bare constructor for `SaplingNote` is removed.
  - The other constructor which takes the raw contents of the note is only used
    in tests or in `Note.cpp`, but now also takes a `zip212Enabled` argument.
  - The other way of obtaining a note, by calling `SaplingNotePlaintext::note()`,
    has been adjusted.
* The `SaplingNotePlaintext` class now has an `generate_or_derive_esk()` method
  that either samples a random `esk` or derives it using the local `rseed`
  depending on the value of `leadbyte`.
* The encryption routine is modified to consult `generate_or_derive_esk()` and
  provide it to the note encryption object.
* The note encryption objects now take an optional `esk` as input and otherwise
  sample a random `esk` internally. This API functionality is preserved to allow
  for testing.
* The `SaplingNotePlaintext` decryption routines are modified:
  - The out and enc decryption routines now check that `epk` is consistent with
    the derived `esk`.
  -  The out decryption routine for plaintexts also checks that `esk` is
    consistent with what is derived by the note.
* The miner and transaction builder consult the activation of Canopy when
  creating `SaplingNote`s.
* The consensus rules are modified so that shielded outputs (miner rewards)
  must have `v2` note plaintexts after Canopy has activated.
2020-07-09 00:29:07 +00:00
Kris Nuttycombe ca3f5df607 Remove assertion that was breaking regtest in the case that blossom activates after the halving. 2020-07-08 17:02:28 -06:00
Kris Nuttycombe 436dee90de Merge remote-tracking branch 'upstream/master' into zip-207 2020-07-08 15:04:32 -06:00
Kris Nuttycombe 84e8cce77d Use ed25519-zebra from crates.io. 2020-07-08 13:11:27 -06:00
Kris Nuttycombe 06789f99d3 Fix ordering of transparent outputs such that miner reward is vout[0] 2020-07-08 11:04:47 -06:00
Larry Ruane 872af58d59 undo flushing witness data on shutdown
This fixes wallet_anchorfork.py CI failure, but a separate PR
will restore flushing witness data on shutdown while also
fixing DecrementNoteWitnesses() to not assert when
nd->witnessHeight < indexHeight, which can happen when the
node reorgs upon restart (which this test causes to happen).
2020-07-08 07:50:48 -06:00
therealyingtong dde5cc87b7 Directly call RegtestActivate* in gtests
Co-authored by Jack Grigg (jack@electriccoin.co)
2020-07-08 12:53:03 +08:00
therealyingtong 1020254b6a Pass nHeight instead of pindex to AddToWalletIfInvolvingMe()
Co-authored by Jack Grigg (jack@electriccoin.co) and Sean Bowe (ewillbefull@gmail.com)
2020-07-08 12:53:03 +08:00
therealyingtong 119bae082c Remove old SaplingNote() constructor 2020-07-08 12:53:03 +08:00
therealyingtong 31020d6fc9 Minor changes
Co-authored by Daira Hopwood (daira@jacaranda.org) and Jack Grigg (jack@electriccoin.co)
2020-07-08 12:53:01 +08:00
Jack Grigg 7fa2bb6005 Skip Sprout proof verification for ProofVerifier::Disabled
This behaviour was removed for pre-Sapling Sprout proofs in
https://github.com/zcash/zcash/pull/4060, and was never introduced for
hybrid Sprout proofs.
2020-07-08 13:59:47 +12:00
Jack Grigg 042bd12a5c Move JSDescription::Verify to ProofVerifier::VerifySprout 2020-07-08 13:59:47 +12:00
Jack Grigg 35765ec9de Move ProofVerifier out of the libzcash namespace
It needs to be closer to the root of our dependency tree, so that it can
depend on the transaction format. The libzcash compilation unit is
further from the dependency tree root than the transaction format.
2020-07-08 13:59:47 +12:00
Jack Grigg 7e2558d2e2 Make ZCJoinSplit::prove static and remove ZCJoinSplit globals
We don't support making pre-Sapling JoinSplit proofs, and we load the
parameters for post-Sapling JoinSplit proofs at proving time, so there
is no need for a global ZCJoinSplit to be passed through the APIs.
2020-07-08 13:59:47 +12:00
Jack Grigg a1942a6061 Remove unused declarations left over from libsnark verification 2020-07-08 13:59:47 +12:00
Jack Grigg ed4550eb77 Move GrothProof and SproutProof definitions into zcash/Proof.hpp 2020-07-08 13:59:47 +12:00
Kris Nuttycombe 502896e130 Fix incorrect subtraction of Halving(blossomActivationHeight) from halvingIndex 2020-07-07 16:32:18 -06:00
Homu 1192116598 Auto merge of #4581 - ebfull:zip215-impl-2, r=str4d
ZIP 215 Implementation

This is accompanied by 8c97acde89.
2020-07-07 21:39:49 +00:00
Kris Nuttycombe ea987f5577 Use uint32_t for vFundingStreams indexing. 2020-07-07 09:53:18 -06:00
Kris Nuttycombe 37b4faab6a
Pass by const reference where possible.
Co-authored-by: Larry Ruane <larry@z.cash>
2020-07-07 09:41:32 -06:00
Kris Nuttycombe 88c5bf7217
Minor help message correction.
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-07-06 15:41:28 -06:00
Kris Nuttycombe f9b10b866e Trivial comment correction. 2020-07-06 13:15:27 -06:00
Kris Nuttycombe 90fc879492 Move test-only code into test sources. 2020-07-06 13:09:49 -06:00
Kris Nuttycombe 0141aacc67 Add `RegtestDeactivateCanopy` calls to restore shared regtest params. 2020-07-06 12:47:12 -06:00
Kris Nuttycombe 8b363e9a70 Fix funding stream end-height-exclusion bugs 2020-07-06 10:52:41 -06:00
Sean Bowe 249de0808d
Remove outdated comment. 2020-07-03 10:24:35 -06:00
Sean Bowe a9d80b0750
Hash "Zcash" to align tests with ZIP 215 test vectors. 2020-07-03 10:20:37 -06:00
Sean Bowe c3b3e07160
Change LIBSODIUM_ERROR to -1.
We only relied on success being 0 and our code was otherwise agnostic to the
actual return code in the event of failed signature verification, but this
change keeps the API consistent.
2020-07-03 09:37:34 -06:00
Sean Bowe 394947de3a
Migrate ZIP 215 test vectors to gtest suite. 2020-07-03 09:36:34 -06:00
therealyingtong c4821ddceb Refactor bool is_zip_212 to enum Zip212Enabled
Co-authored by Kris Nuttycombe (@nuttycom)
2020-07-03 06:59:21 +08:00
therealyingtong eeda663ff7 Remove plaintext check from GetFilteredNotes
Co-authored by Sean Bowe (ewillbefull@gmail.com)
2020-07-03 06:59:06 +08:00
therealyingtong ee83424c6f Remove plaintext check from AddSaplingSpend
Co-authored by Sean Bowe (ewillbefull@gmail.com)
2020-07-03 06:57:57 +08:00
Kris Nuttycombe fccf37844b Fix pyflakes. 2020-07-02 16:54:49 -06:00
Homu 602e88ddb9 Auto merge of #4489 - therealyingtong:4479-remove-sprout-shielding, r=str4d
[ZIP 211] Disabling Addition of New Value to the Sprout Value Pool

Disables Sprout outputs after NU4 by checking for nonzero `vpub_old` in transactions after NU4 activation height.

Adds gtests to check expected behaviour before and after NU4 activation height.

edit:
Also modifies `z_` methods in `rpcwallet`, and adds a matching RPC test.

Implements [ZIP 211](https://zips.z.cash/zip-0211), closes #4479
2020-07-02 21:53:51 +00:00
Larry Ruane bf568273a7 fix pyflakes CI errors 2020-07-02 14:32:48 -06:00
Kris Nuttycombe 834911c0d7 Update HalvingHeight documentation. 2020-07-02 14:30:06 -06:00