diff --git a/README.md b/README.md
index 2440da094..2d56aa932 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Zcash 4.3.0
+Zcash 4.4.0-rc1
===========
diff --git a/configure.ac b/configure.ac
index fec56f337..b6f3285ac 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,9 +1,9 @@
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 4)
-define(_CLIENT_VERSION_MINOR, 3)
+define(_CLIENT_VERSION_MINOR, 4)
define(_CLIENT_VERSION_REVISION, 0)
-define(_CLIENT_VERSION_BUILD, 50)
+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)
diff --git a/contrib/debian/changelog b/contrib/debian/changelog
index 63c24fc20..3e9e4cf3b 100644
--- a/contrib/debian/changelog
+++ b/contrib/debian/changelog
@@ -1,3 +1,9 @@
+zcash (4.4.0~rc1) stable; urgency=medium
+
+ * 4.4.0-rc1 release.
+
+ -- Electric Coin Company Fri, 09 Apr 2021 17:40:36 +1200
+
zcash (4.3.0) stable; urgency=medium
* 4.3.0 release.
diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml
index fc8a47071..503a73051 100644
--- a/contrib/gitian-descriptors/gitian-linux.yml
+++ b/contrib/gitian-descriptors/gitian-linux.yml
@@ -1,5 +1,5 @@
---
-name: "zcash-4.3.0"
+name: "zcash-4.4.0-rc1"
enable_cache: true
distro: "debian"
suites:
diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1
index 74f17bea3..9a97d9e4c 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.13.
-.TH ZCASH-CLI "1" "February 2021" "zcash-cli v4.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
+.TH ZCASH-CLI "1" "April 2021" "zcash-cli v4.4.0-rc1" "User Commands"
.SH NAME
-zcash-cli \- manual page for zcash-cli v4.3.0
+zcash-cli \- manual page for zcash-cli v4.4.0-rc1
.SH DESCRIPTION
-Zcash RPC client version v4.3.0
+Zcash RPC client version v4.4.0\-rc1
.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 52ff1f195..e1785f96a 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.13.
-.TH ZCASH-TX "1" "February 2021" "zcash-tx v4.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
+.TH ZCASH-TX "1" "April 2021" "zcash-tx v4.4.0-rc1" "User Commands"
.SH NAME
-zcash-tx \- manual page for zcash-tx v4.3.0
+zcash-tx \- manual page for zcash-tx v4.4.0-rc1
.SH DESCRIPTION
-Zcash zcash\-tx utility version v4.3.0
+Zcash zcash\-tx utility version v4.4.0\-rc1
.SS "Usage:"
.TP
zcash\-tx [options] [commands]
diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1
index 4da80d028..18c99299c 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.13.
-.TH ZCASHD "1" "February 2021" "zcashd v4.3.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
+.TH ZCASHD "1" "April 2021" "zcashd v4.4.0-rc1" "User Commands"
.SH NAME
-zcashd \- manual page for zcashd v4.3.0
+zcashd \- manual page for zcashd v4.4.0-rc1
.SH DESCRIPTION
-Zcash Daemon version v4.3.0
+Zcash Daemon version v4.4.0\-rc1
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see .
@@ -256,6 +256,16 @@ specified multiple times. Whitelisted peers cannot be DoS banned and
their transactions are always relayed, even if they are already in the
mempool, useful e.g. for a gateway
.HP
+\fB\-whitelistrelay\fR
+.IP
+Accept relayed transactions received from whitelisted inbound peers even
+when not relaying transactions (default: 1)
+.HP
+\fB\-whitelistforcerelay\fR
+.IP
+Force relay of transactions from whitelisted inbound peers even they
+violate local relay policy (default: 1)
+.HP
\fB\-maxuploadtarget=\fR
.IP
Tries to keep outbound traffic under the given target (in MiB per 24h),
@@ -357,6 +367,27 @@ Enable publish raw block in
.IP
Enable publish raw transaction in
.PP
+Monitoring options:
+.HP
+\fB\-metricsallowip=\fR
+.IP
+Allow metrics connections from specified source. Valid for are a
+single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0)
+or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified
+multiple times. (default: only localhost)
+.HP
+\fB\-metricsbind=\fR
+.IP
+Bind to given address to listen for metrics connections. (default: bind
+to all interfaces)
+.HP
+\fB\-prometheusport=\fR
+.IP
+Expose node metrics in the Prometheus exposition format. An HTTP
+listener will be started on , which responds to GET requests on
+any request path. Use \fB\-metricsallowip\fR and \fB\-metricsbind\fR to control
+access.
+.PP
Debugging/Testing options:
.HP
\fB\-debug=\fR
diff --git a/doc/release-notes/release-notes-4.4.0-rc1.md b/doc/release-notes/release-notes-4.4.0-rc1.md
new file mode 100644
index 000000000..6a84fc879
--- /dev/null
+++ b/doc/release-notes/release-notes-4.4.0-rc1.md
@@ -0,0 +1,187 @@
+Notable changes
+===============
+
+Prometheus metrics
+------------------
+
+`zcashd` can now be configured to optionally expose an HTTP server that acts as
+a Prometheus scrape endpoint. The server will respond to `GET` requests on any
+request path.
+
+To enable the endpoint, add `-prometheusport=` to your `zcashd`
+configuration (either in `zcash.conf` or on the command line). After
+restarting `zcashd` you can then test the endpoint by querying it with e.g.
+`curl http://127.0.0.1:`.
+
+By default, access is restricted to localhost. This can be expanded with
+`-metricsallowip=`, which can specify IPs or subnets. Note that HTTPS is not
+supported, and therefore connections to the endpoint are not encrypted or
+authenticated. Access to the endpoint should be assumed to compromise the
+privacy of node operations, by the provided metrics and/or by timing side
+channels. Non-localhost access is **strongly discouraged** if the node has a
+wallet holding live funds.
+
+The specific metrics names may change in subsequent releases, in particular to
+improve interoperability with `zebrad`.
+
+Changelog
+=========
+
+Cory Fields (3):
+ net: rearrange so that socket accesses can be grouped together
+ net: add a lock around hSocket
+ net: fix a few races. Credit @TheBlueMatt
+
+Daira Hopwood (6):
+ Fix regression introduced in e286250ce49309bfa931b622fabfc37100246266 by adding #include . fixes #5014
+ native_rust: don't install Rust docs. This speeds up builds, especially native builds on macOS. fixes #5042
+ Delete spare mainnet Founders' Reward addresses that will never be used.
+ configure.ac: Add check for ntdll on Windows.
+ configure.ac: tidy up spacing.
+ Cleanup: get the definition of ENABLE_VIRTUAL_TERMINAL_PROCESSING from wincon.h.
+
+Gregory Maxwell (5):
+ Replace setInventoryKnown with a rolling bloom filter.
+ Remove mruset as it is no longer used.
+ Actually only use filterInventoryKnown with MSG_TX inventory messages.
+ Add whitelistforcerelay to control forced relaying.
+ Blacklist -whitelistalwaysrelay; replaced by -whitelistrelay.
+
+Jack Grigg (39):
+ Squashed 'src/secp256k1/' changes from c6b6b8f1bb..3967d96bf1
+ Squashed 'src/secp256k1/' changes from 3967d96bf1..a4abaab793
+ CI: Correctly build zcashd book
+ cargo update
+ rust: zcash_{primitives, proofs} 0.5.0
+ depends: Update Rust to 1.51.0
+ qa: Update BerkeleyDB downloads page URL
+ rust: Implement FFI interface to metrics crate
+ rust: Add a Prometheus metrics exporter
+ Add some metrics that match existing zebrad metrics
+ metrics: Add documentation and example configs
+ tracing: Merge TracingSpanFields macro into TracingSpan
+ rust: Move helper macros into rust/helpers.h
+ metrics: Add support for labels
+ metrics: Expose binary metadata
+ Add more detailed metrics
+ rust: Use consistent include guards in header files
+ rust: Check for invalid UTF-8 in -prometheusmetrics argument
+ Add -prometheusmetrics to release notes
+ Mention in release notes that metrics names may still change
+ metrics: Implement IP access control on Prometheus scrape endpoint
+ rust: Pin hyper 0.14.2
+ metrics: Move documentation into zcashd book
+ metrics: Enable gauges with fully-static labels
+ metrics: Use labels for pool statistics
+ metrics: Rename metrics with consistent naming scheme
+ metrics: Remove zcash.sync.* metrics
+ metrics: Rework pool metrics in anticipation of transparent pool
+ net: Clear CNode::strSendCommand if a message is aborted
+ rust: Add license header to metrics_ffi::prometheus
+ book: Fix typo in metrics documentation
+ metrics: Don't assert that the Sprout tree is accessible
+ Remove usage of local from fetch-params.sh
+ lint: Fix false positive
+ qa: Point univalue update checker at correct upstream
+ qa: Postpone updates that require CMake in the build system
+ qa: Postpone Boost 1.75.0
+ make-release.py: Versioning changes for 4.4.0-rc1.
+ make-release.py: Updated manpages for 4.4.0-rc1.
+
+Jeremy Rubin (2):
+ Fix CCheckQueue IsIdle (potential) race condition and remove dangerous constructors.
+ Add CheckQueue Tests
+
+Jonas Schnelli (1):
+ Move -blocksonly parameter interaction to the new ParameterInteraction() function
+
+Kaz Wesley (2):
+ lock cs_main for State/Misbehaving
+ lock cs_main for chainActive
+
+Kris Nuttycombe (14):
+ Ignore temporary build artifacts.
+ Add feature flagging infrastructure to consensus parameters.
+ Relocate contextual Sapling version checks
+ Add TxVersionInfo for feature/future-base transaction construction.
+ Move sapling version group checks back inside of saplingActive check.
+ Add future version group & version checks
+ Use SPROUT_MAX_CURRENT_VERSION
+ Apply suggestions from code review
+ Add feature flagging tests.
+ Document FeatureSet type.
+ Document UPGRADE_ZFUTURE
+ Ensure that Sapling version range checks are always guarded by SAPLING_VERSION_GROUP_ID
+ Address review comments.
+ CurrentTxVersionInfo should return SPROUT_MIN_CURRENT_VERSION pre-overwinter.
+
+Marco Falke (2):
+ Move blocksonly parameter interaction to InitParameterInteraction()
+ doc: Mention blocksonly in reduce-traffic.md, unhide option
+
+Matt Corallo (13):
+ Fix race when accessing std::locale::classic()
+ Lock mapArgs/mapMultiArgs access in util
+ Ensure cs_vNodes is held when using the return value from FindNode
+ Access WorkQueue::running only within the cs lock.
+ Make nTimeConnected const in CNode
+ Avoid copying CNodeStats to make helgrind OK with buggy std::string
+ Access fRelayTxes with cs_filter lock in copyStats
+ Make nStartingHeight atomic
+ Make nServices atomic
+ Move [clean|str]SubVer writes/copyStats into a lock
+ Make nTimeBestReceived atomic
+ Move CNode::addrName accesses behind locked accessors
+ Move CNode::addrLocal access behind locked accessors
+
+Patick Strateman (13):
+ Add blocksonly mode
+ Do not process tx inv's in blocksonly mode
+ Add whitelistalwaysrelay option
+ Add help text for blocksonly and whitelistalwaysrelay
+ Use DEFAULT_BLOCKSONLY and DEFAULT_WHITELISTALWAYSRELAY constants
+ Display DEFAULT_WHITELISTALWAYSRELAY in help text
+ Fix fRelayTxs comment
+ Fix comment for blocksonly parameter interactions
+ Fix relay mechanism for whitelisted peers under blocks only mode.
+ Bail early in processing transactions in blocks only mode.
+ Improve log messages for blocks only violations.
+ Rename setInventoryKnown filterInventoryKnown
+ Only use filterInventoryKnown with MSG_TX inventory messages.
+
+Patrick Strateman (1):
+ Make nWalletDBUpdated atomic to avoid a potential race.
+
+Pavel JanÃk (2):
+ Notify other serviceQueue thread we are finished to prevent deadlocks.
+ Do not shadow LOCK's criticalblock variable for LOCK inside LOCK
+
+Peter Todd (1):
+ Add relaytxes status to getpeerinfo
+
+Pieter Wuille (2):
+ Clean up lockorder data of destroyed mutexes
+ Fix some locks
+
+Russell Yanofsky (1):
+ Add missing cs_wallet lock that triggers new lock held assertion
+
+Sjors Provoost (1):
+ [doc] mention whitelist is inbound, and applies to blocksonly
+
+Steven Smith (1):
+ Adding base NU5 declarations and logic
+
+Yuri Zhykin (1):
+ Fix for incorrect locking in GetPubKey() (keystore.cpp)
+
+glowang (1):
+ Update -blocksonly documentation
+
+plutoforever (1):
+ removed bashisms from build scripts
+
+Jack Grigg (2):
+ Add security warnings for -prometheusmetrics option
+ Clean up comment
+
diff --git a/src/clientversion.h b/src/clientversion.h
index 98588fb22..c4f612bbf 100644
--- a/src/clientversion.h
+++ b/src/clientversion.h
@@ -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 4
-#define CLIENT_VERSION_MINOR 3
+#define CLIENT_VERSION_MINOR 4
#define CLIENT_VERSION_REVISION 0
-#define CLIENT_VERSION_BUILD 50
+#define CLIENT_VERSION_BUILD 25
//! 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 30b64e00e..34926d494 100644
--- a/src/deprecation.h
+++ b/src/deprecation.h
@@ -10,7 +10,7 @@
// Per https://zips.z.cash/zip-0200
// Shut down nodes running this version of code, 16 weeks' worth of blocks after the estimated
// release block height. A warning is shown during the 14 days' worth of blocks prior to shut down.
-static const int APPROX_RELEASE_HEIGHT = 1159500;
+static const int APPROX_RELEASE_HEIGHT = 1209500;
static const int RELEASE_TO_DEPRECATION_WEEKS = 16;
static const int EXPECTED_BLOCKS_PER_HOUR = 3600 / Consensus::POST_BLOSSOM_POW_TARGET_SPACING;
static_assert(EXPECTED_BLOCKS_PER_HOUR == 48, "The value of Consensus::POST_BLOSSOM_POW_TARGET_SPACING was chosen such that this assertion holds.");