Auto merge of #4469 - ebfull:release-v2.1.2, r=ebfull

Release v2.1.2

Includes **testnet** activation of Heartwood (NU3) on block `903800` -- approx May 6th, 4pm MST. Does **not** include mainnet activation, that's planned for `3.0.0`. See release notes for other cool changes.
This commit is contained in:
Homu 2020-04-22 19:13:38 +00:00
commit ff1e8ebe2f
12 changed files with 681 additions and 221 deletions

View File

@ -1,4 +1,4 @@
Zcash 2.1.2-rc1
Zcash 2.1.2
<img align="right" width="120" height="80" src="doc/imgs/logo.png">
===========

View File

@ -3,7 +3,7 @@ AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 2)
define(_CLIENT_VERSION_MINOR, 1)
define(_CLIENT_VERSION_REVISION, 2)
define(_CLIENT_VERSION_BUILD, 25)
define(_CLIENT_VERSION_BUILD, 50)
define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50)))
define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1)))
define(_CLIENT_VERSION_IS_RELEASE, true)

View File

@ -1,3 +1,9 @@
zcash (2.1.2) stable; urgency=medium
* 2.1.2 release.
-- Electric Coin Company <team@electriccoin.co> Wed, 22 Apr 2020 10:46:06 -0600
zcash (2.1.2~rc1) stable; urgency=medium
* 2.1.2-rc1 release.

View File

@ -1,5 +1,5 @@
---
name: "zcash-2.1.2-rc1"
name: "zcash-2.1.2"
enable_cache: true
distro: "debian"
suites:

View File

@ -1,63 +1,70 @@
Zcash Contributors
==================
Jack Grigg (925)
Jack Grigg (1020)
Simon Liu (460)
Sean Bowe (291)
Eirik Ogilvie-Wigley (212)
Daira Hopwood (155)
Wladimir J. van der Laan (89)
Sean Bowe (306)
Eirik Ogilvie-Wigley (214)
Daira Hopwood (180)
Taylor Hornby (99)
Marshall Gaucher (99)
Wladimir J. van der Laan (96)
Jay Graber (89)
Taylor Hornby (84)
Jonas Schnelli (71)
Pieter Wuille (63)
Pieter Wuille (66)
Alfredo Garcia (59)
Nathan Wilcox (56)
Larry Ruane (41)
Larry Ruane (43)
Cory Fields (41)
Kevin Gallagher (38)
Cory Fields (38)
Marco Falke (31)
Marshall Gaucher (25)
Matt Corallo (23)
Alfredo Garcia (19)
Matt Corallo (25)
Dimitris Apostolou (21)
Jonathan "Duke" Leto (17)
Luke Dashjr (16)
syd (15)
avnish (14)
Jorge Timón (14)
Dimitris Apostolou (13)
Gregory Maxwell (12)
Paige Peterson (11)
Ariel Gabizon (11)
practicalswift (9)
nomnombtc (9)
Benjamin Winston (9)
kozyilmaz (8)
fanquake (8)
Peter Todd (8)
Gregory Maxwell (8)
Pavel Janík (7)
Jeff Garzik (7)
Charlie O'Keefe (7)
Marius Kjærstad (6)
Karl-Johan Alm (6)
David Mercer (6)
Daniel Cousens (6)
ca333 (5)
Suhas Daftuar (5)
Karl-Johan Alm (5)
Philip Kaufmann (5)
Patrick Strateman (5)
Johnathan Corgan (5)
Gavin Andresen (5)
Gareth Davies (5)
Alex Morcos (5)
sandakersmann (4)
gladcow (4)
WO (4)
Philip Kaufmann (4)
Pavel Janík (4)
Patrick Strateman (4)
João Barbosa (4)
Jeremy Rubin (4)
James O'Beirne (4)
George Tankersley (4)
Daniel Kraft (4)
zancas (3)
lpescher (3)
ca333 (3)
Per Grön (3)
Patick Strateman (3)
NikVolf (3)
MeshCollider (3)
Jim Posen (3)
Jason Davies (3)
James O'Beirne (3)
Gavin Andresen (3)
Alfie John (3)
rofl0r (2)
mruddy (2)
@ -76,7 +83,10 @@ Kaz Wesley (2)
Joe Turgeon (2)
Jack Gavigan (2)
ITH4Coinomia (2)
Evan Klitzke (2)
Dagur Valberg Johannsson (2)
Casey Rodarmor (2)
Carl Dong (2)
Bryant Eisenbach (2)
Brad Miller (2)
Bjorn Hjortsberg (2)
@ -85,7 +95,8 @@ Alex Tsankov (2)
zathras-crypto (1)
unsystemizer (1)
tpantin (1)
practicalswift (1)
ptschip (1)
murrayn (1)
mrbandrews (1)
kazcw (1)
jeff-liang (1)
@ -98,7 +109,9 @@ daniel (1)
codetriage-readme-bot (1)
calebogden (1)
ayleph (1)
avnish98 (1)
Za Wilcox (1)
Yuri Zhykin (1)
William M Peaster (1)
Ulrich Kempken (1)
Tom Ritter (1)
@ -114,6 +127,7 @@ Peter Pratscher (1)
Pedro Branco (1)
Paul Georgiou (1)
Paragon Initiative Enterprises, LLC (1)
NicolasDorier (1)
Nicolas DORIER (1)
Nathaniel Mahieu (1)
Murilo Santana (1)
@ -122,12 +136,12 @@ Maxwell Gubler (1)
Matt Quinn (1)
Mark Friedenbach (1)
Louis Nyffenegger (1)
LitecoinZ (1)
Leo Arias (1)
Lauda (1)
Lars-Magnus Skog (1)
Kevin Pan (1)
Jonas Nick (1)
Jeremy Rubin (1)
Jeffrey Walton (1)
Jainan-Tandel (1)
Ian T (1)
@ -141,10 +155,9 @@ Ethan Heilman (1)
Eran Tromer (1)
Denis Lukianov (1)
David Llop (1)
Dagur Valberg Johannsson (1)
Chun Kuan Lee (1)
Christian von Roques (1)
Chirag Davé (1)
Carl Dong (1)
Cameron Boehmer (1)
Bryan Stitt (1)
Bruno Arueira (1)

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH ZCASH-CLI "1" "April 2020" "zcash-cli v2.1.2-rc1" "User Commands"
.TH ZCASH-CLI "1" "April 2020" "zcash-cli v2.1.2" "User Commands"
.SH NAME
zcash-cli \- manual page for zcash-cli v2.1.2-rc1
zcash-cli \- manual page for zcash-cli v2.1.2
.SH DESCRIPTION
Zcash RPC client version v2.1.2\-rc1
Zcash RPC client version v2.1.2
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH ZCASH-TX "1" "April 2020" "zcash-tx v2.1.2-rc1" "User Commands"
.TH ZCASH-TX "1" "April 2020" "zcash-tx v2.1.2" "User Commands"
.SH NAME
zcash-tx \- manual page for zcash-tx v2.1.2-rc1
zcash-tx \- manual page for zcash-tx v2.1.2
.SH DESCRIPTION
Zcash zcash\-tx utility version v2.1.2\-rc1
Zcash zcash\-tx utility version v2.1.2
.SS "Usage:"
.TP
zcash\-tx [options] <hex\-tx> [commands]

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH ZCASHD "1" "April 2020" "zcashd v2.1.2-rc1" "User Commands"
.TH ZCASHD "1" "April 2020" "zcashd v2.1.2" "User Commands"
.SH NAME
zcashd \- manual page for zcashd v2.1.2-rc1
zcashd \- manual page for zcashd v2.1.2
.SH DESCRIPTION
Zcash Daemon version v2.1.2\-rc1
Zcash Daemon version v2.1.2
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.

View File

@ -4,185 +4,3 @@ release-notes at release time)
Notable changes
===============
Network Upgrade 3: Heartwood
----------------------------
The code preparations for the Heartwood network upgrade are finished and
included in this release. The following ZIPs are being deployed:
- [ZIP 213: Shielded Coinbase](https://zips.z.cash/zip-0213)
- [ZIP 221: FlyClient - Consensus-Layer Changes](https://zips.z.cash/zip-0221)
Heartwood will activate on testnet at height 903800, and can also be activated
at a specific height in regtest mode by setting the config option
`-nuparams=f5b9230b:HEIGHT`.
As a reminder, because the Heartwood activation height is not yet specified for
mainnet, version 2.1.2 will behave similarly as other pre-Heartwood releases
even after a future activation of Heartwood on the network. Upgrading from 2.1.2
will be required in order to follow the Heartwood network upgrade on mainnet.
See [ZIP 250](https://zips.z.cash/zip-0250) for additional information about the
deployment process for Heartwood.
### Mining to Sapling addresses
Miners and mining pools that wish to test the new "shielded coinbase" support on
the Heartwood testnet can generate a new Sapling address with `z_getnewaddress`,
add the config option `mineraddress=SAPLING_ADDRESS` to their `zcash.conf` file,
and then restart their `zcashd` node. `getblocktemplate` will then return
coinbase transactions containing a shielded miner output.
Note that `mineraddress` should only be set to a Sapling address after the
Heartwood network upgrade has activated; setting a Sapling address prior to
Heartwood activation will cause `getblocktemplate` to return block templates
that cannot be mined.
Sapling viewing keys support
----------------------------
Support for Sapling viewing keys (specifically, Sapling extended full viewing
keys, as described in [ZIP 32](https://zips.z.cash/zip-0032)), has been added to
the wallet. Nodes will track both sent and received transactions for any Sapling
addresses associated with the imported Sapling viewing keys.
- Use the `z_exportviewingkey` RPC method to obtain the viewing key for a
shielded address in a node's wallet. For Sapling addresses, these always begin
with "zxviews" (or "zxviewtestsapling" for testnet addresses).
- Use `z_importviewingkey` to import a viewing key into another node. Imported
Sapling viewing keys will be stored in the wallet, and remembered across
restarts.
- `z_getbalance` will show the balance of a Sapling address associated with an
imported Sapling viewing key. Balances for Sapling viewing keys will be
included in the output of `z_gettotalbalance` when the `includeWatchonly`
parameter is set to `true`.
- RPC methods for viewing shielded transaction information (such as
`z_listreceivedbyaddress`) will return information for Sapling addresses
associated with imported Sapling viewing keys.
Details about what information can be viewed with these Sapling viewing keys,
and what guarantees you have about that information, can be found in
[ZIP 310](https://zips.z.cash/zip-0310).
Removal of time adjustment and the -maxtimeadjustment= option
-------------------------------------------------------------
Prior to v2.1.1-1, `zcashd` would adjust the local time that it used by up
to 70 minutes, according to a median of the times sent by the first 200 peers
to connect to it. This mechanism was inherently insecure, since an adversary
making multiple connections to the node could effectively control its time
within that +/- 70 minute window (this is called a "timejacking attack").
In the v2.1.1-1 security release, in addition to other mitigations for
timejacking attacks, the maximum time adjustment was set to zero by default.
This effectively disabled time adjustment; however, a `-maxtimeadjustment=`
option was provided to override this default.
As a simplification the time adjustment code has now been completely removed,
together with `-maxtimeadjustment=`. Node operators should instead ensure that
their local time is set reasonably accurately.
If it appears that the node has a significantly different time than its peers,
a warning will still be logged and indicated on the metrics screen if enabled.
View shielded information in wallet transactions
------------------------------------------------
In previous `zcashd` versions, to obtain information about shielded transactions
you would use either the `z_listreceivedbyaddress` RPC method (which returns all
notes received by an address) or `z_listunspent` (which returns unspent notes,
optionally filtered by addresses). There were no RPC methods that directly
returned details about spends, or anything equivalent to the `gettransaction`
method (which returns transparent information about in-wallet transactions).
This release introduces a new RPC method `z_viewtransaction` to fill that gap.
Given the ID of a transaction in the wallet, it decrypts the transaction and
returns detailed shielded information for all decryptable new and spent notes,
including:
- The address that each note belongs to.
- Values in both decimal ZEC and zatoshis.
- The ID of the transaction that each spent note was received in.
- An `outgoing` flag on each new note, which will be `true` if the output is not
for an address in the wallet.
- A `memoStr` field for each new note, containing its text memo (if its memo
field contains a valid UTF-8 string).
Information will be shown for any address that appears in `z_listaddresses`;
this includes watch-only addresses linked to viewing keys imported with
`z_importviewingkey`, as well as addresses with spending keys (both generated
with `z_getnewaddress` and imported with `z_importkey`).
Better error messages for rejected transactions after network upgrades
----------------------------------------------------------------------
The Zcash network upgrade process includes several features designed to protect
users. One of these is the "consensus branch ID", which prevents transactions
created after a network upgrade has activated from being replayed on another
chain (that might have occurred due to, for example, a
[friendly fork](https://electriccoin.co/blog/future-friendly-fork/)). This is
known as "two-way replay protection", and is a core requirement by
[various](https://blog.bitgo.com/bitgos-approach-to-handling-a-hard-fork-71e572506d7d?gi=3b80c02e027e)
[members](https://trezor.io/support/general/hard-forks/) of the cryptocurrency
ecosystem for supporting "hard fork"-style changes like our network upgrades.
One downside of the way replay protection is implemented in Zcash, is that there
is no visible difference between a transaction being rejected by a `zcashd` node
due to targeting a different branch, and being rejected due to an invalid
signature. This has caused issues in the past when a user had not upgraded their
wallet software, or when a wallet lacked support for the new network upgrade's
consensus branch ID; the resulting error messages when users tried to create
transactions were non-intuitive, and particularly cryptic for transparent
transactions.
Starting from this release, `zcashd` nodes will re-verify invalid transparent
and Sprout signatures against the consensus branch ID from before the most
recent network upgrade. If the signature then becomes valid, the transaction
will be rejected with the error message `old-consensus-branch-id`. This error
can be handled specifically by wallet providers to inform the user that they
need to upgrade their wallet software.
Wallet software can also automatically obtain the latest consensus branch ID
from their (up-to-date) `zcashd` node, by calling `getblockchaininfo` and
looking at `{'consensus': {'nextblock': BRANCH_ID, ...}, ...}` in the JSON
output.
Expired transactions notifications
----------------------------------
A new config option `-txexpirynotify` has been added that will cause `zcashd` to
execute a command when a transaction in the mempool expires. This can be used to
notify external systems about transaction expiry, similar to the existing
`-blocknotify` config option that notifies when the chain tip changes.
RPC methods
-----------
- The `z_importkey` and `z_importviewingkey` RPC methods now return the type of
the imported spending or viewing key (`sprout` or `sapling`), and the
corresponding payment address.
- Negative heights are now permitted in `getblock` and `getblockhash`, to select
blocks backwards from the chain tip. A height of `-1` corresponds to the last
known valid block on the main chain.
- A new RPC method `getexperimentalfeatures` returns the list of enabled
experimental features.
Build system
------------
- The `--enable-lcov`, `--disable-tests`, and `--disable-mining` flags for
`zcutil/build.sh` have been removed. You can pass these flags instead by using
the `CONFIGURE_FLAGS` environment variable. For example, to enable coverage
instrumentation (thus enabling "make cov" to work), call:
```
CONFIGURE_FLAGS="--enable-lcov --disable-hardening" ./zcutil/build.sh
```
- The build system no longer defaults to verbose output. You can re-enable
verbose output with `./zcutil/build.sh V=1`

View File

@ -0,0 +1,623 @@
Notable changes
===============
Network Upgrade 3: Heartwood
----------------------------
The code preparations for the Heartwood network upgrade are finished and
included in this release. The following ZIPs are being deployed:
- [ZIP 213: Shielded Coinbase](https://zips.z.cash/zip-0213)
- [ZIP 221: FlyClient - Consensus-Layer Changes](https://zips.z.cash/zip-0221)
Heartwood will activate on testnet at height 903800, and can also be activated
at a specific height in regtest mode by setting the config option
`-nuparams=f5b9230b:HEIGHT`.
As a reminder, because the Heartwood activation height is not yet specified for
mainnet, version 2.1.2 will behave similarly as other pre-Heartwood releases
even after a future activation of Heartwood on the network. Upgrading from 2.1.2
will be required in order to follow the Heartwood network upgrade on mainnet.
See [ZIP 250](https://zips.z.cash/zip-0250) for additional information about the
deployment process for Heartwood.
### Mining to Sapling addresses
Miners and mining pools that wish to test the new "shielded coinbase" support on
the Heartwood testnet can generate a new Sapling address with `z_getnewaddress`,
add the config option `mineraddress=SAPLING_ADDRESS` to their `zcash.conf` file,
and then restart their `zcashd` node. `getblocktemplate` will then return
coinbase transactions containing a shielded miner output.
Note that `mineraddress` should only be set to a Sapling address after the
Heartwood network upgrade has activated; setting a Sapling address prior to
Heartwood activation will cause `getblocktemplate` to return block templates
that cannot be mined.
Sapling viewing keys support
----------------------------
Support for Sapling viewing keys (specifically, Sapling extended full viewing
keys, as described in [ZIP 32](https://zips.z.cash/zip-0032)), has been added to
the wallet. Nodes will track both sent and received transactions for any Sapling
addresses associated with the imported Sapling viewing keys.
- Use the `z_exportviewingkey` RPC method to obtain the viewing key for a
shielded address in a node's wallet. For Sapling addresses, these always begin
with "zxviews" (or "zxviewtestsapling" for testnet addresses).
- Use `z_importviewingkey` to import a viewing key into another node. Imported
Sapling viewing keys will be stored in the wallet, and remembered across
restarts.
- `z_getbalance` will show the balance of a Sapling address associated with an
imported Sapling viewing key. Balances for Sapling viewing keys will be
included in the output of `z_gettotalbalance` when the `includeWatchonly`
parameter is set to `true`.
- RPC methods for viewing shielded transaction information (such as
`z_listreceivedbyaddress`) will return information for Sapling addresses
associated with imported Sapling viewing keys.
Details about what information can be viewed with these Sapling viewing keys,
and what guarantees you have about that information, can be found in
[ZIP 310](https://zips.z.cash/zip-0310).
Removal of time adjustment and the -maxtimeadjustment= option
-------------------------------------------------------------
Prior to v2.1.1-1, `zcashd` would adjust the local time that it used by up
to 70 minutes, according to a median of the times sent by the first 200 peers
to connect to it. This mechanism was inherently insecure, since an adversary
making multiple connections to the node could effectively control its time
within that +/- 70 minute window (this is called a "timejacking attack").
In the v2.1.1-1 security release, in addition to other mitigations for
timejacking attacks, the maximum time adjustment was set to zero by default.
This effectively disabled time adjustment; however, a `-maxtimeadjustment=`
option was provided to override this default.
As a simplification the time adjustment code has now been completely removed,
together with `-maxtimeadjustment=`. Node operators should instead ensure that
their local time is set reasonably accurately.
If it appears that the node has a significantly different time than its peers,
a warning will still be logged and indicated on the metrics screen if enabled.
View shielded information in wallet transactions
------------------------------------------------
In previous `zcashd` versions, to obtain information about shielded transactions
you would use either the `z_listreceivedbyaddress` RPC method (which returns all
notes received by an address) or `z_listunspent` (which returns unspent notes,
optionally filtered by addresses). There were no RPC methods that directly
returned details about spends, or anything equivalent to the `gettransaction`
method (which returns transparent information about in-wallet transactions).
This release introduces a new RPC method `z_viewtransaction` to fill that gap.
Given the ID of a transaction in the wallet, it decrypts the transaction and
returns detailed shielded information for all decryptable new and spent notes,
including:
- The address that each note belongs to.
- Values in both decimal ZEC and zatoshis.
- The ID of the transaction that each spent note was received in.
- An `outgoing` flag on each new note, which will be `true` if the output is not
for an address in the wallet.
- A `memoStr` field for each new note, containing its text memo (if its memo
field contains a valid UTF-8 string).
Information will be shown for any address that appears in `z_listaddresses`;
this includes watch-only addresses linked to viewing keys imported with
`z_importviewingkey`, as well as addresses with spending keys (both generated
with `z_getnewaddress` and imported with `z_importkey`).
Better error messages for rejected transactions after network upgrades
----------------------------------------------------------------------
The Zcash network upgrade process includes several features designed to protect
users. One of these is the "consensus branch ID", which prevents transactions
created after a network upgrade has activated from being replayed on another
chain (that might have occurred due to, for example, a
[friendly fork](https://electriccoin.co/blog/future-friendly-fork/)). This is
known as "two-way replay protection", and is a core requirement by
[various](https://blog.bitgo.com/bitgos-approach-to-handling-a-hard-fork-71e572506d7d?gi=3b80c02e027e)
[members](https://trezor.io/support/general/hard-forks/) of the cryptocurrency
ecosystem for supporting "hard fork"-style changes like our network upgrades.
One downside of the way replay protection is implemented in Zcash, is that there
is no visible difference between a transaction being rejected by a `zcashd` node
due to targeting a different branch, and being rejected due to an invalid
signature. This has caused issues in the past when a user had not upgraded their
wallet software, or when a wallet lacked support for the new network upgrade's
consensus branch ID; the resulting error messages when users tried to create
transactions were non-intuitive, and particularly cryptic for transparent
transactions.
Starting from this release, `zcashd` nodes will re-verify invalid transparent
and Sprout signatures against the consensus branch ID from before the most
recent network upgrade. If the signature then becomes valid, the transaction
will be rejected with the error message `old-consensus-branch-id`. This error
can be handled specifically by wallet providers to inform the user that they
need to upgrade their wallet software.
Wallet software can also automatically obtain the latest consensus branch ID
from their (up-to-date) `zcashd` node, by calling `getblockchaininfo` and
looking at `{'consensus': {'nextblock': BRANCH_ID, ...}, ...}` in the JSON
output.
Expired transactions notifications
----------------------------------
A new config option `-txexpirynotify` has been added that will cause `zcashd` to
execute a command when a transaction in the mempool expires. This can be used to
notify external systems about transaction expiry, similar to the existing
`-blocknotify` config option that notifies when the chain tip changes.
RPC methods
-----------
- The `z_importkey` and `z_importviewingkey` RPC methods now return the type of
the imported spending or viewing key (`sprout` or `sapling`), and the
corresponding payment address.
- Negative heights are now permitted in `getblock` and `getblockhash`, to select
blocks backwards from the chain tip. A height of `-1` corresponds to the last
known valid block on the main chain.
- A new RPC method `getexperimentalfeatures` returns the list of enabled
experimental features.
Build system
------------
- The `--enable-lcov`, `--disable-tests`, and `--disable-mining` flags for
`zcutil/build.sh` have been removed. You can pass these flags instead by using
the `CONFIGURE_FLAGS` environment variable. For example, to enable coverage
instrumentation (thus enabling "make cov" to work), call:
```
CONFIGURE_FLAGS="--enable-lcov --disable-hardening" ./zcutil/build.sh
```
- The build system no longer defaults to verbose output. You can re-enable
verbose output with `./zcutil/build.sh V=1`
Changelog
=========
Alfredo Garcia (40):
remove SignatureHash from python rpc tests
add negative height to getblock
allow negative index to getblockhash
update docs
add additional tests to rpc_wallet_z_getnewaddress
change convention
change regex
Return address and type of imported key in z_importkey
Delete travis file
dedup decode keys and addresses
remove unused imports
add txexpirynotify
fix rpx_wallet_tests
remove debug noise from 2 gtests
make type and size a pair in DecodeAny arguments
add missing calls to DecodeAny
add destination wrappers
change tuples to classes
change cm() to cmu() in SaplingNote class
change the cm member of OutputDescription to cmu
change maybe_cm to maybe_cmu
add getexperimentalfeatures rpc call
refactor experimental features
make fInsightExplorer a local
add check_node_log utility function
remove space after new line
move check_node_log framework test to a new file
use check_node_log in turnstile.py
add stop_node argument to check_node_log, use it in shieldingcoinbase
change constructors
minor comment fix
preserve test semantics
remove unused import
multiple debug categories documentation
return address info in z_importviewingkey
add expected address check to tests
change unclear wording in z_import calls address returned
Lock with cs_main inside gtests that call chainActive.Height()
add -lightwalletd experimental option
compute more structures in mempool DynamicMemoryUsage
Carl Dong (1):
autoconf: Sane --enable-debug defaults.
Chun Kuan Lee (1):
Reset default -g -O2 flags when enable debug
Cory Fields (3):
bench: switch to std::chrono for time measurements
bench: prefer a steady clock if the resolution is no worse
build: Split hardening/fPIE options out
Dagur Valberg Johannsson (1):
Improve z_getnewaddress tests
Daira Hopwood (25):
Add missing cases for Blossom in ContextualCheckBlock tests.
Revert "Add -maxtimeadjustment with default of 0 instead of the 4200 seconds used in Bitcoin Core."
Remove uses of GetTimeOffset().
Replace time adjustment with warning only.
Update GetAdjustedTime() to GetTime().
Sort entries in zcash_gtest_SOURCES (other than test_tautology which is deliberately first).
Add release notes for removal of -maxtimeadjustment.
Resolve a race condition on `chainActive.Tip()` in initialization (introduced in #4379).
Setting a std::atomic variable in a signal handler only has defined behaviour if it is lock-free.
Add comment to `MilliSleep` documenting that it is an interruption point.
Exit init early if we request shutdown before having loaded the genesis block.
Fix typos/minor errors in comments, and wrap some lines.
Avoid a theoretical possibility of division-by-zero introduced in #4368.
Make the memo a mandatory argument for SendManyRecipient
Add a `zcutil/clean.sh` script that works (unlike `make clean`).
Split into clean.sh and distclean.sh.
Minor refactoring.
Executables end with .exe on Windows.
Avoid spurious error messages when cleaning up directories.
Address review comments.
Use `SA_RESTART` in `sa_flags` when setting up signal handlers.
Remove a redundant `rm -f` command.
Refer to altitude instead of height for history tree peaks
Address review comments: `target` and `depends/work` should be cleaned by clean.sh.
Clarify definition of NETWORK_UPGRADE_PEER_PREFERENCE_BLOCK_PERIOD.
Dimitris Apostolou (8):
Fix Boost compilation on macOS
Remove libsnark preprocessor flags
Fix typo
End diff with LF character
Remove stale comment
Point at support community on Discord
Update documentation info
Fix typos
Eirik Ogilvie-Wigley (2):
Include shielded transaction data when calculating RecursiveDynamicUsage of transactions
Account for malloc overhead
Evan Klitzke (2):
Add --with-sanitizers option to configure
Make --enable-debug to pick better options
Gavin Andresen (2):
Simple benchmarking framework
Support very-fast-running benchmarks
Gregory Maxwell (4):
Avoid integer division in the benchmark inner-most loop.
Move GetWarnings and related globals to util.
Eliminate data races for strMiscWarning and fLargeWork*Found.
Move GetWarnings() into its own file.
Jack Grigg (95):
Revert "Add configure flags for enabling ASan/UBSan and TSan"
configure: Re-introduce additional sanitizer flags
RPC: z_viewtransaction
depends: Add utfcpp to dependencies
RPC: Display valid UTF-8 memos in z_viewtransaction
RPC: Use OutgoingViewingKeys to recover non-wallet Sapling outputs
test: Check z_viewtransaction output in wallet_listreceived RPC test
Benchmark Zcash verification operations
Simulate worst-case block verification
zcutil/build.sh: Remove lcov and mining flags
configure: Change default Proton to match build.sh
zcutil/build.sh: Turn off verbosity by default
Make -fwrapv conditional on --enable-debug=no
Move default -g flag into configure.ac behind --enable-debug=no
Add build system changes to release notes
test: Hard-code hex memo in wallet_listreceived for Python3 compatibility
test: Fix pyflakes warnings
bench: "Use" result of crypto_sign_verify_detached
Add test vectors for small-order Ed25519 pubkeys
Patch libsodium 1.0.15 pubkey validation onto 1.0.18
Patch libsodium 1.0.15 signature validation onto 1.0.18
Add release notes for z_viewtransaction
Deduplicate some wallet keystore logic
Move Sprout and Sapling address logic into separate files
Move ZIP 32 classes inside zcash/Address.hpp
SaplingFullViewingKey -> SaplingExtendedFullViewingKey in keystore maps
Remove default address parameter from Sapling keystore methods
test: Add test for CBasicKeyStore::AddSaplingFullViewingKey
Add encoding and decoding for Sapling extended full viewing keys
Add Sapling ExtFVK support to z_exportviewingkey
Add in-memory Sapling ExtFVK support to z_importviewingkey
Store imported Sapling ExtFVKs in wallet database
OutputDescriptionInfo::Build()
ZIP 213 consensus rules
Add support for Sapling addresses in -mineraddress
wallet: Include coinbase txs in Sapling note selection
Add regtest-only -nurejectoldversions option
test: Minor tweaks to comments in LibsodiumPubkeyValidation
test: RPC test for shielded coinbase
Adjust comments on ZIP 213 logic
Use DoS level constants and parameters for ZIP 213 rejections
test: Check that shielded coinbase can be spent to a t-address
init: Inform on error that -mineraddress must be Sapling or transparent
test: Explicitly check Sapling consensus rules apply to shielded coinbase
Migrate GitHub issue template to new format
Add GitHub issue templates for feature requests and UX reports
depends: Remove comments from libsodium signature validation patch
Bring in librustzcash crate
Bring in Cargo.lock from librustzcash repo
rust: Pin toolchain to 1.36.0, matching depends system
rust: Adjust Cargo.toml so that it compiles
Update .gitignore for Rust code
Replace librustzcash from depends system with src/rust
Move root of Rust crate into repo root
depends: Remove unused vendored crates
Fix Rust static library linking for Windows builds
test: Rename FakeCoinsViewDB -> ValidationFakeCoinsViewDB
test: Modify ValidationFakeCoinsViewDB to optionally contain a coin
test: Add missing parameter selection to Validation.ReceivedBlockTransactions
mempool: Check transparent signatures against the previous network upgrade
mempool: Remove duplicate consensusBranchId from AcceptToMemoryPool
test: Add Overwinter and Sapling support to GetValidTransaction() helper
consensus: Check JoinSplit signatures against the previous network upgrade
depends: Use Rust 1.42.0 toolchain
Bring in updates to librustzcash crate
depends: Define Rust target in a single location
depends: Hard-code Rust target for all Darwin hosts
Add ZIP 221 logic to block index
Add ZIP 221 support to miner and getblocktemplate
Implement ZIP 221 consensus rules
Return the correct root from librustzcash_mmr_{append, delete}
Use a C array for HistoryEntry instead of std::array
test: Verify ZIP 221 logic against reference implementation
build: Move cargo arguments into RUST_BUILD_OPTS
build: Correctly remove generated files from .cargo
test: Build Rust tests as part of qa/zcash/full_test_suite.py
build: Connect cargo verbosity to make verbosity
test: Assert that GetValidTransaction supports the given branch ID
Comment tweaks and cleanups
test: Add an extra assertion to feature_zip221.py
Remove unnecessary else case in CCoinsViewCache::PreloadHistoryTree
Improve documentation of CCoinsViewCache::PreloadHistoryTree
Truncate HistoryCache.appends correctly for zero-indexed entries
Comment clarifications and fixes
Make peak_pos zero-indexed in CCoinsViewCache::PreloadHistoryTree
test: Ignore timestamps in addressindex checks
test: Add a second Sapling note to WalletTests.ClearNoteWitnessCache
test: Run Equihash test vectors on both C++ and Rust validators
Pass the block height through to CheckEquihashSolution()
consensus: From Heartwood activation, use Rust Equihash validator
zcutil/make-release.py: Fix to run with Python 3
zcutil/make-release.py: Check for release dependencies
Update release notes for v2.1.2
zcutil/release-notes.py: Add Python 3 execution header
Set hashFinalSaplingRoot and hashChainHistoryRoot in AddToBlockIndex
James O'Beirne (1):
Add basic coverage reporting for RPC tests
Jeremy Rubin (3):
Add Basic CheckQueue Benchmark
Address ryanofsky feedback on CCheckQueue benchmarks. Eliminated magic numbers, fixed scoping of vectors (and memory movement component of benchmark).
Add prevector destructor benchmark
Karl-Johan Alm (1):
Refactoring: Removed using namespace <xxx> from bench/ and test/ source files.
Larry Ruane (2):
zcutil/fetch-params.sh unneeded --testnet arg should warn user
util: CBufferedFile fixes
LitecoinZ (1):
Fix issue #3772
Marshall Gaucher (1):
Update qa/rpc-tests/addressindex.py
Matt Corallo (2):
Remove countMaskInv caching in bench framework
Require a steady clock for bench with at least micro precision
MeshCollider (3):
Fix race for mapBlockIndex in AppInitMain
Make fReindex atomic to avoid race
Consistent parameter names in txdb.h
NicolasDorier (1):
[qa] assert_start_raises_init_error
NikVolf (3):
push/pop history with tests
update chain history in ConnectBlock and DisconnectBlock
use iterative platform-independent log2i
Patrick Strateman (1):
Acquire lock to check for genesis block.
Pavel Janík (3):
Rewrite help texts for features enabled by default.
Ignore bench_bitcoin binary.
Prevent warning: variable 'x' is uninitialized
Philip Kaufmann (1):
[Trivial] ensure minimal header conventions
Pieter Wuille (3):
Benchmark rolling bloom filter
Introduce FastRandomContext::randbool()
FastRandom benchmark
Sean Bowe (15):
Initialize ThreadNotifyWallets before additional blocks are imported.
Handle case of fresh wallets in ThreadNotifyWallets.
Clarify comment
Add librustzcash tests to the full test suite.
Add release profile optimizations and turn off panic unwinding in librustzcash.
Minor typo fixes.
Simplification for MacOS in rust-test.
make-release.py: Versioning changes for 2.1.2-rc1.
make-release.py: Updated manpages for 2.1.2-rc1.
make-release.py: Updated release notes and changelog for 2.1.2-rc1.
Add Rust resources to distribution tarball.
Add test_random.h to distribution tarball.
Set Heartwood activation height for testnet to 903800.
make-release.py: Versioning changes for 2.1.2.
make-release.py: Updated manpages for 2.1.2.
Taylor Hornby (15):
Make the equihash validator macro set its output to false when throwing an exception.
Add test for unused bits in the Equihash solution encoding.
Add Python script for checking if dependencies have updates.
Add GitHub API credential
Update list of dependencies to check
Wrap long lines
Cache releases to reduce network usage and improve performance
Make updatecheck.py compatible with python2
Have make clean delete temporary AFL build directory
Add AFL build directory to .gitignore
Have make clean delete AFL output directories.
Fix bug in updatecheck.py and add utfcpp to its dependency list
Fix typo in updatecheck.py
Update updatecheck.py with the new Rust dependencies and improve the error message in case the untracked dependency list becomes out of date.
Fix undefined behavior in CScriptNum
Wladimir J. van der Laan (7):
bench: Add crypto hash benchmarks
Kill insecure_random and associated global state
bench: Fix subtle counting issue when rescaling iteration count
bench: Add support for measuring CPU cycles
bench: Fix initialization order in registration
util: Don't set strMiscWarning on every exception
test_framework: detect failure of bitcoind startup
Yuri Zhykin (1):
bench: Added base58 encoding/decoding benchmarks
avnish (14):
changed block_test to BlockTests
changed test names from _ to CamelCase
changed header_size_is_expected to HeaderSizeIsExpected
changed "equihash_tests" to EquihashTests
changed founders_reward_test to FoundersRewardTest
changes tests to camelcase
chnged keystore_tests to KeystoreTests
changed libzcash_utils to LibzcashUtils
changed test to CamelCase
changed test to CamelCase
changed test to CamelCase
changed seven_eq_seven to SevenEqSeven
changed txid_tests to TxidTests
changed wallet_zkeys_test to WalletZkeysTest
avnish98 (1):
requested changes are rectified
ca333 (2):
update libsodium to v1.0.18
fix dead openssl download path
gladcow (4):
Show reindex state in metrics
Use processed file size as progress in metrics during reindex
Byte sizes format
Move reindex progress globals to metrics.h/cpp
Marshall Gaucher (74):
update /usr/bin/env; fix print conventions
update test_framework modules
Update rpc-test/test_framework to Py3 convention,modules,encoding
Update ignored testScriptsExt to Python3
Update python3 env path, remove python 2.7 assert
Update hexlify for encoding, update to py3 io module
Update py3 env path, remove py2 assert
Update py2 conventions to py3, remove py2 env and assert
Update py2 conventions to py3, update Decimal calls
Update py2 env path, remove py2 assert
Update py2 env path, remove py2 assert
Update py2 env path, remove py2 assert, update filter to return list for py3
Update py2 env path, remove py2 assert, update http module and assert encoding
Update cmp to py3 functions, update map return to list for py3
Standard py2 to py3 updates
Update py2 modules to py3, update encoding to be py3 compatible
Update to py3 conventions, update decimal calls to be consistent
Update to py3 conventions, update filter to return list
update to py3 conventions, update range to return list for py3
update to py3 convention, update execfile to py3 call
update to py3 conventions, update cmp to be py3 compatible, update map to return list for py3
update to py3 conventions, preserve ipv6 patch
update str cast to prevent address assert issues
clean up binascii call
Add keyerror execption
update to py3 env path
update to py3 conventions, update functions to be upstream consistent
update to py3 conventions, clean up code to be upstream consistent
update to py3 encodings
update encoding, decoding, serialize funcs for py3
Update type to be decimal
update to py3 conventions, BUG with last assert_equal
Update io modules for py3, ISSUE with create_transaction function
Update to py3, ISSUE with encoding
Update to py3, ISSUE with encoding
Update to py3, ISSUE with encoding in create_block
Update to py3, ISSUE with encoding in create_block
Clean up code not needed from upstream
update io module, fix py3 division, and string encoding
update remaining encoding issues, add pyblake2
Use more meaningful assert_equal from our original codebase
Clean up code from upstream we dont use
fix except bug for undefined url
Remove semi colons
make import urlparse module consistent,httplib update to py3
correct update to python3
clean-up imports, keep string notation consistent, remove spacing
clean up
Use upstream encoding for encodeDecimal
fix type issue
fix initialize statements for imports
clean up initiliaze statements from imports
update type for decimal 0
remove debug lines from prior commits
clean up to minimize diff
remove u encoding
Fix decimal 0 issues
Clean up import calls
clean up
clean up
clean up
fix url and port issue
cleanups and fixing odd casting
Update json to simplejson to remove unicode and str issue from py2 to py3
Update py3 division
fix pyflakes errors
clean up conventions and whitespace
fix string pattern issue on byte object
update comment regarding prior py2 exception
Fix remaining python3 conventions
Update remaining Python3 conventions
Updating remaining python3 conventions
Update #! env for python3
Update RPCs to support cross platform paths and libs
murrayn (1):
Add build support for 'gprof' profiling.
practicalswift (8):
build: Show enabled sanitizers in configure output
Add -ftrapv to DEBUG_CXXFLAGS when --enable-debug is used
Assert that what might look like a possible division by zero is actually unreachable
Replace boost::function with std::function (C++11)
Avoid static analyzer warnings regarding uninitialized arguments
Restore default format state of cout after printing with std::fixed/setprecision
Initialize recently introduced non-static class member lastCycles to zero in constructor
Replace boost::function with std::function (C++11)
ptschip (1):
Enable python tests for Native Windows
zancas (3):
update comment, to correctly specify number of methods injected
replace "virtual" with "override" in subclasses
Remove remaining instances of boost::function

View File

@ -18,7 +18,7 @@
#define CLIENT_VERSION_MAJOR 2
#define CLIENT_VERSION_MINOR 1
#define CLIENT_VERSION_REVISION 2
#define CLIENT_VERSION_BUILD 25
#define CLIENT_VERSION_BUILD 50
//! Set to true for release, false for prerelease or test build
#define CLIENT_VERSION_IS_RELEASE true

View File

@ -8,7 +8,7 @@
// Deprecation policy:
// * Shut down 16 weeks' worth of blocks after the estimated release block height.
// * A warning is shown during the 2 weeks' worth of blocks prior to shut down.
static const int APPROX_RELEASE_HEIGHT = 798142;
static const int APPROX_RELEASE_HEIGHT = 805837;
static const int WEEKS_UNTIL_DEPRECATION = 16;
static const int DEPRECATION_HEIGHT = APPROX_RELEASE_HEIGHT + (WEEKS_UNTIL_DEPRECATION * 7 * 24 * 48);