diff --git a/README.md b/README.md
index bfbfb302a..4accbb230 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Zcash 2.1.0-rc1
+Zcash 2.1.0
===========
diff --git a/configure.ac b/configure.ac
index e04c15100..fa22e088b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 2)
define(_CLIENT_VERSION_MINOR, 1)
define(_CLIENT_VERSION_REVISION, 0)
-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)
diff --git a/contrib/debian/changelog b/contrib/debian/changelog
index 6a3a97ef3..016d23814 100644
--- a/contrib/debian/changelog
+++ b/contrib/debian/changelog
@@ -1,3 +1,9 @@
+zcash (2.1.0) stable; urgency=medium
+
+ * 2.1.0 release.
+
+ -- Electric Coin Company Sat, 02 Nov 2019 11:01:00 -0600
+
zcash (2.1.0~rc1) stable; urgency=medium
* 2.1.0-rc1 release.
diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml
index 2502e36bb..79c7d25fc 100644
--- a/contrib/gitian-descriptors/gitian-linux.yml
+++ b/contrib/gitian-descriptors/gitian-linux.yml
@@ -1,5 +1,5 @@
---
-name: "zcash-2.1.0-rc1"
+name: "zcash-2.1.0"
enable_cache: true
distro: "debian"
suites:
diff --git a/doc/authors.md b/doc/authors.md
index c21e5ddd3..9fbff8d04 100644
--- a/doc/authors.md
+++ b/doc/authors.md
@@ -1,11 +1,11 @@
Zcash Contributors
==================
-Jack Grigg (880)
+Jack Grigg (919)
Simon Liu (459)
-Sean Bowe (278)
-Eirik Ogilvie-Wigley (169)
-Daira Hopwood (140)
+Sean Bowe (279)
+Eirik Ogilvie-Wigley (210)
+Daira Hopwood (144)
Jay Graber (89)
Wladimir J. van der Laan (82)
Taylor Hornby (73)
@@ -13,8 +13,8 @@ Jonas Schnelli (62)
Nathan Wilcox (56)
Pieter Wuille (54)
Kevin Gallagher (38)
+Larry Ruane (36)
Cory Fields (35)
-Larry Ruane (31)
Marshall Gaucher (22)
Jonathan "Duke" Leto (17)
syd (15)
@@ -24,13 +24,13 @@ Marco Falke (11)
Ariel Gabizon (11)
Jorge Timón (10)
nomnombtc (9)
+Dimitris Apostolou (9)
kozyilmaz (8)
fanquake (8)
Luke Dashjr (8)
-Dimitris Apostolou (8)
+Benjamin Winston (8)
Jeff Garzik (7)
Gregory Maxwell (7)
-Benjamin Winston (7)
Marius Kjærstad (6)
David Mercer (6)
Daniel Cousens (6)
@@ -39,6 +39,7 @@ Suhas Daftuar (5)
Peter Todd (5)
Karl-Johan Alm (5)
Johnathan Corgan (5)
+Gareth Davies (5)
Alex Morcos (5)
WO (4)
Philip Kaufmann (4)
@@ -46,7 +47,6 @@ Pavel Janík (4)
Patrick Strateman (4)
João Barbosa (4)
George Tankersley (4)
-Gareth Davies (4)
Daniel Kraft (4)
lpescher (3)
ca333 (3)
@@ -73,6 +73,7 @@ Joe Turgeon (2)
Jack Gavigan (2)
ITH4Coinomia (2)
Gavin Andresen (2)
+Bryant Eisenbach (2)
Brad Miller (2)
Bjorn Hjortsberg (2)
Amgad Abdelhafez (2)
@@ -84,6 +85,7 @@ sandakersmann (1)
practicalswift (1)
mrbandrews (1)
kazcw (1)
+jeff-liang (1)
jc (1)
isle2983 (1)
instagibbs (1)
diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1
index dd40802f3..fc47f7f86 100644
--- a/doc/man/zcash-cli.1
+++ b/doc/man/zcash-cli.1
@@ -1,9 +1,9 @@
.\" 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"
+.TH ZCASH-CLI "1" "November 2019" "zcash-cli v2.1.0" "User Commands"
.SH NAME
-zcash-cli \- manual page for zcash-cli v2.1.0-rc1
+zcash-cli \- manual page for zcash-cli v2.1.0
.SH DESCRIPTION
-Zcash RPC client version v2.1.0\-rc1
+Zcash RPC client version v2.1.0
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see .
diff --git a/doc/man/zcash-tx.1 b/doc/man/zcash-tx.1
index 5a1d9f736..22428b628 100644
--- a/doc/man/zcash-tx.1
+++ b/doc/man/zcash-tx.1
@@ -1,9 +1,9 @@
.\" 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"
+.TH ZCASH-TX "1" "November 2019" "zcash-tx v2.1.0" "User Commands"
.SH NAME
-zcash-tx \- manual page for zcash-tx v2.1.0-rc1
+zcash-tx \- manual page for zcash-tx v2.1.0
.SH DESCRIPTION
-Zcash zcash\-tx utility version v2.1.0\-rc1
+Zcash zcash\-tx utility version v2.1.0
.SS "Usage:"
.TP
zcash\-tx [options] [commands]
diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1
index b60d9e7ed..1fb5f24bb 100644
--- a/doc/man/zcashd.1
+++ b/doc/man/zcashd.1
@@ -1,9 +1,9 @@
.\" 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"
+.TH ZCASHD "1" "November 2019" "zcashd v2.1.0" "User Commands"
.SH NAME
-zcashd \- manual page for zcashd v2.1.0-rc1
+zcashd \- manual page for zcashd v2.1.0
.SH DESCRIPTION
-Zcash Daemon version v2.1.0\-rc1
+Zcash Daemon version v2.1.0
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see .
diff --git a/doc/release-notes.md b/doc/release-notes.md
index 6d2f9bd8a..a29094b51 100644
--- a/doc/release-notes.md
+++ b/doc/release-notes.md
@@ -4,95 +4,3 @@ release-notes at release time)
Notable changes
===============
-Blossom network upgrade
------------------------
-
-The mainnet activation of the Blossom network upgrade is supported by this
-release, with an activation height of 653600, which should occur in early
-December — roughly one day following the targeted EOS halt of our 2.0.7-3
-release. Please upgrade to this release, or any subsequent release, in order to
-follow the Blossom network upgrade.
-
-The Blossom network upgrade implements
-[ZIP208](https://github.com/zcash/zips/blob/master/zip-0208.rst) which shortens
-block times from 150s to 75s.
-
-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.
-
-Asynchronous Operations Incorrectly Reporting Success
------------------------------------------------------
-We fixed an issue where asynchronous operations were sometimes reporting sucess
-when they had actually failed. One way this could occur was when trying to use
-`z_sendmany` to create a transaction spending coinbase funds in a way where
-change would be generated (not a valid use of `z_sendmany`). In this case the
-operation would erroneously report success, and the only way to see that the
-transaction had actually failed was to look in the `debug.log` file. Such
-operations will now correctly report that they have failed.
-
-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.
diff --git a/doc/release-notes/release-notes-2.1.0.md b/doc/release-notes/release-notes-2.1.0.md
new file mode 100644
index 000000000..a34305b17
--- /dev/null
+++ b/doc/release-notes/release-notes-2.1.0.md
@@ -0,0 +1,215 @@
+Notable changes
+===============
+
+Blossom network upgrade
+-----------------------
+
+The mainnet activation of the Blossom network upgrade is supported by this
+release, with an activation height of 653600, which should occur in early
+December — roughly one day following the targeted EOS halt of our 2.0.7-3
+release. Please upgrade to this release, or any subsequent release, in order to
+follow the Blossom network upgrade.
+
+The Blossom network upgrade implements
+[ZIP208](https://github.com/zcash/zips/blob/master/zip-0208.rst) which shortens
+block times from 150s to 75s.
+
+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.
+
+Asynchronous Operations Incorrectly Reporting Success
+-----------------------------------------------------
+We fixed an issue where asynchronous operations were sometimes reporting sucess
+when they had actually failed. One way this could occur was when trying to use
+`z_sendmany` to create a transaction spending coinbase funds in a way where
+change would be generated (not a valid use of `z_sendmany`). In this case the
+operation would erroneously report success, and the only way to see that the
+transaction had actually failed was to look in the `debug.log` file. Such
+operations will now correctly report that they have failed.
+
+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
+
+Dimitris Apostolou (1):
+ depends macOS: point --sysroot to SDK
+
+Eirik Ogilvie-Wigley (41):
+ 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.
+ make-release.py: Updated release notes and changelog for 2.1.0-rc1.
+ Release notes for bug fix
+ Better wording in release notes
+ Fix wording
+ Fix getblocksubsidy tests
+ fix comment
+ make-release.py: Versioning changes for 2.1.0.
+ make-release.py: Updated manpages for 2.1.0.
+
+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 (5):
+ insightexplorer: formatting, pyflakes cleanups
+ precompute empty merkle roots
+ update unit tests to compute empty roots
+ access array element using at()
+ #4175 z_sendmany coinbase to zaddr with change: report error status
+
+Sean Bowe (1):
+ Set mainnet activation of Blossom
+
+jeff-liang (1):
+ Display which network the node is running on.
+
+Benjamin Winston (1):
+ Removed stale seeder, fixing #4153
+
diff --git a/src/clientversion.h b/src/clientversion.h
index f1923b362..27c913b48 100644
--- a/src/clientversion.h
+++ b/src/clientversion.h
@@ -18,7 +18,7 @@
#define CLIENT_VERSION_MAJOR 2
#define CLIENT_VERSION_MINOR 1
#define CLIENT_VERSION_REVISION 0
-#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
diff --git a/src/deprecation.h b/src/deprecation.h
index 78246de87..3596e6aa5 100644
--- a/src/deprecation.h
+++ b/src/deprecation.h
@@ -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 = 625500;
+static const int APPROX_RELEASE_HEIGHT = 632000;
static const int WEEKS_UNTIL_DEPRECATION = 16;
// static const int DEPRECATION_HEIGHT = APPROX_RELEASE_HEIGHT + (WEEKS_UNTIL_DEPRECATION * 7 * 24 * 24);