diff --git a/README.md b/README.md
index e10f4322c..60f087a92 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Zcash 5.4.0-rc2
+Zcash 5.4.0-rc3
===========
diff --git a/configure.ac b/configure.ac
index e5c5b7d8e..aa1a61b65 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 5)
define(_CLIENT_VERSION_MINOR, 4)
define(_CLIENT_VERSION_REVISION, 0)
-define(_CLIENT_VERSION_BUILD, 26)
+define(_CLIENT_VERSION_BUILD, 27)
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 ed1d4bf67..ea0605914 100644
--- a/contrib/debian/changelog
+++ b/contrib/debian/changelog
@@ -1,3 +1,9 @@
+zcash (5.4.0~rc3) stable; urgency=medium
+
+ * 5.4.0-rc3 release.
+
+ -- Electric Coin Company Fri, 27 Jan 2023 15:07:19 -0700
+
zcash (5.4.0~rc2) stable; urgency=medium
* 5.4.0-rc2 release.
diff --git a/contrib/gitian-descriptors/gitian-linux-parallel.yml b/contrib/gitian-descriptors/gitian-linux-parallel.yml
index 01c064b98..0cb4ee7c6 100644
--- a/contrib/gitian-descriptors/gitian-linux-parallel.yml
+++ b/contrib/gitian-descriptors/gitian-linux-parallel.yml
@@ -1,5 +1,5 @@
---
-name: "zcash-5.4.0-rc2"
+name: "zcash-5.4.0-rc3"
enable_cache: true
distro: "debian"
suites:
diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml
index 92fd10425..fb70e79c4 100644
--- a/contrib/gitian-descriptors/gitian-linux.yml
+++ b/contrib/gitian-descriptors/gitian-linux.yml
@@ -1,5 +1,5 @@
---
-name: "zcash-5.4.0-rc2"
+name: "zcash-5.4.0-rc3"
enable_cache: true
distro: "debian"
suites:
diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1
index 5bebc9ab7..90bd727dc 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.49.1.
-.TH ZCASH-CLI "1" "January 2023" "zcash-cli v5.4.0-rc2" "User Commands"
+.TH ZCASH-CLI "1" "January 2023" "zcash-cli v5.4.0-rc3" "User Commands"
.SH NAME
-zcash-cli \- manual page for zcash-cli v5.4.0-rc2
+zcash-cli \- manual page for zcash-cli v5.4.0-rc3
.SH DESCRIPTION
-Zcash RPC client version v5.4.0\-rc2
+Zcash RPC client version v5.4.0\-rc3
.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 7f320ec7f..1ee789900 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.49.1.
-.TH ZCASH-TX "1" "January 2023" "zcash-tx v5.4.0-rc2" "User Commands"
+.TH ZCASH-TX "1" "January 2023" "zcash-tx v5.4.0-rc3" "User Commands"
.SH NAME
-zcash-tx \- manual page for zcash-tx v5.4.0-rc2
+zcash-tx \- manual page for zcash-tx v5.4.0-rc3
.SH DESCRIPTION
-Zcash zcash\-tx utility version v5.4.0\-rc2
+Zcash zcash\-tx utility version v5.4.0\-rc3
.SS "Usage:"
.TP
zcash\-tx [options] [commands]
diff --git a/doc/man/zcashd-wallet-tool.1 b/doc/man/zcashd-wallet-tool.1
index 7f63a409f..11511ca2f 100644
--- a/doc/man/zcashd-wallet-tool.1
+++ b/doc/man/zcashd-wallet-tool.1
@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
-.TH ZCASHD-WALLET-TOOL "1" "January 2023" "zcashd-wallet-tool v5.4.0-rc2" "User Commands"
+.TH ZCASHD-WALLET-TOOL "1" "January 2023" "zcashd-wallet-tool v5.4.0-rc3" "User Commands"
.SH NAME
-zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.4.0-rc2
+zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.4.0-rc3
.SH SYNOPSIS
.B zcashd-wallet-tool
[\fI\,OPTIONS\/\fR]
diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1
index ed90eaea4..acb69cb44 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.49.1.
-.TH ZCASHD "1" "January 2023" "zcashd v5.4.0-rc2" "User Commands"
+.TH ZCASHD "1" "January 2023" "zcashd v5.4.0-rc3" "User Commands"
.SH NAME
-zcashd \- manual page for zcashd v5.4.0-rc2
+zcashd \- manual page for zcashd v5.4.0-rc3
.SH DESCRIPTION
-Zcash Daemon version v5.4.0\-rc2
+Zcash Daemon version v5.4.0\-rc3
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see .
diff --git a/doc/release-notes/release-notes-5.4.0-rc3.md b/doc/release-notes/release-notes-5.4.0-rc3.md
new file mode 100644
index 000000000..c2db126f5
--- /dev/null
+++ b/doc/release-notes/release-notes-5.4.0-rc3.md
@@ -0,0 +1,288 @@
+Notable changes
+===============
+
+Fixes
+-----
+
+This release fixes an issue that could potentially cause a node to crash with the
+log message "The wallet's best block hash `` was not detected in restored
+chain state. Giving up; please restart with `-rescan`."
+
+Transparent pool and chain supply tracking
+------------------------------------------
+
+Since v2.0.0, `zcashd` has tracked the change in value within the Sprout and
+Sapling shielded pools for each block; v5.0.0 added the Orchard pool. This
+release completes the set, by tracking the change in value within the
+"transparent" pool (more precisely, the value stored in Bitcoin-style UTXOs).
+
+`zcashd` also now tracks the change in "chain supply" for each block, defined as
+the sum of coinbase output values, minus unclaimed fees. This is precisely equal
+to the sum of the value in the transparent and shielded pools, and equivalent to
+the sum of all unspent coins/notes on the chain. It is bounded above by the
+theoretical maximum supply, but in practice is lower due to, for example, miners
+not claiming transaction fees.
+
+> Bitcoin-style consensus rules implement fees as an imbalance between spent
+> coins/notes and newly-created coins/notes. The consensus rules require that a
+> coinbase transaction's outputs have a total value no greater than the sum of
+> that block's subsidy and the fees made available by the transactions in the
+> block. However, the consensus rules do not require that all of the available
+> funds are claimed, and a miner can create coinbase transactions with lower
+> value in the outputs (though in the case of Zcash, the consensus rules do
+> require the transaction to include [ZIP 1014](https://zips.z.cash/zip-1014)
+> Funding Stream outputs).
+
+After upgrading to v5.4.0, `zcashd` will start tracking changes in transparent
+pool value and chain supply from the height at which it is restarted. Block
+heights prior to this will not have any information recorded. To track changes
+from genesis, and thus monitor the total transparent pool size and chain supply,
+you would need to restart your node with the `-reindex` option.
+
+Wallet Performance Fixes
+------------------------
+
+The 100MiB memory limit for the batch scanner has been replaced by a 1000-block
+limit. This eliminates an expensive call to determine the current memory usage
+of the batch scanner.
+
+The following associated metric has been removed from the set of metrics
+reported when `-prometheusport` is set:
+
+- (gauge) `zcashd.wallet.batchscanner.usage.bytes`
+
+RPC Changes
+-----------
+
+- `z_sendmany` will no longer select transparent coinbase when "ANY\_TADDR" is
+ used as the `fromaddress`. It was already documented to do this, but the
+ previous behavior didn’t match. When coinbase notes were selected in this
+ case, they would (properly) require that the transaction didn’t have any
+ change, but this could be confusing, as the documentation stated that these
+ two conditions (using "ANY\_TADDR" and disallowing change) wouldn’t coincide.
+- A new value pool object with `"id": "transparent"` has been added to the
+ `valuePools` list in `getblockchaininfo` and `getblock`.
+- A new `chainSupply` key has been added to `getblockchaininfo` and `getblock`
+ to report the total chain supply as of that block height (if tracked), and the
+ change in chain supply caused by the block (for `getblock`, if measured).
+
+Mining
+-------
+
+- Changes to `getblocktemplate` have been backported from upstream Bitcoin Core,
+ to significantly improve its performance by doing more work ahead of time in
+ the mempool (and reusing the work across multiple `getblocktemplate` calls).
+
+[Deprecations](https://zcash.github.io/zcash/user/deprecation.html)
+--------------
+
+The following features have been deprecated, but remain available by default.
+These features may be disabled by setting `-allowdeprecated=none`. 18 weeks
+after this release, these features will be disabled by default and the following
+flags to `-allowdeprecated` will be required to permit their continued use:
+
+- `gbt_oldhashes`: the `finalsaplingroothash`, `lightclientroothash`, and
+ `blockcommitmentshash` fields in the output of `getblocktemplate` have been
+ replaced by the `defaultroots` field.
+
+The following previously-deprecated features have been disabled by default, and
+will be removed in 18 weeks:
+
+- `legacy_privacy`
+- `getnewaddress`
+- `getrawchangeaddress`
+- `z_getbalance`
+- `z_gettotalbalance`
+- `z_getnewaddress`
+- `z_listaddresses`
+- `addrtype`
+- `wallettxvjoinsplit`
+
+The following previously-deprecated features have been removed:
+
+- `dumpwallet`
+- `zcrawreceive`
+- `zcrawjoinsplit`
+- `zcrawkeygen`
+
+Platform Support
+----------------
+
+- CentOS 8 has been removed from the list of supported platforms. It reached EoL
+ on December 31st 2021, and does not satisfy our Tier 2 policy requirements.
+
+Changelog
+=========
+
+Alex Morcos (3):
+ Make accessing mempool parents and children public
+ Expose FormatStateMessage
+ Rewrite CreateNewBlock
+
+Alfredo Garcia (1):
+ Add chain supply and transparent value to block index.
+
+Carl Dong (4):
+ depends: More robust cmake invocation
+ depends: Cleanup CMake invocation
+ depends: Prepend CPPFLAGS to C{,XX}FLAGS for CMake
+ depends: Specify LDFLAGS to cmake as well
+
+Daira Hopwood (7):
+ Add tl::expected. refs #4816
+ The std::expected proposal has unnecessary instances of undefined behaviour for operator->, operator*, and error(). Make these into assertion failures (this still conforms to the proposal).
+ Refactor HaveShieldedRequirements to use tl::expected (example with a void T) and rename it to CheckShieldedRequirements.
+ tl::expected follow-up to address @str4d's comments.
+ Cleanup after removing dumpwallet.
+ Change the time that the wallet will wait for the block index to load from 5 minutes to 2 hours.
+ Postpone updates for 5.4.0.
+
+Dimitris Apostolou (2):
+ Fix typos
+ Fix typos
+
+Greg Pfeil (23):
+ Add PrivacyPolicyMeet
+ Remove trailing whitespace in fetch-params.sh
+ Migrate fetch-params.sh to bash
+ Scope the fetch-params lock file to the user
+ Update comments to match changed tests
+ Put utf8.h in the correct place
+ Don’t select transparent coinbase with ANY_TADDR
+ Update failing tests after fixing ANY_TADDR behavior
+ Apply suggestions from code review
+ Apply suggestions from code review
+ Appease ShellCheck
+ Defer fixing docker/entrypoint.sh lint failure
+ Apply suggestions from code review
+ Fix a minor bug in docker/entrypoint.sh
+ Improve PrivacyPolicy comments
+ Apply suggestions from code review
+ Add release notes
+ Update src/wallet/asyncrpcoperation_sendmany.cpp
+ Fix a missing newline in the RPC docs
+ No longer test_received_sprout
+ Use cached sprout addresses rather than funding
+ Update overwinter test to not shield to Sprout
+ Support Bash 3.2 in fetch-params.sh
+
+Jack Grigg (47):
+ test: Handle mining slow start inside `CreateNewBlock_validity`
+ test: Improve CreateNewBlock_validity exception checks
+ txdb: Remove const annotation from blockinfo iterator type
+ Remove `dumpwallet` RPC method
+ qa: Refactor `wallet_deprecation` test to simplify deprecation changes
+ Remove `zcraw*` RPC methods
+ txdb: Clean up for loop syntax in `WriteBatchSync`
+ Disable previously-deprecated features by default
+ Deprecate old hash fields of `getblocktemplate`
+ qa: Change show_help RPC test to print out differences
+ qa: Update mempool_packages RPC test after deprecation ratcheting
+ qa: Import Rust crate audits from Firefox
+ qa: Import Rust crate audits from the Bytecode Alliance
+ qa: Import Rust crate audits from Embark Studios
+ qa: Remove audit-as-crates-io for non-third-party crates
+ cargo update
+ zcash_primitives 0.9
+ clearscreen 2.0
+ depends: googletest 1.12.1
+ Remove CentOS 8 as a supported platform
+ depends: native_zstd 1.5.2
+ depends: native_ccache 4.6.3
+ depends: Add package for native_cmake 3.25.1
+ depends: Force cmake to install libzstd in lib/
+ build-aux: Update Boost macros to latest serials
+ build: Bump required Boost version
+ depends: Force Boost library to be installed in lib/
+ depends: Add tl_expected to update checker
+ depends: Boost 1.81.0
+ depends: utfcpp 3.2.3
+ qa: Postpone LLVM 15 and CCache 4.7 updates
+ depends: Update cxx to 1.0.83
+ cargo update
+ Document -clockoffset option
+ qa: Update show_help RPC test
+ doc: Fix arguments to make-release.py in hotfix process
+ depends: CMake 3.25.2
+ make-release.py: Versioning changes for 5.4.0-rc1.
+ make-release.py: Updated manpages for 5.4.0-rc1.
+ make-release.py: Updated release notes and changelog for 5.4.0-rc1.
+ qa: Enable RPC test execution to be overridden from Python
+ depends: Postpone cxx update
+ metrics: Update `zcash.pool.value.zatoshis` gauge for transparent pool
+ Update release notes with notable changes for v5.4.0
+ make-release.py: Versioning changes for 5.4.0-rc2.
+ make-release.py: Updated manpages for 5.4.0-rc2.
+ make-release.py: Updated release notes and changelog for 5.4.0-rc2.
+
+James O'Beirne (2):
+ Clarify help messages for path args to mention datadir prefix
+ Add AbsPathForConfigVal to consolidate datadir prefixing for path args
+
+Kris Nuttycombe (24):
+ Add TransactionStrategy::IsCompatibleWith
+ Modify TransactionBuilder to use the standard default fee.
+ Factor out memo parsing from asyncrpcoperation_sendmany
+ Remove mergetoaddress_sprout test as sending to Sprout is no longer supported.
+ Remove wallet_shieldcoinbase_sprout test.
+ Update `mergetoaddress_mixednotes.py` to no longer send to Sprout.
+ Verify sum of pool balances against chain total supply.
+ Apply suggestions from code review
+ Add script for verifying block rewards and fees not claimed by miners.
+ Apply suggestions from code review
+ Remove unnecessary delta_count variable.
+ Replace fix-copyright-headers.py with a script that creates a scripted-diff git commit.
+ scripted-diff: Update Zcash copyrights to 2023
+ Apply suggestions from code review
+ Enable tests of chain supply & transparent pool balance.
+ Update doc/release-notes.md
+ Fixes an error in `zcash-cli help` following the removal of `dumpwallet`.
+ Allow rescan to exit in the case that Ctrl-C is pressed.
+ Fetch recently conflicted transactions incrementally in ThreadNotifyWallet.
+ Bound wallet batch scanner size to 1000 blocks instead of 100 MiB
+ Remove unused DEFAULT_BATCHSCANNERMEMLIMIT constant.
+ Tolerate missing cached conflict data in ThreadNotifyWallets
+ make-release.py: Versioning changes for 5.4.0-rc3.
+ make-release.py: Updated manpages for 5.4.0-rc3.
+
+Marco Falke (4):
+ [init] Add missing help for args
+ [init] Help Msg: Use Params(CBaseChainParams::MAIN)
+ Clarify mocktime help message
+ init: Fix help message for checkblockindex
+
+Marius Kjærstad (5):
+ Hardened checkpoint update at block 1860000 for mainnet
+ Update src/chainparams.cpp
+ Some more formatting changes to chainparams.cpp
+ Forgot to add 0x
+ Add some more historical checkpoints
+
+Mark Friedenbach (1):
+ Prevent block.nTime from decreasing
+
+Marshall Gaucher (4):
+ Update zcash-build-bench.yml
+ Update README.md
+ Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build.yml
+ Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build-test.yml
+
+Michał Janiszewski (1):
+ Update debian/compat to version 13
+
+Russell Yanofsky (2):
+ depends: Add CMake helper for building packages
+ depends: Set CMAKE_INSTALL_RPATH for native packages
+
+Suhas Daftuar (3):
+ Track transaction packages in CTxMemPoolEntry
+ Add test showing bug in mempool packages
+ Fix mempool package tracking edge case
+
+Wladimir J. van der Laan (1):
+ rpc: Write authcookie atomically
+
+Marshall Gaucher (2):
+ add basic tekton zcash env
+ update memory targets with heaptrack
+
diff --git a/src/clientversion.h b/src/clientversion.h
index 0ef3057ae..0bc2ea39f 100644
--- a/src/clientversion.h
+++ b/src/clientversion.h
@@ -18,7 +18,7 @@
#define CLIENT_VERSION_MAJOR 5
#define CLIENT_VERSION_MINOR 4
#define CLIENT_VERSION_REVISION 0
-#define CLIENT_VERSION_BUILD 26
+#define CLIENT_VERSION_BUILD 27
//! 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 49a51bf92..5fecefbed 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 = 1959200;
+static const int APPROX_RELEASE_HEIGHT = 1963600;
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.");