Commit | Line | Data |
---|---|---|
15facb4a WL |
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 |