1Bitcoin Core version 0.10.0 is now available from: 2 3 https://bitcoin.org/bin/0.10.0/ 4 5This is a new major version release, bringing both new features and 6bug fixes. 7 8Please report bugs using the issue tracker at github: 9 10 https://github.com/bitcoin/bitcoin/issues 11 12Upgrading and downgrading 13========================= 14 15How to Upgrade 16-------------- 17 18If you are running an older version, shut it down. Wait until it has completely 19shut down (which might take a few minutes for older versions), then run the 20installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or 21bitcoind/bitcoin-qt (on Linux). 22 23Downgrading warning 24--------------------- 25 26Because release 0.10.0 makes use of headers-first synchronization and parallel 27block download (see further), the block files and databases are not 28backwards-compatible with older versions of Bitcoin Core or other software: 29 30* Blocks will be stored on disk out of order (in the order they are 31received, really), which makes it incompatible with some tools or 32other programs. Reindexing using earlier versions will also not work 33anymore as a result of this. 34 35* The block index database will now hold headers for which no block is 36stored on disk, which earlier versions won't support. 37 38If you want to be able to downgrade smoothly, make a backup of your entire data 39directory. Without this your node will need start syncing (or importing from 40bootstrap.dat) anew afterwards. It is possible that the data from a completely 41synchronised 0.10 node may be usable in older versions as-is, but this is not 42supported and may break as soon as the older version attempts to reindex. 43 44This does not affect wallet forward or backward compatibility. 45 46 47Notable changes 48=============== 49 50Faster synchronization 51---------------------- 52 53Bitcoin Core now uses 'headers-first synchronization'. This means that we first 54ask peers for block headers (a total of 27 megabytes, as of December 2014) and 55validate those. In a second stage, when the headers have been discovered, we 56download the blocks. However, as we already know about the whole chain in 57advance, the blocks can be downloaded in parallel from all available peers. 58 59In practice, this means a much faster and more robust synchronization. On 60recent hardware with a decent network link, it can be as little as 3 hours 61for an initial full synchronization. You may notice a slower progress in the 62very first few minutes, when headers are still being fetched and verified, but 63it should gain speed afterwards. 64 65A few RPCs were added/updated as a result of this: 66- `getblockchaininfo` now returns the number of validated headers in addition to 67the number of validated blocks. 68- `getpeerinfo` lists both the number of blocks and headers we know we have in 69common with each peer. While synchronizing, the heights of the blocks that we 70have requested from peers (but haven't received yet) are also listed as 71'inflight'. 72- A new RPC `getchaintips` lists all known branches of the block chain, 73including those we only have headers for. 74 75Transaction fee changes 76----------------------- 77 78This release automatically estimates how high a transaction fee (or how 79high a priority) transactions require to be confirmed quickly. The default 80settings will create transactions that confirm quickly; see the new 81'txconfirmtarget' setting to control the tradeoff between fees and 82confirmation times. Fees are added by default unless the 'sendfreetransactions' 83setting is enabled. 84 85Prior releases used hard-coded fees (and priorities), and would 86sometimes create transactions that took a very long time to confirm. 87 88Statistics used to estimate fees and priorities are saved in the 89data directory in the `fee_estimates.dat` file just before 90program shutdown, and are read in at startup. 91 92New command line options for transaction fee changes: 93- `-txconfirmtarget=n` : create transactions that have enough fees (or priority) 94so they are likely to begin confirmation within n blocks (default: 1). This setting 95is over-ridden by the -paytxfee option. 96- `-sendfreetransactions` : Send transactions as zero-fee transactions if possible 97(default: 0) 98 99New RPC commands for fee estimation: 100- `estimatefee nblocks` : Returns approximate fee-per-1,000-bytes needed for 101a transaction to begin confirmation within nblocks. Returns -1 if not enough 102transactions have been observed to compute a good estimate. 103- `estimatepriority nblocks` : Returns approximate priority needed for 104a zero-fee transaction to begin confirmation within nblocks. Returns -1 if not 105enough free transactions have been observed to compute a good 106estimate. 107 108RPC access control changes 109-------------------------- 110 111Subnet matching for the purpose of access control is now done 112by matching the binary network address, instead of with string wildcard matching. 113For the user this means that `-rpcallowip` takes a subnet specification, which can be 114 115- a single IP address (e.g. `1.2.3.4` or `fe80::0012:3456:789a:bcde`) 116- a network/CIDR (e.g. `1.2.3.0/24` or `fe80::0000/64`) 117- a network/netmask (e.g. `1.2.3.4/255.255.255.0` or `fe80::0012:3456:789a:bcde/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff`) 118 119An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address 120matches one of them. 121 122For example: 123 124| 0.9.x and before | 0.10.x | 125|--------------------------------------------|---------------------------------------| 126| `-rpcallowip=192.168.1.1` | `-rpcallowip=192.168.1.1` (unchanged) | 127| `-rpcallowip=192.168.1.*` | `-rpcallowip=192.168.1.0/24` | 128| `-rpcallowip=192.168.*` | `-rpcallowip=192.168.0.0/16` | 129| `-rpcallowip=*` (dangerous!) | `-rpcallowip=::/0` (still dangerous!) | 130 131Using wildcards will result in the rule being rejected with the following error in debug.log: 132 133 Error: Invalid -rpcallowip subnet specification: *. Valid are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). 134 135 136REST interface 137-------------- 138 139A new HTTP API is exposed when running with the `-rest` flag, which allows 140unauthenticated access to public node data. 141 142It is served on the same port as RPC, but does not need a password, and uses 143plain HTTP instead of JSON-RPC. 144 145Assuming a local RPC server running on port 8332, it is possible to request: 146- Blocks: http://localhost:8332/rest/block/*HASH*.*EXT* 147- Blocks without transactions: http://localhost:8332/rest/block/notxdetails/*HASH*.*EXT* 148- Transactions (requires `-txindex`): http://localhost:8332/rest/tx/*HASH*.*EXT* 149 150In every case, *EXT* can be `bin` (for raw binary data), `hex` (for hex-encoded 151binary) or `json`. 152 153For more details, see the `doc/REST-interface.md` document in the repository. 154 155RPC Server "Warm-Up" Mode 156------------------------- 157 158The RPC server is started earlier now, before most of the expensive 159intialisations like loading the block index. It is available now almost 160immediately after starting the process. However, until all initialisations 161are done, it always returns an immediate error with code -28 to all calls. 162 163This new behaviour can be useful for clients to know that a server is already 164started and will be available soon (for instance, so that they do not 165have to start it themselves). 166 167Improved signing security 168------------------------- 169 170For 0.10 the security of signing against unusual attacks has been 171improved by making the signatures constant time and deterministic. 172 173This change is a result of switching signing to use libsecp256k1 174instead of OpenSSL. Libsecp256k1 is a cryptographic library 175optimized for the curve Bitcoin uses which was created by Bitcoin 176Core developer Pieter Wuille. 177 178There exist attacks[1] against most ECC implementations where an 179attacker on shared virtual machine hardware could extract a private 180key if they could cause a target to sign using the same key hundreds 181of times. While using shared hosts and reusing keys are inadvisable 182for other reasons, it's a better practice to avoid the exposure. 183 184OpenSSL has code in their source repository for derandomization 185and reduction in timing leaks that we've eagerly wanted to use for a 186long time, but this functionality has still not made its 187way into a released version of OpenSSL. Libsecp256k1 achieves 188significantly stronger protection: As far as we're aware this is 189the only deployed implementation of constant time signing for 190the curve Bitcoin uses and we have reason to believe that 191libsecp256k1 is better tested and more thoroughly reviewed 192than the implementation in OpenSSL. 193 194[1] https://eprint.iacr.org/2014/161.pdf 195 196Watch-only wallet support 197------------------------- 198 199The wallet can now track transactions to and from wallets for which you know 200all addresses (or scripts), even without the private keys. 201 202This can be used to track payments without needing the private keys online on a 203possibly vulnerable system. In addition, it can help for (manual) construction 204of multisig transactions where you are only one of the signers. 205 206One new RPC, `importaddress`, is added which functions similarly to 207`importprivkey`, but instead takes an address or script (in hexadecimal) as 208argument. After using it, outputs credited to this address or script are 209considered to be received, and transactions consuming these outputs will be 210considered to be sent. 211 212The following RPCs have optional support for watch-only: 213`getbalance`, `listreceivedbyaddress`, `listreceivedbyaccount`, 214`listtransactions`, `listaccounts`, `listsinceblock`, `gettransaction`. See the 215RPC documentation for those methods for more information. 216 217Compared to using `getrawtransaction`, this mechanism does not require 218`-txindex`, scales better, integrates better with the wallet, and is compatible 219with future block chain pruning functionality. It does mean that all relevant 220addresses need to added to the wallet before the payment, though. 221 222Consensus library 223----------------- 224 225Starting from 0.10.0, the Bitcoin Core distribution includes a consensus library. 226 227The purpose of this library is to make the verification functionality that is 228critical to Bitcoin's consensus available to other applications, e.g. to language 229bindings such as [python-bitcoinlib](https://pypi.python.org/pypi/python-bitcoinlib) or 230alternative node implementations. 231 232This library is called `libbitcoinconsensus.so` (or, `.dll` for Windows). 233Its interface is defined in the C header [bitcoinconsensus.h](https://github.com/bitcoin/bitcoin/blob/0.10/src/script/bitcoinconsensus.h). 234 235In its initial version the API includes two functions: 236 237- `bitcoinconsensus_verify_script` verifies a script. It returns whether the indicated input of the provided serialized transaction 238correctly spends the passed scriptPubKey under additional constraints indicated by flags 239- `bitcoinconsensus_version` returns the API version, currently at an experimental `0` 240 241The functionality is planned to be extended to e.g. UTXO management in upcoming releases, but the interface 242for existing methods should remain stable. 243 244Standard script rules relaxed for P2SH addresses 245------------------------------------------------ 246 247The IsStandard() rules have been almost completely removed for P2SH 248redemption scripts, allowing applications to make use of any valid 249script type, such as "n-of-m OR y", hash-locked oracle addresses, etc. 250While the Bitcoin protocol has always supported these types of script, 251actually using them on mainnet has been previously inconvenient as 252standard Bitcoin Core nodes wouldn't relay them to miners, nor would 253most miners include them in blocks they mined. 254 255bitcoin-tx 256---------- 257 258It has been observed that many of the RPC functions offered by bitcoind are 259"pure functions", and operate independently of the bitcoind wallet. This 260included many of the RPC "raw transaction" API functions, such as 261createrawtransaction. 262 263bitcoin-tx is a newly introduced command line utility designed to enable easy 264manipulation of bitcoin transactions. A summary of its operation may be 265obtained via "bitcoin-tx --help" Transactions may be created or signed in a 266manner similar to the RPC raw tx API. Transactions may be updated, deleting 267inputs or outputs, or appending new inputs and outputs. Custom scripts may be 268easily composed using a simple text notation, borrowed from the bitcoin test 269suite. 270 271This tool may be used for experimenting with new transaction types, signing 272multi-party transactions, and many other uses. Long term, the goal is to 273deprecate and remove "pure function" RPC API calls, as those do not require a 274server round-trip to execute. 275 276Other utilities "bitcoin-key" and "bitcoin-script" have been proposed, making 277key and script operations easily accessible via command line. 278 279Mining and relay policy enhancements 280------------------------------------ 281 282Bitcoin Core's block templates are now for version 3 blocks only, and any mining 283software relying on its `getblocktemplate` must be updated in parallel to use 284libblkmaker either version 0.4.2 or any version from 0.5.1 onward. 285If you are solo mining, this will affect you the moment you upgrade Bitcoin 286Core, which must be done prior to BIP66 achieving its 951/1001 status. 287If you are mining with the stratum mining protocol: this does not affect you. 288If you are mining with the getblocktemplate protocol to a pool: this will affect 289you at the pool operator's discretion, which must be no later than BIP66 290achieving its 951/1001 status. 291 292The `prioritisetransaction` RPC method has been added to enable miners to 293manipulate the priority of transactions on an individual basis. 294 295Bitcoin Core now supports BIP 22 long polling, so mining software can be 296notified immediately of new templates rather than having to poll periodically. 297 298Support for BIP 23 block proposals is now available in Bitcoin Core's 299`getblocktemplate` method. This enables miners to check the basic validity of 300their next block before expending work on it, reducing risks of accidental 301hardforks or mining invalid blocks. 302 303Two new options to control mining policy: 304- `-datacarrier=0/1` : Relay and mine "data carrier" (OP_RETURN) transactions 305if this is 1. 306- `-datacarriersize=n` : Maximum size, in bytes, we consider acceptable for 307"data carrier" outputs. 308 309The relay policy has changed to more properly implement the desired behavior of not 310relaying free (or very low fee) transactions unless they have a priority above the 311AllowFreeThreshold(), in which case they are relayed subject to the rate limiter. 312 313BIP 66: strict DER encoding for signatures 314------------------------------------------ 315 316Bitcoin Core 0.10 implements BIP 66, which introduces block version 3, and a new 317consensus rule, which prohibits non-DER signatures. Such transactions have been 318non-standard since Bitcoin v0.8.0 (released in February 2013), but were 319technically still permitted inside blocks. 320 321This change breaks the dependency on OpenSSL's signature parsing, and is 322required if implementations would want to remove all of OpenSSL from the 323consensus code. 324 325The same miner-voting mechanism as in BIP 34 is used: when 751 out of a 326sequence of 1001 blocks have version number 3 or higher, the new consensus 327rule becomes active for those blocks. When 951 out of a sequence of 1001 328blocks have version number 3 or higher, it becomes mandatory for all blocks. 329 330Backward compatibility with current mining software is NOT provided, thus miners 331should read the first paragraph of "Mining and relay policy enhancements" above. 332 3330.10.0 Change log 334================= 335 336Detailed release notes follow. This overview includes changes that affect external 337behavior, not code moves, refactors or string updates. 338 339RPC: 340- `f923c07` Support IPv6 lookup in bitcoin-cli even when IPv6 only bound on localhost 341- `b641c9c` Fix addnode "onetry": Connect with OpenNetworkConnection 342- `171ca77` estimatefee / estimatepriority RPC methods 343- `b750cf1` Remove cli functionality from bitcoind 344- `f6984e8` Add "chain" to getmininginfo, improve help in getblockchaininfo 345- `99ddc6c` Add nLocalServices info to RPC getinfo 346- `cf0c47b` Remove getwork() RPC call 347- `2a72d45` prioritisetransaction <txid> <priority delta> <priority tx fee> 348- `e44fea5` Add an option `-datacarrier` to allow users to disable relaying/mining data carrier transactions 349- `2ec5a3d` Prevent easy RPC memory exhaustion attack 350- `d4640d7` Added argument to getbalance to include watchonly addresses and fixed errors in balance calculation 351- `83f3543` Added argument to listaccounts to include watchonly addresses 352- `952877e` Showing 'involvesWatchonly' property for transactions returned by 'listtransactions' and 'listsinceblock'. It is only appended when the transaction involves a watchonly address 353- `d7d5d23` Added argument to listtransactions and listsinceblock to include watchonly addresses 354- `f87ba3d` added includeWatchonly argument to 'gettransaction' because it affects balance calculation 355- `0fa2f88` added includedWatchonly argument to listreceivedbyaddress/...account 356- `6c37f7f` `getrawchangeaddress`: fail when keypool exhausted and wallet locked 357- `ff6a7af` getblocktemplate: longpolling support 358- `c4a321f` Add peerid to getpeerinfo to allow correlation with the logs 359- `1b4568c` Add vout to ListTransactions output 360- `b33bd7a` Implement "getchaintips" RPC command to monitor blockchain forks 361- `733177e` Remove size limit in RPC client, keep it in server 362- `6b5b7cb` Categorize rpc help overview 363- `6f2c26a` Closely track mempool byte total. Add "getmempoolinfo" RPC 364- `aa82795` Add detailed network info to getnetworkinfo RPC 365- `01094bd` Don't reveal whether password is <20 or >20 characters in RPC 366- `57153d4` rpc: Compute number of confirmations of a block from block height 367- `ff36cbe` getnetworkinfo: export local node's client sub-version string 368- `d14d7de` SanitizeString: allow '(' and ')' 369- `31d6390` Fixed setaccount accepting foreign address 370- `b5ec5fe` update getnetworkinfo help with subversion 371- `ad6e601` RPC additions after headers-first 372- `33dfbf5` rpc: Fix leveldb iterator leak, and flush before `gettxoutsetinfo` 373- `2aa6329` Enable customising node policy for datacarrier data size with a -datacarriersize option 374- `f877aaa` submitblock: Use a temporary CValidationState to determine accurately the outcome of ProcessBlock 375- `e69a587` submitblock: Support for returning specific rejection reasons 376- `af82884` Add "warmup mode" for RPC server 377- `e2655e0` Add unauthenticated HTTP REST interface to public blockchain data 378- `683dc40` Disable SSLv3 (in favor of TLS) for the RPC client and server 379- `44b4c0d` signrawtransaction: validate private key 380- `9765a50` Implement BIP 23 Block Proposal 381- `f9de17e` Add warning comment to getinfo 382 383Command-line options: 384- `ee21912` Use netmasks instead of wildcards for IP address matching 385- `deb3572` Add `-rpcbind` option to allow binding RPC port on a specific interface 386- `96b733e` Add `-version` option to get just the version 387- `1569353` Add `-stopafterblockimport` option 388- `77cbd46` Let -zapwallettxes recover transaction meta data 389- `1c750db` remove -tor compatibility code (only allow -onion) 390- `4aaa017` rework help messages for fee-related options 391- `4278b1d` Clarify error message when invalid -rpcallowip 392- `6b407e4` -datadir is now allowed in config files 393- `bdd5b58` Add option `-sysperms` to disable 077 umask (create new files with system default umask) 394- `cbe39a3` Add "bitcoin-tx" command line utility and supporting modules 395- `dbca89b` Trigger -alertnotify if network is upgrading without you 396- `ad96e7c` Make -reindex cope with out-of-order blocks 397- `16d5194` Skip reindexed blocks individually 398- `ec01243` --tracerpc option for regression tests 399- `f654f00` Change -genproclimit default to 1 400- `3c77714` Make -proxy set all network types, avoiding a connect leak 401- `57be955` Remove -printblock, -printblocktree, and -printblockindex 402- `ad3d208` remove -maxorphanblocks config parameter since it is no longer functional 403 404Block and transaction handling: 405- `7a0e84d` ProcessGetData(): abort if a block file is missing from disk 406- `8c93bf4` LoadBlockIndexDB(): Require block db reindex if any `blk*.dat` files are missing 407- `77339e5` Get rid of the static chainMostWork (optimization) 408- `4e0eed8` Allow ActivateBestChain to release its lock on cs_main 409- `18e7216` Push cs_mains down in ProcessBlock 410- `fa126ef` Avoid undefined behavior using CFlatData in CScript serialization 411- `7f3b4e9` Relax IsStandard rules for pay-to-script-hash transactions 412- `c9a0918` Add a skiplist to the CBlockIndex structure 413- `bc42503` Use unordered_map for CCoinsViewCache with salted hash (optimization) 414- `d4d3fbd` Do not flush the cache after every block outside of IBD (optimization) 415- `ad08d0b` Bugfix: make CCoinsViewMemPool support pruned entries in underlying cache 416- `5734d4d` Only remove actualy failed blocks from setBlockIndexValid 417- `d70bc52` Rework block processing benchmark code 418- `714a3e6` Only keep setBlockIndexValid entries that are possible improvements 419- `ea100c7` Reduce maximum coinscache size during verification (reduce memory usage) 420- `4fad8e6` Reject transactions with excessive numbers of sigops 421- `b0875eb` Allow BatchWrite to destroy its input, reducing copying (optimization) 422- `92bb6f2` Bypass reloading blocks from disk (optimization) 423- `2e28031` Perform CVerifyDB on pcoinsdbview instead of pcoinsTip (reduce memory usage) 424- `ab15b2e` Avoid copying undo data (optimization) 425- `341735e` Headers-first synchronization 426- `afc32c5` Fix rebuild-chainstate feature and improve its performance 427- `e11b2ce` Fix large reorgs 428- `ed6d1a2` Keep information about all block files in memory 429- `a48f2d6` Abstract context-dependent block checking from acceptance 430- `7e615f5` Fixed mempool sync after sending a transaction 431- `51ce901` Improve chainstate/blockindex disk writing policy 432- `a206950` Introduce separate flushing modes 433- `9ec75c5` Add a locking mechanism to IsInitialBlockDownload to ensure it never goes from false to true 434- `868d041` Remove coinbase-dependant transactions during reorg 435- `723d12c` Remove txn which are invalidated by coinbase maturity during reorg 436- `0cb8763` Check against MANDATORY flags prior to accepting to mempool 437- `8446262` Reject headers that build on an invalid parent 438- `008138c` Bugfix: only track UTXO modification after lookup 439 440P2P protocol and network code: 441- `f80cffa` Do not trigger a DoS ban if SCRIPT_VERIFY_NULLDUMMY fails 442- `c30329a` Add testnet DNS seed of Alex Kotenko 443- `45a4baf` Add testnet DNS seed of Andreas Schildbach 444- `f1920e8` Ping automatically every 2 minutes (unconditionally) 445- `806fd19` Allocate receive buffers in on the fly 446- `6ecf3ed` Display unknown commands received 447- `aa81564` Track peers' available blocks 448- `caf6150` Use async name resolving to improve net thread responsiveness 449- `9f4da19` Use pong receive time rather than processing time 450- `0127a9b` remove SOCKS4 support from core and GUI, use SOCKS5 451- `40f5cb8` Send rejects and apply DoS scoring for errors in direct block validation 452- `dc942e6` Introduce whitelisted peers 453- `c994d2e` prevent SOCKET leak in BindListenPort() 454- `a60120e` Add built-in seeds for .onion 455- `60dc8e4` Allow -onlynet=onion to be used 456- `3a56de7` addrman: Do not propagate obviously poor addresses onto the network 457- `6050ab6` netbase: Make SOCKS5 negotiation interruptible 458- `604ee2a` Remove tx from AlreadyAskedFor list once we receive it, not when we process it 459- `efad808` Avoid reject message feedback loops 460- `71697f9` Separate protocol versioning from clientversion 461- `20a5f61` Don't relay alerts to peers before version negotiation 462- `b4ee0bd` Introduce preferred download peers 463- `845c86d` Do not use third party services for IP detection 464- `12a49ca` Limit the number of new addressses to accumulate 465- `35e408f` Regard connection failures as attempt for addrman 466- `a3a7317` Introduce 10 minute block download timeout 467- `3022e7d` Require sufficent priority for relay of free transactions 468- `58fda4d` Update seed IPs, based on bitcoin.sipa.be crawler data 469- `18021d0` Remove bitnodes.io from dnsseeds. 470 471Validation: 472- `6fd7ef2` Also switch the (unused) verification code to low-s instead of even-s 473- `584a358` Do merkle root and txid duplicates check simultaneously 474- `217a5c9` When transaction outputs exceed inputs, show the offending amounts so as to aid debugging 475- `f74fc9b` Print input index when signature validation fails, to aid debugging 476- `6fd59ee` script.h: set_vch() should shift a >32 bit value 477- `d752ba8` Add SCRIPT_VERIFY_SIGPUSHONLY (BIP62 rule 2) (test only) 478- `698c6ab` Add SCRIPT_VERIFY_MINIMALDATA (BIP62 rules 3 and 4) (test only) 479- `ab9edbd` script: create sane error return codes for script validation and remove logging 480- `219a147` script: check ScriptError values in script tests 481- `0391423` Discourage NOPs reserved for soft-fork upgrades 482- `98b135f` Make STRICTENC invalid pubkeys fail the script rather than the opcode 483- `307f7d4` Report script evaluation failures in log and reject messages 484- `ace39db` consensus: guard against openssl's new strict DER checks 485- `12b7c44` Improve robustness of DER recoding code 486- `76ce5c8` fail immediately on an empty signature 487 488Build system: 489- `f25e3ad` Fix build in OS X 10.9 490- `65e8ba4` build: Switch to non-recursive make 491- `460b32d` build: fix broken boost chrono check on some platforms 492- `9ce0774` build: Fix windows configure when using --with-qt-libdir 493- `ea96475` build: Add mention of --disable-wallet to bdb48 error messages 494- `1dec09b` depends: add shared dependency builder 495- `c101c76` build: Add --with-utils (bitcoin-cli and bitcoin-tx, default=yes). Help string consistency tweaks. Target sanity check fix 496- `e432a5f` build: add option for reducing exports (v2) 497- `6134b43` Fixing condition 'sabotaging' MSVC build 498- `af0bd5e` osx: fix signing to make Gatekeeper happy (again) 499- `a7d1f03` build: fix dynamic boost check when --with-boost= is used 500- `d5fd094` build: fix qt test build when libprotobuf is in a non-standard path 501- `2cf5f16` Add libbitcoinconsensus library 502- `914868a` build: add a deterministic dmg signer 503- `2d375fe` depends: bump openssl to 1.0.1k 504- `b7a4ecc` Build: Only check for boost when building code that requires it 505 506Wallet: 507- `b33d1f5` Use fee/priority estimates in wallet CreateTransaction 508- `4b7b1bb` Sanity checks for estimates 509- `c898846` Add support for watch-only addresses 510- `d5087d1` Use script matching rather than destination matching for watch-only 511- `d88af56` Fee fixes 512- `a35b55b` Dont run full check every time we decrypt wallet 513- `3a7c348` Fix make_change to not create half-satoshis 514- `f606bb9` fix a possible memory leak in CWalletDB::Recover 515- `870da77` fix possible memory leaks in CWallet::EncryptWallet 516- `ccca27a` Watch-only fixes 517- `9b1627d` [Wallet] Reduce minTxFee for transaction creation to 1000 satoshis 518- `a53fd41` Deterministic signing 519- `15ad0b5` Apply AreSane() checks to the fees from the network 520- `11855c1` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option 521 522GUI: 523- `c21c74b` osx: Fix missing dock menu with qt5 524- `b90711c` Fix Transaction details shows wrong To: 525- `516053c` Make links in 'About Bitcoin Core' clickable 526- `bdc83e8` Ensure payment request network matches client network 527- `65f78a1` Add GUI view of peer information 528- `06a91d9` VerifyDB progress reporting 529- `fe6bff2` Add BerkeleyDB version info to RPCConsole 530- `b917555` PeerTableModel: Fix potential deadlock. #4296 531- `dff0e3b` Improve rpc console history behavior 532- `95a9383` Remove CENT-fee-rule from coin control completely 533- `56b07d2` Allow setting listen via GUI 534- `d95ba75` Log messages with type>QtDebugMsg as non-debug 535- `8969828` New status bar Unit Display Control and related changes 536- `674c070` seed OpenSSL PNRG with Windows event data 537- `509f926` Payment request parsing on startup now only changes network if a valid network name is specified 538- `acd432b` Prevent balloon-spam after rescan 539- `7007402` Implement SI-style (thin space) thoudands separator 540- `91cce17` Use fixed-point arithmetic in amount spinbox 541- `bdba2dd` Remove an obscure option no-one cares about 542- `bd0aa10` Replace the temporary file hack currently used to change Bitcoin-Qt's dock icon (OS X) with a buffer-based solution 543- `94e1b9e` Re-work overviewpage UI 544- `8bfdc9a` Better looking trayicon 545- `b197bf3` disable tray interactions when client model set to 0 546- `1c5f0af` Add column Watch-only to transactions list 547- `21f139b` Fix tablet crash. closes #4854 548- `e84843c` Broken addresses on command line no longer trigger testnet 549- `a49f11d` Change splash screen to normal window 550- `1f9be98` Disable App Nap on OSX 10.9+ 551- `27c3e91` Add proxy to options overridden if necessary 552- `4bd1185` Allow "emergency" shutdown during startup 553- `d52f072` Don't show wallet options in the preferences menu when running with -disablewallet 554- `6093aa1` Qt: QProgressBar CPU-Issue workaround 555- `0ed9675` [Wallet] Add global boolean whether to send free transactions (default=true) 556- `ed3e5e4` [Wallet] Add global boolean whether to pay at least the custom fee (default=true) 557- `e7876b2` [Wallet] Prevent user from paying a non-sense fee 558- `c1c9d5b` Add Smartfee to GUI 559- `e0a25c5` Make askpassphrase dialog behave more sanely 560- `94b362d` On close of splashscreen interrupt verifyDB 561- `b790d13` English translation update 562- `8543b0d` Correct tooltip on address book page 563 564Tests: 565- `b41e594` Fix script test handling of empty scripts 566- `d3a33fc` Test CHECKMULTISIG with m == 0 and n == 0 567- `29c1749` Let tx (in)valid tests use any SCRIPT_VERIFY flag 568- `6380180` Add rejection of non-null CHECKMULTISIG dummy values 569- `21bf3d2` Add tests for BoostAsioToCNetAddr 570- `b5ad5e7` Add Python test for -rpcbind and -rpcallowip 571- `9ec0306` Add CODESEPARATOR/FindAndDelete() tests 572- `75ebced` Added many rpc wallet tests 573- `0193fb8` Allow multiple regression tests to run at once 574- `92a6220` Hook up sanity checks 575- `3820e01` Extend and move all crypto tests to crypto_tests.cpp 576- `3f9a019` added list/get received by address/ account tests 577- `a90689f` Remove timing-based signature cache unit test 578- `236982c` Add skiplist unit tests 579- `f4b00be` Add CChain::GetLocator() unit test 580- `b45a6e8` Add test for getblocktemplate longpolling 581- `cdf305e` Set -discover=0 in regtest framework 582- `ed02282` additional test for OP_SIZE in script_valid.json 583- `0072d98` script tests: BOOLAND, BOOLOR decode to integer 584- `833ff16` script tests: values that overflow to 0 are true 585- `4cac5db` script tests: value with trailing 0x00 is true 586- `89101c6` script test: test case for 5-byte bools 587- `d2d9dc0` script tests: add tests for CHECKMULTISIG limits 588- `d789386` Add "it works" test for bitcoin-tx 589- `df4d61e` Add bitcoin-tx tests 590- `aa41ac2` Test IsPushOnly() with invalid push 591- `6022b5d` Make `script_{valid,invalid}.json` validation flags configurable 592- `8138cbe` Add automatic script test generation, and actual checksig tests 593- `ed27e53` Add coins_tests with a large randomized CCoinViewCache test 594- `9df9cf5` Make SCRIPT_VERIFY_STRICTENC compatible with BIP62 595- `dcb9846` Extend getchaintips RPC test 596- `554147a` Ensure MINIMALDATA invalid tests can only fail one way 597- `dfeec18` Test every numeric-accepting opcode for correct handling of the numeric minimal encoding rule 598- `2b62e17` Clearly separate PUSHDATA and numeric argument MINIMALDATA tests 599- `16d78bd` Add valid invert of invalid every numeric opcode tests 600- `f635269` tests: enable alertnotify test for Windows 601- `7a41614` tests: allow rpc-tests to get filenames for bitcoind and bitcoin-cli from the environment 602- `5122ea7` tests: fix forknotify.py on windows 603- `fa7f8cd` tests: remove old pull-tester scripts 604- `7667850` tests: replace the old (unused since Travis) tests with new rpc test scripts 605- `f4e0aef` Do signature-s negation inside the tests 606- `1837987` Optimize -regtest setgenerate block generation 607- `2db4c8a` Fix node ranges in the test framework 608- `a8b2ce5` regression test only setmocktime RPC call 609- `daf03e7` RPC tests: create initial chain with specific timestamps 610- `8656dbb` Port/fix txnmall.sh regression test 611- `ca81587` Test the exact order of CHECKMULTISIG sig/pubkey evaluation 612- `7357893` Prioritize and display -testsafemode status in UI 613- `f321d6b` Add key generation/verification to ECC sanity check 614- `132ea9b` miner_tests: Disable checkpoints so they don't fail the subsidy-change test 615- `bc6cb41` QA RPC tests: Add tests block block proposals 616- `f67a9ce` Use deterministically generated script tests 617- `11d7a7d` [RPC] add rpc-test for http keep-alive (persistent connections) 618- `34318d7` RPC-test based on invalidateblock for mempool coinbase spends 619- `76ec867` Use actually valid transactions for script tests 620- `c8589bf` Add actual signature tests 621- `e2677d7` Fix smartfees test for change to relay policy 622- `263b65e` tests: run sanity checks in tests too 623 624Miscellaneous: 625- `122549f` Fix incorrect checkpoint data for testnet3 626- `5bd02cf` Log used config file to debug.log on startup 627- `68ba85f` Updated Debian example bitcoin.conf with config from wiki + removed some cruft and updated comments 628- `e5ee8f0` Remove -beta suffix 629- `38405ac` Add comment regarding experimental-use service bits 630- `be873f6` Issue warning if collecting RandSeed data failed 631- `8ae973c` Allocate more space if necessary in RandSeedAddPerfMon 632- `675bcd5` Correct comment for 15-of-15 p2sh script size 633- `fda3fed` libsecp256k1 integration 634- `2e36866` Show nodeid instead of addresses in log (for anonymity) unless otherwise requested 635- `cd01a5e` Enable paranoid corruption checks in LevelDB >= 1.16 636- `9365937` Add comment about never updating nTimeOffset past 199 samples 637- `403c1bf` contrib: remove getwork-based pyminer (as getwork API call has been removed) 638- `0c3e101` contrib: Added systemd .service file in order to help distributions integrate bitcoind 639- `0a0878d` doc: Add new DNSseed policy 640- `2887bff` Update coding style and add .clang-format 641- `5cbda4f` Changed LevelDB cursors to use scoped pointers to ensure destruction when going out of scope 642- `b4a72a7` contrib/linearize: split output files based on new-timestamp-year or max-file-size 643- `e982b57` Use explicit fflush() instead of setvbuf() 644- `234bfbf` contrib: Add init scripts and docs for Upstart and OpenRC 645- `01c2807` Add warning about the merkle-tree algorithm duplicate txid flaw 646- `d6712db` Also create pid file in non-daemon mode 647- `772ab0e` contrib: use batched JSON-RPC in linarize-hashes (optimization) 648- `7ab4358` Update bash-completion for v0.10 649- `6e6a36c` contrib: show pull # in prompt for github-merge script 650- `5b9f842` Upgrade leveldb to 1.18, make chainstate databases compatible between ARM and x86 (issue #2293) 651- `4e7c219` Catch UTXO set read errors and shutdown 652- `867c600` Catch LevelDB errors during flush 653- `06ca065` Fix CScriptID(const CScript& in) in empty script case 654 655Credits 656======= 657 658Thanks to everyone who contributed to this release: 659 660- 21E14 661- Adam Weiss 662- Aitor Pazos 663- Alexander Jeng 664- Alex Morcos 665- Alon Muroch 666- Andreas Schildbach 667- Andrew Poelstra 668- Andy Alness 669- Ashley Holman 670- Benedict Chan 671- Ben Holden-Crowther 672- Bryan Bishop 673- BtcDrak 674- Christian von Roques 675- Clinton Christian 676- Cory Fields 677- Cozz Lovan 678- daniel 679- Daniel Kraft 680- David Hill 681- Derek701 682- dexX7 683- dllud 684- Dominyk Tiller 685- Doug 686- elichai 687- elkingtowa 688- ENikS 689- Eric Shaw 690- Federico Bond 691- Francis GASCHET 692- Gavin Andresen 693- Giuseppe Mazzotta 694- Glenn Willen 695- Gregory Maxwell 696- gubatron 697- HarryWu 698- himynameismartin 699- Huang Le 700- Ian Carroll 701- imharrywu 702- Jameson Lopp 703- Janusz Lenar 704- JaSK 705- Jeff Garzik 706- JL2035 707- Johnathan Corgan 708- Jonas Schnelli 709- jtimon 710- Julian Haight 711- Kamil Domanski 712- kazcw 713- kevin 714- kiwigb 715- Kosta Zertsekel 716- LongShao007 717- Luke Dashjr 718- Mark Friedenbach 719- Mathy Vanvoorden 720- Matt Corallo 721- Matthew Bogosian 722- Micha 723- Michael Ford 724- Mike Hearn 725- mrbandrews 726- mruddy 727- ntrgn 728- Otto Allmendinger 729- paveljanik 730- Pavel Vasin 731- Peter Todd 732- phantomcircuit 733- Philip Kaufmann 734- Pieter Wuille 735- pryds 736- randy-waterhouse 737- R E Broadley 738- Rose Toomey 739- Ross Nicoll 740- Roy Badami 741- Ruben Dario Ponticelli 742- Rune K. Svendsen 743- Ryan X. Charles 744- Saivann 745- sandakersmann 746- SergioDemianLerner 747- shshshsh 748- sinetek 749- Stuart Cardall 750- Suhas Daftuar 751- Tawanda Kembo 752- Teran McKinney 753- tm314159 754- Tom Harding 755- Trevin Hofmann 756- Whit J 757- Wladimir J. van der Laan 758- Yoichi Hirai 759- Zak Wilcox 760 761As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). 762 763