Advertisement
StephenReed

Bitcoin Core Release 0.10.0

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