release-notes-27.0.md
1 Bitcoin Core version 27.0 is now available from: 2 3 <https://bitcoincore.org/bin/bitcoin-core-27.0/> 4 5 This release includes new features, various bug fixes and performance 6 improvements, as well as updated translations. 7 8 Please report bugs using the issue tracker at GitHub: 9 10 <https://github.com/bitcoin/bitcoin/issues> 11 12 To receive security and update notifications, please subscribe to: 13 14 <https://bitcoincore.org/en/list/announcements/join/> 15 16 How to Upgrade 17 ============== 18 19 If you are running an older version, shut it down. Wait until it has completely 20 shut down (which might take a few minutes in some cases), then run the 21 installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS) 22 or `bitcoind`/`bitcoin-qt` (on Linux). 23 24 Upgrading directly from a version of Bitcoin Core that has reached its EOL is 25 possible, but it might take some time if the data directory needs to be migrated. Old 26 wallet versions of Bitcoin Core are generally supported. 27 28 Compatibility 29 ============== 30 31 Bitcoin Core is supported and extensively tested on operating systems 32 using the Linux Kernel 3.17+, macOS 11.0+, and Windows 7 and newer. Bitcoin 33 Core should also work on most other Unix-like systems but is not as 34 frequently tested on them. It is not recommended to use Bitcoin Core on 35 unsupported systems. 36 37 Notable changes 38 =============== 39 40 libbitcoinconsensus 41 ------------------- 42 43 - libbitcoinconsensus is deprecated and will be removed for v28. This library has 44 existed for nearly 10 years with very little known uptake or impact. It has 45 become a maintenance burden. 46 47 The underlying functionality does not change between versions, so any users of 48 the library can continue to use the final release indefinitely, with the 49 understanding that Taproot is its final consensus update. 50 51 In the future, libbitcoinkernel will provide a much more useful API that is 52 aware of the UTXO set, and therefore be able to fully validate transactions and 53 blocks. (#29189) 54 55 mempool.dat compatibility 56 ------------------------- 57 58 - The `mempool.dat` file created by -persistmempool or the savemempool RPC will 59 be written in a new format. This new format includes the XOR'ing of transaction 60 contents to mitigate issues where external programs (such as anti-virus) attempt 61 to interpret and potentially modify the file. 62 63 This new format can not be read by previous software releases. To allow for a 64 downgrade, a temporary setting `-persistmempoolv1` has been added to fall back 65 to the legacy format. (#28207) 66 67 P2P and network changes 68 ----------------------- 69 70 - BIP324 v2 transport is now enabled by default. It remains possible to disable v2 71 by running with `-v2transport=0`. (#29347) 72 - Manual connection options (`-connect`, `-addnode` and `-seednode`) will 73 now follow `-v2transport` to connect with v2 by default. They will retry with 74 v1 on failure. (#29058) 75 76 - Network-adjusted time has been removed from consensus code. It is replaced 77 with (unadjusted) system time. The warning for a large median time offset 78 (70 minutes or more) is kept. This removes the implicit security assumption of 79 requiring an honest majority of outbound peers, and increases the importance 80 of the node operator ensuring their system time is (and stays) correct to not 81 fall out of consensus with the network. (#28956) 82 83 Mempool Policy Changes 84 ---------------------- 85 86 - Opt-in Topologically Restricted Until Confirmation (TRUC) Transactions policy 87 (aka v3 transaction policy) is available for use on test networks when 88 `-acceptnonstdtxn=1` is set. By setting the transaction version number to 3, TRUC transactions 89 request the application of limits on spending of their unconfirmed outputs. These 90 restrictions simplify the assessment of incentive compatibility of accepting or 91 replacing TRUC transactions, thus ensuring any replacements are more profitable for 92 the node and making fee-bumping more reliable. TRUC transactions are currently 93 nonstandard and can only be used on test networks where the standardness rules are 94 relaxed or disabled (e.g. with `-acceptnonstdtxn=1`). (#28948) 95 96 External Signing 97 ---------------- 98 99 - Support for external signing on Windows has been disabled. It will be re-enabled 100 once the underlying dependency (Boost Process), has been replaced with a different 101 library. (#28967) 102 103 Updated RPCs 104 ------------ 105 106 - The addnode RPC now follows the `-v2transport` option (now on by default, see above) for making connections. 107 It remains possible to specify the transport type manually with the v2transport argument of addnode. (#29239) 108 109 Build System 110 ------------ 111 112 - A C++20 capable compiler is now required to build Bitcoin Core. (#28349) 113 - MacOS releases are configured to use the hardened runtime libraries (#29127) 114 115 Wallet 116 ------ 117 118 - The CoinGrinder coin selection algorithm has been introduced to mitigate unnecessary 119 large input sets and lower transaction costs at high feerates. CoinGrinder 120 searches for the input set with minimal weight. Solutions found by 121 CoinGrinder will produce a change output. CoinGrinder is only active at 122 elevated feerates (default: 30+ sat/vB, based on `-consolidatefeerate`×3). (#27877) 123 - The Branch And Bound coin selection algorithm will be disabled when the subtract fee 124 from outputs feature is used. (#28994) 125 - If the birth time of a descriptor is detected to be later than the first transaction 126 involving that descriptor, the birth time will be reset to the earlier time. (#28920) 127 128 Low-level changes 129 ================= 130 131 Pruning 132 ------- 133 134 - When pruning during initial block download, more blocks will be pruned at each 135 flush in order to speed up the syncing of such nodes. (#20827) 136 137 Init 138 ---- 139 140 - Various fixes to prevent issues where subsequent instances of Bitcoin Core would 141 result in deletion of files in use by an existing instance. (#28784, #28946) 142 - Improved handling of empty `settings.json` files. (#29144) 143 144 Credits 145 ======= 146 147 Thanks to everyone who directly contributed to this release: 148 149 - 22388o⚡️ 150 - Aaron Clauson 151 - Amiti Uttarwar 152 - Andrew Toth 153 - Anthony Towns 154 - Antoine Poinsot 155 - Ava Chow 156 - Brandon Odiwuor 157 - brunoerg 158 - Chris Stewart 159 - Cory Fields 160 - dergoegge 161 - djschnei21 162 - Fabian Jahr 163 - fanquake 164 - furszy 165 - Gloria Zhao 166 - Greg Sanders 167 - Hennadii Stepanov 168 - Hernan Marino 169 - iamcarlos94 170 - ismaelsadeeq 171 - Jameson Lopp 172 - Jesse Barton 173 - John Moffett 174 - Jon Atack 175 - josibake 176 - jrakibi 177 - Justin Dhillon 178 - Kashif Smith 179 - kevkevin 180 - Kristaps Kaupe 181 - L0la L33tz 182 - Luke Dashjr 183 - Lőrinc 184 - marco 185 - MarcoFalke 186 - Mark Friedenbach 187 - Marnix 188 - Martin Leitner-Ankerl 189 - Martin Zumsande 190 - Max Edwards 191 - Murch 192 - muxator 193 - naiyoma 194 - Nikodemas Tuckus 195 - ns-xvrn 196 - pablomartin4btc 197 - Peter Todd 198 - Pieter Wuille 199 - Richard Myers 200 - Roman Zeyde 201 - Russell Yanofsky 202 - Ryan Ofsky 203 - Sebastian Falbesoner 204 - Sergi Delgado Segura 205 - Sjors Provoost 206 - stickies-v 207 - stratospher 208 - Supachai Kheawjuy 209 - TheCharlatan 210 - UdjinM6 211 - Vasil Dimov 212 - w0xlt 213 - willcl-ark 214 215 216 As well as to everyone that helped with translations on 217 [Transifex](https://www.transifex.com/bitcoin/bitcoin/).