34 KiB
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:
https://github.com/bitcoin/bitcoin/issues
Upgrading and downgrading
How to Upgrade
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).
Downgrade warning
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. There are no known problems when downgrading from 0.11.x to 0.10.x.
Notable changes
Signature validation using libsecp256k1
ECDSA signatures inside Bitcoin transactions now use validation using https://github.com/bitcoin/secp256k1 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.
Reduce upload traffic
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/reducetraffic.md.
Direct headers announcement (BIP 130)
Between compatible peers, BIP 130 direct headers announcement is used. This means that blocks are advertized 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.
Memory pool limiting
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 with the lowest feerate will be
evicted and the node's minimum relay fee will be increased to match
this feerate. The initial minimum relay fee is set to 1000 satoshis
per kB.
Replace-by-fee transactions
It is now possible to replace transactions in the transaction memory pool of
Bitcoin Core 0.12 nodes. Bitcoin Core will only replace 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).
RPC: Random-cookie RPC authentication
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.
Relay: Any sequence of pushdatas in OP_RETURN outputs now allowed
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). 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)
Relay: Priority transactions
Transactions that do not pay the minimum relay fee, are called "free
transactions" or priority transactions. Previous versions of Bitcoin
Core would relay and mine priority transactions depending on their
setting of -limitfreerelay=<r> (default: r=15 kB per minute) and
-blockprioritysize=<s> (default: 50000 bytes of a block's
priority space).
Priority code is planned to get moved out of from Bitcoin Core 0.13
and the default block priority size has been set to 0 in Bitcoin Core
0.12.
Automatically use Tor hidden services
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.
Notifications through ZMQ
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.
Wallet: Transaction fees
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 smaller 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.
Wallet: Negative confirmations and conflict detection
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.
Wallet: Merkle branches removed
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.
NODE_BLOOM service bit
Support 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.
Option parsing behavior
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.
RPC: Low-level API changes
- 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
asmproperty of each scriptSig now contains the decoded signature hash type for each signature that provides a valid defined hash type.
The following items contain assembly representations of scriptSig signatures and are affected by this change:
- RPC
getrawtransaction - RPC
decoderawtransaction - REST
/rest/tx/(JSON format) - REST
/rest/block/(JSON format when including extended tx details) bitcoin-tx -json
For example, the scriptSig.asm property of a transaction input that
previously showed an assembly representation of:
304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c509001
now shows as:
304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c5090[ALL]
Note that the output of the RPC decodescript did not change because it is
configured specifically to process scriptPubKey and not scriptSig scripts.
RPC: SSL support dropped
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>
Asm script outputs now contain OP_CHECKLOCKTIMEVERIFY in place of OP_NOP2
OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by BIP 65
The following outputs are affected by this change:
- RPC
getrawtransaction(in verbose mode) - RPC
decoderawtransaction - RPC
decodescript - REST
/rest/tx/(JSON format) - REST
/rest/block/(JSON format when including extended tx details) bitcoin-tx -json
0.12.0 Change log
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.
RPC and REST
- #6121
466f0eaConvert entire source tree from json_spirit to UniValue - #6234
d38cd47fix rpcmining/getblocktemplate univalue transition logic error - #6239
643114fDon't go through double in AmountFromValue and ValueFromAmount - #6266
ebab5d3Fix univalue handling of \u0000 characters. - #6276
f3d4dbbFix getbalance * 0 - #6257
5ebe7dbAddpaytxfeeanderrorsJSON fields where appropriate - #6271
754aae5New RPC command disconnectnode - #6158
0abfa8aAdd setban/listbanned RPC commands - #6307
7ecdcd9rpcban fixes - #6290
5753988rpc: makegettxoutsettinforun lock-free - #6262
247b914Return all available information via RPC call "validateaddress" - #6339
c3f0490UniValue: don't escape solidus, keep espacing of reverse solidus - #6353
6bcb0a2Show softfork status in getblockchaininfo - #6247
726e286Add getblockheader RPC call - #6362
d6db115Fix null id in RPC response during startup - #5486
943b322[REST] JSON support for /rest/headers - #6379
c52e8b3rpc: Accept scientific notation for monetary amounts in JSON - #6388
fd5dfdarpc: Implement random-cookie based authentication - #6457
3c923e8Include pruned state in chaininfo.json - #6456
bfd807frpc: Avoid unnecessary parsing roundtrip in number formatting, fix locale issue - #6380
240b30erpc: Accept strings in AmountFromValue - #6346
6bb2805Add OP_RETURN support in createrawtransaction RPC call, add tests. - #6013
6feeec1[REST] Add memory pool API - #6576
da9beb2Stop parsing JSON after first finished construct. - #5677
9aa9099libevent-based http server - #6633
bbc2b39Report minimum ping time in getpeerinfo - #6648
cd381d7Simplify logic of REST request suffix parsing. - #6695
5e21388libevent http fixes - #5264
48efbdbshow scriptSig signature hash types in transaction decodes. fixes #3166 - #6719
1a9f19aMake HTTP server shutdown more graceful - #6859
0fbfc51http: Restrict maximum size of http + headers - #5936
bf7c195[RPC] Add optional locktime to createrawtransaction - #6877
26f5b34rpc: Add maxmempool and effective min fee to getmempoolinfo - #6970
92701b3Fix crash in validateaddress with -disablewallet - #5574
755b4baExpose GUI labels in RPC as comments - #6990
dbd2c13http: speed up shutdown - #7013
36baa9fRemove LOCK(cs_main) from decodescript - #6999
972bf9cadd (max)uploadtarget infos to getnettotals RPC help - #7011
31de241Add mediantime to getblockchaininfo - #7065
f91e29fhttp: add Boost 1.49 compatibility - #7087
be281d8[Net]Add -enforcenodebloom option - #7044
438ee59RPC: Added additional config option for multiple RPC users. - #7072
c143c49[RPC] Add transaction size to JSON output - #7022
9afbd96Change default block priority size to 0 - #7141
c0c08c7rpc: Don't translate warning messages - #7312
fd4bd50Add RPC call abandontransaction
Configuration and command-line options
- #6164
8d05ec7Allow user to use -debug=1 to enable all debugging - #5288
4452205Added -whiteconnections= option - #6284
10ac38eFix argument parsing oddity with -noX - #6489
c9c017aGive a better error message if system clock is bad - #6462
c384800implement uacomment config parameter which can add comments to user agent as per BIP-0014 - #6647
a3babc8Sanitize uacomment - #6742
3b2d37cChanged logging to make -logtimestamps to work also for -printtoconsole #6742 - #6846
2cd020dalias -h for -help - #6622
7939164Introduce -maxuploadtarget - #6881
2b62551Debug: Add option for microsecond precision in debug.log - #6776
e06c14fSupport -checkmempool=N, which runs checks once every N transactions - #6896
d482c0aMake -checkmempool=1 not fail through int32 overflow - #6993
b632145Add -blocksonly option - #7323
a3448800.12: Backport -bytespersigop option
Block and transaction handling
- #6203
f00b623Remove P2SH coinbase flag, no longer interesting - #6222
9c93ee5Explicitly set tx.nVersion for the genesis block and mining tests - #5985
3a1d3e8Fix removing of orphan transactions - #6221
dd8fe82Prune: Support noncontiguous block files - #6124
41076aaMempool only CHECKLOCKTIMEVERIFY (BIP65) verification, unparameterized version - #6329
d0a10c1acceptnonstdtxn option to skip (most) "non-standard transaction" checks, for testnet/regtest only - #6410
7cdefb9Implement accurate memory accounting for mempool - #6444
24ce77dExempt unspendable transaction outputs from dust checks - #5913
a0625b8Add absurdly high fee message to validation state - #6177
2f746c6Prevent block.nTime from decreasing - #6377
e545371Handle no chain tip available in InvalidChainFound() - #6551
39ddaebHandle leveldb::DestroyDB() errors on wipe failure - #6654
b0ce450Mempool package tracking - #6715
82d2aefFix mempool packages - #6680
4f44530use CBlockIndex instead of uint256 for UpdatedBlockTip signal - #6650
4fac576Obfuscate chainstate - #6777
9caaf6eUnobfuscate chainstate data in CCoinsViewDB::GetStats - #6722
3b20e23Limit mempool by throwing away the cheapest txn and setting min relay fee to it - #6889
38369ddfix locking issue with new mempool limiting - #6464
8f3b3cdAlways clean up manual transaction prioritization - #6865
d0badb9Fix chainstate serialized_size computation - #6566
ff057f4BIP-113: Mempool-only median time-past as endpoint for lock-time calculations - #6934
3038eb6Restores mempool only BIP113 enforcement - #6965
de7d459Benchmark sanity checks and fork checks in ConnectBlock - #6918
eb6172aMake sigcache faster, more efficient, larger - #6771
38ed190Policy: Lower default limits for tx chains - #6932
73fa5e6ModifyNewCoins saves database lookups - #5967
05d5918Alter assumptions in CCoinsViewCache::BatchWrite - #6871
0e93586nSequence-based Full-RBF opt-in - #7008
eb77416Lower bound priority - #6915
2ef5ffa[Mempool] Improve removal of invalid transactions after reorgs - #6898
4077ad2Rewrite CreateNewBlock - #6872
bdda4d5Remove UTXO cache entries when the tx they were added for is removed/does not enter mempool - #7062
12c469b[Mempool] Fix mempool limiting and replace-by-fee for PrioritiseTransaction - #7276
76de36fReport non-mandatory script failures correctly - #7217
e08b7cbMark blocks with too many sigops as failed
P2P protocol and network code
- #6172
88a7eadIgnore getheaders requests when not synced - #5875
9d60602Be stricter in processing unrequested blocks - #6256
8ccc07cUse best header chain timestamps to detect partitioning - #6283
a903ad7make CAddrMan::size() return the correct type of size_t - #6272
40400d5Improve proxy initialization (continues #4871) - #6310
66e5465banlist.dat: store banlist on disk - #6412
1a2de32Test whether created sockets are select()able - #6498
219b916Keep track of recently rejected transactions with a rolling bloom filter (cont'd) - #6556
70ec975Fix masking of irrelevant bits in address groups. - #6530
ea19c2bImprove addrman Select() performance when buckets are nearly empty - #6583
af9305aadd support for miniupnpc api version 14 - #6374
69dc5b5Connection slot exhaustion DoS mitigation - #6636
536207fnet: correctly initialize nMinPingUsecTime - #6579
0c27795Add NODE_BLOOM service bit and bump protocol version - #6148
999c8beRelay blocks when pruning - #6588
cf9bb11In (strCommand == "tx"), return if AlreadyHave() - #6974
2f71b07Always allow getheaders from whitelisted peers - #6639
bd629d7net: Automatically create hidden service, listen on Tor - #6984
9ffc687don't enforce maxuploadtarget's disconnect for whitelisted peers - #7046
c322652Net: Improve blocks only mode. - #7090
d6454f6Connect to Tor hidden services by default (when listening on Tor) - #7106
c894fbbFix and improve relay from whitelisted peers - #7129
5d5ef3aDirect headers announcement (rebase of #6494) - #7079
1b5118bPrevent peer flooding inv request queue (redux) (redux) - #7166
6ba25d2Disconnect on mempool requests from peers when over the upload limit. - #7133
f31955dReplace setInventoryKnown with a rolling bloom filter (rebase of #7100) - #7174
82aff88Don't do mempool lookups for "mempool" command without a filter - #7179
44fef99net: Fix sent reject messages for blocks and transactions - #7181
8fc174anet: Add and document network messages in protocol.h - #7125
10b88beReplace global trickle node with random delays
Validation
- #5927
8d9f0a6Reduce checkpoints' effect on consensus. - #6299
24f2489Bugfix: Don't check the genesis block header before accepting it - #6361
d7ada03Use real number of cores for default -par, ignore virtual cores - #6519
87f37e2Make logging for validation optional - #6351
2a1090dCHECKLOCKTIMEVERIFY (BIP65) IsSuperMajority() soft-fork - #6931
54e8bfeSkip BIP 30 verification where not necessary - #6954
e54ebbfSwitch to libsecp256k1-based ECDSA validation - #6508
61457c2Switch to a constant-space Merkle root/branch algorithm. - #6914
327291aAdd pre-allocated vector type and use it for CScript
Build system
- #6210
0e4f2a0build: disable optional use of gmp in internal secp256k1 build - #6214
87406aa[OSX] revert renaming of Bitcoin-Qt.app and use CFBundleDisplayName (partial revert of #6116) - #6218
9d67b10build/gitian misc updates - #6269
d4565b6gitian: Use the new bitcoin-detached-sigs git repo for OSX signatures - #6418
d4a910cAdd autogen.sh to source tarball. - #6373
1ae3196depends: non-qt bumps for 0.12 - #6434
059b352Preserve user-passed CXXFLAGS with --enable-debug - #6501
fee6554Misc build fixes - #6600
ef4945fInclude bitcoin-tx binary on Debian/Ubuntu - #6619
4862708depends: bump miniupnpc and ccache - #6801
ae69a75[depends] Latest config.guess and config.sub - #6938
193f7b5build: If both Qt4 and Qt5 are installed, use Qt5 - #7092
348b281build: Set osx permissions in the dmg to make Gatekeeper happy - #6980
eccd671[Depends] Bump Boost, miniupnpc, ccache & zeromq
Wallet
- #6183
87550eeFix off-by-one error w/ nLockTime in the wallet - #6057
ac5476ere-enable wallet in autoprune - #6356
9e6c33bDelay initial pruning until after wallet init - #6088
91389e5fundrawtransaction - #6415
ddd8d80Implement watchonly support in fundrawtransaction - #6567
0f0f323Fix crash when mining with empty keypool. - #6688
4939eabFix locking in GetTransaction. - #6645
4dbd43eEnable wallet key imports without rescan in pruned mode. - #6550
5b77244Do not store Merkle branches in the wallet. - #5924
12a7712Clean up change computation in CreateTransaction. - #6906
48b5b84Reject invalid pubkeys when reading ckey items from the wallet. - #7010
e0a5ef8Fix fundrawtransaction handling of includeWatching - #6851
616d61bOptimisation: Store transaction list order in memory rather than compute it every need - #6134
e92377fImprove usage of fee estimation code - #7103
a775182[wallet, rpc tests] Fix settxfee, paytxfee - #7105
30c2d8cKeep track of explicit wallet conflicts instead of using mempool - #7096
9490bd7[Wallet] Improve minimum absolute fee GUI options - #6216
83f06caTake the training wheels off anti-fee-sniping - #4906
96e8d12Issue#1643: Coinselection prunes extraneous inputs from ApproximateBestSubset - #7200
06c6a58Checks for null data transaction before issuing error to debug.log - #7296
a36d79bAdd sane fallback for fee estimation - #7293
ff9b610Add regression test for vValue sort order - #7306
4707797Make sure conflicted wallet tx's update balances
GUI
- #6217
c57e12adisconnect peers from peers tab via context menu - #6209
ab0ec67extend rpc console peers tab - #6484
1369d69use CHashWriter also in SignVerifyMessageDialog - #6487
9848d42Introduce PlatformStyle - #6505
100c9d3cleanup icons - #4587
0c465f5allow users to set -onion via GUI - #6529
c0f66ceshow client user agent in debug window - #6594
878ea69Disallow duplicate windows. - #5665
6f55cddadd verifySize() function to PaymentServer - #6317
ca5e2a1minor optimisations in peertablemodel - #6315
e59d2a8allow banning and unbanning over UI->peers table - #6653
e04b2faPop debug window in foreground when opened twice - #6864
c702521Use monospace font - #6887
3694b74Update coin control and smartfee labels - #7000
814697cadd shortcurts for debug-/console-window - #6951
03403d8Use maxTxFee instead of 10000000 - #7051
a190777ui: Add "Copy raw transaction data" to transaction list context menu - #6979
776848asimple mempool info in debug window - #7006
26af1acadd startup option to reset Qt settings - #6780
2a94cd6Call init's parameter interaction before we create the UI options model - #7112
96b8025reduce cs_main locks during tip update, more fluently update UI - #7206
f43c2f9Add "NODE_BLOOM" to guiutil so that peers don't get UNKNOWN[4] - #7282
5cadf3efix coincontrol update issue when deleting a send coins entry - #7319
1320300Intro: Display required space - #7318
9265e89quickfix for RPC timer interface problem
Tests and QA
- #6305
9005c91build: comparison tool swap - #6318
e307e13build: comparison tool NPE fix - #6337
0564c5bTesting infrastructure: mocktime fixes - #6350
60abba1add unit tests for the decodescript rpc - #5881
3203a08Fix and improve txn_doublespend.py test - #6390
6a73d66tests: Fix bitcoin-tx signing test case - #6368
7fc25c2CLTV: Add more tests to improve coverage - #6414
5121c68Fix intermittent test failure, reduce test time - #6417
44fa82d[QA] fix possible reorg issue in (fund)rawtransaction(s).py RPC test - #6398
3d9362drpc: Remove chain-specific RequireRPCPassword - #6428
bb59e78tests: Remove old sh-based test framework - #5515
d946e9aRFC: Assert on probable deadlocks if the second lock isnt try_lock - #6287
d2464dfClang lock debug - #6465
410fd74Don't share objects between TestInstances - #6534
6c1c7fdFix test locking issues and un-revert the probable-deadlines assertions commit - #6509
bb4faeeFix race condition on test node shutdown - #6523
561f8afAdd p2p-fullblocktest.py - #6590
981fd92Fix stale socket rebinding and re-enable python tests for Windows - #6730
cb4d6d0build: Remove dependency of bitcoin-cli on secp256k1 - #6616
5ab5dcaRegression Tests: Migrated rpc-tests.sh to all Python rpc-tests.py - #6720
d479311Creates unittests for addrman, makes addrman more testable. - #6853
c834f56Added fPowNoRetargeting field to Consensus::Params - #6827
87e5539[rpc-tests] Check return code - #6848
f2c869aAdd DERSIG transaction test cases - #6813
5242bb3Support gathering code coverage data for RPC tests with lcov - #6888
c8322ffClear strMiscWarning before running PartitionAlert - #6894
2675276[Tests] Fix BIP65 p2p test - #6863
725539e[Test Suite] Fix test for null tx input - #6926
a6d0d62tests: Initialize networking on windows - #6822
9fa54a1[tests] Be more strict checking dust - #6804
5fcc14e[tests] Add basic coverage reporting for RPC tests - #7045
72dccfcBugfix: Use unique autostart filenames on Linux for testnet/regtest - #7095
d8368a0Replace scriptnum_test's normative ScriptNum implementation - #7063
6abf6eb[Tests] Add prioritisetransaction RPC test - #7137
16f4a6eTests: Explicitly set chain limits in replace-by-fee test - #7216
9572e49Removed offline testnet DNSSeed 'alexykot.me'. - #7209
f3ad812test: don't override BITCOIND and BITCOINCLI if they're set - #7226
301f16aTests: Add more tests to p2p-fullblocktest - #7153
9ef7c54[Tests] Add mempool_limit.py test - #7170
453c567tests: Disable Tor interaction - #7229
1ed938b[qa] wallet: Check if maintenance changes the balance - #7308
d513405[Tests] Eliminate intermittent failures in sendheaders.py
Miscellaneous
- #6213
e54ff2f[init] add -blockversion help and extend -upnp help - #5975
1fea667Consensus: Decouple ContextualCheckBlockHeader from checkpoints - #6061
eba2f06Separate Consensus::CheckTxInputs and GetSpendHeight in CheckInputs - #5994
786ed11detach wallet from miner - #6387
11576a5[bitcoin-cli] improve error output - #6401
6db53b4Add BITCOIND_SIGTERM_TIMEOUT to OpenRC init scripts - #6430
b01981edoc: add documentation for shared library libbitcoinconsensus - #6372
dcc495eUpdate Linearize tool to support Windows paths; fix variable scope; update README and example configuration - #6453
8fe5cceSeparate core memory usage computation in core_memusage.h - #6149
633fe10Buffer log messages and explicitly open logs - #6488
7cbed7fAvoid leaking file descriptors in RegisterLoad - #6497
a2bf40dMake sure LogPrintf strings are line-terminated - #6504
b6fee6bRationalize currency unit to "BTC" - #6507
9bb4dd8Removed contrib/bitrpc - #6527
41d650fUse unique name for AlertNotify tempfile - #6561
e08a7d9limitedmap fixes and tests - #6565
a6f2affMake sure we re-acquire lock if a task throws - #6599
f4d88c4Make sure LogPrint strings are line-terminated - #6630
195942dReplace boost::reverse_lock with our own - #6103
13b8282Add ZeroMQ notifications - #6692
d5d1d2edevtools: don't push if signing fails in github-merge - #6728
2b0567btimedata: Prevent warning overkill - #6713
f6ce59cSanitizeString: Allow hypen char - #5987
4899a04Bugfix: Fix testnet-in-a-box use case - #6733
b7d78fdSimple benchmarking framework - #6854
a092970devtools: Add security-check.py - #6790
fa1d252devtools: add clang-format.py - #7114
f3d0fddutil: Don't set strMiscWarning on every exception - #7078
93e0514uint256::GetCheapHash bigendian compatibility - #7094
34e02e0Assert now > 0 in GetTime GetTimeMillis GetTimeMicros
Credits
Thanks to everyone who directly contributed to this release:
- accraze
- Adam Weiss
- Alex Morcos
- Alex van der Peet
- AlSzacrel
- Altoidnerd
- Andriy Voskoboinyk
- antonio-fr
- Arne Brutschy
- Ashley Holman
- Bob McElrath
- Braydon Fuller
- BtcDrak
- Casey Rodarmor
- centaur1
- Chris Kleeschulte
- Christian Decker
- Cory Fields
- daniel
- Daniel Cousens
- Daniel Kraft
- David Hill
- dexX7
- Diego Viola
- Elias Rohrer
- Eric Lombrozo
- Erik Mossberg
- Esteban Ordano
- EthanHeilman
- fanquake
- Florian Schmaus
- Forrest Voight
- Gavin Andresen
- Gregory Maxwell
- Gregory Sanders
- Ian T
- Irving Ruan
- Jacob Welsh
- James O'Beirne
- Jeff Garzik
- Johnathan Corgan
- Jonas Schnelli
- Jonathan Cross
- João Barbosa
- Jorge Timón
- Josh Lehan
- J Ross Nicoll
- kazcw
- Kevin Cooper
- lpescher
- Luke Dashjr
- Marco
- MarcoFalke
- Mark Friedenbach
- Matt Bogosian
- Matt Corallo
- Matt Quinn
- Micha
- Michael
- Michael Ford
- Midnight Magic
- Mitchell Cash
- mruddy
- Nick
- Patick Strateman
- Patrick Strateman
- Paul Georgiou
- Paul Rabahy
- paveljanik
- Pavel Janík
- Pavel Vasin
- Pavol Rusnak
- Peter Josling
- Peter Todd
- Philip Kaufmann
- Pieter Wuille
- ptschip
- randy-waterhouse
- rion
- Ross Nicoll
- Ryan Havar
- Shaul Kfir
- Simon Males
- Stephen
- Suhas Daftuar
- tailsjoin
- ฿tcDrak
- Thomas Kerin
- Tom Harding
- tulip
- unsystemizer
- Veres Lajos
- Wladimir J. van der Laan
- Zak Wilcox
- zathras-crypto
As well as everyone that helped translating on Transifex.