Commit Graph

13810 Commits

Author SHA1 Message Date
Daira Hopwood 66096d540f Clean up some iterator usage.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-13 19:35:26 +01:00
therealyingtong a72246adc8 Update release notes for v3.1.0 2020-07-13 17:34:12 +08:00
Homu 959f5b09d0 Auto merge of #4560 - str4d:zip-207, r=nuttycom
[ZIP 207] Funding Streams + [ZIP 214] Dev Fund Recipients

Closes #4554. Closes #4555.
2020-07-10 22:45:11 +00:00
Kris Nuttycombe d80857f2b5 Trivial whitespace fix. 2020-07-10 08:31:46 -06:00
Kris Nuttycombe c88b461f89
Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-07-10 08:29:47 -06:00
Kris Nuttycombe 0e7ae06905 Fix assertion check in GetBlockSubsidy 2020-07-10 08:26:33 -06:00
str4d 8f7861573d
Merge pull request #20 from daira/zip-207
Changes to getblocksubsidy RPC, and resolution of a problem with initializing chain params
2020-07-11 01:55:03 +12:00
Daira Hopwood 69cf041d5d Change the format of `getblocksubsidy` output to use an array of funding stream objects.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-10 14:10:26 +01:00
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
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