Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v2.1.0 rc1 #4169

Merged
merged 3 commits into from Oct 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
@@ -1,4 +1,4 @@
Zcash 2.0.7-3
Zcash 2.1.0-rc1
<img align="right" width="120" height="80" src="doc/imgs/logo.png">
===========

Expand Down
6 changes: 3 additions & 3 deletions configure.ac
@@ -1,9 +1,9 @@
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 2)
define(_CLIENT_VERSION_MINOR, 0)
define(_CLIENT_VERSION_REVISION, 7)
define(_CLIENT_VERSION_BUILD, 53)
define(_CLIENT_VERSION_MINOR, 1)
define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 25)
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)
Expand Down
6 changes: 6 additions & 0 deletions contrib/debian/changelog
@@ -1,3 +1,9 @@
zcash (2.1.0~rc1) stable; urgency=medium

* 2.1.0-rc1 release.

-- Electric Coin Company <team@z.cash> Tue, 22 Oct 2019 14:52:02 -0600

zcash (2.0.7+3) stable; urgency=critical

* 2.0.7-3 release.
Expand Down
2 changes: 1 addition & 1 deletion contrib/gitian-descriptors/gitian-linux.yml
@@ -1,5 +1,5 @@
---
name: "zcash-2.0.7-3"
name: "zcash-2.1.0-rc1"
enable_cache: true
distro: "debian"
suites:
Expand Down
8 changes: 4 additions & 4 deletions doc/man/zcash-cli.1
@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.8.
.TH ZCASH-CLI "1" "September 2019" "zcash-cli v2.0.7-3" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH ZCASH-CLI "1" "October 2019" "zcash-cli v2.1.0-rc1" "User Commands"
.SH NAME
zcash-cli \- manual page for zcash-cli v2.0.7-3
zcash-cli \- manual page for zcash-cli v2.1.0-rc1
.SH DESCRIPTION
Zcash RPC client version v2.0.7\-3
Zcash RPC client version v2.1.0\-rc1
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.
Expand Down
8 changes: 4 additions & 4 deletions doc/man/zcash-tx.1
@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.8.
.TH ZCASH-TX "1" "September 2019" "zcash-tx v2.0.7-3" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH ZCASH-TX "1" "October 2019" "zcash-tx v2.1.0-rc1" "User Commands"
.SH NAME
zcash-tx \- manual page for zcash-tx v2.0.7-3
zcash-tx \- manual page for zcash-tx v2.1.0-rc1
.SH DESCRIPTION
Zcash zcash\-tx utility version v2.0.7\-3
Zcash zcash\-tx utility version v2.1.0\-rc1
.SS "Usage:"
.TP
zcash\-tx [options] <hex\-tx> [commands]
Expand Down
20 changes: 15 additions & 5 deletions doc/man/zcashd.1
@@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.8.
.TH ZCASHD "1" "September 2019" "zcashd v2.0.7-3" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH ZCASHD "1" "October 2019" "zcashd v2.1.0-rc1" "User Commands"
.SH NAME
zcashd \- manual page for zcashd v2.0.7-3
zcashd \- manual page for zcashd v2.1.0-rc1
.SH DESCRIPTION
Zcash Daemon version v2.0.7\-3
Zcash Daemon version v2.1.0\-rc1
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.
Expand Down Expand Up @@ -75,7 +75,7 @@ limit applied)
.HP
\fB\-par=\fR<n>
.IP
Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 =
Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 =
leave that many cores free, default: 0)
.HP
\fB\-pid=\fR<file>
Expand Down Expand Up @@ -170,6 +170,16 @@ Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000)
.IP
Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
.HP
\fB\-mempoolevictionmemoryminutes=\fR<n>
.IP
The number of minutes before allowing rejected transactions to re\-enter
the mempool. (default: 60)
.HP
\fB\-mempooltxcostlimit=\fR<n>
.IP
An upper bound on the maximum size in bytes of all transactions in the
mempool. (default: 80000000)
.HP
\fB\-onion=\fR<ip:port>
.IP
Use separate SOCKS5 proxy to reach peers via Tor hidden services
Expand Down
177 changes: 177 additions & 0 deletions doc/release-notes/release-notes-2.1.0-rc1.md
@@ -0,0 +1,177 @@
Notable changes
===============

DoS Mitigation: Mempool Size Limit and Random Drop
--------------------------------------------------

This release adds a mechanism for preventing nodes from running out of memory
in the situation where an attacker is trying to overwhelm the network with
transactions. This is achieved by keeping track of and limiting the total
`cost` and `evictionWeight` of all transactions in the mempool. The `cost` of a
transaction is determined by its size in bytes, and its `evictionWeight` is a
function of the transaction's `cost` and its fee. The maximum total cost is
configurable via the parameter `mempooltxcostlimit` which defaults to
80,000,000 (up to 20,000 txs). If a node's total mempool `cost` exceeds this
limit the node will evict a random transaction, preferentially picking larger
transactions and ones with below the standard fee. To prevent a node from
re-accepting evicted transactions, it keeps track of ones that it has evicted
recently. By default, a transaction will be considered recently evicted for 60
minutes, but this can be configured with the parameter
`mempoolevictionmemoryminutes`.

For full details see ZIP 401.

Fake chain detection during initial block download
--------------------------------------------------

One of the mechanisms that `zcashd` uses to detect whether it is in "initial
block download" (IBD) mode is to compare the active chain's cumulative work
against a hard-coded "minimum chain work" value. This mechanism (inherited from
Bitcoin Core) means that once a node exits IBD mode, it is either on the main
chain, or a fake alternate chain with similar amounts of work. In the latter
case, the node has most likely become the victim of a 50% + 1 adversary.

Starting from this release, `zcashd` additionally hard-codes the block hashes
for the activation blocks of each past network upgrade (NU). During initial
chain synchronization, and after the active chain has reached "minimum chain
work", the node checks the blocks at each NU activation height against the
hard-coded hashes. If any of them do not match, the node will immediately alert
the user and **shut down for safety**.

Disabling old Sprout proofs
---------------------------

As part of our ongoing work to clean up the codebase and minimise the security
surface of `zcashd`, we are removing `libsnark` from the codebase, and dropping
support for creating and verifying old Sprout proofs. Funds stored in Sprout
addresses are not affected, as they are spent using the hybrid Sprout circuit
(built using `bellman`) that was deployed during the Sapling network upgrade.

This change has several implications:

- `zcashd` no longer verifies old Sprout proofs, and will instead assume they
are valid. This has a minor implication for nodes: during initial block
download, an adversary could feed the node fake blocks containing invalid old
Sprout proofs, and the node would accept the fake chain as valid. However,
as soon as the active chain contains at least as much work as the hard-coded
"minimum chain work" value, the node will detect this situation and shut down.

- Shielded transactions can no longer be created before Sapling has activated.
This does not affect Zcash itself, but will affect downstream codebases that
have not yet activated Sapling (or that start a new chain after this point and
do not activate Sapling from launch). Note that the old Sprout circuit is
[vulnerable to counterfeiting](https://z.cash/support/security/announcements/security-announcement-2019-02-05-cve-2019-7167/)
and should not be used in current deployments.

- Starting from this release, the circuit parameters from the original Sprout
MPC are no longer required to start `zcashd`, and will not be downloaded by
`fetch-params.sh`. They are not being automatically deleted at this time.

We would like to take a moment to thank the `libsnark` authors and contributors.
It was vital to the success of Zcash, and the development of zero-knowledge
proofs in general, to have this code available and usable.

Changelog
=========

Bryant Eisenbach (2):
doc: Change Debian package description
doc: Move text prior to "This package provides..."

Daira Hopwood (4):
Remove copyright entries for Autoconf macros that have been deleted.
Remove copyright entry for libsnark.
Test setting an expiry height of 0.
Fix setting an expiry height of 0. fixes #4132

Eirik Ogilvie-Wigley (33):
Wrap metrics message in strprintf
DoS protection: Weighted random drop of txs if mempool full
Rebuild weighted list on removal and fix size calculation
Grammatical fixes
Remove transactions when ensuring size limit
Help message cleanup and add lock
Performance: Store weighted transactions in a tree
Fix naming conventions
No need to activate Overwinter/Sapling in rpc test
Fix recently evicted list size
Put size increment and decrement on their own lines
Prevent adding duplicate transactions
Move duplicate macro to reusable location
mempool_limit rpc test cleanup
Represent tx costs as signed integers
Fix comments
Rename variables for consistency
Use tx cost rather than evictionWeight when checking mempool capacity
Log rather than return error if a transaction is recently evicted
Represent recently evicted list as a deque
Rename files
Update release notes
Add test
minor rpc test clean up
Add explanatory comments
Wording and grammatical fixes
Update parameter names to match ZIP
Clarify the difference between cost and evictionWeight
Fix test cases: default mempool limiters
Remove dots and underscores from parameter names
Use same type when calling max
make-release.py: Versioning changes for 2.1.0-rc1.
make-release.py: Updated manpages for 2.1.0-rc1.

Gareth Davies (1):
Updating IPFS link for chunking

Jack Grigg (39):
depends: Add FreeBSD to hosts and builders
depends: Explicitly set Boost toolchain during configuration
depends: Add FreeBSD support to OpenSSL
depends: Patch libevent to detect arch4random_addrandom
depends: Add FreeBSD Rust binaries
depends: Explicitly call Rust install script using bash
depends: Use project-config.jam to configure Boost instead of user-config.jam
depends: Set PIC flags for FreeBSD
Always skip verification for old Sprout proofs
Remove ability to create non-Groth16 Sprout JSDescriptions
Use Sapling JSDescriptions in Boost tests
Remove non-Groth16 Sprout proofs from joinsplit gtests
Migrate test utilities to generate Sapling-type Sprout proofs
Use Sapling JSDescriptions in gtests
Revert "Allow user to ask server to save the Sprout R1CS out during startup."
Remove libsnark code for pre-Sapling Sprout proofs
Remove pre-Sapling Sprout circuit
Revert "configure: Guess -march for libsnark OPTFLAGS instead of hard-coding"
Revert "Check if OpenMP is available before using it"
Remove libsnark from build system
Remove libsnark
Remove libgmp
Remove libsnark unit tests from full test suite
test: Require minimum of Sapling for all RPC tests
test: Add Sapling v4 transactions to mininode framework
test: Add hashFinalSaplingProxy to create_block
test: Update RPC tests to use a minimum of Sapling
rpc: Use Sapling transactions in zc_raw_joinsplit
depends: Fix crate vendoring path
depends: Helper for vendoring new crates
depends: Add flag for building with a local librustzcash repo
tests: Clean up use of repr() in mininode
Remove makeGrothProof argument from JoinSplit::prove
Stop fetching old Sprout parameters
Add libsnark removal to notable changes
Move AbortNode to the top of main.cpp
Abort node if NU activations have unexpected hashes
Add block hashes for Overwinter, Sapling, and testnet Blossom
Update release notes with node abort behaviour

Larry Ruane (4):
insightexplorer: formatting, pyflakes cleanups
precompute empty merkle roots
update unit tests to compute empty roots
access array element using at()

jeff-liang (1):
Display which network the node is running on.

Benjamin Winston (1):
Removed stale seeder, fixing #4153

6 changes: 3 additions & 3 deletions src/clientversion.h
Expand Up @@ -16,9 +16,9 @@

//! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it
#define CLIENT_VERSION_MAJOR 2
#define CLIENT_VERSION_MINOR 0
#define CLIENT_VERSION_REVISION 7
#define CLIENT_VERSION_BUILD 53
#define CLIENT_VERSION_MINOR 1
#define CLIENT_VERSION_REVISION 0
#define CLIENT_VERSION_BUILD 25

//! Set to true for release, false for prerelease or test build
#define CLIENT_VERSION_IS_RELEASE true
Expand Down
2 changes: 1 addition & 1 deletion src/deprecation.h
Expand Up @@ -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 = 588500;
static const int APPROX_RELEASE_HEIGHT = 625500;
static const int WEEKS_UNTIL_DEPRECATION = 16;
static const int DEPRECATION_HEIGHT = APPROX_RELEASE_HEIGHT + (WEEKS_UNTIL_DEPRECATION * 7 * 24 * 24);

Expand Down