release-notes-0.10.0.md
1 Bitcoin Core version 0.10.0 is now available from: 2 3 https://bitcoin.org/bin/0.10.0/ 4 5 This is a new major version release, bringing both new features and 6 bug fixes. 7 8 Please report bugs using the issue tracker at github: 9 10 https://github.com/bitcoin/bitcoin/issues 11 12 Upgrading and downgrading 13 ========================= 14 15 How to Upgrade 16 -------------- 17 18 If you are running an older version, shut it down. Wait until it has completely 19 shut down (which might take a few minutes for older versions), then run the 20 installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or 21 bitcoind/bitcoin-qt (on Linux). 22 23 Downgrading warning 24 --------------------- 25 26 Because release 0.10.0 makes use of headers-first synchronization and parallel 27 block download (see further), the block files and databases are not 28 backwards-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 31 received, really), which makes it incompatible with some tools or 32 other programs. Reindexing using earlier versions will also not work 33 anymore as a result of this. 34 35 * The block index database will now hold headers for which no block is 36 stored on disk, which earlier versions won't support. 37 38 If you want to be able to downgrade smoothly, make a backup of your entire data 39 directory. Without this your node will need start syncing (or importing from 40 bootstrap.dat) anew afterwards. It is possible that the data from a completely 41 synchronised 0.10 node may be usable in older versions as-is, but this is not 42 supported and may break as soon as the older version attempts to reindex. 43 44 This does not affect wallet forward or backward compatibility. 45 46 47 Notable changes 48 =============== 49 50 Faster synchronization 51 ---------------------- 52 53 Bitcoin Core now uses 'headers-first synchronization'. This means that we first 54 ask peers for block headers (a total of 27 megabytes, as of December 2014) and 55 validate those. In a second stage, when the headers have been discovered, we 56 download the blocks. However, as we already know about the whole chain in 57 advance, the blocks can be downloaded in parallel from all available peers. 58 59 In practice, this means a much faster and more robust synchronization. On 60 recent hardware with a decent network link, it can be as little as 3 hours 61 for an initial full synchronization. You may notice a slower progress in the 62 very first few minutes, when headers are still being fetched and verified, but 63 it should gain speed afterwards. 64 65 A few RPCs were added/updated as a result of this: 66 - `getblockchaininfo` now returns the number of validated headers in addition to 67 the number of validated blocks. 68 - `getpeerinfo` lists both the number of blocks and headers we know we have in 69 common with each peer. While synchronizing, the heights of the blocks that we 70 have 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, 73 including those we only have headers for. 74 75 Transaction fee changes 76 ----------------------- 77 78 This release automatically estimates how high a transaction fee (or how 79 high a priority) transactions require to be confirmed quickly. The default 80 settings will create transactions that confirm quickly; see the new 81 'txconfirmtarget' setting to control the tradeoff between fees and 82 confirmation times. Fees are added by default unless the 'sendfreetransactions' 83 setting is enabled. 84 85 Prior releases used hard-coded fees (and priorities), and would 86 sometimes create transactions that took a very long time to confirm. 87 88 Statistics used to estimate fees and priorities are saved in the 89 data directory in the `fee_estimates.dat` file just before 90 program shutdown, and are read in at startup. 91 92 New command line options for transaction fee changes: 93 - `-txconfirmtarget=n` : create transactions that have enough fees (or priority) 94 so they are likely to begin confirmation within n blocks (default: 1). This setting 95 is over-ridden by the -paytxfee option. 96 - `-sendfreetransactions` : Send transactions as zero-fee transactions if possible 97 (default: 0) 98 99 New RPC commands for fee estimation: 100 - `estimatefee nblocks` : Returns approximate fee-per-1,000-bytes needed for 101 a transaction to begin confirmation within nblocks. Returns -1 if not enough 102 transactions have been observed to compute a good estimate. 103 - `estimatepriority nblocks` : Returns approximate priority needed for 104 a zero-fee transaction to begin confirmation within nblocks. Returns -1 if not 105 enough free transactions have been observed to compute a good 106 estimate. 107 108 RPC access control changes 109 -------------------------- 110 111 Subnet matching for the purpose of access control is now done 112 by matching the binary network address, instead of with string wildcard matching. 113 For 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 119 An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address 120 matches one of them. 121 122 For 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 131 Using 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 136 REST interface 137 -------------- 138 139 A new HTTP API is exposed when running with the `-rest` flag, which allows 140 unauthenticated access to public node data. 141 142 It is served on the same port as RPC, but does not need a password, and uses 143 plain HTTP instead of JSON-RPC. 144 145 Assuming 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 150 In every case, *EXT* can be `bin` (for raw binary data), `hex` (for hex-encoded 151 binary) or `json`. 152 153 For more details, see the `doc/REST-interface.md` document in the repository. 154 155 RPC Server "Warm-Up" Mode 156 ------------------------- 157 158 The RPC server is started earlier now, before most of the expensive 159 intialisations like loading the block index. It is available now almost 160 immediately after starting the process. However, until all initialisations 161 are done, it always returns an immediate error with code -28 to all calls. 162 163 This new behaviour can be useful for clients to know that a server is already 164 started and will be available soon (for instance, so that they do not 165 have to start it themselves). 166 167 Improved signing security 168 ------------------------- 169 170 For 0.10 the security of signing against unusual attacks has been 171 improved by making the signatures constant time and deterministic. 172 173 This change is a result of switching signing to use libsecp256k1 174 instead of OpenSSL. Libsecp256k1 is a cryptographic library 175 optimized for the curve Bitcoin uses which was created by Bitcoin 176 Core developer Pieter Wuille. 177 178 There exist attacks[1] against most ECC implementations where an 179 attacker on shared virtual machine hardware could extract a private 180 key if they could cause a target to sign using the same key hundreds 181 of times. While using shared hosts and reusing keys are inadvisable 182 for other reasons, it's a better practice to avoid the exposure. 183 184 OpenSSL has code in their source repository for derandomization 185 and reduction in timing leaks that we've eagerly wanted to use for a 186 long time, but this functionality has still not made its 187 way into a released version of OpenSSL. Libsecp256k1 achieves 188 significantly stronger protection: As far as we're aware this is 189 the only deployed implementation of constant time signing for 190 the curve Bitcoin uses and we have reason to believe that 191 libsecp256k1 is better tested and more thoroughly reviewed 192 than the implementation in OpenSSL. 193 194 [1] https://eprint.iacr.org/2014/161.pdf 195 196 Watch-only wallet support 197 ------------------------- 198 199 The wallet can now track transactions to and from wallets for which you know 200 all addresses (or scripts), even without the private keys. 201 202 This can be used to track payments without needing the private keys online on a 203 possibly vulnerable system. In addition, it can help for (manual) construction 204 of multisig transactions where you are only one of the signers. 205 206 One new RPC, `importaddress`, is added which functions similarly to 207 `importprivkey`, but instead takes an address or script (in hexadecimal) as 208 argument. After using it, outputs credited to this address or script are 209 considered to be received, and transactions consuming these outputs will be 210 considered to be sent. 211 212 The following RPCs have optional support for watch-only: 213 `getbalance`, `listreceivedbyaddress`, `listreceivedbyaccount`, 214 `listtransactions`, `listaccounts`, `listsinceblock`, `gettransaction`. See the 215 RPC documentation for those methods for more information. 216 217 Compared to using `getrawtransaction`, this mechanism does not require 218 `-txindex`, scales better, integrates better with the wallet, and is compatible 219 with future block chain pruning functionality. It does mean that all relevant 220 addresses need to added to the wallet before the payment, though. 221 222 Consensus library 223 ----------------- 224 225 Starting from 0.10.0, the Bitcoin Core distribution includes a consensus library. 226 227 The purpose of this library is to make the verification functionality that is 228 critical to Bitcoin's consensus available to other applications, e.g. to language 229 bindings such as [python-bitcoinlib](https://pypi.python.org/pypi/python-bitcoinlib) or 230 alternative node implementations. 231 232 This library is called `libbitcoinconsensus.so` (or, `.dll` for Windows). 233 Its interface is defined in the C header [bitcoinconsensus.h](https://github.com/bitcoin/bitcoin/blob/0.10/src/script/bitcoinconsensus.h). 234 235 In 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 238 correctly spends the passed scriptPubKey under additional constraints indicated by flags 239 - `bitcoinconsensus_version` returns the API version, currently at an experimental `0` 240 241 The functionality is planned to be extended to e.g. UTXO management in upcoming releases, but the interface 242 for existing methods should remain stable. 243 244 Standard script rules relaxed for P2SH addresses 245 ------------------------------------------------ 246 247 The IsStandard() rules have been almost completely removed for P2SH 248 redemption scripts, allowing applications to make use of any valid 249 script type, such as "n-of-m OR y", hash-locked oracle addresses, etc. 250 While the Bitcoin protocol has always supported these types of script, 251 actually using them on mainnet has been previously inconvenient as 252 standard Bitcoin Core nodes wouldn't relay them to miners, nor would 253 most miners include them in blocks they mined. 254 255 bitcoin-tx 256 ---------- 257 258 It has been observed that many of the RPC functions offered by bitcoind are 259 "pure functions", and operate independently of the bitcoind wallet. This 260 included many of the RPC "raw transaction" API functions, such as 261 createrawtransaction. 262 263 bitcoin-tx is a newly introduced command line utility designed to enable easy 264 manipulation of bitcoin transactions. A summary of its operation may be 265 obtained via "bitcoin-tx --help" Transactions may be created or signed in a 266 manner similar to the RPC raw tx API. Transactions may be updated, deleting 267 inputs or outputs, or appending new inputs and outputs. Custom scripts may be 268 easily composed using a simple text notation, borrowed from the bitcoin test 269 suite. 270 271 This tool may be used for experimenting with new transaction types, signing 272 multi-party transactions, and many other uses. Long term, the goal is to 273 deprecate and remove "pure function" RPC API calls, as those do not require a 274 server round-trip to execute. 275 276 Other utilities "bitcoin-key" and "bitcoin-script" have been proposed, making 277 key and script operations easily accessible via command line. 278 279 Mining and relay policy enhancements 280 ------------------------------------ 281 282 Bitcoin Core's block templates are now for version 3 blocks only, and any mining 283 software relying on its `getblocktemplate` must be updated in parallel to use 284 libblkmaker either version 0.4.2 or any version from 0.5.1 onward. 285 If you are solo mining, this will affect you the moment you upgrade Bitcoin 286 Core, which must be done prior to BIP66 achieving its 951/1001 status. 287 If you are mining with the stratum mining protocol: this does not affect you. 288 If you are mining with the getblocktemplate protocol to a pool: this will affect 289 you at the pool operator's discretion, which must be no later than BIP66 290 achieving its 951/1001 status. 291 292 The `prioritisetransaction` RPC method has been added to enable miners to 293 manipulate the priority of transactions on an individual basis. 294 295 Bitcoin Core now supports BIP 22 long polling, so mining software can be 296 notified immediately of new templates rather than having to poll periodically. 297 298 Support for BIP 23 block proposals is now available in Bitcoin Core's 299 `getblocktemplate` method. This enables miners to check the basic validity of 300 their next block before expending work on it, reducing risks of accidental 301 hardforks or mining invalid blocks. 302 303 Two new options to control mining policy: 304 - `-datacarrier=0/1` : Relay and mine "data carrier" (OP_RETURN) transactions 305 if this is 1. 306 - `-datacarriersize=n` : Maximum size, in bytes, we consider acceptable for 307 "data carrier" outputs. 308 309 The relay policy has changed to more properly implement the desired behavior of not 310 relaying free (or very low fee) transactions unless they have a priority above the 311 AllowFreeThreshold(), in which case they are relayed subject to the rate limiter. 312 313 BIP 66: strict DER encoding for signatures 314 ------------------------------------------ 315 316 Bitcoin Core 0.10 implements BIP 66, which introduces block version 3, and a new 317 consensus rule, which prohibits non-DER signatures. Such transactions have been 318 non-standard since Bitcoin v0.8.0 (released in February 2013), but were 319 technically still permitted inside blocks. 320 321 This change breaks the dependency on OpenSSL's signature parsing, and is 322 required if implementations would want to remove all of OpenSSL from the 323 consensus code. 324 325 The same miner-voting mechanism as in BIP 34 is used: when 751 out of a 326 sequence of 1001 blocks have version number 3 or higher, the new consensus 327 rule becomes active for those blocks. When 951 out of a sequence of 1001 328 blocks have version number 3 or higher, it becomes mandatory for all blocks. 329 330 Backward compatibility with current mining software is NOT provided, thus miners 331 should read the first paragraph of "Mining and relay policy enhancements" above. 332 333 0.10.0 Change log 334 ================= 335 336 Detailed release notes follow. This overview includes changes that affect external 337 behavior, not code moves, refactors or string updates. 338 339 RPC: 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 383 Command-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 404 Block 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 440 P2P 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 471 Validation: 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 488 Build 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 506 Wallet: 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 522 GUI: 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 564 Tests: 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 624 Miscellaneous: 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 655 Credits 656 ======= 657 658 Thanks 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 761 As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). 762