diff --git a/doc/release-notes.md b/doc/release-notes.md
index db0d3ddd3f7176..d17e8f9d563e33 100644
--- a/doc/release-notes.md
+++ b/doc/release-notes.md
@@ -1,20 +1,20 @@
26.1rc1 Release Notes
==================
-Bitcoin Core version 26.1rc1 is now available from:
+Bitcoin Knots version 26.1.knots20240304 is now available from:
-
+
This release includes new features, various bug fixes and performance
improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub:
-
+
To receive security and update notifications, please subscribe to:
-
+
How to Upgrade
==============
@@ -24,71 +24,332 @@ shut down (which might take a few minutes in some cases), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS)
or `bitcoind`/`bitcoin-qt` (on Linux).
-Upgrading directly from a version of Bitcoin Core that has reached its EOL is
+Upgrading directly from very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
-wallet versions of Bitcoin Core are generally supported.
+wallet versions of Bitcoin Knots are generally supported.
Compatibility
==============
-Bitcoin Core is supported and extensively tested on operating systems
-using the Linux kernel, macOS 11.0+, and Windows 7 and newer. Bitcoin
-Core should also work on most other Unix-like systems but is not as
-frequently tested on them. It is not recommended to use Bitcoin Core on
-unsupported systems.
+Bitcoin Knots is supported on operating systems using the Linux kernel,
+macOS 11.0+, and Windows 7 and newer. It is not recommended to use
+Bitcoin Knots on unsupported systems.
+
+Known Bugs
+==========
+
+In various locations, including the GUI's transaction details dialog, transaction
+virtual sizes may not account for an unusually high number of sigops (ie, as
+determined by the `-bytespersigop` policy). This could result in reporting a
+lower virtual size than is actually used for mempool or mining purposes.
+
+In the interest of time, this release does not include updated translations.
+Please open an issue on GitHub if this is of particular importance to you or
+anyone you know. If nobody expresses interest in localization, it may continue
+to be skipped going forward.
Notable changes
===============
-### Wallet
+P2P and network changes
+-----------------------
+
+- Support for the v2 transport protocol defined in
+ [BIP324](https://github.com/bitcoin/bips/blob/master/bip-0324.mediawiki) was added.
+ It is on by default and will be negotiated on a per-connection basis with other peers
+ that support it, but can be disabled using `-v2transport=0` if desired. The existing
+ v1 transport protocol remains fully supported. (#28331)
+
+- Nodes with multiple reachable networks will actively try to have at least one
+ outbound connection to each network. This improves individual resistance to
+ eclipse attacks and network level resistance to partition attacks. Users no
+ longer need to perform active measures to ensure being connected to multiple
+ enabled networks. (#27213)
+
+- Support for I2P sessions encrypted using the newer and faster ECIES-X25519
+ algorithm has been added. (#29200)
+
+
+Pruning
+-------
+
+- When using assumeutxo with `-prune`, the prune budget may be exceeded if it is set
+ lower than 1100MB (i.e. `MIN_DISK_SPACE_FOR_BLOCK_FILES * 2`). Prune budget is normally
+ split evenly across each chainstate, unless the resulting prune budget per chainstate
+ is beneath `MIN_DISK_SPACE_FOR_BLOCK_FILES` in which case that value will be used. (#27596)
+
+Updated RPCs
+------------
+
+- The `maxfeerate` option for `sendrawtransaction` and `testmempoolaccept` is
+ now limited to below 100000 sats/vB to avoid overflow bugs. (#29434)
+
+- Setting `-rpcserialversion=0` is deprecated and will be removed in
+ a future release. It can currently still be used by also adding
+ the `-deprecatedrpc=serialversion` option. (#28448)
+
+- The `hash_serialized_2` value has been removed from `gettxoutsetinfo` since the value it
+ calculated contained a bug and did not take all data into account. It is superseded by
+ `hash_serialized_3` which provides the same functionality but serves the correctly calculated hash. (#28685)
+
+- For RPC methods which accept `options` parameters (`importmulti`, `listunspent`,
+ `fundrawtransaction`, `bumpfee`, `scanblocks`, `send`, `sendall`, `walletcreatefundedpsbt`,
+ `simulaterawtransaction`), it is now possible to pass the options as named
+ parameters without the need for a nested object. (#26485)
+
+This means it is possible make calls like:
+
+```sh
+src/bitcoin-cli -named bumpfee txid fee_rate=100
+```
+
+instead of
+
+```sh
+src/bitcoin-cli -named bumpfee txid options='{"fee_rate": 100}'
+```
+
+- New fields `transport_protocol_type` and `session_id` were added to the `getpeerinfo` RPC to indicate
+ whether the v2 transport protocol is in use, and if so, what the session id is. (#28331)
+
+- A new argument `v2transport` was added to the `addnode` RPC to indicate whether a v2 transaction connection
+ is to be attempted with the peer. This breaks compatibility with the old
+ `privileged` parameter used with Bitcoin Knots v0.16.0.knots20180322 through
+ v0.20.1.knots20200815. If you were relying on this deprecated parameter, you
+ can maintain the previous behaviour by specifying "outbound-full-relay" to
+ the "connection_type" parameter. (#28331)
+
+- [Miniscript](https://bitcoin.sipa.be/miniscript/) expressions can now be used in Taproot descriptors for all RPCs working with descriptors. (#27255)
+
+- `finalizepsbt` is now able to finalize a PSBT with inputs spending [Miniscript](https://bitcoin.sipa.be/miniscript/)-compatible Taproot leaves. (#27255)
+
+- The result from `getpeerinfo` now includes "misbehavior_score". This number
+ is increased (by varying amounts) when a peer doesn't follow the protocol
+ correctly, and when it reaches 100, the peer is disconnected. It is mostly
+ only useful for testing purposes. (#29530)
+
+Changes to wallet related RPCs can be found in the Wallet section below.
+
+New RPCs
+--------
+
+- `loadtxoutset` has been added, which allows loading a UTXO snapshot of the format
+ generated by `dumptxoutset`. Once this snapshot is loaded, its contents will be
+ deserialized into a second chainstate data structure, which is then used to sync to
+ the network's tip.
+
+ Meanwhile, the original chainstate will complete the initial block download process in
+ the background, eventually validating up to the block that the snapshot is based upon.
+
+ The result is a usable bitcoind instance that is current with the network tip in a
+ matter of minutes rather than hours. However, until the full background sync completes,
+ the node and any wallets using it remain insecure and should not be trusted or relied
+ on for confirmation of payment. (#27596)
+
+ You can find more information on this process in the `assumeutxo` design
+ document ().
+
+ `getchainstates` has been added to aid in monitoring the assumeutxo sync process.
+
+- A new RPC, `submitpackage`, has been added. It can be used to submit a list of raw hex
+transactions to the mempool to be evaluated as a package using consensus and mempool policy rules.
+These policies include package CPFP, allowing a child with high fees to bump a parent below the
+mempool minimum feerate (but not minimum relay feerate). (#27609)
+
+ - Warning: successful submission does not mean the transactions will propagate throughout the
+ network, as package relay is not supported.
+
+ - Not all features are available. The package is limited to a child with all of its
+ unconfirmed parents, and no parent may spend the output of another parent. Also, package
+ RBF is not supported. Refer to doc/policy/packages.md for more details on package policies
+ and limitations.
+
+ - This RPC is experimental. Its interface may change.
+
+- A new `importmempool` RPC has been added. It loads a valid `mempool.dat` file and attempts to
+ add its contents to the mempool. This can be useful to import mempool data from another node
+ without having to modify the datadir contents and without having to restart the node. (#27460)
+ - Warning: Importing untrusted files is dangerous, especially if metadata from the file is taken over.
+ - Since coin-age priority deltas are stored in a separate `mempool-knots.dat` file, it is not supported by this new `importmempool` method.
+ - If you want to apply priority deltas, it is recommended to use the `getprioritisedtransactions` and
+ `prioritisetransaction` RPCs instead. This supports both coin-age priority and fee deltas.
+
+- `listmempooltransactions` has been added to efficiently monitor transactions
+ as they are added to the node's mempool, using sequence numbers. (#29016)
+
+Updated settings
+----------------
+
+- Passing an invalid `-debug`, `-debugexclude`, or `-loglevel` logging configuration
+ option now raises an error, rather than logging an easily missed warning. (#27632)
+
+Changes to GUI or wallet related settings can be found in the GUI or Wallet section below.
+
+New settings
+------------
+
+- Spam is sometimes disguised to appear as if it is a deprecated pay-to-IP
+ (bare pubkey) transaction, where the "key" is actually arbitrary data (not a
+ real key) instead. Due to the nature of this spam, it pollutes not only the
+ blockchain, but also permanently bloats the "UTXO set" all nodes must retain
+ (it cannot be pruned). Real pay-to-IP was only ever supported by Satoshi's
+ early Bitcoin wallet, which has been abandoned since 2011. This version of
+ Bitcoin Knots filters out this kind of spam by default. A new setting,
+ `-permitbarepubkey` (also available in the GUI), is available for users who
+ desire to relay these. (#29309)
+
+Tools and Utilities
+-------------------
+
+- A new `bitcoinconsensus_verify_script_with_spent_outputs` function is available in libconsensus which optionally accepts the spent outputs of the transaction being verified. (#28539)
+- A new `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_TAPROOT` flag is available in libconsensus that will verify scripts with the Taproot spending rules. (#28539)
+- `bitcoin-tx`'s `replacable` option is now optional. If omitted, inputs will be created opting into Replace-By-Fee. (#29022)
+
+Wallet
+------
+
+- Wallet loading has changed in this release. Wallets with some corrupted records that could be
+ previously loaded (with warnings) may no longer load. For example, wallets with corrupted
+ address book entries may no longer load. If this happens, it is recommended
+ load the wallet in a previous version of Bitcoin Core and import the data into a new wallet.
+ Please also report an issue to help improve the software and make wallet loading more robust
+ in these cases. (#24914)
-- #28994 wallet: skip BnB when SFFO is enabled
-- #28920 wallet: birth time update during tx scanning
-- #29176 wallet: Fix use-after-free in WalletBatch::EraseRecords
+- The `gettransaction`, `listtransactions`, `listsinceblock` RPCs now return
+ the `abandoned` field for all transactions. Previously, the "abandoned" field
+ was only returned for sent transactions. (#25158)
-### RPC
+- The `listdescriptors`, `decodepsbt` and similar RPC methods now show `h` rather than apostrophe (`'`) to indicate
+ hardened derivation. This does not apply when using the `private` parameter, which
+ matches the marker used when descriptor was generated or imported. Newly created
+ wallets use `h`. This change makes it easier to handle descriptor strings manually.
+ E.g. the `importdescriptors` RPC call is easiest to use `h` as the marker: `'["desc": ".../0h/..."]'`.
+ With this change `listdescriptors` will use `h`, so you can copy-paste the result,
+ without having to add escape characters or switch `'` to 'h' manually.
+ Note that this changes the descriptor checksum.
+ For legacy wallets the `hdkeypath` field in `getaddressinfo` is unchanged,
+ nor is the serialization format of wallet dumps. (#26076)
-- #29003 rpc: fix getrawtransaction segfault
+- Coin selection and transaction building now accounts for unconfirmed low-feerate ancestor transactions. When it is necessary to spend unconfirmed outputs, the wallet will add fees to ensure that the new transaction with its ancestors will achieve a mining score equal to the feerate requested by the user. (#26152)
-### Logs
+- The `deprecatedrpc=walletwarningfield` configuration option has been removed.
+ The `createwallet`, `loadwallet`, `restorewallet` and `unloadwallet` RPCs no
+ longer return the "warning" string field. The same information is provided
+ through the "warnings" field added in v25.0, which returns a JSON array of
+ strings. The "warning" string field was deprecated also in v25.0. (#27757)
-- #29227 log mempool loading progress
+- The `signrawtransactionwithkey`, `signrawtransactionwithwallet`,
+ `walletprocesspsbt` and `descriptorprocesspsbt` calls now return the more
+ specific RPC_INVALID_PARAMETER error instead of RPC_MISC_ERROR if their
+ sighashtype argument is malformed. (#28113)
-### P2P and network changes
+- It's now possible to use [Miniscript](https://bitcoin.sipa.be/miniscript/) inside Taproot leaves for descriptor wallets. (#27255)
-- #29200 net: create I2P sessions using both ECIES-X25519 and ElGamal encryption
+- If `send` or `sendall` methods are used with the `locktime` parameter is
+ omitted, the wallet will automatically populate it with an appropriate value
+ to deter fee sniping. (#28944)
-### Build
+GUI changes
+-----------
-- #29127 Use hardened runtime on macOS release builds.
-- #29195 build: Fix -Xclang -internal-isystem option
+- A new menu option allows migrating a legacy wallet based on keys and implied output script types stored in BerkeleyDB (BDB) to a modern wallet that uses descriptors stored in SQLite. (gui#738)
-### CI
+- The PSBT operations dialog marks outputs paying your own wallet with "own address". (gui#740)
-- #28992 ci: Use Ubuntu 24.04 Noble for asan,tsan,tidy,fuzz
-- #29080 ci: Set HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK to avoid unrelated failures
+Low-level changes
+=================
-### Miscellaneous
+Tests
+-----
-- #28391 refactor: Simplify CTxMempool/BlockAssembler fields, remove some external mapTx access
-- #29179 test: wallet rescan with reorged parent + IsFromMe child in mempool
-- #28791 snapshots: don't core dump when running -checkblockindex after loadtxoutset
+- Non-standard transactions are now disabled by default on testnet
+ for relay and mempool acceptance. The previous behaviour can be
+ re-enabled by setting `-acceptnonstdtxn=1`. (#28354)
Credits
=======
Thanks to everyone who directly contributed to this release:
+- 0xb10c
+- Amiti Uttarwar
+- Andrew Toth
+- Anthony Towns
+- Antoine Poinsot
+- Antoine Riard
+- Ari
+- Aurèle Oulès
+- Ava Chow
+- Ayush Singh
+- Ben Woosley
+- Brandon Odiwuor
+- Brotcrunsher
+- brunoerg
+- Bufo
+- Carl Dong
+- Casey Carter
+- Cory Fields
+- David Álvarez Rosa
+- dergoegge
+- dhruv
+- dimitaracev
+- Erik Arvstedt
+- Erik McKelvey
+- Fabian Jahr
- fanquake
- furszy
- glozow
+- Greg Sanders
+- Harris
- Hennadii Stepanov
+- Hernan Marino
+- ishaanam
+- ismaelsadeeq
+- Jake Rawsthorne
+- James O'Beirne
+- John Moffett
- Jon Atack
+- josibake
+- Kashif Smith
+- kevkevin
+- Kiminuo
+- Larry Ruane
+- Luke Dashjr
+- marco
- MarcoFalke
- Mark Friedenbach
+- Marnix
+- Martin Leitner-Ankerl
- Martin Zumsande
+- Matthew Zipkin
+- Michael Ford
+- Michael Tidwell
+- mruddy
- Murch
+- niftynei
+- ns-xvrn
+- pablomartin4btc
+- Peter Todd
+- Pieter Wuille
+- Reese Russell
+- Rhythm Garg
+- Ryan Ofsky
+- Sebastian Falbesoner
+- Sjors Provoost
- stickies-v
+- stratospher
+- Suhas Daftuar
+- TheCharlatan
+- Tim Neubauer
+- Tim Ruffing
+- Torkel Rogstad
+- Vasil Dimov
+- virtu
+- Vojtěch Strnad
+- vuittont60
+- willcl-ark
+- Yusuf Sahin HAMZA
+- zzzi2p
As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).