Bitcoin Core version 0.12.0 is now available from:
https://bitcoin.org/bin/bitcoin-core-0.12.0/
This is a new major version release, bringing new features and other improvements.
Please report bugs using the issue tracker at github:
Bitcoin.org is a community funded project, donations are appreciated and used to improve the website.
Donate to Bitcoin.org
Use this QR code or address below
23 February 2016
NODE_BLOOM service bitBitcoin Core version 0.12.0 is now available from:
https://bitcoin.org/bin/bitcoin-core-0.12.0/
This is a new major version release, bringing new features and other improvements.
Please report bugs using the issue tracker at github:
If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux).
Because release 0.10.0 and later makes use of headers-first synchronization and parallel block download (see further), the block files and databases are not backwards-compatible with pre-0.10 versions of Bitcoin Core or other software:
Blocks will be stored on disk out of order (in the order they are received, really), which makes it incompatible with some tools or other programs. Reindexing using earlier versions will also not work anymore as a result of this.
The block index database will now hold headers for which no block is stored on disk, which earlier versions won’t support.
If you want to be able to downgrade smoothly, make a backup of your entire data directory. Without this your node will need start syncing (or importing from bootstrap.dat) anew afterwards. It is possible that the data from a completely synchronised 0.10 node may be usable in older versions as-is, but this is not supported and may break as soon as the older version attempts to reindex.
This does not affect wallet forward or backward compatibility.
Because release 0.12.0 and later will obfuscate the chainstate on every fresh sync or reindex, the chainstate is not backwards-compatible with pre-0.12 versions of Bitcoin Core or other software.
If you want to downgrade after you have done a reindex with 0.12.0 or later, you will need to reindex when you first start Bitcoin Core version 0.11 or earlier.
ECDSA signatures inside Bitcoin transactions now use validation using libsecp256k1 instead of OpenSSL.
Depending on the platform, this means a significant speedup for raw signature validation speed. The advantage is largest on x86_64, where validation is over five times faster. In practice, this translates to a raw reindexing and new block validation times that are less than half of what it was before.
Libsecp256k1 has undergone very extensive testing and validation.
A side effect of this change is that libconsensus no longer depends on OpenSSL.
A major part of the outbound traffic is caused by serving historic blocks to other nodes in initial block download state.
It is now possible to reduce the total upload traffic via the -maxuploadtarget
parameter. This is not a hard limit but a threshold to minimize the outbound
traffic. When the limit is about to be reached, the uploaded data is cut by not
serving historic blocks (blocks older than one week).
Moreover, any SPV peer is disconnected when they request a filtered block.
This option can be specified in MiB per day and is turned off by default
(-maxuploadtarget=0).
The recommended minimum is 144 * MAX_BLOCK_SIZE (currently 144MB) per day.
Whitelisted peers will never be disconnected, although their traffic counts for calculating the target.
A more detailed documentation about keeping traffic low can be found in /doc/reduce-traffic.md.
Between compatible peers, [BIP 130] (https://github.com/bitcoin/bips/blob/master/bip-0130.mediawiki) direct headers announcement is used. This means that blocks are advertised by announcing their headers directly, instead of just announcing the hash. In a reorganization, all new headers are sent, instead of just the new tip. This can often prevent an extra roundtrip before the actual block is downloaded.
With this change, pruning nodes are now able to relay new blocks to compatible peers.
Previous versions of Bitcoin Core had their mempool limited by checking a transaction’s fees against the node’s minimum relay fee. There was no upper bound on the size of the mempool and attackers could send a large number of transactions paying just slighly more than the default minimum relay fee to crash nodes with relatively low RAM. A temporary workaround for previous versions of Bitcoin Core was to raise the default minimum relay fee.
Bitcoin Core 0.12 will have a strict maximum size on the mempool. The
default value is 300 MB and can be configured with the -maxmempool
parameter. Whenever a transaction would cause the mempool to exceed
its maximum size, the transaction that (along with in-mempool descendants) has
the lowest total feerate (as a package) will be evicted and the node’s effective
minimum relay feerate will be increased to match this feerate plus the initial
minimum relay feerate. The initial minimum relay feerate is set to
1000 satoshis per kB.
Bitcoin Core 0.12 also introduces new default policy limits on the length and
size of unconfirmed transaction chains that are allowed in the mempool
(generally limiting the length of unconfirmed chains to 25 transactions, with a
total size of 101 KB). These limits can be overriden using command line
arguments; see the extended help (--help -help-debug) for more information.
It is now possible to replace transactions in the transaction memory pool of
Bitcoin Core 0.12 nodes. Bitcoin Core will only allow replacement of
transactions which have any of their inputs’ nSequence number set to less
than 0xffffffff - 1. Moreover, a replacement transaction may only be
accepted when it pays sufficient fee, as described in [BIP 125]
(https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki).
Transaction replacement can be disabled with a new command line option,
-mempoolreplacement=0. Transactions signaling replacement under BIP125 will
still be allowed into the mempool in this configuration, but replacements will
be rejected. This option is intended for miners who want to continue the
transaction selection behavior of previous releases.
The -mempoolreplacement option is not recommended for wallet users seeking
to avoid receipt of unconfirmed opt-in transactions, because this option does
not prevent transactions which are replaceable under BIP 125 from being accepted
(only subsequent replacements, which other nodes on the network that implement
BIP 125 are likely to relay and mine). Wallet users wishing to detect whether
a transaction is subject to replacement under BIP 125 should instead use the
updated RPC calls gettransaction and listtransactions, which now have an
additional field in the output indicating if a transaction is replaceable under
BIP125 (“bip125-replaceable”).
Note that the wallet in Bitcoin Core 0.12 does not yet have support for creating transactions that would be replaceable under BIP 125.
When no -rpcpassword is specified, the daemon now uses a special ‘cookie’
file for authentication. This file is generated with random content when the
daemon starts, and deleted when it exits. Its contents are used as
authentication token. Read access to this file controls who can access through
RPC. By default it is stored in the data directory but its location can be
overridden with the option -rpccookiefile.
This is similar to Tor’s CookieAuthentication: see https://www.torproject.org/docs/tor-manual.html.en
This allows running bitcoind without having to do any manual configuration.
Previously OP_RETURN outputs with a payload were only relayed and mined if they had a single pushdata. This restriction has been lifted to allow any combination of data pushes and numeric constant opcodes (OP_1 to OP_16) after the OP_RETURN. The limit on OP_RETURN output size is now applied to the entire serialized scriptPubKey, 83 bytes by default. (the previous 80 byte default plus three bytes overhead)
Bitcoin Core has a heuristic ‘priority’ based on coin value and age. This
calculation is used for relaying of transactions which do not pay the
minimum relay fee, and can be used as an alternative way of sorting
transactions for mined blocks. Bitcoin Core will relay transactions with
insufficient fees depending on the setting of -limitfreerelay=<r> (default:
r=15 kB per minute) and -blockprioritysize=<s>.
In Bitcoin Core 0.12, when mempool limit has been reached a higher minimum relay fee takes effect to limit memory usage. Transactions which do not meet this higher effective minimum relay fee will not be relayed or mined even if they rank highly according to the priority heuristic.
The mining of transactions based on their priority is also now disabled by
default. To re-enable it, simply set -blockprioritysize=<n> where is the size
in bytes of your blocks to reserve for these transactions. The old default was
50k, so to retain approximately the same policy, you would set
-blockprioritysize=50000.
Additionally, as a result of computational simplifications, the priority value used for transactions received with unconfirmed inputs is lower than in prior versions due to avoiding recomputing the amounts as input transactions confirm.
External miner policy set via the prioritisetransaction RPC to rank
transactions already in the mempool continues to work as it has previously.
Note, however, that if mining priority transactions is left disabled, the
priority delta will be ignored and only the fee metric will be effective.
This internal automatic prioritization handling is being considered for removal entirely in Bitcoin Core 0.13, and it is at this time undecided whether the more accurate priority calculation for chained unconfirmed transactions will be restored. Community direction on this topic is particularly requested to help set project priorities.
Starting with Tor version 0.2.7.1 it is possible, through Tor’s control socket API, to create and destroy ‘ephemeral’ hidden services programmatically. Bitcoin Core has been updated to make use of this.
This means that if Tor is running (and proper authorization is available), Bitcoin Core automatically creates a hidden service to listen on, without manual configuration. Bitcoin Core will also use Tor automatically to connect to other .onion nodes if the control socket can be successfully opened. This will positively affect the number of available .onion nodes and their usage.
This new feature is enabled by default if Bitcoin Core is listening, and
a connection to Tor can be made. It can be configured with the -listenonion,
-torcontrol and -torpassword settings. To show verbose debugging
information, pass -debug=tor.
Bitcoind can now (optionally) asynchronously notify clients through a ZMQ-based PUB socket of the arrival of new transactions and blocks. This feature requires installation of the ZMQ C API library 4.x and configuring its use through the command line or configuration file. Please see docs/zmq.md for details of operation.
Various improvements have been made to how the wallet calculates transaction fees.
Users can decide to pay a predefined fee rate by setting -paytxfee=<n>
(or settxfee <n> rpc during runtime). A value of n=0 signals Bitcoin
Core to use floating fees. By default, Bitcoin Core will use floating
fees.
Based on past transaction data, floating fees approximate the fees
required to get into the mth block from now. This is configurable
with -txconfirmtarget=<m> (default: 2).
Sometimes, it is not possible to give good estimates, or an estimate
at all. Therefore, a fallback value can be set with -fallbackfee=<f>
(default: 0.0002 BTC/kB).
At all times, Bitcoin Core will cap fees at -maxtxfee=<x> (default:
0.10) BTC.
Furthermore, Bitcoin Core will never create transactions paying less than
the current minimum relay fee.
Finally, a user can set the minimum fee rate for all transactions with
-mintxfee=<i>, which defaults to 1000 satoshis per kB.
The wallet will now report a negative number for confirmations that indicates
how deep in the block chain the conflict is found. For example, if a transaction
A has 5 confirmations and spends the same input as a wallet transaction B, B
will be reported as having -5 confirmations. If another wallet transaction C
spends an output from B, it will also be reported as having -5 confirmations.
To detect conflicts with historical transactions in the chain a one-time
-rescan may be needed.
Unlike earlier versions, unconfirmed but non-conflicting transactions will never
get a negative confirmation count. They are not treated as spendable unless
they’re coming from ourself (change) and accepted into our local mempool,
however. The new “trusted” field in the listtransactions RPC output
indicates whether outputs of an unconfirmed transaction are considered
spendable.
Previously, every wallet transaction stored a Merkle branch to prove its presence in blocks. This wasn’t being used for more than an expensive sanity check. Since 0.12, these are no longer stored. When loading a 0.12 wallet into an older version, it will automatically rescan to avoid failed checks.
With 0.12 it is possible to use wallet functionality in pruned mode. This can reduce the disk usage from currently around 60 GB to around 2 GB.
However, rescans as well as the RPCs importwallet, importaddress,
importprivkey are disabled.
To enable block pruning set prune=<N> on the command line or in
bitcoin.conf, where N is the number of MiB to allot for
raw block & undo data.
A value of 0 disables pruning. The minimal value above 0 is 550. Your wallet is as secure with high values as it is with low ones. Higher values merely ensure that your node will not shut down upon blockchain reorganizations of more than 2 days - which are unlikely to happen in practice. In future releases, a higher value may also help the network as a whole: stored blocks could be served to other nodes.
For further information about pruning, you may also consult the release notes of v0.11.0.
NODE_BLOOM service bitSupport for the NODE_BLOOM service bit, as described in BIP
111, has been
added to the P2P protocol code.
BIP 111 defines a service bit to allow peers to advertise that they support bloom filters (such as used by SPV clients) explicitly. It also bumps the protocol version to allow peers to identify old nodes which allow bloom filtering of the connection despite lacking the new service bit.
In this version, it is only enforced for peers that send protocol versions
>=70011. For the next major version it is planned that this restriction will be
removed. It is recommended to update SPV clients to check for the NODE_BLOOM
service bit for nodes that report versions newer than 70011.
Command line options are now parsed strictly in the order in which they are
specified. It used to be the case that -X -noX ends up, unintuitively, with X
set, as -X had precedence over -noX. This is no longer the case. Like for
other software, the last specified value for an option will hold.
Monetary amounts can be provided as strings. This means that for example the argument to sendtoaddress can be “0.0001” instead of 0.0001. This can be an advantage if a JSON library insists on using a lossy floating point type for numbers, which would be dangerous for monetary amounts.
The asm property of each scriptSig now contains the decoded signature hash
type for each signature that provides a valid defined hash type.
OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by BIP 65
The following items contain assembly representations of scriptSig signatures and are affected by this change:
getrawtransactiondecoderawtransactiondecodescript/rest/tx/ (JSON format)/rest/block/ (JSON format when including extended tx details)bitcoin-tx -jsonFor example, the scriptSig.asm property of a transaction input that
previously showed an assembly representation of:
304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c509001 400000 OP_NOP2
now shows as:
304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c5090[ALL] 400000 OP_CHECKLOCKTIMEVERIFY
Note that the output of the RPC decodescript did not change because it is
configured specifically to process scriptPubKey and not scriptSig scripts.
SSL support for RPC, previously enabled by the option rpcssl has been dropped
from both the client and the server. This was done in preparation for removing
the dependency on OpenSSL for the daemon completely.
Trying to use rpcssl will result in an error:
Error: SSL mode for RPC (-rpcssl) is no longer supported.
If you are one of the few people that relies on this feature, a flexible
migration path is to use stunnel. This is an utility that can tunnel
arbitrary TCP connections inside SSL. On e.g. Ubuntu it can be installed with:
sudo apt-get install stunnel4
Then, to tunnel a SSL connection on 28332 to a RPC server bound on localhost on port 18332 do:
stunnel -d 28332 -r 127.0.0.1:18332 -p stunnel.pem -P ''
It can also be set up system-wide in inetd style.
Another way to re-attain SSL would be to setup a httpd reverse proxy. This solution would allow the use of different authentication, loadbalancing, on-the-fly compression and caching. A sample config for apache2 could look like:
Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
<Location /bitcoinrpc>
ProxyPass http://127.0.0.1:8332/
ProxyPassReverse http://127.0.0.1:8332/
# optional enable digest auth
# AuthType Digest
# ...
# optional bypass bitcoind rpc basic auth
# RequestHeader set Authorization "Basic <hash>"
# get the <hash> from the shell with: base64 <<< bitcoinrpc:<password>
</Location>
# Or, balance the load:
# ProxyPass / balancer://balancer_cluster_name
</VirtualHost>
The mining code in 0.12 has been optimized to be significantly faster and use less memory. As part of these changes, consensus critical calculations are cached on a transaction’s acceptance into the mempool and the mining code now relies on the consistency of the mempool to assemble blocks. However all blocks are still tested for validity after assembly.
The list of banned peers is now stored on disk rather than in memory.
Restarting bitcoind will no longer clear out the list of banned peers; instead
a new RPC call (clearbanned) can be used to manually clear the list. The new
setban RPC call can also be used to manually ban or unban a peer.
Detailed release notes follow. This overview includes changes that affect behavior, not code moves, refactors and string updates. For convenience in locating the code changes and accompanying discussion, both the pull request and git merge commit are mentioned.
466f0ea Convert entire source tree from json_spirit to UniValue (Jonas Schnelli)d38cd47 fix rpcmining/getblocktemplate univalue transition logic error (Jonas Schnelli)643114f Don’t go through double in AmountFromValue and ValueFromAmount (Wladimir J. van der Laan)ebab5d3 Fix univalue handling of \u0000 characters. (Daniel Kraft)f3d4dbb Fix getbalance * 0 (Tom Harding)5ebe7db Add paytxfee and errors JSON fields where appropriate (Stephen)754aae5 New RPC command disconnectnode (Alex van der Peet)0abfa8a Add setban/listbanned RPC commands (Jonas Schnelli)7ecdcd9 rpcban fixes (Jonas Schnelli)5753988 rpc: make gettxoutsettinfo run lock-free (Wladimir J. van der Laan)247b914 Return all available information via RPC call “validateaddress” (dexX7)c3f0490 UniValue: don’t escape solidus, keep espacing of reverse solidus (Jonas Schnelli)6bcb0a2 Show softfork status in getblockchaininfo (Wladimir J. van der Laan)726e286 Add getblockheader RPC call (Peter Todd)d6db115 Fix null id in RPC response during startup (Forrest Voight)943b322 [REST] JSON support for /rest/headers (Jonas Schnelli)c52e8b3 rpc: Accept scientific notation for monetary amounts in JSON (Wladimir J. van der Laan)fd5dfda rpc: Implement random-cookie based authentication (Wladimir J. van der Laan)3c923e8 Include pruned state in chaininfo.json (Simon Males)bfd807f rpc: Avoid unnecessary parsing roundtrip in number formatting, fix locale issue (Wladimir J. van der Laan)240b30e rpc: Accept strings in AmountFromValue (Wladimir J. van der Laan)6bb2805 Add OP_RETURN support in createrawtransaction RPC call, add tests. (paveljanik)6feeec1 [REST] Add memory pool API (paveljanik)da9beb2 Stop parsing JSON after first finished construct. (Daniel Kraft)9aa9099 libevent-based http server (Wladimir J. van der Laan)bbc2b39 Report minimum ping time in getpeerinfo (Matt Corallo)cd381d7 Simplify logic of REST request suffix parsing. (Daniel Kraft)5e21388 libevent http fixes (Wladimir J. van der Laan)48efbdb show scriptSig signature hash types in transaction decodes. fixes #3166 (mruddy)1a9f19a Make HTTP server shutdown more graceful (Wladimir J. van der Laan)0fbfc51 http: Restrict maximum size of http + headers (Wladimir J. van der Laan)bf7c195 [RPC] Add optional locktime to createrawtransaction (Tom Harding)26f5b34 rpc: Add maxmempool and effective min fee to getmempoolinfo (Wladimir J. van der Laan)92701b3 Fix crash in validateaddress with -disablewallet (Wladimir J. van der Laan)755b4ba Expose GUI labels in RPC as comments (Luke-Jr)dbd2c13 http: speed up shutdown (Wladimir J. van der Laan)36baa9f Remove LOCK(cs_main) from decodescript (Peter Todd)972bf9c add (max)uploadtarget infos to getnettotals RPC help (Jonas Schnelli)31de241 Add mediantime to getblockchaininfo (Peter Todd)f91e29f http: add Boost 1.49 compatibility (Wladimir J. van der Laan)be281d8 [Net]Add -enforcenodebloom option (Patrick Strateman)438ee59 RPC: Added additional config option for multiple RPC users. (Gregory Sanders)c143c49 [RPC] Add transaction size to JSON output (Nikita Zhavoronkov)9afbd96 Change default block priority size to 0 (Alex Morcos)c0c08c7 rpc: Don’t translate warning messages (Wladimir J. van der Laan)fd4bd50 Add RPC call abandontransaction (Alex Morcos)e25b158 RPC: indicate which transactions are replaceable (Suhas Daftuar)b2f2b85 rpc: Add WWW-Authenticate header to 401 response (Wladimir J. van der Laan)9cb31e6 net.h fix spelling: misbeha{b,v}ing (Matt)8d05ec7 Allow user to use -debug=1 to enable all debugging (lpescher)4452205 Added -whiteconnections=<n> option (Josh Lehan)10ac38e Fix argument parsing oddity with -noX (Wladimir J. van der Laan)c9c017a Give a better error message if system clock is bad (Casey Rodarmor)c384800 implement uacomment config parameter which can add comments to user agent as per BIP-0014 (Pavol Rusnak)a3babc8 Sanitize uacomment (MarcoFalke)3b2d37c Changed logging to make -logtimestamps to work also for -printtoconsole (arnuschky)2cd020d alias -h for -help (Daniel Cousens)7939164 Introduce -maxuploadtarget (Jonas Schnelli)2b62551 Debug: Add option for microsecond precision in debug.log (Suhas Daftuar)e06c14f Support -checkmempool=N, which runs checks once every N transactions (Pieter Wuille)d482c0a Make -checkmempool=1 not fail through int32 overflow (Pieter Wuille)b632145 Add -blocksonly option (Patrick Strateman)a344880 0.12: Backport -bytespersigop option (Luke-Jr)da83ecd Add option -permitrbf to set transaction replacement policy (Wladimir J. van der Laan)b16b5bc Add missing options help (MarcoFalke)c76bfff Rename permitrbf to mempoolreplacement and provide minimal string-list forward compatibility (Luke-Jr)f00b623 Remove P2SH coinbase flag, no longer interesting (Luke-Jr)9c93ee5 Explicitly set tx.nVersion for the genesis block and mining tests (Mark Friedenbach)3a1d3e8 Fix removing of orphan transactions (Alex Morcos)dd8fe82 Prune: Support noncontiguous block files (Adam Weiss)41076aa Mempool only CHECKLOCKTIMEVERIFY (BIP65) verification, unparameterized version (Peter Todd)d0a10c1 acceptnonstdtxn option to skip (most) “non-standard transaction” checks, for testnet/regtest only (Luke-Jr)7cdefb9 Implement accurate memory accounting for mempool (Pieter Wuille)24ce77d Exempt unspendable transaction outputs from dust checks (dexX7)a0625b8 Add absurdly high fee message to validation state (Shaul Kfir)2f746c6 Prevent block.nTime from decreasing (Mark Friedenbach)e545371 Handle no chain tip available in InvalidChainFound() (Ross Nicoll)39ddaeb Handle leveldb::DestroyDB() errors on wipe failure (Adam Weiss)b0ce450 Mempool package tracking (Suhas Daftuar)82d2aef Fix mempool packages (Suhas Daftuar)4f44530 use CBlockIndex instead of uint256 for UpdatedBlockTip signal (Jonas Schnelli)4fac576 Obfuscate chainstate (James O’Beirne)9caaf6e Unobfuscate chainstate data in CCoinsViewDB::GetStats (James O’Beirne)3b20e23 Limit mempool by throwing away the cheapest txn and setting min relay fee to it (Matt Corallo)38369dd fix locking issue with new mempool limiting (Jonas Schnelli)8f3b3cd Always clean up manual transaction prioritization (Casey Rodarmor)d0badb9 Fix chainstate serialized_size computation (Pieter Wuille)ff057f4 BIP-113: Mempool-only median time-past as endpoint for lock-time calculations (Mark Friedenbach)3038eb6 Restores mempool only BIP113 enforcement (Gregory Maxwell)de7d459 Benchmark sanity checks and fork checks in ConnectBlock (Matt Corallo)eb6172a Make sigcache faster, more efficient, larger (Pieter Wuille)38ed190 Policy: Lower default limits for tx chains (Alex Morcos)73fa5e6 ModifyNewCoins saves database lookups (Alex Morcos)05d5918 Alter assumptions in CCoinsViewCache::BatchWrite (Alex Morcos)0e93586 nSequence-based Full-RBF opt-in (Peter Todd)eb77416 Lower bound priority (Alex Morcos)2ef5ffa [Mempool] Improve removal of invalid transactions after reorgs (Suhas Daftuar)4077ad2 Rewrite CreateNewBlock (Alex Morcos)bdda4d5 Remove UTXO cache entries when the tx they were added for is removed/does not enter mempool (Matt Corallo)12c469b [Mempool] Fix mempool limiting and replace-by-fee for PrioritiseTransaction (Suhas Daftuar)76de36f Report non-mandatory script failures correctly (Pieter Wuille)e08b7cb Mark blocks with too many sigops as failed (Suhas Daftuar)f4b2ce8 Get rid of inaccurate ScriptSigArgsExpected (Pieter Wuille)88a7ead Ignore getheaders requests when not synced (Suhas Daftuar)9d60602 Be stricter in processing unrequested blocks (Suhas Daftuar)8ccc07c Use best header chain timestamps to detect partitioning (Gavin Andresen)a903ad7 make CAddrMan::size() return the correct type of size_t (Diapolo)40400d5 Improve proxy initialization (continues #4871) (Wladimir J. van der Laan, Diapolo)66e5465 banlist.dat: store banlist on disk (Jonas Schnelli)1a2de32 Test whether created sockets are select()able (Pieter Wuille)219b916 Keep track of recently rejected transactions with a rolling bloom filter (cont’d) (Peter Todd)70ec975 Fix masking of irrelevant bits in address groups. (Alex Morcos)ea19c2b Improve addrman Select() performance when buckets are nearly empty (Pieter Wuille)af9305a add support for miniupnpc api version 14 (Pavel Vasin)69dc5b5 Connection slot exhaustion DoS mitigation (Patrick Strateman)536207f net: correctly initialize nMinPingUsecTime (Wladimir J. van der Laan)0c27795 Add NODE_BLOOM service bit and bump protocol version (Matt Corallo)999c8be Relay blocks when pruning (Suhas Daftuar)cf9bb11 In (strCommand == “tx”), return if AlreadyHave() (Tom Harding)2f71b07 Always allow getheaders from whitelisted peers (Wladimir J. van der Laan)bd629d7 net: Automatically create hidden service, listen on Tor (Wladimir J. van der Laan)9ffc687 don’t enforce maxuploadtarget’s disconnect for whitelisted peers (Jonas Schnelli)c322652 Net: Improve blocks only mode. (Patrick Strateman)d6454f6 Connect to Tor hidden services by default (when listening on Tor) (Peter Todd)c894fbb Fix and improve relay from whitelisted peers (Pieter Wuille)5d5ef3a Direct headers announcement (rebase of #6494) (Pieter Wuille)1b5118b Prevent peer flooding inv request queue (redux) (redux) (Gregory Maxwell)6ba25d2 Disconnect on mempool requests from peers when over the upload limit. (Gregory Maxwell)f31955d Replace setInventoryKnown with a rolling bloom filter (rebase of #7100) (Pieter Wuille)82aff88 Don’t do mempool lookups for “mempool” command without a filter (Matt Corallo)44fef99 net: Fix sent reject messages for blocks and transactions (Wladimir J. van der Laan)8fc174a net: Add and document network messages in protocol.h (Wladimir J. van der Laan)10b88be Replace global trickle node with random delays (Pieter Wuille)cb83beb net: Hardcoded seeds update January 2016 (Wladimir J. van der Laan)e2d9a58 Do not absolutely protect local peers; decide group ties based on time (Gregory Maxwell)86755bc Add whitelistforcerelay to control forced relaying. [#7099 redux] (Gregory Maxwell)e16f5b4 Ensure headers count is correct (Suhas Daftuar)8d9f0a6 Reduce checkpoints’ effect on consensus. (Pieter Wuille)24f2489 Bugfix: Don’t check the genesis block header before accepting it (Jorge Timón)d7ada03 Use real number of cores for default -par, ignore virtual cores (Wladimir J. van der Laan)87f37e2 Make logging for validation optional (Wladimir J. van der Laan)2a1090d CHECKLOCKTIMEVERIFY (BIP65) IsSuperMajority() soft-fork (Peter Todd)54e8bfe Skip BIP 30 verification where not necessary (Alex Morcos)e54ebbf Switch to libsecp256k1-based ECDSA validation (Pieter Wuille)61457c2 Switch to a constant-space Merkle root/branch algorithm. (Pieter Wuille)327291a Add pre-allocated vector type and use it for CScript (Pieter Wuille)889e5b3 Correctly report high-S violations (Pieter Wuille)0e4f2a0 build: disable optional use of gmp in internal secp256k1 build (Wladimir J. van der Laan)87406aa [OSX] revert renaming of Bitcoin-Qt.app and use CFBundleDisplayName (partial revert of #6116) (Jonas Schnelli)9d67b10 build/gitian misc updates (Cory Fields)d4565b6 gitian: Use the new bitcoin-detached-sigs git repo for OSX signatures (Cory Fields)d4a910c Add autogen.sh to source tarball. (randy-waterhouse)1ae3196 depends: non-qt bumps for 0.12 (Cory Fields)059b352 Preserve user-passed CXXFLAGS with –enable-debug (Gavin Andresen)fee6554 Misc build fixes (Cory Fields)ef4945f Include bitcoin-tx binary on Debian/Ubuntu (Zak Wilcox)4862708 depends: bump miniupnpc and ccache (Michael Ford)ae69a75 [depends] Latest config.guess and config.sub (Michael Ford)193f7b5 build: If both Qt4 and Qt5 are installed, use Qt5 (Wladimir J. van der Laan)348b281 build: Set osx permissions in the dmg to make Gatekeeper happy (Cory Fields)eccd671 [Depends] Bump Boost, miniupnpc, ccache & zeromq (Michael Ford)aa26ee0 Add security/export checks to gitian and fix current failures (Cory Fields)87550ee Fix off-by-one error w/ nLockTime in the wallet (Peter Todd)ac5476e re-enable wallet in autoprune (Jonas Schnelli)9e6c33b Delay initial pruning until after wallet init (Adam Weiss)91389e5 fundrawtransaction (Matt Corallo)ddd8d80 Implement watchonly support in fundrawtransaction (Matt Corallo)0f0f323 Fix crash when mining with empty keypool. (Daniel Kraft)4939eab Fix locking in GetTransaction. (Alex Morcos)4dbd43e Enable wallet key imports without rescan in pruned mode. (Gregory Maxwell)5b77244 Do not store Merkle branches in the wallet. (Pieter Wuille)12a7712 Clean up change computation in CreateTransaction. (Daniel Kraft)48b5b84 Reject invalid pubkeys when reading ckey items from the wallet. (Gregory Maxwell)e0a5ef8 Fix fundrawtransaction handling of includeWatching (Peter Todd)616d61b Optimisation: Store transaction list order in memory rather than compute it every need (Luke-Jr)e92377f Improve usage of fee estimation code (Alex Morcos)a775182 [wallet, rpc tests] Fix settxfee, paytxfee (MarcoFalke)30c2d8c Keep track of explicit wallet conflicts instead of using mempool (Pieter Wuille)9490bd7 [Wallet] Improve minimum absolute fee GUI options (Jonas Schnelli)83f06ca Take the training wheels off anti-fee-sniping (Peter Todd)96e8d12 Issue#1643: Coinselection prunes extraneous inputs from ApproximateBestSubset (Murch)06c6a58 Checks for null data transaction before issuing error to debug.log (Andy Craze)a36d79b Add sane fallback for fee estimation (Alex Morcos)ff9b610 Add regression test for vValue sort order (MarcoFalke)4707797 Make sure conflicted wallet tx’s update balances (Alex Morcos)621bbd8 [walletdb] Fix syntax error in key parser (MarcoFalke)00ec73e wallet: Ignore MarkConflict if block hash is not known (Wladimir J. van der Laan)1329963 Update the wallet best block marker before pruning (Pieter Wuille)c57e12a disconnect peers from peers tab via context menu (Diapolo)ab0ec67 extend rpc console peers tab (Diapolo)1369d69 use CHashWriter also in SignVerifyMessageDialog (Pavel Vasin)9848d42 Introduce PlatformStyle (Wladimir J. van der Laan)100c9d3 cleanup icons (MarcoFalke)0c465f5 allow users to set -onion via GUI (Diapolo)c0f66ce show client user agent in debug window (Diapolo)878ea69 Disallow duplicate windows. (Casey Rodarmor)6f55cdd add verifySize() function to PaymentServer (Diapolo)ca5e2a1 minor optimisations in peertablemodel (Diapolo)e59d2a8 allow banning and unbanning over UI->peers table (Jonas Schnelli)e04b2fa Pop debug window in foreground when opened twice (MarcoFalke)c702521 Use monospace font (MarcoFalke)3694b74 Update coin control and smartfee labels (MarcoFalke)814697c add shortcurts for debug-/console-window (Jonas Schnelli)03403d8 Use maxTxFee instead of 10000000 (MarcoFalke)a190777 ui: Add “Copy raw transaction data” to transaction list context menu (Wladimir J. van der Laan)776848a simple mempool info in debug window (Jonas Schnelli)26af1ac add startup option to reset Qt settings (Jonas Schnelli)2a94cd6 Call init’s parameter interaction before we create the UI options model (Jonas Schnelli)96b8025 reduce cs_main locks during tip update, more fluently update UI (Jonas Schnelli)f43c2f9 Add “NODE_BLOOM” to guiutil so that peers don’t get UNKNOWN[4] (Matt Corallo)5cadf3e fix coincontrol update issue when deleting a send coins entry (Jonas Schnelli)1320300 Intro: Display required space (MarcoFalke)9265e89 quickfix for RPC timer interface problem (Jonas Schnelli)b16b5bc [Wallet] Transaction View: LastMonth calculation fixed (crowning-)7726c48 [qt] Windows: Make rpcconsole monospace font larger (MarcoFalke)294f432 [qt] Peertable: Increase SUBVERSION_COLUMN_WIDTH (MarcoFalke)9005c91 build: comparison tool swap (Cory Fields)e307e13 build: comparison tool NPE fix (Cory Fields)0564c5b Testing infrastructure: mocktime fixes (Gavin Andresen)60abba1 add unit tests for the decodescript rpc (mruddy)3203a08 Fix and improve txn_doublespend.py test (Tom Harding)6a73d66 tests: Fix bitcoin-tx signing test case (Wladimir J. van der Laan)7fc25c2 CLTV: Add more tests to improve coverage (Esteban Ordano)5121c68 Fix intermittent test failure, reduce test time (Tom Harding)44fa82d [QA] fix possible reorg issue in (fund)rawtransaction(s).py RPC test (Jonas Schnelli)3d9362d rpc: Remove chain-specific RequireRPCPassword (Wladimir J. van der Laan)bb59e78 tests: Remove old sh-based test framework (Wladimir J. van der Laan)d946e9a RFC: Assert on probable deadlocks if the second lock isnt try_lock (Matt Corallo)d2464df Clang lock debug (Cory Fields)410fd74 Don’t share objects between TestInstances (Casey Rodarmor)6c1c7fd Fix test locking issues and un-revert the probable-deadlines assertions commit (Cory Fields)bb4faee Fix race condition on test node shutdown (Casey Rodarmor)561f8af Add p2p-fullblocktest.py (Casey Rodarmor)981fd92 Fix stale socket rebinding and re-enable python tests for Windows (Cory Fields)cb4d6d0 build: Remove dependency of bitcoin-cli on secp256k1 (Wladimir J. van der Laan)5ab5dca Regression Tests: Migrated rpc-tests.sh to all Python rpc-tests.py (Peter Tschipper)d479311 Creates unittests for addrman, makes addrman more testable. (Ethan Heilman)c834f56 Added fPowNoRetargeting field to Consensus::Params (Eric Lombrozo)87e5539 [rpc-tests] Check return code (MarcoFalke)f2c869a Add DERSIG transaction test cases (Ross Nicoll)5242bb3 Support gathering code coverage data for RPC tests with lcov (dexX7)c8322ff Clear strMiscWarning before running PartitionAlert (Eric Lombrozo)2675276 [Tests] Fix BIP65 p2p test (Suhas Daftuar)725539e [Test Suite] Fix test for null tx input (Daniel Kraft)a6d0d62 tests: Initialize networking on windows (Wladimir J. van der Laan)9fa54a1 [tests] Be more strict checking dust (MarcoFalke)5fcc14e [tests] Add basic coverage reporting for RPC tests (James O’Beirne)72dccfc Bugfix: Use unique autostart filenames on Linux for testnet/regtest (Luke-Jr)d8368a0 Replace scriptnum_test’s normative ScriptNum implementation (Wladimir J. van der Laan)6abf6eb [Tests] Add prioritisetransaction RPC test (Suhas Daftuar)16f4a6e Tests: Explicitly set chain limits in replace-by-fee test (Suhas Daftuar)9572e49 Removed offline testnet DNSSeed ‘alexykot.me’. (tnull)f3ad812 test: don’t override BITCOIND and BITCOINCLI if they’re set (Wladimir J. van der Laan)301f16a Tests: Add more tests to p2p-fullblocktest (Suhas Daftuar)9ef7c54 [Tests] Add mempool_limit.py test (Jonas Schnelli)453c567 tests: Disable Tor interaction (Wladimir J. van der Laan)1ed938b [qa] wallet: Check if maintenance changes the balance (MarcoFalke)d513405 [Tests] Eliminate intermittent failures in sendheaders.py (Suhas Daftuar)947c4ff [rpc-tests] Change solve() to use rehash (Brad Andrews)e54ff2f [init] add -blockversion help and extend -upnp help (Diapolo)1fea667 Consensus: Decouple ContextualCheckBlockHeader from checkpoints (Jorge Timón)eba2f06 Separate Consensus::CheckTxInputs and GetSpendHeight in CheckInputs (Jorge Timón)786ed11 detach wallet from miner (Jonas Schnelli)11576a5 [bitcoin-cli] improve error output (Jonas Schnelli)6db53b4 Add BITCOIND_SIGTERM_TIMEOUT to OpenRC init scripts (Florian Schmaus)b01981e doc: add documentation for shared library libbitcoinconsensus (Braydon Fuller)dcc495e Update Linearize tool to support Windows paths; fix variable scope; update README and example configuration (Paul Georgiou)8fe5cce Separate core memory usage computation in core_memusage.h (Pieter Wuille)633fe10 Buffer log messages and explicitly open logs (Adam Weiss)7cbed7f Avoid leaking file descriptors in RegisterLoad (Casey Rodarmor)a2bf40d Make sure LogPrintf strings are line-terminated (Wladimir J. van der Laan)b6fee6b Rationalize currency unit to “BTC” (Ross Nicoll)9bb4dd8 Removed contrib/bitrpc (Casey Rodarmor)41d650f Use unique name for AlertNotify tempfile (Casey Rodarmor)e08a7d9 limitedmap fixes and tests (Casey Rodarmor)a6f2aff Make sure we re-acquire lock if a task throws (Casey Rodarmor)f4d88c4 Make sure LogPrint strings are line-terminated (Ross Nicoll)195942d Replace boost::reverse_lock with our own (Casey Rodarmor)13b8282 Add ZeroMQ notifications (João Barbosa)d5d1d2e devtools: don’t push if signing fails in github-merge (Wladimir J. van der Laan)2b0567b timedata: Prevent warning overkill (Wladimir J. van der Laan)f6ce59c SanitizeString: Allow hypen char (MarcoFalke)4899a04 Bugfix: Fix testnet-in-a-box use case (Luke-Jr)b7d78fd Simple benchmarking framework (Gavin Andresen)a092970 devtools: Add security-check.py (Wladimir J. van der Laan)fa1d252 devtools: add clang-format.py (MarcoFalke)f3d0fdd util: Don’t set strMiscWarning on every exception (Wladimir J. van der Laan)93e0514 uint256::GetCheapHash bigendian compatibility (arowser)34e02e0 Assert now > 0 in GetTime GetTimeMillis GetTimeMicros (Patrick Strateman)Thanks to everyone who directly contributed to this release:
As well as everyone that helped translating on Transifex.