/ doc / release-notes / release-notes-0.13.1.md
release-notes-0.13.1.md
  1  Bitcoin Core version 0.13.1 is now available from:
  2  
  3    <https://bitcoin.org/bin/bitcoin-core-0.13.1/>
  4  
  5  This is a new minor version release, including activation parameters for the
  6  segwit softfork, various bugfixes and performance improvements, as well as
  7  updated translations.
  8  
  9  Please report bugs using the issue tracker at github:
 10  
 11    <https://github.com/bitcoin/bitcoin/issues>
 12  
 13  To receive security and update notifications, please subscribe to:
 14  
 15    <https://bitcoincore.org/en/list/announcements/join/>
 16  
 17  Compatibility
 18  ==============
 19  
 20  Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
 21  an OS initially released in 2001. This means that not even critical security
 22  updates will be released anymore. Without security updates, using a bitcoin
 23  wallet on a XP machine is irresponsible at least.
 24  
 25  In addition to that, with 0.12.x there have been varied reports of Bitcoin Core
 26  randomly crashing on Windows XP. It is [not clear](https://github.com/bitcoin/bitcoin/issues/7681#issuecomment-217439891)
 27  what the source of these crashes is, but it is likely that upstream
 28  libraries such as Qt are no longer being tested on XP.
 29  
 30  We do not have time nor resources to provide support for an OS that is
 31  end-of-life. From 0.13.0 on, Windows XP is no longer supported. Users are
 32  suggested to upgrade to a newer version of Windows, or install an alternative OS
 33  that is supported.
 34  
 35  No attempt is made to prevent installing or running the software on Windows XP,
 36  you can still do so at your own risk, but do not expect it to work: do not
 37  report issues about Windows XP to the issue tracker.
 38  
 39  From 0.13.1 onwards OS X 10.7 is no longer supported. 0.13.0 was intended to work on 10.7+, 
 40  but severe issues with the libc++ version on 10.7.x keep it from running reliably. 
 41  0.13.1 now requires 10.8+, and will communicate that to 10.7 users, rather than crashing unexpectedly.
 42  
 43  Notable changes
 44  ===============
 45  
 46  Segregated witness soft fork
 47  ----------------------------
 48  
 49  Segregated witness (segwit) is a soft fork that, if activated, will
 50  allow transaction-producing software to separate (segregate) transaction
 51  signatures (witnesses) from the part of the data in a transaction that is
 52  covered by the txid. This provides several immediate benefits:
 53  
 54  - **Elimination of unwanted transaction malleability:** Segregating the witness
 55    allows both existing and upgraded software to calculate the transaction
 56    identifier (txid) of transactions without referencing the witness, which can
 57    sometimes be changed by third-parties (such as miners) or by co-signers in a
 58    multisig spend. This solves all known cases of unwanted transaction
 59    malleability, which is a problem that makes programming Bitcoin wallet
 60    software more difficult and which seriously complicates the design of smart
 61    contracts for Bitcoin.
 62  
 63  - **Capacity increase:** Segwit transactions contain new fields that are not
 64    part of the data currently used to calculate the size of a block, which
 65    allows a block containing segwit transactions to hold more data than allowed
 66    by the current maximum block size. Estimates based on the transactions
 67    currently found in blocks indicate that if all wallets switch to using
 68    segwit, the network will be able to support about 70% more transactions. The
 69    network will also be able to support more of the advanced-style payments
 70    (such as multisig) than it can support now because of the different weighting
 71    given to different parts of a transaction after segwit activates (see the
 72    following section for details).
 73  
 74  - **Weighting data based on how it affects node performance:** Some parts of
 75    each Bitcoin block need to be stored by nodes in order to validate future
 76    blocks; other parts of a block can be immediately forgotten (pruned) or used
 77    only for helping other nodes sync their copy of the block chain.  One large
 78    part of the immediately prunable data are transaction signatures (witnesses),
 79    and segwit makes it possible to give a different "weight" to segregated
 80    witnesses to correspond with the lower demands they place on node resources.
 81    Specifically, each byte of a segregated witness is given a weight of 1, each
 82    other byte in a block is given a weight of 4, and the maximum allowed weight
 83    of a block is 4 million.  Weighting the data this way better aligns the most
 84    profitable strategy for creating blocks with the long-term costs of block
 85    validation.
 86  
 87  - **Signature covers value:** A simple improvement in the way signatures are
 88    generated in segwit simplifies the design of secure signature generators
 89    (such as hardware wallets), reduces the amount of data the signature
 90    generator needs to download, and allows the signature generator to operate
 91    more quickly.  This is made possible by having the generator sign the amount
 92    of bitcoins they think they are spending, and by having full nodes refuse to
 93    accept those signatures unless the amount of bitcoins being spent is exactly
 94    the same as was signed.  For non-segwit transactions, wallets instead had to
 95    download the complete previous transactions being spent for every payment
 96    they made, which could be a slow operation on hardware wallets and in other
 97    situations where bandwidth or computation speed was constrained.
 98  
 99  - **Linear scaling of sighash operations:** In 2015 a block was produced that
100    required about 25 seconds to validate on modern hardware because of the way
101    transaction signature hashes are performed.  Other similar blocks, or blocks
102    that could take even longer to validate, can still be produced today.  The
103    problem that caused this can't be fixed in a soft fork without unwanted
104    side-effects, but transactions that opt-in to using segwit will now use a
105    different signature method that doesn't suffer from this problem and doesn't
106    have any unwanted side-effects.
107  
108  - **Increased security for multisig:** Bitcoin addresses (both P2PKH addresses
109    that start with a '1' and P2SH addresses that start with a '3') use a hash
110    function known as RIPEMD-160.  For P2PKH addresses, this provides about 160
111    bits of security---which is beyond what cryptographers believe can be broken
112    today.  But because P2SH is more flexible, only about 80 bits of security is
113    provided per address. Although 80 bits is very strong security, it is within
114    the realm of possibility that it can be broken by a powerful adversary.
115    Segwit allows advanced transactions to use the SHA256 hash function instead,
116    which provides about 128 bits of security  (that is 281 trillion times as
117    much security as 80 bits and is equivalent to the maximum bits of security
118    believed to be provided by Bitcoin's choice of parameters for its Elliptic
119    Curve Digital Security Algorithm [ECDSA].)
120  
121  - **More efficient almost-full-node security** Satoshi Nakamoto's original
122    Bitcoin paper describes a method for allowing newly-started full nodes to
123    skip downloading and validating some data from historic blocks that are
124    protected by large amounts of proof of work.  Unfortunately, Nakamoto's
125    method can't guarantee that a newly-started node using this method will
126    produce an accurate copy of Bitcoin's current ledger (called the UTXO set),
127    making the node vulnerable to falling out of consensus with other nodes.
128    Although the problems with Nakamoto's method can't be fixed in a soft fork,
129    Segwit accomplishes something similar to his original proposal: it makes it
130    possible for a node to optionally skip downloading some blockchain data
131    (specifically, the segregated witnesses) while still ensuring that the node
132    can build an accurate copy of the UTXO set for the block chain with the most
133    proof of work.  Segwit enables this capability at the consensus layer, but
134    note that Bitcoin Core does not provide an option to use this capability as
135    of this 0.13.1 release.
136  
137  - **Script versioning:** Segwit makes it easy for future soft forks to allow
138    Bitcoin users to individually opt-in to almost any change in the Bitcoin
139    Script language when those users receive new transactions.  Features
140    currently being researched by Bitcoin Core contributors that may use this
141    capability include support for Schnorr signatures, which can improve the
142    privacy and efficiency of multisig transactions (or transactions with
143    multiple inputs), and Merklized Abstract Syntax Trees (MAST), which can
144    improve the privacy and efficiency of scripts with two or more conditions.
145    Other Bitcoin community members are studying several other improvements
146    that can be made using script versioning.
147  
148  Activation for the segwit soft fork is being managed using BIP9
149  versionbits.  Segwit's version bit is bit 1, and nodes will begin
150  tracking which blocks signal support for segwit at the beginning of the
151  first retarget period after segwit's start date of 15 November 2016.  If
152  95% of blocks within a 2,016-block retarget period (about two weeks)
153  signal support for segwit, the soft fork will be locked in.  After
154  another 2,016 blocks, segwit will activate.
155  
156  For more information about segwit, please see the [segwit FAQ][], the
157  [segwit wallet developers guide][] or BIPs [141][BIP141], [143][BIP143],
158  [144][BIP144], and [145][BIP145].  If you're a miner or mining pool
159  operator, please see the [versionbits FAQ][] for information about
160  signaling support for a soft fork.
161  
162  [Segwit FAQ]: https://bitcoincore.org/en/2016/01/26/segwit-benefits/
163  [segwit wallet developers guide]: https://bitcoincore.org/en/segwit_wallet_dev/
164  [BIP141]: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
165  [BIP143]: https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
166  [BIP144]: https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki
167  [BIP145]: https://github.com/bitcoin/bips/blob/master/bip-0145.mediawiki
168  [versionbits FAQ]: https://bitcoincore.org/en/2016/06/08/version-bits-miners-faq/
169  
170  
171  Null dummy soft fork
172  -------------------
173  
174  Combined with the segwit soft fork is an additional change that turns a
175  long-existing network relay policy into a consensus rule. The
176  `OP_CHECKMULTISIG` and `OP_CHECKMULTISIGVERIFY` opcodes consume an extra
177  stack element ("dummy element") after signature validation. The dummy
178  element is not inspected in any manner, and could be replaced by any
179  value without invalidating the script.
180  
181  Because any value can be used for this dummy element, it's possible for
182  a third-party to insert data into other people's transactions, changing
183  the transaction's txid (called transaction malleability) and possibly
184  causing other problems.
185  
186  Since Bitcoin Core 0.10.0, nodes have defaulted to only relaying and
187  mining transactions whose dummy element was a null value (0x00, also
188  called OP_0).  The null dummy soft fork turns this relay rule into a
189  consensus rule both for non-segwit transactions and segwit transactions,
190  so that this method of mutating transactions is permanently eliminated
191  from the network.
192  
193  Signaling for the null dummy soft fork is done by signaling support
194  for segwit, and the null dummy soft fork will activate at the same time
195  as segwit.
196  
197  For more information, please see [BIP147][].
198  
199  [BIP147]: https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki
200  
201  Low-level RPC changes
202  ---------------------
203  
204  - `importprunedfunds` only accepts two required arguments. Some versions accept
205    an optional third arg, which was always ignored. Make sure to never pass more
206    than two arguments.
207  
208  
209  Linux ARM builds
210  ----------------
211  
212  With the 0.13.0 release, pre-built Linux ARM binaries were added to the set of
213  uploaded executables. Additional detail on the ARM architecture targeted by each
214  is provided below.
215  
216  The following extra files can be found in the download directory or torrent:
217  
218  - `bitcoin-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries targeting
219    the 32-bit ARMv7-A architecture.
220  - `bitcoin-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries targeting
221    the 64-bit ARMv8-A architecture.
222  
223  ARM builds are still experimental. If you have problems on a certain device or
224  Linux distribution combination please report them on the bug tracker, it may be
225  possible to resolve them. Note that the device you use must be (backward)
226  compatible with the architecture targeted by the binary that you use.
227  For example, a Raspberry Pi 2 Model B or Raspberry Pi 3 Model B (in its 32-bit
228  execution state) device, can run the 32-bit ARMv7-A targeted binary. However,
229  no model of Raspberry Pi 1 device can run either binary because they are all
230  ARMv6 architecture devices that are not compatible with ARMv7-A or ARMv8-A.
231  
232  Note that Android is not considered ARM Linux in this context. The executables
233  are not expected to work out of the box on Android.
234  
235  
236  0.13.1 Change log
237  =================
238  
239  Detailed release notes follow. This overview includes changes that affect
240  behavior, not code moves, refactors and string updates. For convenience in locating
241  the code changes and accompanying discussion, both the pull request and
242  git merge commit are mentioned.
243  
244  ### Consensus
245  - #8636 `9dfa0c8` Implement NULLDUMMY softfork (BIP147) (jl2012)
246  - #8848 `7a34a46` Add NULLDUMMY verify flag in bitcoinconsensus.h (jl2012)
247  - #8937 `8b66659` Define start and end time for segwit deployment (sipa)
248  
249  ### RPC and other APIs
250  - #8581 `526d2b0` Drop misleading option in importprunedfunds (MarcoFalke)
251  - #8699 `a5ec248` Remove createwitnessaddress RPC command (jl2012)
252  - #8780 `794b007` Deprecate getinfo (MarcoFalke)
253  - #8832 `83ad563` Throw JSONRPCError when utxo set can not be read (MarcoFalke)
254  - #8884 `b987348` getblockchaininfo help: pruneheight is the lowest, not highest, block (luke-jr)
255  - #8858 `3f508ed` rpc: Generate auth cookie in hex instead of base64 (laanwj)
256  - #8951 `7c2bf4b` RPC/Mining: getblocktemplate: Update and fix formatting of help (luke-jr)
257  
258  ### Block and transaction handling
259  - #8611 `a9429ca` Reduce default number of blocks to check at startup (sipa)
260  - #8634 `3e80ab7` Add policy: null signature for failed CHECK(MULTI)SIG (jl2012)
261  - #8525 `1672225` Do not store witness txn in rejection cache (sipa)
262  - #8499 `9777fe1` Add several policy limits and disable uncompressed keys for segwit scripts (jl2012)
263  - #8526 `0027672` Make non-minimal OP_IF/NOTIF argument non-standard for P2WSH (jl2012)
264  - #8524 `b8c79a0` Precompute sighashes (sipa)
265  - #8651 `b8c79a0` Predeclare PrecomputedTransactionData as struct (sipa)
266  
267  ### P2P protocol and network code
268  - #8740 `42ea51a` No longer send local address in addrMe (laanwj)
269  - #8427 `69d1cd2` Ignore `notfound` P2P messages (laanwj)
270  - #8573 `4f84082` Set jonasschnellis dns-seeder filter flag (jonasschnelli)
271  - #8712 `23feab1` Remove maxuploadtargets recommended minimum (jonasschnelli)
272  - #8862 `7ae6242` Fix a few cases where messages were sent after requested disconnect (theuni)
273  - #8393 `fe1975a` Support for compact blocks together with segwit (sipa)
274  - #8282 `2611ad7` Feeler connections to increase online addrs in the tried table (EthanHeilman)
275  - #8612 `2215c22` Check for compatibility with download in FindNextBlocksToDownload (sipa)
276  - #8606 `bbf379b` Fix some locks (sipa)
277  - #8594 `ab295bb` Do not add random inbound peers to addrman (gmaxwell)
278  - #8940 `5b4192b` Add x9 service bit support to dnsseed.bluematt.me, seed.bitcoinstats.com (TheBlueMatt, cdecker)
279  - #8944 `685e4c7` Remove bogus assert on number of oubound connections. (TheBlueMatt)
280  - #8949 `0dbc48a` Be more agressive in getting connections to peers with relevant services (gmaxwell)
281  
282  ### Build system
283  - #8293 `fa5b249` Allow building libbitcoinconsensus without any univalue (luke-jr)
284  - #8492 `8b0bdd3` Allow building bench_bitcoin by itself (luke-jr)
285  - #8563 `147003c` Add configure check for -latomic (ajtowns)
286  - #8626 `ea51b0f` Berkeley DB v6 compatibility fix (netsafe)
287  - #8520 `75f2065` Remove check for `openssl/ec.h` (laanwj)
288  
289  ### GUI
290  - #8481 `d9f0d4e` Fix minimize and close bugs (adlawren)
291  - #8487 `a37cec5` Persist the datadir after option reset (achow101)
292  - #8697 `41fd852` Fix op order to append first alert (rodasmith)
293  - #8678 `8e03382` Fix UI bug that could result in paying unexpected fee (jonasschnelli)
294  - #8911 `7634d8e` Translate all files, even if wallet disabled (laanwj)
295  - #8540 `1db3352` Fix random segfault when closing "Choose data directory" dialog (laanwj)
296  - #7579 `f1c0d78` Show network/chain errors in the GUI (jonasschnelli)
297  
298  ### Wallet
299  - #8443 `464dedd` Trivial cleanup of HD wallet changes (jonasschnelli)
300  - #8539 `cb07f19` CDB: fix debug output (crowning-)
301  - #8664 `091cdeb` Fix segwit-related wallet bug (sdaftuar)
302  - #8693 `c6a6291` Add witness address to address book (instagibbs)
303  - #8765 `6288659` Remove "unused" ThreadFlushWalletDB from removeprunedfunds (jonasschnelli)
304  
305  ### Tests and QA
306  - #8713 `ae8c7df` create_cache: Delete temp dir when done (MarcoFalke)
307  - #8716 `e34374e` Check legacy wallet as well (MarcoFalke)
308  - #8750 `d6ebe13` Refactor RPCTestHandler to prevent TimeoutExpired (MarcoFalke)
309  - #8652 `63462c2` remove root test directory for RPC tests (yurizhykin)
310  - #8724 `da94272` walletbackup: Sync blocks inside the loop (MarcoFalke)
311  - #8400 `bea02dc` enable rpcbind_test (yurizhykin)
312  - #8417 `f70be14` Add walletdump RPC test (including HD- & encryption-tests) (jonasschnelli)
313  - #8419 `a7aa3cc` Enable size accounting in mining unit tests (sdaftuar)
314  - #8442 `8bb1efd` Rework hd wallet dump test (MarcoFalke)
315  - #8528 `3606b6b` Update p2p-segwit.py to reflect correct behavior (instagibbs)
316  - #8531 `a27cdd8` abandonconflict: Use assert_equal (MarcoFalke)
317  - #8667 `6b07362` Fix SIGHASH_SINGLE bug in test_framework SignatureHash (jl2012)
318  - #8673 `03b0196` Fix obvious assignment/equality error in test (JeremyRubin)
319  - #8739 `cef633c` Fix broken sendcmpct test in p2p-compactblocks.py (sdaftuar)
320  - #8418 `ff893aa` Add tests for compact blocks (sdaftuar)
321  - #8803 `375437c` Ping regularly in p2p-segwit.py to keep connection alive (jl2012)
322  - #8827 `9bbe66e` Split up slow RPC calls to avoid pruning test timeouts (sdaftuar)
323  - #8829 `2a8bca4` Add bitcoin-tx JSON tests (jnewbery)
324  - #8834 `1dd1783` blockstore: Switch to dumb dbm (MarcoFalke)
325  - #8835 `d87227d` nulldummy.py: Don't run unused code (MarcoFalke)
326  - #8836 `eb18cc1` bitcoin-util-test.py should fail if the output file is empty (jnewbery)
327  - #8839 `31ab2f8` Avoid ConnectionResetErrors during RPC tests (laanwj)
328  - #8840 `cbc3fe5` Explicitly set encoding to utf8 when opening text files (laanwj)
329  - #8841 `3e4abb5` Fix nulldummy test (jl2012)
330  - #8854 `624a007` Fix race condition in p2p-compactblocks test (sdaftuar)
331  - #8857 `1f60d45` mininode: Only allow named args in wait_until (MarcoFalke)
332  - #8860 `0bee740` util: Move wait_bitcoinds() into stop_nodes() (MarcoFalke)
333  - #8882 `b73f065` Fix race conditions in p2p-compactblocks.py and sendheaders.py (sdaftuar)
334  - #8904 `cc6f551` Fix compact block shortids for a test case (dagurval)
335  
336  ### Documentation
337  - #8754 `0e2c6bd` Target protobuf 2.6 in OS X build notes. (fanquake)
338  - #8461 `b17a3f9` Document return value of networkhashps for getmininginfo RPC endpoint (jlopp)
339  - #8512 `156e305` Corrected JSON typo on setban of net.cpp (sevastos)
340  - #8683 `8a7d7ff` Fix incorrect file name bitcoin.qrc  (bitcoinsSG)
341  - #8891 `5e0dd9e` Update bips.md for Segregated Witness (fanquake)
342  - #8545 `863ae74` Update git-subtree-check.sh README (MarcoFalke)
343  - #8607 `486650a` Fix doxygen off-by-one comments, fix typos (MarcoFalke)
344  - #8560 `c493f43` Fix two VarInt examples in serialize.h (cbarcenas)
345  - #8737 `084cae9` UndoReadFromDisk works on undo files (rev), not on block files (paveljanik)
346  - #8625 `0a35573` Clarify statement about parallel jobs in rpc-tests.py (isle2983)
347  - #8624 `0e6d753` build: Mention curl (MarcoFalke)
348  - #8604 `b09e13c` build,doc: Update for 0.13.0+ and OpenBSD 5.9 (laanwj)
349  - #8939 `06d15fb` Update implemented bips for 0.13.1 (sipa)
350  
351  ### Miscellaneous
352  - #8742 `d31ac72` Specify Protobuf version 2 in paymentrequest.proto (fanquake)
353  - #8414,#8558,#8676,#8700,#8701,#8702 Add missing copyright headers (isle2983, kazcw)
354  - #8899 `4ed2627` Fix wake from sleep issue with Boost 1.59.0 (fanquake)
355  - #8817 `bcf3806` update bitcoin-tx to output witness data (jnewbery)
356  - #8513 `4e5fc31` Fix a type error that would not compile on OSX. (JeremyRubin)
357  - #8392 `30eac2d` Fix several node initialization issues (sipa)
358  - #8548 `305d8ac` Use `__func__` to get function name for output printing (MarcoFalke)
359  - #8291 `a987431` [util] CopyrightHolders: Check for untranslated substitution (MarcoFalke)
360  
361  Credits
362  =======
363  
364  Thanks to everyone who directly contributed to this release:
365  
366  - adlawren
367  - Alexey Vesnin
368  - Anders Øyvind Urke-Sætre
369  - Andrew Chow
370  - Anthony Towns
371  - BtcDrak
372  - Chris Stewart
373  - Christian Barcenas
374  - Christian Decker
375  - Cory Fields
376  - crowning-
377  - Dagur Valberg Johannsson
378  - David A. Harding
379  - Eric Lombrozo
380  - Ethan Heilman
381  - fanquake
382  - Gaurav Rana
383  - Gregory Maxwell
384  - instagibbs
385  - isle2983
386  - Jameson Lopp
387  - Jeremy Rubin
388  - jnewbery
389  - Johnson Lau
390  - Jonas Schnelli
391  - jonnynewbs
392  - Justin Camarena
393  - Kaz Wesley
394  - leijurv
395  - Luke Dashjr
396  - MarcoFalke
397  - Marty Jones
398  - Matt Corallo
399  - Micha
400  - Michael Ford
401  - mruddy
402  - Pavel Janík
403  - Pieter Wuille
404  - rodasmith
405  - Sev
406  - Suhas Daftuar
407  - whythat
408  - Wladimir J. van der Laan
409  
410  As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).