Merge #12075: [scripts] Add missing univalue file to copyright_header.py
[bitcoinplatinum.git] / doc / release-notes / release-notes-0.15.1.md
blob75d2e097142499137a07a65bd35c2a4b91d9cd33
1 Bitcoin Core version *0.15.1* is now available from:
3   <https://bitcoincore.org/bin/bitcoin-core-0.15.1/>
5 or
7   <https://bitcoin.org/bin/bitcoin-core-0.15.1/>
9 This is a new minor version release, including various bugfixes and
10 performance improvements, as well as updated translations.
12 Please report bugs using the issue tracker at GitHub:
14   <https://github.com/bitcoin/bitcoin/issues>
16 To receive security and update notifications, please subscribe to:
18   <https://bitcoincore.org/en/list/announcements/join/>
20 How to Upgrade
21 ==============
23 If you are running an older version, shut it down. Wait until it has completely
24 shut down (which might take a few minutes for older versions), then run the 
25 installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on Mac)
26 or `bitcoind`/`bitcoin-qt` (on Linux).
28 The first time you run version 0.15.0 or higher, your chainstate database will
29 be converted to a new format, which will take anywhere from a few minutes to
30 half an hour, depending on the speed of your machine.
32 The file format of `fee_estimates.dat` changed in version 0.15.0. Hence, a
33 downgrade from version 0.15 or upgrade to version 0.15 will cause all fee
34 estimates to be discarded.
36 Note that the block database format also changed in version 0.8.0 and there is no
37 automatic upgrade code from before version 0.8 to version 0.15.0. Upgrading
38 directly from 0.7.x and earlier without redownloading the blockchain is not supported.
39 However, as usual, old wallet versions are still supported.
41 Downgrading warning
42 -------------------
44 The chainstate database for this release is not compatible with previous
45 releases, so if you run 0.15 and then decide to switch back to any
46 older version, you will need to run the old release with the `-reindex-chainstate`
47 option to rebuild the chainstate data structures in the old format.
49 If your node has pruning enabled, this will entail re-downloading and
50 processing the entire blockchain.
52 Compatibility
53 ==============
55 Bitcoin Core is extensively tested on multiple operating systems using
56 the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
58 Bitcoin Core should also work on most other Unix-like systems but is not
59 frequently tested on them.
62 Notable changes
63 ===============
65 Network fork safety enhancements
66 --------------------------------
68 A number of changes to the way Bitcoin Core deals with peer connections and invalid blocks
69 have been made, as a safety precaution against blockchain forks and misbehaving peers.
71 - Unrequested blocks with less work than the minimum-chain-work are now no longer processed even
72 if they have more work than the tip (a potential issue during IBD where the tip may have low-work).
73 This prevents peers wasting the resources of a node. 
75 - Peers which provide a chain with less work than the minimum-chain-work during IBD will now be disconnected.
77 - For a given outbound peer, we now check whether their best known block has at least as much work as our tip. If it
78 doesn't, and if we still haven't heard about a block with sufficient work after a 20 minute timeout, then we send
79 a single getheaders message, and wait 2 more minutes. If after two minutes their best known block has insufficient
80 work, we disconnect that peer. We protect 4 of our outbound peers from being disconnected by this logic to prevent
81 excessive network topology changes as a result of this algorithm, while still ensuring that we have a reasonable
82 number of nodes not known to be on bogus chains.
84 - Outbound (non-manual) peers that serve us block headers that are already known to be invalid (other than compact
85 block announcements, because BIP 152 explicitly permits nodes to relay compact blocks before fully validating them)
86 will now be disconnected.
88 - If the chain tip has not been advanced for over 30 minutes, we now assume the tip may be stale and will try to connect
89 to an additional outbound peer. A periodic check ensures that if this extra peer connection is in use, we will disconnect
90 the peer that least recently announced a new block.
92 - The set of all known invalid-themselves blocks (i.e. blocks which we attempted to connect but which were found to be
93 invalid) are now tracked and used to check if new headers build on an invalid chain. This ensures that everything that
94 descends from an invalid block is marked as such.
97 Miner block size limiting deprecated
98 ------------------------------------
100 Though blockmaxweight has been preferred for limiting the size of blocks returned by
101 getblocktemplate since 0.13.0, blockmaxsize remained as an option for those who wished
102 to limit their block size directly. Using this option resulted in a few UI issues as
103 well as non-optimal fee selection and ever-so-slightly worse performance, and has thus
104 now been deprecated. Further, the blockmaxsize option is now used only to calculate an
105 implied blockmaxweight, instead of limiting block size directly. Any miners who wish
106 to limit their blocks by size, instead of by weight, will have to do so manually by
107 removing transactions from their block template directly.
110 GUI settings backed up on reset
111 -------------------------------
113 The GUI settings will now be written to `guisettings.ini.bak` in the data directory before wiping them when
114 the `-resetguisettings` argument is used. This can be used to retroactively troubleshoot issues due to the
115 GUI settings.
118 Duplicate wallets disallowed
119 ----------------------------
121 Previously, it was possible to open the same wallet twice by manually copying the wallet file, causing
122 issues when both were opened simultaneously. It is no longer possible to open copies of the same wallet.
125 Debug `-minimumchainwork` argument added
126 ----------------------------------------
128 A hidden debug argument `-minimumchainwork` has been added to allow a custom minimum work value to be used
129 when validating a chain.
132 Low-level RPC changes
133 ----------------------
135 - The "currentblocksize" value in getmininginfo has been removed.
137 - `dumpwallet` no longer allows overwriting files. This is a security measure
138   as well as prevents dangerous user mistakes.
140 - `backupwallet` will now fail when attempting to backup to source file, rather than
141   destroying the wallet.
143 - `listsinceblock` will now throw an error if an unknown `blockhash` argument
144   value is passed, instead of returning a list of all wallet transactions since
145   the genesis block. The behaviour is unchanged when an empty string is provided.
147 0.15.1 Change log
148 =================
150 ### Mining
151 - #11100 `7871a7d` Fix confusing blockmax{size,weight} options, dont default to throwing away money (TheBlueMatt)
153 ### RPC and other APIs
154 - #10859 `2a5d099` gettxout: Slightly improve doc and tests (jtimon)
155 - #11267 `b1a6c94` update cli for estimate\*fee argument rename (laanwj)
156 - #11483 `20cdc2b` Fix importmulti bug when importing an already imported key (pedrobranco)
157 - #9937 `a43be5b` Prevent `dumpwallet` from overwriting files (laanwj)
158 - #11465 `405e069` Update named args documentation for importprivkey (dusty-wil)
159 - #11131 `b278a43` Write authcookie atomically (laanwj)
160 - #11565 `7d4546f` Make listsinceblock refuse unknown block hash (ryanofsky)
161 - #11593 `8195cb0` Work-around an upstream libevent bug (theuni)
163 ### P2P protocol and network code
164 - #11397 `27e861a` Improve and document SOCKS code (laanwj)
165 - #11252 `0fe2a9a` When clearing addrman clear mapInfo and mapAddr (instagibbs)
166 - #11527 `a2bd86a` Remove my testnet DNS seed (schildbach)
167 - #10756 `0a5477c` net processing: swap out signals for an interface class (theuni)
168 - #11531 `55b7abf` Check that new headers are not a descendant of an invalid block (more effeciently) (TheBlueMatt)
169 - #11560 `49bf090` Connect to a new outbound peer if our tip is stale (sdaftuar)
170 - #11568 `fc966bb` Disconnect outbound peers on invalid chains (sdaftuar)
171 - #11578 `ec8dedf` Add missing lock in ProcessHeadersMessage(...) (practicalswift)
172 - #11456 `6f27965` Replace relevant services logic with a function suite (TheBlueMatt)
173 - #11490 `bf191a7` Disconnect from outbound peers with bad headers chains (sdaftuar)
175 ### Validation
176 - #10357 `da4908c` Allow setting nMinimumChainWork on command line (sdaftuar)
177 - #11458 `2df65ee` Don't process unrequested, low-work blocks (sdaftuar)
179 ### Build system
180 - #11440 `b6c0209` Fix validationinterface build on super old boost/clang (TheBlueMatt)
181 - #11530 `265bb21` Add share/rpcuser to dist. source code archive (MarcoFalke)
183 ### GUI
184 - #11334 `19d63e8` Remove custom fee radio group and remove nCustomFeeRadio setting (achow101)
185 - #11198 `7310f1f` Fix display of package name on 'open config file' tooltip (esotericnonsense)
186 - #11015 `6642558` Add delay before filtering transactions (lclc)
187 - #11338 `6a62c74` Backup former GUI settings on `-resetguisettings` (laanwj)
188 - #11335 `8d13b42` Replace save|restoreWindowGeometry with Qt functions (MeshCollider)
189 - #11237 `2e31b1d` Fixing division by zero in time remaining (MeshCollider)
190 - #11247 `47c02a8` Use IsMine to validate custom change address (MarcoFalke)
192 ### Wallet
193 - #11017 `9e8aae3` Close DB on error (kallewoof)
194 - #11225 `6b4d9f2` Update stored witness in AddToWallet (sdaftuar)
195 - #11126 `2cb720a` Acquire cs_main lock before cs_wallet during wallet initialization (ryanofsky)
196 - #11476 `9c8006d` Avoid opening copied wallet databases simultaneously (ryanofsky)
197 - #11492 `de7053f` Fix leak in CDB constructor (promag)
198 - #11376 `fd79ed6` Ensure backupwallet fails when attempting to backup to source file (tomasvdw)
199 - #11326 `d570aa4` Fix crash on shutdown with invalid wallet (MeshCollider)
201 ### Tests and QA
202 - #11399 `a825d4a` Fix bip68-sequence rpc test (jl2012)
203 - #11150 `847c75e` Add getmininginfo test (mess110)
204 - #11407 `806c78f` add functional test for mempoolreplacement command line arg (instagibbs)
205 - #11433 `e169349` Restore bitcoin-util-test py2 compatibility (MarcoFalke)
206 - #11308 `2e1ac70` zapwallettxes: Wait up to 3s for mempool reload (MarcoFalke)
207 - #10798 `716066d` test bitcoin-cli (jnewbery)
208 - #11443 `019c492` Allow "make cov" out-of-tree; Fix rpc mapping check (MarcoFalke)
209 - #11445 `51bad91` 0.15.1 Backports (MarcoFalke)
210 - #11319 `2f0b30a` Fix error introduced into p2p-segwit.py, and prevent future similar errors (sdaftuar)
211 - #10552 `e4605d9` Tests for zmqpubrawtx and zmqpubrawblock (achow101)
212 - #11067 `eeb24a3` TestNode: Add wait_until_stopped helper method (MarcoFalke)
213 - #11068 `5398f20` Move wait_until to util (MarcoFalke)
214 - #11125 `812c870` Add bitcoin-cli -stdin and -stdinrpcpass functional tests (promag)
215 - #11077 `1d80d1e` fix timeout issues from TestNode (jnewbery)
216 - #11078 `f1ced0d` Make p2p-leaktests.py more robust (jnewbery)
217 - #11210 `f3f7891` Stop test_bitcoin-qt touching ~/.bitcoin (MeshCollider)
218 - #11234 `f0b6795` Remove redundant testutil.cpp|h files (MeshCollider)
219 - #11215 `cef0319` fixups from set_test_params() (jnewbery)
220 - #11345 `f9cf7b5` Check connectivity before sending in assumevalid.py (jnewbery)
221 - #11091 `c276c1e` Increase initial RPC timeout to 60 seconds (laanwj)
222 - #10711 `fc2aa09` Introduce TestNode (jnewbery)
223 - #11230 `d8dd8e7` Fixup dbcrash interaction with add_nodes() (jnewbery)
224 - #11241 `4424176` Improve signmessages functional test (mess110)
225 - #11116 `2c4ff35` Unit tests for script/standard and IsMine functions (jimpo)
226 - #11422 `a36f332` Verify DBWrapper iterators are taking snapshots (TheBlueMatt)
227 - #11121 `bb5e7cb` TestNode tidyups (jnewbery)
228 - #11521 `ca0f3f7` travis: move back to the minimal image (theuni)
229 - #11538 `adbc9d1` Fix race condition failures in replace-by-fee.py, sendheaders.py (sdaftuar)
230 - #11472 `4108879` Make tmpdir option an absolute path, misc cleanup (MarcoFalke)
231 - #10853 `5b728c8` Fix RPC failure testing (again) (jnewbery)
232 - #11310 `b6468d3` Test listwallets RPC (mess110)
234 ### Miscellaneous
235 - #11377 `75997c3` Disallow uncompressed pubkeys in bitcoin-tx [multisig] output adds (TheBlueMatt)
236 - #11437 `dea3b87` [Docs] Update Windows build instructions for using WSL and Ubuntu 17.04 (fanquake)
237 - #11318 `8b61aee` Put back inadvertently removed copyright notices (gmaxwell)
238 - #11442 `cf18f42` [Docs] Update OpenBSD Build Instructions for OpenBSD 6.2 (fanquake)
239 - #10957 `50bd3f6` Avoid returning a BIP9Stats object with uninitialized values (practicalswift)
240 - #11539 `01223a0` [verify-commits] Allow revoked keys to expire (TheBlueMatt)
243 Credits
244 =======
246 Thanks to everyone who directly contributed to this release:
248 - Andreas Schildbach
249 - Andrew Chow
250 - Chris Moore
251 - Cory Fields
252 - Cristian Mircea Messel
253 - Daniel Edgecumbe
254 - Donal OConnor
255 - Dusty Williams
256 - fanquake
257 - Gregory Sanders
258 - Jim Posen
259 - John Newbery
260 - Johnson Lau
261 - João Barbosa
262 - Jorge Timón
263 - Karl-Johan Alm
264 - Lucas Betschart
265 - MarcoFalke
266 - Matt Corallo
267 - Paul Berg
268 - Pedro Branco
269 - Pieter Wuille
270 - practicalswift
271 - Russell Yanofsky
272 - Samuel Dobson
273 - Suhas Daftuar
274 - Tomas van der Wansem
275 - Wladimir J. van der Laan
277 As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).