From 569596cc5148ef868350a9720013d38faf3e34ce Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Wed, 8 Mar 2017 15:56:59 -0500 Subject: [PATCH 01/40] Don't require segwit in getblocktemplate for segwit signalling or mining Segwit's version bit will be signalled for all invocations of CreateNewBlock, and not specifying segwit only will cause CreateNewBlock to skip transactions with witness from being selected. Github-Pull: #9955 Rebased-From: abe7b3d3abe10e3554b770f40824174b3b217490 --- qa/rpc-tests/p2p-segwit.py | 8 +++++--- qa/rpc-tests/segwit.py | 19 +++++-------------- src/miner.cpp | 4 ++-- src/miner.h | 2 +- src/rpc/mining.cpp | 18 ++++++++++++++---- src/versionbits.cpp | 2 +- 6 files changed, 28 insertions(+), 25 deletions(-) diff --git a/qa/rpc-tests/p2p-segwit.py b/qa/rpc-tests/p2p-segwit.py index 2f339bb54f6a1..479f1c6796b79 100755 --- a/qa/rpc-tests/p2p-segwit.py +++ b/qa/rpc-tests/p2p-segwit.py @@ -1701,9 +1701,11 @@ def test_getblocktemplate_before_lockin(self): for node in [self.nodes[0], self.nodes[2]]: gbt_results = node.getblocktemplate() block_version = gbt_results['version'] - # If we're not indicating segwit support, we should not be signalling - # for segwit activation, nor should we get a witness commitment. - assert_equal(block_version & (1 << VB_WITNESS_BIT), 0) + # If we're not indicating segwit support, we will still be + # signalling for segwit activation. + assert_equal((block_version & (1 << VB_WITNESS_BIT) != 0), node == self.nodes[0]) + # If we don't specify the segwit rule, then we won't get a default + # commitment. assert('default_witness_commitment' not in gbt_results) # Workaround: diff --git a/qa/rpc-tests/segwit.py b/qa/rpc-tests/segwit.py index d6831e00e36ad..5dfc7a2f06fb0 100755 --- a/qa/rpc-tests/segwit.py +++ b/qa/rpc-tests/segwit.py @@ -251,20 +251,11 @@ def run_test(self): assert(tmpl['transactions'][0]['txid'] == txid) assert(tmpl['transactions'][0]['sigops'] == 8) - print("Verify non-segwit miners get a valid GBT response after the fork") - send_to_witness(1, self.nodes[0], find_unspent(self.nodes[0], 50), self.pubkey[0], False, Decimal("49.998")) - try: - tmpl = self.nodes[0].getblocktemplate({}) - assert(len(tmpl['transactions']) == 1) # Doesn't include witness tx - assert(tmpl['sizelimit'] == 1000000) - assert('weightlimit' not in tmpl) - assert(tmpl['sigoplimit'] == 20000) - assert(tmpl['transactions'][0]['hash'] == txid) - assert(tmpl['transactions'][0]['sigops'] == 2) - assert(('!segwit' in tmpl['rules']) or ('segwit' not in tmpl['rules'])) - except JSONRPCException: - # This is an acceptable outcome - pass + print("Non-segwit miners are able to use GBT response after activation.") + txid = send_to_witness(1, self.nodes[0], find_unspent(self.nodes[0], 50), self.pubkey[0], False, Decimal("49.998")) + tmpl = self.nodes[0].getblocktemplate() + # TODO: add a transaction with witness to mempool, and verify it's not + # selected for mining. print("Verify behaviour of importaddress, addwitnessaddress and listunspent") diff --git a/src/miner.cpp b/src/miner.cpp index d01edd93b52e6..7b3d94d0e4f39 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -127,7 +127,7 @@ void BlockAssembler::resetBlock() blockFinished = false; } -std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& scriptPubKeyIn) +std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& scriptPubKeyIn, bool fMineWitnessTx) { resetBlock(); @@ -165,7 +165,7 @@ std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& sc // -promiscuousmempoolflags is used. // TODO: replace this with a call to main to assess validity of a mempool // transaction (which in most cases can be a no-op). - fIncludeWitness = IsWitnessEnabled(pindexPrev, chainparams.GetConsensus()); + fIncludeWitness = IsWitnessEnabled(pindexPrev, chainparams.GetConsensus()) && fMineWitnessTx; addPriorityTxs(); addPackageTxs(); diff --git a/src/miner.h b/src/miner.h index 3ba92b16b8e03..29013c3bcc1b6 100644 --- a/src/miner.h +++ b/src/miner.h @@ -165,7 +165,7 @@ class BlockAssembler public: BlockAssembler(const CChainParams& chainparams); /** Construct a new block template with coinbase to scriptPubKeyIn */ - std::unique_ptr CreateNewBlock(const CScript& scriptPubKeyIn); + std::unique_ptr CreateNewBlock(const CScript& scriptPubKeyIn, bool fMineWitnessTx=true); private: // utility functions diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 77cd282a3da4c..38d7b1eb1e225 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -519,12 +519,22 @@ UniValue getblocktemplate(const JSONRPCRequest& request) // TODO: Maybe recheck connections/IBD and (if something wrong) send an expires-immediately template to stop miners? } + const struct BIP9DeploymentInfo& segwit_info = VersionBitsDeploymentInfo[Consensus::DEPLOYMENT_SEGWIT]; + // If the caller is indicating segwit support, then allow CreateNewBlock() + // to select witness transactions, after segwit activates (otherwise + // don't). + bool fSupportsSegwit = setClientRules.find(segwit_info.name) != setClientRules.end(); + // Update block static CBlockIndex* pindexPrev; static int64_t nStart; static std::unique_ptr pblocktemplate; + // Cache whether the last invocation was with segwit support, to avoid returning + // a segwit-block to a non-segwit caller. + static bool fLastTemplateSupportsSegwit = true; if (pindexPrev != chainActive.Tip() || - (mempool.GetTransactionsUpdated() != nTransactionsUpdatedLast && GetTime() - nStart > 5)) + (mempool.GetTransactionsUpdated() != nTransactionsUpdatedLast && GetTime() - nStart > 5) || + fLastTemplateSupportsSegwit != fSupportsSegwit) { // Clear pindexPrev so future calls make a new block, despite any failures from here on pindexPrev = nullptr; @@ -533,10 +543,11 @@ UniValue getblocktemplate(const JSONRPCRequest& request) nTransactionsUpdatedLast = mempool.GetTransactionsUpdated(); CBlockIndex* pindexPrevNew = chainActive.Tip(); nStart = GetTime(); + fLastTemplateSupportsSegwit = fSupportsSegwit; // Create new block CScript scriptDummy = CScript() << OP_TRUE; - pblocktemplate = BlockAssembler(Params()).CreateNewBlock(scriptDummy); + pblocktemplate = BlockAssembler(Params()).CreateNewBlock(scriptDummy, fSupportsSegwit); if (!pblocktemplate) throw JSONRPCError(RPC_OUT_OF_MEMORY, "Out of memory"); @@ -686,8 +697,7 @@ UniValue getblocktemplate(const JSONRPCRequest& request) result.push_back(Pair("bits", strprintf("%08x", pblock->nBits))); result.push_back(Pair("height", (int64_t)(pindexPrev->nHeight+1))); - const struct BIP9DeploymentInfo& segwit_info = VersionBitsDeploymentInfo[Consensus::DEPLOYMENT_SEGWIT]; - if (!pblocktemplate->vchCoinbaseCommitment.empty() && setClientRules.find(segwit_info.name) != setClientRules.end()) { + if (!pblocktemplate->vchCoinbaseCommitment.empty() && fSupportsSegwit) { result.push_back(Pair("default_witness_commitment", HexStr(pblocktemplate->vchCoinbaseCommitment.begin(), pblocktemplate->vchCoinbaseCommitment.end()))); } diff --git a/src/versionbits.cpp b/src/versionbits.cpp index d73f3405109d0..8a7cce7485659 100644 --- a/src/versionbits.cpp +++ b/src/versionbits.cpp @@ -17,7 +17,7 @@ const struct BIP9DeploymentInfo VersionBitsDeploymentInfo[Consensus::MAX_VERSION }, { /*.name =*/ "segwit", - /*.gbt_force =*/ false, + /*.gbt_force =*/ true, } }; From 2cd2cd51f7ae954160d5422e105089ff1f598aa6 Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Thu, 9 Mar 2017 13:49:50 -0500 Subject: [PATCH 02/40] Test transaction selection when gbt called without segwit support Github-Pull: #9955 Rebased-From: c85ffe6d8d57132c1825c16a572d3847419030a6 --- qa/rpc-tests/segwit.py | 55 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/qa/rpc-tests/segwit.py b/qa/rpc-tests/segwit.py index 5dfc7a2f06fb0..c814399f922eb 100755 --- a/qa/rpc-tests/segwit.py +++ b/qa/rpc-tests/segwit.py @@ -11,9 +11,9 @@ from test_framework.util import * from test_framework.mininode import sha256, ripemd160, CTransaction, CTxIn, COutPoint, CTxOut from test_framework.address import script_to_p2sh, key_to_p2pkh -from test_framework.script import CScript, OP_HASH160, OP_CHECKSIG, OP_0, hash160, OP_EQUAL, OP_DUP, OP_EQUALVERIFY, OP_1, OP_2, OP_CHECKMULTISIG +from test_framework.script import CScript, OP_HASH160, OP_CHECKSIG, OP_0, hash160, OP_EQUAL, OP_DUP, OP_EQUALVERIFY, OP_1, OP_2, OP_CHECKMULTISIG, OP_TRUE from io import BytesIO -from test_framework.mininode import FromHex +from test_framework.mininode import ToHex, FromHex, COIN NODE_0 = 0 NODE_1 = 1 @@ -251,11 +251,54 @@ def run_test(self): assert(tmpl['transactions'][0]['txid'] == txid) assert(tmpl['transactions'][0]['sigops'] == 8) + self.nodes[0].generate(1) # Mine a block to clear the gbt cache + print("Non-segwit miners are able to use GBT response after activation.") - txid = send_to_witness(1, self.nodes[0], find_unspent(self.nodes[0], 50), self.pubkey[0], False, Decimal("49.998")) - tmpl = self.nodes[0].getblocktemplate() - # TODO: add a transaction with witness to mempool, and verify it's not - # selected for mining. + # Create a 3-tx chain: tx1 (non-segwit input, paying to a segwit output) -> + # tx2 (segwit input, paying to a non-segwit output) -> + # tx3 (non-segwit input, paying to a non-segwit output). + # tx1 is allowed to appear in the block, but no others. + txid1 = send_to_witness(1, self.nodes[0], find_unspent(self.nodes[0], 50), self.pubkey[0], False, Decimal("49.996")) + hex_tx = self.nodes[0].gettransaction(txid)['hex'] + tx = FromHex(CTransaction(), hex_tx) + assert(tx.wit.is_null()) # This should not be a segwit input + assert(txid1 in self.nodes[0].getrawmempool()) + + # Now create tx2, which will spend from txid1. + tx = CTransaction() + tx.vin.append(CTxIn(COutPoint(int(txid1, 16), 0), b'')) + tx.vout.append(CTxOut(int(49.99*COIN), CScript([OP_TRUE]))) + tx2_hex = self.nodes[0].signrawtransaction(ToHex(tx))['hex'] + txid2 = self.nodes[0].sendrawtransaction(tx2_hex) + tx = FromHex(CTransaction(), tx2_hex) + assert(not tx.wit.is_null()) + + # Now create tx3, which will spend from txid2 + tx = CTransaction() + tx.vin.append(CTxIn(COutPoint(int(txid2, 16), 0), b"")) + tx.vout.append(CTxOut(int(49.95*COIN), CScript([OP_TRUE]))) # Huge fee + tx.calc_sha256() + txid3 = self.nodes[0].sendrawtransaction(ToHex(tx)) + assert(tx.wit.is_null()) + assert(txid3 in self.nodes[0].getrawmempool()) + + # Now try calling getblocktemplate() without segwit support. + template = self.nodes[0].getblocktemplate() + + # Check that tx1 is the only transaction of the 3 in the template. + template_txids = [ t['txid'] for t in template['transactions'] ] + assert(txid2 not in template_txids and txid3 not in template_txids) + assert(txid1 in template_txids) + + # Check that running with segwit support results in all 3 being included. + template = self.nodes[0].getblocktemplate({"rules": ["segwit"]}) + template_txids = [ t['txid'] for t in template['transactions'] ] + assert(txid1 in template_txids) + assert(txid2 in template_txids) + assert(txid3 in template_txids) + + # Mine a block to clear the gbt cache again. + self.nodes[0].generate(1) print("Verify behaviour of importaddress, addwitnessaddress and listunspent") From d2548a4f9704b1f475b4068d2d1686cf3780f742 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 8 Mar 2017 14:41:57 -0500 Subject: [PATCH 03/40] Fix shutdown hang with >= 8 -addnodes set We previously would block waiting for a CSemaphoreGrant in ThreadOpenAddedConnections, when we did not need to. This would block as the posts in CConnman shutdown were both to the wrong semaphore and in the wrong location. Github-Pull: #9953 Rebased-From: e007b243c4840e44857b5ccf686ed35899e44af0 --- src/net.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index de5fc29693e82..e35a89e749856 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -2321,6 +2321,10 @@ void CConnman::Interrupt() if (semOutbound) for (int i=0; i<(nMaxOutbound + nMaxFeeler); i++) semOutbound->post(); + + if (semAddnode) + for (int i=0; ipost(); } void CConnman::Stop() @@ -2336,10 +2340,6 @@ void CConnman::Stop() if (threadSocketHandler.joinable()) threadSocketHandler.join(); - if (semAddnode) - for (int i=0; ipost(); - if (fAddressesInitialized) { DumpData(); From 4e2502bb512c00fa76c59ed8c758c2a6781a7425 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 8 Mar 2017 14:55:28 -0500 Subject: [PATCH 04/40] Add missing braces in semaphore posts in net Github-Pull: #9953 Rebased-From: 819b513a5415d1669b5440e214862cda6c2261f8 --- src/net.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index e35a89e749856..03c8e5ecc4953 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -2318,13 +2318,17 @@ void CConnman::Interrupt() interruptNet(); InterruptSocks5(true); - if (semOutbound) - for (int i=0; i<(nMaxOutbound + nMaxFeeler); i++) + if (semOutbound) { + for (int i=0; i<(nMaxOutbound + nMaxFeeler); i++) { semOutbound->post(); + } + } - if (semAddnode) - for (int i=0; ipost(); + } + } } void CConnman::Stop() From eeeeacd600a45bb6bfb3d0098de89c54e3f56eef Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Mon, 27 Mar 2017 11:12:48 +0200 Subject: [PATCH 05/40] 0.14: Clear release notes --- doc/release-notes.md | 845 +------------------------------------------ 1 file changed, 13 insertions(+), 832 deletions(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 37e79958e88d0..7ade5b74400f6 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,12 +1,12 @@ (note: this is a temporary file, to be added-to by anybody, and moved to release-notes at release time) -Bitcoin Core version 0.14.0 is now available from: +Bitcoin Core version 0.14.x is now available from: - + -This is a new major version release, including new features, various bugfixes -and performance improvements, as well as updated translations. +This is a new minor version release, including various bugfixes and +performance improvements, as well as updated translations. Please report bugs using the issue tracker at github: @@ -33,844 +33,25 @@ frequently tested on them. Notable changes =============== -Performance Improvements --------------- +Example item +----------------------------------------------- -Validation speed and network propagation performance have been greatly -improved, leading to much shorter sync and initial block download times. - -- The script signature cache has been reimplemented as a "cuckoo cache", - allowing for more signatures to be cached and faster lookups. -- Assumed-valid blocks have been introduced which allows script validation to - be skipped for ancestors of known-good blocks, without changing the security - model. See below for more details. -- In some cases, compact blocks are now relayed before being fully validated as - per BIP152. -- P2P networking has been refactored with a focus on concurrency and - throughput. Network operations are no longer bottlenecked by validation. As a - result, block fetching is several times faster than previous releases in many - cases. -- The UTXO cache now claims unused mempool memory. This speeds up initial block - download as UTXO lookups are a major bottleneck there, and there is no use for - the mempool at that stage. - - -Manual Pruning --------------- - -Bitcoin Core has supported automatically pruning the blockchain since 0.11. Pruning -the blockchain allows for significant storage space savings as the vast majority of -the downloaded data can be discarded after processing so very little of it remains -on the disk. - -Manual block pruning can now be enabled by setting `-prune=1`. Once that is set, -the RPC command `pruneblockchain` can be used to prune the blockchain up to the -specified height or timestamp. - -`getinfo` Deprecated --------------------- - -The `getinfo` RPC command has been deprecated. Each field in the RPC call -has been moved to another command's output with that command also giving -additional information that `getinfo` did not provide. The following table -shows where each field has been moved to: - -|`getinfo` field | Moved to | -|------------------|-------------------------------------------| -`"version"` | `getnetworkinfo()["version"]` -`"protocolversion"`| `getnetworkinfo()["protocolversion"]` -`"walletversion"` | `getwalletinfo()["walletversion"]` -`"balance"` | `getwalletinfo()["balance"]` -`"blocks"` | `getblockchaininfo()["blocks"]` -`"timeoffset"` | `getnetworkinfo()["timeoffset"]` -`"connections"` | `getnetworkinfo()["connections"]` -`"proxy"` | `getnetworkinfo()["networks"][0]["proxy"]` -`"difficulty"` | `getblockchaininfo()["difficulty"]` -`"testnet"` | `getblockchaininfo()["chain"] == "test"` -`"keypoololdest"` | `getwalletinfo()["keypoololdest"]` -`"keypoolsize"` | `getwalletinfo()["keypoolsize"]` -`"unlocked_until"` | `getwalletinfo()["unlocked_until"]` -`"paytxfee"` | `getwalletinfo()["paytxfee"]` -`"relayfee"` | `getnetworkinfo()["relayfee"]` -`"errors"` | `getnetworkinfo()["warnings"]` - -ZMQ On Windows --------------- - -Previously the ZeroMQ notification system was unavailable on Windows -due to various issues with ZMQ. These have been fixed upstream and -now ZMQ can be used on Windows. Please see [this document](https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md) for -help with using ZMQ in general. - -Nested RPC Commands in Debug Console ------------------------------------- - -The ability to nest RPC commands has been added to the debug console. This -allows users to have the output of a command become the input to another -command without running the commands separately. - -The nested RPC commands use bracket syntax (i.e. `getwalletinfo()`) and can -be nested (i.e. `getblock(getblockhash(1))`). Simple queries can be -done with square brackets where object values are accessed with either an -array index or a non-quoted string (i.e. `listunspent()[0][txid]`). Both -commas and spaces can be used to separate parameters in both the bracket syntax -and normal RPC command syntax. - -Network Activity Toggle ------------------------ - -A RPC command and GUI toggle have been added to enable or disable all p2p -network activity. The network status icon in the bottom right hand corner -is now the GUI toggle. Clicking the icon will either enable or disable all -p2p network activity. If network activity is disabled, the icon will -be grayed out with an X on top of it. - -Additionally the `setnetworkactive` RPC command has been added which does -the same thing as the GUI icon. The command takes one boolean parameter, -`true` enables networking and `false` disables it. - -Out-of-sync Modal Info Layer ----------------------------- - -When Bitcoin Core is out-of-sync on startup, a semi-transparent information -layer will be shown over top of the normal display. This layer contains -details about the current sync progress and estimates the amount of time -remaining to finish syncing. This layer can also be hidden and subsequently -unhidden by clicking on the progress bar at the bottom of the window. - -Support for JSON-RPC Named Arguments ------------------------------------- - -Commands sent over the JSON-RPC interface and through the `bitcoin-cli` binary -can now use named arguments. This follows the [JSON-RPC specification](http://www.jsonrpc.org/specification) -for passing parameters by-name with an object. - -`bitcoin-cli` has been updated to support this by parsing `name=value` arguments -when the `-named` option is given. - -Some examples: - - src/bitcoin-cli -named help command="help" - src/bitcoin-cli -named getblockhash height=0 - src/bitcoin-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f - src/bitcoin-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=true - -The order of arguments doesn't matter in this case. Named arguments are also -useful to leave out arguments that should stay at their default value. The -rarely-used arguments `comment` and `comment_to` to `sendtoaddress`, for example, can -be left out. However, this is not yet implemented for many RPC calls, this is -expected to land in a later release. - -The RPC server remains fully backwards compatible with positional arguments. - -Opt into RBF When Sending -------------------------- - -A new startup option, `-walletrbf`, has been added to allow users to have all -transactions sent opt into RBF support. The default value for this option is -currently `false`, so transactions will not opt into RBF by default. The new -`bumpfee` RPC can be used to replace transactions that opt into RBF. - -Sensitive Data Is No Longer Stored In Debug Console History ------------------------------------------------------------ - -The debug console maintains a history of previously entered commands that can be -accessed by pressing the Up-arrow key so that users can easily reuse previously -entered commands. Commands which have sensitive information such as passphrases and -private keys will now have a `(...)` in place of the parameters when accessed through -the history. - -Retaining the Mempool Across Restarts -------------------------------------- - -The mempool will be saved to the data directory prior to shutdown -to a `mempool.dat` file. This file preserves the mempool so that when the node -restarts the mempool can be filled with transactions without waiting for new transactions -to be created. This will also preserve any changes made to a transaction through -commands such as `prioritisetransaction` so that those changes will not be lost. - -Final Alert ------------ - -The Alert System was [disabled and deprecated](https://bitcoin.org/en/alert/2016-11-01-alert-retirement) in Bitcoin Core 0.12.1 and removed in 0.13.0. -The Alert System was retired with a maximum sequence final alert which causes any nodes -supporting the Alert System to display a static hard-coded "Alert Key Compromised" message which also -prevents any other alerts from overriding it. This final alert is hard-coded into this release -so that all old nodes receive the final alert. - -GUI Changes ------------ - - - After resetting the options by clicking the `Reset Options` button - in the options dialog or with the `-resetguioptions` startup option, - the user will be prompted to choose the data directory again. This - is to ensure that custom data directories will be kept after the - option reset which clears the custom data directory set via the choose - datadir dialog. - - - Multiple peers can now be selected in the list of peers in the debug - window. This allows for users to ban or disconnect multiple peers - simultaneously instead of banning them one at a time. - - - An indicator has been added to the bottom right hand corner of the main - window to indicate whether the wallet being used is a HD wallet. This - icon will be grayed out with an X on top of it if the wallet is not a - HD wallet. - -Low-level RPC changes ----------------------- - - - `importprunedfunds` only accepts two required arguments. Some versions accept - an optional third arg, which was always ignored. Make sure to never pass more - than two arguments. - - - The first boolean argument to `getaddednodeinfo` has been removed. This is - an incompatible change. - - - RPC command `getmininginfo` loses the "testnet" field in favor of the more - generic "chain" (which has been present for years). - - - A new RPC command `preciousblock` has been added which marks a block as - precious. A precious block will be treated as if it were received earlier - than a competing block. - - - A new RPC command `importmulti` has been added which receives an array of - JSON objects representing the intention of importing a public key, a - private key, an address and script/p2sh - - - Use of `getrawtransaction` for retrieving confirmed transactions with unspent - outputs has been deprecated. For now this will still work, but in the future - it may change to only be able to retrieve information about transactions in - the mempool or if `txindex` is enabled. - - - A new RPC command `getmemoryinfo` has been added which will return information - about the memory usage of Bitcoin Core. This was added in conjunction with - optimizations to memory management. See [Pull #8753](https://github.com/bitcoin/bitcoin/pull/8753) - for more information. - - - A new RPC command `bumpfee` has been added which allows replacing an - unconfirmed wallet transaction that signaled RBF (see the `-walletrbf` - startup option above) with a new transaction that pays a higher fee, and - should be more likely to get confirmed quickly. - -HTTP REST Changes ------------------ - - - UTXO set query (`GET /rest/getutxos//-/- - /.../-.`) responses were changed to return status - code `HTTP_BAD_REQUEST` (400) instead of `HTTP_INTERNAL_SERVER_ERROR` (500) - when requests contain invalid parameters. - -Minimum Fee Rate Policies -------------------------- - -Since the changes in 0.12 to automatically limit the size of the mempool and improve the performance of block creation in mining code it has not been important for relay nodes or miners to set `-minrelaytxfee`. With this release the following concepts that were tied to this option have been separated out: -- incremental relay fee used for calculating BIP 125 replacement and mempool limiting. (1000 satoshis/kB) -- calculation of threshold for a dust output. (effectively 3 * 1000 satoshis/kB) -- minimum fee rate of a package of transactions to be included in a block created by the mining code. If miners wish to set this minimum they can use the new `-blockmintxfee` option. (defaults to 1000 satoshis/kB) - -The `-minrelaytxfee` option continues to exist but is recommended to be left unset. - -Fee Estimation Changes ----------------------- - -- Since 0.13.2 fee estimation for a confirmation target of 1 block has been - disabled. The fee slider will no longer be able to choose a target of 1 block. - This is only a minor behavior change as there was often insufficient - data for this target anyway. `estimatefee 1` will now always return -1 and - `estimatesmartfee 1` will start searching at a target of 2. - -- The default target for fee estimation is changed to 6 blocks in both the GUI - (previously 25) and for RPC calls (previously 2). - -Removal of Priority Estimation ------------------------------- - -- Estimation of "priority" needed for a transaction to be included within a target - number of blocks has been removed. The RPC calls are deprecated and will either - return -1 or 1e24 appropriately. The format for `fee_estimates.dat` has also - changed to no longer save these priority estimates. It will automatically be - converted to the new format which is not readable by prior versions of the - software. - -- Support for "priority" (coin age) transaction sorting for mining is - considered deprecated in Core and will be removed in the next major version. - This is not to be confused with the `prioritisetransaction` RPC which will remain - supported by Core for adding fee deltas to transactions. - -P2P connection management --------------------------- - -- Peers manually added through the `-addnode` option or `addnode` RPC now have their own - limit of eight connections which does not compete with other inbound or outbound - connection usage and is not subject to the limitation imposed by the `-maxconnections` - option. - -- New connections to manually added peers are performed more quickly. - -Introduction of assumed-valid blocks -------------------------------------- - -- A significant portion of the initial block download time is spent verifying - scripts/signatures. Although the verification must pass to ensure the security - of the system, no other result from this verification is needed: If the node - knew the history of a given block were valid it could skip checking scripts - for its ancestors. - -- A new configuration option 'assumevalid' is provided to express this knowledge - to the software. Unlike the 'checkpoints' in the past this setting does not - force the use of a particular chain: chains that are consistent with it are - processed quicker, but other chains are still accepted if they'd otherwise - be chosen as best. Also unlike 'checkpoints' the user can configure which - block history is assumed true, this means that even outdated software can - sync more quickly if the setting is updated by the user. - -- Because the validity of a chain history is a simple objective fact it is much - easier to review this setting. As a result the software ships with a default - value adjusted to match the current chain shortly before release. The use - of this default value can be disabled by setting -assumevalid=0 - -Fundrawtransaction change address reuse ----------------------------------------- - -- Before 0.14, `fundrawtransaction` was by default wallet stateless. In - almost all cases `fundrawtransaction` does add a change-output to the - outputs of the funded transaction. Before 0.14, the used keypool key was - never marked as change-address key and directly returned to the keypool - (leading to address reuse). Before 0.14, calling `getnewaddress` - directly after `fundrawtransaction` did generate the same address as - the change-output address. - -- Since 0.14, fundrawtransaction does reserve the change-output-key from - the keypool by default (optional by setting `reserveChangeKey`, default = - `true`) - -- Users should also consider using `getrawchangeaddress()` in conjunction - with `fundrawtransaction`'s `changeAddress` option. - -Unused mempool memory used by coincache ----------------------------------------- - -- Before 0.14, memory reserved for mempool (using the `-maxmempool` option) - went unused during initial block download, or IBD. In 0.14, the UTXO DB cache - (controlled with the `-dbcache` option) borrows memory from the mempool - when there is extra memory available. This may result in an increase in - memory usage during IBD for those previously relying on only the `-dbcache` - option to limit memory during that time. - -0.14.0 Change log +0.13.x Change log ================= Detailed release notes follow. This overview includes changes that affect -behavior, not code moves, minor refactors and string updates. For convenience -in locating the code changes and accompanying discussion, both the pull request -and git merge commit are mentioned. +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 other APIs -- #8421 `b77bb95` httpserver: drop boost dependency (theuni) -- #8638 `f061415` rest.cpp: change `HTTP_INTERNAL_SERVER_ERROR` to `HTTP_BAD_REQUEST` (djpnewton) -- #8272 `91990ee` Make the dummy argument to getaddednodeinfo optional (sipa) -- #8722 `bb843ad` bitcoin-cli: More detailed error reporting (laanwj) -- #6996 `7f71a3c` Add preciousblock RPC (sipa) -- #8788 `97c7f73` Give RPC commands more information about the RPC request (jonasschnelli) -- #7948 `5d2c8e5` Augment getblockchaininfo bip9\_softforks data (mruddy) -- #8980 `0e22855` importmulti: Avoid using boost::variant::operator!=, which is only in newer boost versions (luke-jr) -- #9025 `4d8558a` Getrawtransaction should take a bool for verbose (jnewbery) -- #8811 `5754e03` Add support for JSON-RPC named arguments (laanwj) -- #9520 `2456a83` Deprecate non-txindex getrawtransaction and better warning (sipa) -- #9518 `a65ced1` Return height of last block pruned by pruneblockchain RPC (ryanofsky) -- #9222 `7cb024e` Add 'subtractFeeFromAmount' option to 'fundrawtransaction' (dooglus) -- #8456 `2ef52d3` Simplified `bumpfee` command (mrbandrews) -- #9516 `727a798` Bug-fix: listsinceblock: use fork point as reference for blocks in reorg'd chains (kallewoof) -- #9640 `7bfb770` Bumpfee: bugfixes for error handling and feerate calculation (sdaftuar) -- #9673 `8d6447e` Set correct metadata on bumpfee wallet transactions (ryanofsky) -- #9650 `40f7e27` Better handle invalid parameters to signrawtransaction (TheBlueMatt) -- #9682 `edc9e63` Require timestamps for importmulti keys (ryanofsky) -- #9108 `d8e8b06` Use importmulti timestamp when importing watch only keys (on top of #9682) (ryanofsky) -- #9756 `7a93af8` Return error when importmulti called with invalid address (ryanofsky) -- #9778 `ad168ef` Add two hour buffer to manual pruning (morcos) -- #9761 `9828f9a` Use 2 hour grace period for key timestamps in importmulti rescans (ryanofsky) -- #9474 `48d7e0d` Mark the minconf parameter to move as ignored (sipa) -- #9619 `861cb0c` Bugfix: RPC/Mining: GBT should return 1 MB sizelimit before segwit activates (luke-jr) -- #9773 `9072395` Return errors from importmulti if complete rescans are not successful (ryanofsky) - -### Block and transaction handling -- #8391 `37d83bb` Consensus: Remove ISM (NicolasDorier) -- #8365 `618c9dd` Treat high-sigop transactions as larger rather than rejecting them (sipa) -- #8814 `14b7b3f` wallet, policy: ParameterInteraction: Don't allow 0 fee (MarcoFalke) -- #8515 `9bdf526` A few mempool removal optimizations (sipa) -- #8448 `101c642` Store mempool and prioritization data to disk (sipa) -- #7730 `3c03dc2` Remove priority estimation (morcos) -- #9111 `fb15610` Remove unused variable `UNLIKELY_PCT` from fees.h (fanquake) -- #9133 `434e683` Unset fImporting for loading mempool (morcos) -- #9179 `b9a87b4` Set `DEFAULT_LIMITFREERELAY` = 0 kB/minute (MarcoFalke) -- #9239 `3fbf079` Disable fee estimates for 1-block target (morcos) -- #7562 `1eef038` Bump transaction version default to 2 (btcdrak) -- #9313,#9367 If we don't allow free txs, always send a fee filter (morcos) -- #9346 `b99a093` Batch construct batches (sipa) -- #9262 `5a70572` Prefer coins that have fewer ancestors, sanity check txn before ATMP (instagibbs) -- #9288 `1ce7ede` Fix a bug if the min fee is 0 for FeeFilterRounder (morcos) -- #9395 `0fc1c31` Add test for `-walletrejectlongchains` (morcos) -- #9107 `7dac1e5` Safer modify new coins (morcos) -- #9312 `a72f76c` Increase mempool expiry time to 2 weeks (morcos) -- #8610 `c252685` Share unused mempool memory with coincache (sipa) -- #9138 `f646275` Improve fee estimation (morcos) -- #9408 `46b249e` Allow shutdown during LoadMempool, dump only when necessary (jonasschnelli) -- #9310 `8c87f17` Assert FRESH validity in CCoinsViewCache::BatchWrite (ryanofsky) -- #7871 `e2e624d` Manual block file pruning (mrbandrews) -- #9507 `0595042` Fix use-after-free in CTxMemPool::removeConflicts() (sdaftuar) -- #9380 `dd98f04` Separate different uses of minimum fees (morcos) -- #9596 `71148b8` bugfix save feeDelta instead of priorityDelta in DumpMempool (morcos) -- #9371 `4a1dc35` Notify on removal (morcos) -- #9519 `9b4d267` Exclude RBF replacement txs from fee estimation (morcos) -- #8606 `e2a1a1e` Fix some locks (sipa) -- #8681 `6898213` Performance Regression Fix: Pre-Allocate txChanged vector (JeremyRubin) -- #8223 `744d265` c++11: Use std::unique\_ptr for block creation (domob1812) -- #9125 `7490ae8` Make CBlock a vector of shared\_ptr of CTransactions (sipa) -- #8930 `93566e0` Move orphan processing to ActivateBestChain (TheBlueMatt) -- #8580 `46904ee` Make CTransaction actually immutable (sipa) -- #9240 `a1dcf2e` Remove txConflicted (morcos) -- #8589 `e8cfe1e` Inline CTxInWitness inside CTxIn (sipa) -- #9349 `2db4cbc` Make CScript (and prevector) c++11 movable (sipa) -- #9252 `ce5c1f4` Release cs\_main before calling ProcessNewBlock, or processing headers (cmpctblock handling) (sdaftuar) -- #9283 `869781c` A few more CTransactionRef optimizations (sipa) -- #9499 `9c9af5a` Use recent-rejects, orphans, and recently-replaced txn for compact-block-reconstruction (TheBlueMatt) -- #9813 `3972a8e` Read/write mempool.dat as a binary (paveljanik) - -### P2P protocol and network code -- #8128 `1030fa7` Turn net structures into dumb storage classes (theuni) -- #8282 `026c6ed` Feeler connections to increase online addrs in the tried table (EthanHeilman) -- #8462 `53f8f22` Move AdvertiseLocal debug output to net category (Mirobit) -- #8612 `84decb5` Check for compatibility with download in FindNextBlocksToDownload (sipa) -- #8594 `5b2ea29` Do not add random inbound peers to addrman (gmaxwell) -- #8085 `6423116` Begin encapsulation (theuni) -- #8715 `881d7ea` only delete CConnman if it's been created (theuni) -- #8707 `f07424a` Fix maxuploadtarget setting (theuni) -- #8661 `d2e4655` Do not set an addr time penalty when a peer advertises itself (gmaxwell) -- #8822 `9bc6a6b` Consistent checksum handling (laanwj) -- #8936 `1230890` Report NodeId in misbehaving debug (rebroad) -- #8968 `3cf496d` Don't hold cs\_main when calling ProcessNewBlock from a cmpctblock (TheBlueMatt) -- #9002 `e1d1f57` Make connect=0 disable automatic outbound connections (gmaxwell) -- #9050 `fcf61b8` Make a few values immutable, and use deterministic randomness for the localnonce (theuni) -- #8969 `3665483` Decouple peer-processing-logic from block-connection-logic (#2) (TheBlueMatt) -- #8708 `c8c572f` have CConnman handle message sending (theuni) -- #8709 `1e50d22` Allow filterclear messages for enabling TX relay only (rebroad) -- #9045 `9f554e0` Hash P2P messages as they are received instead of at process-time (TheBlueMatt) -- #9026 `dc6b940` Fix handling of invalid compact blocks (sdaftuar) -- #8996 `ab914a6` Network activity toggle (luke-jr) -- #9131 `62af164` fNetworkActive is not protected by a lock, use an atomic (jonasschnelli) -- #8872 `0c577f2` Remove block-request logic from INV message processing (TheBlueMatt) -- #8690 `791b58d` Do not fully sort all nodes for addr relay (sipa) -- #9128 `76fec09` Decouple CConnman and message serialization (theuni) -- #9226 `3bf06e9` Remove fNetworkNode and pnodeLocalHost (gmaxwell) -- #9352 `a7f7651` Attempt reconstruction from all compact block announcements (sdaftuar) -- #9319 `a55716a` Break addnode out from the outbound connection limits (gmaxwell) -- #9261 `2742568` Add unstored orphans with rejected parents to recentRejects (morcos) -- #9441 `8b66bf7` Massive speedup. Net locks overhaul (theuni) -- #9375 `3908fc4` Relay compact block messages prior to full block connection (TheBlueMatt) -- #9400 `8a445c5` Set peers as HB peers upon full block validation (instagibbs) -- #9561 `6696b46` Wake message handling thread when we receive a new block (TheBlueMatt) -- #9535 `82274c0` Split CNode::cs\_vSend: message processing and message sending (TheBlueMatt) -- #9606 `3f9f962` Consistently use GetTimeMicros() for inactivity checks (sdaftuar) -- #9594 `fd70211` Send final alert message to older peers after connecting (gmaxwell) -- #9626 `36966a1` Clean up a few CConnman cs\_vNodes/CNode things (TheBlueMatt) -- #9609 `4966917` Fix remaining net assertions (theuni) -- #9671 `7821db3` Fix super-unlikely race introduced in 236618061a445d2cb11e72 (TheBlueMatt) -- #9730 `33f3b21` Remove bitseed.xf2.org form the dns seed list (jonasschnelli) -- #9698 `2447c10` Fix socket close race (theuni) -- #9708 `a06ede9` Clean up all known races/platform-specific UB at the time PR was opened (TheBlueMatt) -- #9715 `b08656e` Disconnect peers which we do not receive VERACKs from within 60 sec (TheBlueMatt) -- #9720 `e87ce95` Fix banning and disallow sending messages before receiving verack (theuni) -- #9268 `09c4fd1` Fix rounding privacy leak introduced in #9260 (TheBlueMatt) -- #9075 `9346f84` Decouple peer-processing-logic from block-connection-logic (#3) (TheBlueMatt) -- #8688 `047ded0` Move static global randomizer seeds into CConnman (sipa) -- #9289 `d9ae1ce` net: drop boost::thread\_group (theuni) - -### Validation -- #9014 `d04aeba` Fix block-connection performance regression (TheBlueMatt) -- #9299 `d52ce89` Remove no longer needed check for premature v2 txs (morcos) -- #9273 `b68685a` Remove unused `CDiskBlockPos*` argument from ProcessNewBlock (TheBlueMatt) -- #8895 `b83264d` Better SigCache Implementation (JeremyRubin) -- #9490 `e126d0c` Replace FindLatestBefore used by importmulti with FindEarliestAtLeast (gmaxwell) -- #9484 `812714f` Introduce assumevalid setting to skip validation presumed valid scripts (gmaxwell) -- #9511 `7884956` Don't overwrite validation state with corruption check (morcos) -- #9765 `1e92e04` Harden against mistakes handling invalid blocks (sdaftuar) -- #9779 `3c02b95` Update nMinimumChainWork and defaultAssumeValid (gmaxwell) -- #8524 `19b0f33` Precompute sighashes (sipa) -- #9791 `1825a03` Avoid VLA in hash.h (sipa) - -### Build system -- #8238 `6caf3ee` ZeroMQ 4.1.5 && ZMQ on Windows (fanquake) -- #8520 `b40e19c` Remove check for `openssl/ec.h` (laanwj) -- #8617 `de07fdc` Include instructions to extract Mac OS X SDK on Linux using 7zip and SleuthKit (luke-jr) -- #8566 `7b98895` Easy to use gitian building script (achow101) -- #8604 `f256843` build,doc: Update for 0.13.0+ and OpenBSD 5.9 (laanwj) -- #8640 `2663e51` depends: Remove Qt46 package (fanquake) -- #8645 `8ea4440` Remove unused Qt 4.6 patch (droark) -- #8608 `7e9ab95` Install manpages via make install, also add some autogenerated manpages (nomnombtc) -- #8781 `ca69ef4` contrib: delete `qt_translations.py` (MarcoFalke) -- #8783 `64dc645` share: remove qt/protobuf.pri (MarcoFalke) -- #8423 `3166dff` depends: expat 2.2.0, ccache 3.3.1, fontconfig 2.12.1 (fanquake) -- #8791 `b694b0d` travis: cross-mac: explicitly enable gui (MarcoFalke) -- #8820 `dc64141` depends: Fix Qt compilation with Xcode 8 (fanquake) -- #8730 `489a6ab` depends: Add libevent compatibility patch for windows (laanwj) -- #8819 `c841816` depends: Boost 1.61.0 (fanquake) -- #8826 `f560d95` Do not include `env_win.cc` on non-Windows systems (paveljanik) -- #8948 `e077e00` Reorder Windows gitian build order to match Linux (Michagogo) -- #8568 `078900d` new var `DIST_CONTRIB` adds useful things for packagers from contrib (nomnombtc) -- #9114 `21e6c6b` depends: Set `OSX_MIN_VERSION` to 10.8 (fanquake) -- #9140 `018a4eb` Bugfix: Correctly replace generated headers and fail cleanly (luke-jr) -- #9156 `a8b2a82` Add compile and link options echo to configure (jonasschnelli) -- #9393 `03d85f6` Include cuckoocache header in Makefile (MarcoFalke) -- #9420 `bebe369` Fix linker error when configured with --enable-lcov (droark) -- #9412 `53442af` Fix 'make deploy' for OSX (jonasschnelli) -- #9475 `7014506` Let autoconf detect presence of `EVP_MD_CTX_new` (luke-jr) -- #9513 `bbf193f` Fix qt distdir builds (theuni) -- #9471 `ca615e6` depends: libevent 2.1.7rc (fanquake) -- #9468 `f9117f2` depends: Dependency updates for 0.14.0 (fanquake) -- #9469 `01c4576` depends: Qt 5.7.1 (fanquake) -- #9574 `5ac6687` depends: Fix QT build on OSX (fanquake) -- #9646 `720b579` depends: Fix cross build for qt5.7 (theuni) -- #9705 `6a55515` Add options to override BDB cflags/libs (laanwj) -- #8249 `4e1567a` Enable (and check for) 64-bit ASLR on Windows (laanwj) -- #9758 `476cc47` Selectively suppress deprecation warnings (jonasschnelli) -- #9783 `6d61a2b` release: bump gitian descriptors for a new 0.14 package cache (theuni) -- #9789 `749fe95` build: add --enable-werror and warn on vla's (theuni) -- #9831 `99fd85c` build: force a c++ standard to be specified (theuni) - -### GUI -- #8192 `c503863` Remove URLs from About dialog translations (fanquake) -- #8540 `36404ae` Fix random segfault when closing "Choose data directory" dialog (laanwj) -- #8517 `2468292` Show wallet HD state in statusbar (jonasschnelli) -- #8463 `62a5a8a` Remove Priority from coincontrol dialog (MarcoFalke) -- #7579 `0606f95` Show network/chain errors in the GUI (jonasschnelli) -- #8583 `c19f8a4` Show XTHIN in GUI (rebroad) -- #7783 `4335d5a` RPC-Console: support nested commands and simple value queries (jonasschnelli) -- #8672 `6052d50` Show transaction size in transaction details window (Cocosoft) -- #8777 `fec6af7` WalletModel: Expose disablewallet (MarcoFalke) -- #8371 `24f72e9` Add out-of-sync modal info layer (jonasschnelli) -- #8885 `b2fec4e` Fix ban from qt console (theuni) -- #8821 `bf8e68a` sync-overlay: Don't block during reindex (MarcoFalke) -- #8906 `088d1f4` sync-overlay: Don't show progress twice (MarcoFalke) -- #8918 `47ace42` Add "Copy URI" to payment request context menu (luke-jr) -- #8925 `f628d9a` Display minimum ping in debug window (rebroad) -- #8774 `3e942a7` Qt refactors to better abstract wallet access (luke-jr) -- #8985 `7b1bfa3` Use pindexBestHeader instead of setBlockIndexCandidates for NotifyHeaderTip() (jonasschnelli) -- #8989 `d2143dc` Overhaul smart-fee slider, adjust default confirmation target (jonasschnelli) -- #9043 `273bde3` Return useful error message on ATMP failure (MarcoFalke) -- #9088 `4e57824` Reduce ambiguity of warning message (rebroad) -- #8874 `e984730` Multiple Selection for peer and ban tables (achow101) -- #9145 `924745d` Make network disabled icon 50% opaque (MarcoFalke) -- #9130 `ac489b2` Mention the new network toggle functionality in the tooltip (paveljanik) -- #9218 `4d955fc` Show progress overlay when clicking spinner icon (laanwj) -- #9280 `e15660c` Show ModalOverlay by pressing the progress bar, allow hiding (jonasschnelli) -- #9296 `fde7d99` Fix missed change to WalletTx structure (morcos) -- #9266 `2044e37` Bugfix: Qt/RPCConsole: Put column enum in the right places (luke-jr) -- #9255 `9851a84` layoutAboutToChange signal is called layoutAboutToBeChanged (laanwj) -- #9330 `47e6a19` Console: add security warning (jonasschnelli) -- #9329 `db45ad8` Console: allow empty arguments (jonasschnelli) -- #8877 `6dc4c43` Qt RPC console: history sensitive-data filter, and saving input line when browsing history (luke-jr) -- #9462 `649cf5f` Do not translate tilde character (MarcoFalke) -- #9457 `123ea73` Select more files for translation (MarcoFalke) -- #9413 `fd7d8c7` CoinControl: Allow non-wallet owned change addresses (jonasschnelli) -- #9461 `b250686` Improve progress display during headers-sync and peer-finding (jonasschnelli) -- #9588 `5086452` Use nPowTargetSpacing constant (MarcoFalke) -- #9637 `d9e4d1d` Fix transaction details output-index to reflect vout index (jonasschnelli) -- #9718 `36f9d3a` Qt/Intro: Various fixes (luke-jr) -- #9735 `ec66d06` devtools: Handle Qt formatting characters edge-case in update-translations.py (laanwj) -- #9755 `a441db0` Bugfix: Qt/Options: Restore persistent "restart required" notice (luke-jr) -- #9817 `7d75a5a` Fix segfault crash when shutdown the GUI in disablewallet mode (jonasschnelli) - -### Wallet -- #8152 `b9c1cd8` Remove `CWalletDB*` parameter from CWallet::AddToWallet (pstratem) -- #8432 `c7e05b3` Make CWallet::fFileBacked private (pstratem) -- #8445 `f916700` Move CWallet::setKeyPool to private section of CWallet (pstratem) -- #8564 `0168019` Remove unused code/conditions in ReadAtCursor (jonasschnelli) -- #8601 `37ac678` Add option to opt into full-RBF when sending funds (rebase, original by petertodd) (laanwj) -- #8494 `a5b20ed` init, wallet: ParameterInteraction() iff wallet enabled (MarcoFalke) -- #8760 `02ac669` init: Get rid of some `ENABLE_WALLET` (MarcoFalke) -- #8696 `a1f8d3e` Wallet: Remove last external reference to CWalletDB (pstratem) -- #8768 `886e8c9` init: Get rid of fDisableWallet (MarcoFalke) -- #8486 `ab0b411` Add high transaction fee warnings (MarcoFalke) -- #8851 `940748b` Move key derivation logic from GenerateNewKey to DeriveNewChildKey (pstratem) -- #8287 `e10af96` Set fLimitFree = true (MarcoFalke) -- #8928 `c587577` Fix init segfault where InitLoadWallet() calls ATMP before genesis (TheBlueMatt) -- #7551 `f2d7056` Add importmulti RPC call (pedrobranco) -- #9016 `0dcb888` Return useful error message on ATMP failure (instagibbs) -- #8753 `f8723d2` Locked memory manager (laanwj) -- #8828 `a4fd8df` Move CWalletDB::ReorderTransactions to CWallet (pstratem) -- #8977 `6a1343f` Refactor wallet/init interaction (Reaccept wtx, flush thread) (jonasschnelli) -- #9036 `ed0cc50` Change default confirm target from 2 to 6 (laanwj) -- #9071 `d1871da` Declare wallet.h functions inline (sipa) -- #9132 `f54e460` Make strWalletFile const (jonasschnelli) -- #9141 `5ea5e04` Remove unnecessary calls to CheckFinalTx (jonasschnelli) -- #9165 `c01f16a` SendMoney: use already-calculated balance (instagibbs) -- #9311 `a336d13` Flush wallet after abandontransaction (morcos) -- #8717 `38e4887` Addition of ImmatureCreditCached to MarkDirty() (spencerlievens) -- #9446 `510c0d9` SetMerkleBranch: remove unused code, remove cs\_main lock requirement (jonasschnelli) -- #8776 `2a524b8` Wallet refactoring leading up to multiwallet (luke-jr) -- #9465 `a7d55c9` Do not perform ECDSA signing in the fee calculation inner loop (gmaxwell) -- #9404 `12e3112` Smarter coordination of change and fee in CreateTransaction (morcos) -- #9377 `fb75cd0` fundrawtransaction: Keep change-output keys by default, make it optional (jonasschnelli) -- #9578 `923dc44` Add missing mempool lock for CalculateMemPoolAncestors (TheBlueMatt) -- #9227 `02464da` Make nWalletDBUpdated atomic to avoid a potential race (pstratem) -- #9764 `f8af89a` Prevent "overrides a member function but is not marked 'override'" warnings (laanwj) -- #9771 `e43a585` Add missing cs\_wallet lock that triggers new lock held assertion (ryanofsky) -- #9316 `3097ea4` Disable free transactions when relay is disabled (MarcoFalke) -- #9615 `d2c9e4d` Wallet incremental fee (morcos) -- #9760 `40c754c` Remove importmulti always-true check (ryanofsky) - -### Tests and QA -- #8270 `6e5e5ab` Tests: Use portable #! in python scripts (/usr/bin/env) (ChoHag) -- #8534,#8504 Remove java comparison tool (laanwj,MarcoFalke) -- #8482 `740cff5` Use single cache dir for chains (MarcoFalke) -- #8450 `21857d2` Replace `rpc_wallet_tests.cpp` with python RPC unit tests (pstratem) -- #8671 `ddc3080` Minimal fix to slow prevector tests as stopgap measure (JeremyRubin) -- #8680 `666eaf0` Address Travis spurious failures (theuni) -- #8789 `e31a43c` pull-tester: Only print output when failed (MarcoFalke) -- #8810 `14e8f99` tests: Add exception error message for JSONRPCException (laanwj) -- #8830 `ef0801b` test: Add option to run bitcoin-util-test.py manually (jnewbery) -- #8881 `e66cc1d` Add some verbose logging to bitcoin-util-test.py (jnewbery) -- #8922 `0329511` Send segwit-encoded blocktxn messages in p2p-compactblocks (TheBlueMatt) -- #8873 `74dc388` Add microbenchmarks to profile more code paths (ryanofsky) -- #9032 `6a8be7b` test: Add format-dependent comparison to bctest (laanwj) -- #9023 `774db92` Add logging to bitcoin-util-test.py (jnewbery) -- #9065 `c9bdf9a` Merge `doc/unit-tests.md` into `src/test/README.md` (laanwj) -- #9069 `ed64bce` Clean up bctest.py and bitcoin-util-test.py (jnewbery) -- #9095 `b8f43e3` test: Fix test\_random includes (MarcoFalke) -- #8894 `faec09b` Testing: Include fRelay in mininode version messages (jnewbery) -- #9097 `e536499` Rework `sync_*` and preciousblock.py (MarcoFalke) -- #9049 `71bc39e` Remove duplicatable duplicate-input check from CheckTransaction (TheBlueMatt) -- #9136 `b422913` sync\_blocks cleanup (ryanofsky) -- #9151 `4333b1c` proxy\_test: Calculate hardcoded port numbers (MarcoFalke) -- #9206 `e662d28` Make test constant consistent with consensus.h (btcdrak) -- #9139 `0de7fd3` Change sync\_blocks to pick smarter maxheight (on top of #9196) (ryanofsky) -- #9100 `97ec6e5` tx\_valid: re-order inputs to how they are encoded (dcousens) -- #9202 `e56cf67` bench: Add support for measuring CPU cycles (laanwj) -- #9223 `5412c08` unification of Bloom filter representation (s-matthew-english) -- #9257 `d7ba4a2` Dump debug logs on travis failures (sdaftuar) -- #9221 `9e4bb31` Get rid of duplicate code (MarcoFalke) -- #9274 `919db03` Use cached utxo set to fix performance regression (MarcoFalke) -- #9276 `ea33f19` Some minor testing cleanups (morcos) -- #9291 `8601784` Remove mapOrphanTransactionsByPrev from DoS\_tests (sipa) -- #9309 `76fcd9d` Wallet needs to stay unlocked for whole test (morcos) -- #9172 `5bc209c` Resurrect pstratem's "Simple fuzzing framework" (laanwj) -- #9331 `c6fd923` Add test for rescan feature of wallet key import RPCs (ryanofsky) -- #9354 `b416095` Make fuzzer actually test CTxOutCompressor (sipa) -- #9390,#9416 travis: make distdir (MarcoFalke) -- #9308 `0698639` test: Add CCoinsViewCache Access/Modify/Write tests (ryanofsky) -- #9406 `0f921e6` Re-enable a blank v1 Tx JSON test (droark) -- #9435 `dbc8a8c` Removed unused variable in test, fixing warning (ryanofsky) -- #9436 `dce853e` test: Include tx data in `EXTRA_DIST` (MarcoFalke) -- #9525 `02e5308` test: Include tx data in `EXTRA_DIST` (MarcoFalke) -- #9498 `054d664` Basic CCheckQueue Benchmarks (JeremyRubin) -- #9554 `0b96abc` test: Avoid potential NULL pointer dereference in `addrman_tests.cpp` (practicalswift) -- #9628 `f895023` Increase a sync\_blocks timeout in pruning.py (sdaftuar) -- #9638 `a7ea2f8` Actually test assertions in pruning.py (MarcoFalke) -- #9647 `e99f0d7` Skip RAII event tests if libevent is built without `event_set_mem_functions` (luke-jr) -- #9691 `fc67cd2` Init ECC context for `test_bitcoin_fuzzy` (gmaxwell) -- #9712 `d304fef` bench: Fix initialization order in registration (laanwj) -- #9707 `b860915` Fix RPC failure testing (jnewbery) -- #9269 `43e8150` Align struct COrphan definition (sipa) -- #9820 `599c69a` Fix pruning test broken by 2 hour manual prune window (ryanofsky) -- #9824 `260c71c` qa: Check return code when stopping nodes (MarcoFalke) -- #9875 `50953c2` tests: Fix dangling pwalletMain pointer in wallet tests (laanwj) -- #9839 `eddaa6b` [qa] Make import-rescan.py watchonly check reliable (ryanofsky) - -### Documentation -- #8332 `806b9e7` Clarify witness branches in transaction.h serialization (dcousens) -- #8935 `0306978` Documentation: Building on Windows with WSL (pooleja) -- #9144 `c98f6b3` Correct waitforblockheight example help text (fanquake) -- #9407 `041331e` Added missing colons in when running help command (anditto) -- #9378 `870cd2b` Add documentation for CWalletTx::fFromMe member (ryanofsky) -- #9297 `0b73807` Various RPC help outputs updated (Mirobit) -- #9613 `07421cf` Clarify getbalance help string to explain interaction with bumpfee (ryanofsky) -- #9663 `e30d928` Clarify listunspent amount description (instagibbs) -- #9396 `d65a13b` Updated listsinceblock rpc documentation (accraze) -- #8747 `ce43630` rpc: Fix transaction size comments and RPC help text (jnewbery) -- #8058 `bbd9740` Doc: Add issue template (AmirAbrams) -- #8567 `85d4e21` Add default port numbers to REST doc (djpnewton) -- #8624 `89de153` build: Mention curl (MarcoFalke) -- #8786 `9da7366` Mandatory copyright agreement (achow101) -- #8823 `7b05af6` Add privacy recommendation when running hidden service (laanwj) -- #9433 `caa2f10` Update the Windows build notes (droark) -- #8879 `f928050` Rework docs (MarcoFalke) -- #8887 `61d191f` Improve GitHub issue template (fanquake) -- #8787 `279bbad` Add missing autogen to example builds (AmirAbrams) -- #8892 `d270c30` Add build instructions for FreeBSD (laanwj) -- #8890 `c71a654` Update Doxygen configuration file (fanquake) -- #9207 `fa1f944` Move comments above bash command in build-unix (AmirAbrams) -- #9219 `c4522e7` Improve windows build instructions using Linux subsystem (laanwj) -- #8954 `932d02a` contrib: Add README for pgp keys (MarcoFalke) -- #9093 `2fae5b9` release-process: Mention GitHub release and archived release notes (MarcoFalke) -- #8743 `bae178f` Remove old manpages from contrib/debian in favour of doc/man (fanquake) -- #9550 `4105cb6` Trim down the XP notice and say more about what we support (gmaxwell) -- #9246 `9851498` Developer docs about existing subtrees (gmaxwell) -- #9401 `c2ea1e6` Make rpcauth help message clearer, add example in example .conf (instagibbs) -- #9022,#9033 Document dropping OS X 10.7 support (fanquake, MarcoFalke) -- #8771 `bc9e3ab` contributing: Mention not to open several pulls (luke-jr) -- #8852 `7b784cc` Mention Gitian building script in doc (Laudaa) (laanwj) -- #8915 `03dd707` Add copyright/patent issues to possible NACK reasons (petertodd) -- #8965 `23e03f8` Mention that PPA doesn't support Debian (anduck) -- #9115 `bfc7aad` Mention reporting security issues responsibly (paveljanik) -- #9840 `08e0690` Update sendfrom RPC help to correct coin selection misconception (ryanofsky) -- #9865 `289204f` Change bitcoin address in RPC help message (marijnfs) - -### Miscellaneous -- #8274 `7a2d402` util: Update tinyformat (laanwj) -- #8291 `5cac8b1` util: CopyrightHolders: Check for untranslated substitution (MarcoFalke) -- #8557 `44691f3` contrib: Rework verifybinaries (MarcoFalke) -- #8621 `e8ed6eb` contrib: python: Don't use shell=True (MarcoFalke) -- #8813 `fb24d7e` bitcoind: Daemonize using daemon(3) (laanwj) -- #9004 `67728a3` Clarify `listenonion` (unsystemizer) -- #8674 `bae81b8` tools for analyzing, updating and adding copyright headers in source files (isle2983) -- #8976 `8c6218a` libconsensus: Add input validation of flags (laanwj) -- #9112 `46027e8` Avoid ugly exception in log on unknown inv type (laanwj) -- #8837 `2108911` Allow bitcoin-tx to parse partial transactions (jnewbery) -- #9204 `74ced54` Clarify CreateTransaction error messages (instagibbs) -- #9265 `31bcc66` bitcoin-cli: Make error message less confusing (laanwj) -- #9303 `72bf1b3` Update comments in ctaes (sipa) -- #9417 `c4b7d4f` Do not evaluate hidden LogPrint arguments (sipa) -- #9506 `593a00c` RFC: Improve style for if indentation (sipa) -- #8883 `d5d4ad8` Add all standard TXO types to bitcoin-tx (jnewbery) -- #9531 `23281a4` Release notes for estimation changes (morcos) -- #9486 `f62bc10` Make peer=%d log prints consistent (TheBlueMatt) -- #9552 `41cb05c` Add IPv6 support to qos.sh (jamesmacwhite) -- #9542 `e9e7993` Docs: Update CONTRIBUTING.md (jnewbery) -- #9649 `53ab12d` Remove unused clang format dev script (MarcoFalke) -- #9625 `77bd8c4` Increase minimum debug.log size to 10MB after shrink (morcos) -- #9070 `7b22e50` Lockedpool fixes (kazcw) -- #8779 `7008e28` contrib: Delete spendfrom (MarcoFalke) -- #9587,#8793,#9496,#8191,#8109,#8655,#8472,#8677,#8981,#9124 Avoid shadowing of variables (paveljanik) -- #9063 `f2a6e82` Use deprecated `MAP_ANON` if `MAP_ANONYMOUS` is not defined (paveljanik) -- #9060 `1107653` Fix bloom filter init to isEmpty = true (robmcl4) -- #8613 `613bda4` LevelDB 1.19 (sipa) -- #9225 `5488514` Fix some benign races (TheBlueMatt) -- #8736 `5fa7b07` base58: Improve DecodeBase58 performance (wjx) -- #9039 `e81df49` Various serialization simplifcations and optimizations (sipa) -- #9010 `a143b88` Split up AppInit2 into multiple phases, daemonize after datadir lock errors (laanwj) -- #9230 `c79e52a` Fix some benign races in timestamp logging (TheBlueMatt) -- #9183,#9260 Mrs Peacock in The Library with The Candlestick (killed main.{h,cpp}) (TheBlueMatt) -- #9236 `7f72568` Fix races for strMiscWarning and `fLargeWork*Found`, make QT runawayException use GetWarnings (gmaxwell) -- #9243 `7aa7004` Clean up mapArgs and mapMultiArgs Usage (TheBlueMatt) -- #9387 `cfe41d7` RAII of libevent stuff using unique ptrs with deleters (kallewoof) -- #9472 `fac0f30` Disentangle progress estimation from checkpoints and update it (sipa) -- #9512 `6012967` Fix various things -fsanitize complains about (sipa) -- #9373,#9580 Various linearization script issues (droark) -- #9674 `dd163f5` Lock debugging: Always enforce strict lock ordering (try or not) (TheBlueMatt) -- #8453,#9334 Update to latest libsecp256k1 (laanwj,sipa) -- #9656 `7c93952` Check verify-commits on pushes to master (TheBlueMatt) -- #9679 `a351162` Access WorkQueue::running only within the cs lock (TheBlueMatt) -- #9777 `8dee822` Handle unusual maxsigcachesize gracefully (jnewbery) -- #8863,#8807 univalue: Pull subtree (MarcoFalke) -- #9798 `e22c067` Fix Issue #9775 (Check returned value of fopen) (kirit93) -- #9856 `69832aa` Terminate immediately when allocation fails (theuni) +[to be filled in at release] Credits ======= Thanks to everyone who directly contributed to this release: -- accraze -- adlawren -- Alex Morcos -- Alexey Vesnin -- Amir Abrams -- Anders Øyvind Urke-Sætre -- Anditto Heristyo -- Andrew Chow -- anduck -- Anthony Towns -- Brian Deery -- BtcDrak -- Chris Moore -- Chris Stewart -- Christian Barcenas -- Christian Decker -- Cory Fields -- crowning- -- CryptAxe -- CryptoVote -- Dagur Valberg Johannsson -- Daniel Cousens -- Daniel Kraft -- Derek Miller -- djpnewton -- Don Patterson -- Doug -- Douglas Roark -- Ethan Heilman -- fsb4000 -- Gaurav Rana -- Geoffrey Tsui -- Greg Walker -- Gregory Maxwell -- Gregory Sanders -- Hampus Sjöberg -- isle2983 -- Ivo van der Sangen -- James White -- Jameson Lopp -- Jeremy Rubin -- Jiaxing Wang -- jnewbery -- John Newbery -- Johnson Lau -- Jon Lund Steffensen -- Jonas Schnelli -- jonnynewbs -- Jorge Timón -- Justin Camarena -- Karl-Johan Alm -- Kaz Wesley -- kirit93 -- Koki Takahashi -- Lauda -- leijurv -- lizhi -- Luke Dashjr -- maiiz -- MarcoFalke -- Marijn Stollenga -- Marty Jones -- Masahiko Hyuga -- Matt Corallo -- Matthew King -- matthias -- Micha -- Michael Ford -- Michael Rotarius -- Mitchell Cash -- mrbandrews -- mruddy -- Nicolas DORIER -- nomnombtc -- Patrick Strateman -- Pavel Janík -- Pedro Branco -- Peter Todd -- Pieter Wuille -- poole\_party -- practicalswift -- R E Broadley -- randy-waterhouse -- Richard Kiss -- Robert McLaughlin -- rodasmith -- Russell Yanofsky -- S. Matthew English -- Sev -- Spencer Lievens -- Stanislas Marion -- Steven -- Suhas Daftuar -- Thomas Snider -- UdjinM6 -- unsystemizer -- whythat -- Will Binns -- Wladimir J. van der Laan -- wodry -- Zak Wilcox +[to be filled in at release] As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). + From 4d8e66017f6d6498df53935bc9a754d4317a2293 Mon Sep 17 00:00:00 2001 From: James Evans Date: Mon, 20 Mar 2017 05:19:41 -0300 Subject: [PATCH 06/40] Trivial: Fix typo in help getrawtransaction RPC Github-Pull: #10037 Rebased-From: 05a9f22358be27c08f7e164d05eeeaf0386073cb --- src/rpc/rawtransaction.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index bf16f27498f87..9ddeddd71b53c 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -139,7 +139,7 @@ UniValue getrawtransaction(const JSONRPCRequest& request) "\nArguments:\n" "1. \"txid\" (string, required) The transaction id\n" - "2. verbose (bool, optional, default=false) If true, return a string, other return a json object\n" + "2. verbose (bool, optional, default=false) If false, return a string, otherwise return a json object\n" "\nResult (if verbose is not set or set to false):\n" "\"data\" (string) The serialized, hex-encoded data for 'txid'\n" From ddc2dd16121b10da129d363530a365361435a849 Mon Sep 17 00:00:00 2001 From: Andrew Chow Date: Wed, 22 Mar 2017 20:34:27 -0400 Subject: [PATCH 07/40] Ensure an item exists on the rpcconsole stack before adding Ensures that there is an item on the rpcconsole stack before adding something to the current stack so that a segmentation fault does not occur. Github-Pull: #10060 Rebased-From: 4df76e270caa9d828179cae1c7a8918d6f91ec21 --- src/qt/rpcconsole.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 60406c2059777..001f19926474b 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -175,6 +175,10 @@ bool RPCConsole::RPCParseCommandLine(std::string &strResult, const std::string & nDepthInsideSensitive = 1; filter_begin_pos = chpos; } + // Make sure stack is not empty before adding something + if (stack.empty()) { + stack.push_back(std::vector()); + } stack.back().push_back(strArg); }; From e9611d10b67dd99bae83b32dedc9767b4c2e44d2 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Fri, 10 Mar 2017 16:53:03 -0500 Subject: [PATCH 08/40] depends: fix zlib build on osx zlib is sneaky and expects ar to be libtool on darwin. Github-Pull: #9973 Rebased-From: c62475329e5e4c4c3f9570546e2b843288f48c61 --- depends/packages/zlib.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/depends/packages/zlib.mk b/depends/packages/zlib.mk index 7ff5d00bbdc64..589490800f8bd 100644 --- a/depends/packages/zlib.mk +++ b/depends/packages/zlib.mk @@ -7,8 +7,10 @@ $(package)_sha256_hash=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca11 define $(package)_set_vars $(package)_build_opts= CC="$($(package)_cc)" $(package)_build_opts+=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -fPIC" -$(package)_build_opts+=AR="$($(package)_ar)" $(package)_build_opts+=RANLIB="$($(package)_ranlib)" +$(package)_build_opts+=AR="$($(package)_ar)" +$(package)_build_opts_darwin+=AR="$($(package)_libtool)" +$(package)_build_opts_darwin+=ARFLAGS="-o" endef define $(package)_config_cmds From fc3d7db5800f1d821ac233909f38bd342e3fe503 Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Fri, 3 Mar 2017 13:33:32 -0500 Subject: [PATCH 09/40] Optimize GetWitnessHash() for non-segwit transactions Github-Pull: #9912 Rebased-From: 02c57b521a9e7afd4416cd027a8b397f202b08a8 --- src/primitives/transaction.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/primitives/transaction.cpp b/src/primitives/transaction.cpp index 790bc71d14b78..28ef1fb4640db 100644 --- a/src/primitives/transaction.cpp +++ b/src/primitives/transaction.cpp @@ -69,6 +69,9 @@ uint256 CTransaction::ComputeHash() const uint256 CTransaction::GetWitnessHash() const { + if (!HasWitness()) { + return GetHash(); + } return SerializeHash(*this, SER_GETHASH, 0); } From 142fbb2fec76adee001ffdabfe25ebc462560696 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Sun, 26 Mar 2017 12:08:44 +0200 Subject: [PATCH 10/40] rpc: Rename first named arg of createrawtransaction Github-Pull: #10084 Rebased-From: fa558532192ca0bb519f811ee14df6037413b89f --- src/rpc/client.cpp | 2 +- src/rpc/rawtransaction.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rpc/client.cpp b/src/rpc/client.cpp index 5bdd84e555116..56d14959192fb 100644 --- a/src/rpc/client.cpp +++ b/src/rpc/client.cpp @@ -83,7 +83,7 @@ static const CRPCConvertParam vRPCConvertParams[] = { "getblockheader", 1, "verbose" }, { "gettransaction", 1, "include_watchonly" }, { "getrawtransaction", 1, "verbose" }, - { "createrawtransaction", 0, "transactions" }, + { "createrawtransaction", 0, "inputs" }, { "createrawtransaction", 1, "outputs" }, { "createrawtransaction", 2, "locktime" }, { "signrawtransaction", 1, "prevtxs" }, diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index 9ddeddd71b53c..0fabb9f5a882d 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -361,7 +361,7 @@ UniValue createrawtransaction(const JSONRPCRequest& request) "it is not stored in the wallet or transmitted to the network.\n" "\nArguments:\n" - "1. \"inputs\" (string, required) A json array of json objects\n" + "1. \"inputs\" (array, required) A json array of json objects\n" " [\n" " {\n" " \"txid\":\"id\", (string, required) The transaction id\n" @@ -370,7 +370,7 @@ UniValue createrawtransaction(const JSONRPCRequest& request) " } \n" " ,...\n" " ]\n" - "2. \"outputs\" (string, required) a json object with outputs\n" + "2. \"outputs\" (object, required) a json object with outputs\n" " {\n" " \"address\": x.xxx, (numeric or string, required) The key is the bitcoin address, the numeric value (can be string) is the " + CURRENCY_UNIT + " amount\n" " \"data\": \"hex\" (string, required) The key is \"data\", the value is hex encoded data\n" @@ -932,7 +932,7 @@ static const CRPCCommand commands[] = { // category name actor (function) okSafeMode // --------------------- ------------------------ ----------------------- ---------- { "rawtransactions", "getrawtransaction", &getrawtransaction, true, {"txid","verbose"} }, - { "rawtransactions", "createrawtransaction", &createrawtransaction, true, {"transactions","outputs","locktime"} }, + { "rawtransactions", "createrawtransaction", &createrawtransaction, true, {"inputs","outputs","locktime"} }, { "rawtransactions", "decoderawtransaction", &decoderawtransaction, true, {"hexstring"} }, { "rawtransactions", "decodescript", &decodescript, true, {"hexstring"} }, { "rawtransactions", "sendrawtransaction", &sendrawtransaction, false, {"hexstring","allowhighfees"} }, From fa7555b16a4e279f8f04c06f76a315e4c194ad79 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Mon, 27 Mar 2017 23:45:03 +0200 Subject: [PATCH 11/40] doc: Add release notes for RPC createraw break --- doc/release-notes.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 7ade5b74400f6..41fb500f164bf 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -36,7 +36,14 @@ Notable changes Example item ----------------------------------------------- -0.13.x Change log +RPC changes +----------- + +The first positional argument of `createrawtransaction` was renamed. +This interface change breaks compatibility with 0.14.0, when the named +arguments functionality, introduced in 0.14.0, is used. + +0.14.x Change log ================= Detailed release notes follow. This overview includes changes that affect From b5c3440b053217afda5f03ee97b3835f02fd5290 Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Mon, 6 Mar 2017 11:16:06 -0500 Subject: [PATCH 12/40] Mining: return early when block is almost full Github-Pull: #9959 Rebased-From: eed816af6c68c0c67f5fc05472a3927db62f8a18 --- src/miner.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/miner.cpp b/src/miner.cpp index 7b3d94d0e4f39..54d66dadd2220 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -416,6 +416,13 @@ void BlockAssembler::addPackageTxs() CTxMemPool::indexed_transaction_set::index::type::iterator mi = mempool.mapTx.get().begin(); CTxMemPool::txiter iter; + + // Limit the number of attempts to add transactions to the block when it is + // close to full; this is just a simple heuristic to finish quickly if the + // mempool has a lot of entries. + const int64_t MAX_CONSECUTIVE_FAILURES = 1000; + int64_t nConsecutiveFailed = 0; + while (mi != mempool.mapTx.get().end() || !mapModifiedTx.empty()) { // First try to find a new transaction in mapTx to evaluate. @@ -477,6 +484,14 @@ void BlockAssembler::addPackageTxs() mapModifiedTx.get().erase(modit); failedTx.insert(iter); } + + ++nConsecutiveFailed; + + if (nConsecutiveFailed > MAX_CONSECUTIVE_FAILURES && nBlockWeight > + nBlockMaxWeight - 4000) { + // Give up if we're close to full and haven't succeeded in a while + break; + } continue; } @@ -497,6 +512,9 @@ void BlockAssembler::addPackageTxs() continue; } + // This transaction will make it in; reset the failed counter. + nConsecutiveFailed = 0; + // Package can be added. Sort the entries in a valid order. std::vector sortedEntries; SortForBlock(ancestors, iter, sortedEntries); From 10028fb5551a210c71e63b065c53cb2a3dddba00 Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Wed, 8 Mar 2017 10:17:58 -0500 Subject: [PATCH 13/40] Add benchmarking for CreateNewBlock Github-Pull: #9959 Rebased-From: 42cd8c890fb2d65274f26edf95b6d52ac41fcab8 --- src/miner.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/miner.cpp b/src/miner.cpp index 54d66dadd2220..89863d3ec2a94 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -129,6 +129,8 @@ void BlockAssembler::resetBlock() std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& scriptPubKeyIn, bool fMineWitnessTx) { + int64_t nTimeStart = GetTimeMicros(); + resetBlock(); pblocktemplate.reset(new CBlockTemplate()); @@ -170,6 +172,8 @@ std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& sc addPriorityTxs(); addPackageTxs(); + int64_t nTime1 = GetTimeMicros(); + nLastBlockTx = nBlockTx; nLastBlockSize = nBlockSize; nLastBlockWeight = nBlockWeight; @@ -200,6 +204,9 @@ std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& sc if (!TestBlockValidity(state, chainparams, *pblock, pindexPrev, false, false)) { throw std::runtime_error(strprintf("%s: TestBlockValidity failed: %s", __func__, FormatStateMessage(state))); } + int64_t nTime2 = GetTimeMicros(); + + LogPrint("bench", "CreateNewBlock() packages: %.2fms, validity: %.2fms (total %.2fms)\n", 0.001 * (nTime1 - nTimeStart), 0.001 * (nTime2 - nTime1), 0.001 * (nTime2 - nTimeStart)); return std::move(pblocktemplate); } From a296c6009ffc64e0409aad791449f9f7fc7ba794 Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Wed, 8 Mar 2017 10:56:29 -0500 Subject: [PATCH 14/40] Update benchmarking with package statistics Github-Pull: #9959 Rebased-From: 011124a2b278c5a60bad5f1b0b4abbf7ebc95aa0 --- src/miner.cpp | 17 ++++++++++++----- src/miner.h | 11 +++++++---- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index 89863d3ec2a94..a12dcec2ce7e3 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -170,7 +170,9 @@ std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& sc fIncludeWitness = IsWitnessEnabled(pindexPrev, chainparams.GetConsensus()) && fMineWitnessTx; addPriorityTxs(); - addPackageTxs(); + int nPackagesSelected = 0; + int nDescendantsUpdated = 0; + addPackageTxs(nPackagesSelected, nDescendantsUpdated); int64_t nTime1 = GetTimeMicros(); @@ -206,7 +208,7 @@ std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& sc } int64_t nTime2 = GetTimeMicros(); - LogPrint("bench", "CreateNewBlock() packages: %.2fms, validity: %.2fms (total %.2fms)\n", 0.001 * (nTime1 - nTimeStart), 0.001 * (nTime2 - nTime1), 0.001 * (nTime2 - nTimeStart)); + LogPrint("bench", "CreateNewBlock() packages: %.2fms (%d packages, %d updated descendants), validity: %.2fms (total %.2fms)\n", 0.001 * (nTime1 - nTimeStart), nPackagesSelected, nDescendantsUpdated, 0.001 * (nTime2 - nTime1), 0.001 * (nTime2 - nTimeStart)); return std::move(pblocktemplate); } @@ -347,9 +349,10 @@ void BlockAssembler::AddToBlock(CTxMemPool::txiter iter) } } -void BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded, +int BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded, indexed_modified_transaction_set &mapModifiedTx) { + int nDescendantsUpdated = 0; BOOST_FOREACH(const CTxMemPool::txiter it, alreadyAdded) { CTxMemPool::setEntries descendants; mempool.CalculateDescendants(it, descendants); @@ -357,6 +360,7 @@ void BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alread BOOST_FOREACH(CTxMemPool::txiter desc, descendants) { if (alreadyAdded.count(desc)) continue; + ++nDescendantsUpdated; modtxiter mit = mapModifiedTx.find(desc); if (mit == mapModifiedTx.end()) { CTxMemPoolModifiedEntry modEntry(desc); @@ -369,6 +373,7 @@ void BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alread } } } + return nDescendantsUpdated; } // Skip entries in mapTx that are already in a block or are present @@ -409,7 +414,7 @@ void BlockAssembler::SortForBlock(const CTxMemPool::setEntries& package, CTxMemP // Each time through the loop, we compare the best transaction in // mapModifiedTxs with the next transaction in the mempool to decide what // transaction package to work on next. -void BlockAssembler::addPackageTxs() +void BlockAssembler::addPackageTxs(int &nPackagesSelected, int &nDescendantsUpdated) { // mapModifiedTx will store sorted packages after they are modified // because some of their txs are already in the block @@ -532,8 +537,10 @@ void BlockAssembler::addPackageTxs() mapModifiedTx.erase(sortedEntries[i]); } + ++nPackagesSelected; + // Update transactions that depend on each of these - UpdatePackagesForAdded(ancestors, mapModifiedTx); + nDescendantsUpdated += UpdatePackagesForAdded(ancestors, mapModifiedTx); } } diff --git a/src/miner.h b/src/miner.h index 29013c3bcc1b6..9ae2874927c61 100644 --- a/src/miner.h +++ b/src/miner.h @@ -177,8 +177,10 @@ class BlockAssembler // Methods for how to add transactions to a block. /** Add transactions based on tx "priority" */ void addPriorityTxs(); - /** Add transactions based on feerate including unconfirmed ancestors */ - void addPackageTxs(); + /** Add transactions based on feerate including unconfirmed ancestors + * Increments nPackagesSelected / nDescendantsUpdated with corresponding + * statistics from the package selection (for logging statistics). */ + void addPackageTxs(int &nPackagesSelected, int &nDescendantsUpdated); // helper function for addPriorityTxs /** Test if tx will still "fit" in the block */ @@ -202,8 +204,9 @@ class BlockAssembler /** Sort the package in an order that is valid to appear in a block */ void SortForBlock(const CTxMemPool::setEntries& package, CTxMemPool::txiter entry, std::vector& sortedEntries); /** Add descendants of given transactions to mapModifiedTx with ancestor - * state updated assuming given transactions are inBlock. */ - void UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded, indexed_modified_transaction_set &mapModifiedTx); + * state updated assuming given transactions are inBlock. Returns number + * of updated descendants. */ + int UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded, indexed_modified_transaction_set &mapModifiedTx); }; /** Modify the extranonce in a block */ From 04c21afcdf0ed664c1fddff17d066cc2de552b54 Mon Sep 17 00:00:00 2001 From: Awemany Date: Tue, 28 Mar 2017 14:52:59 +0200 Subject: [PATCH 15/40] bitcoin-tx: Fix missing range check The number of arguments is not checked MutateTxAddOutAddr(..), meaning that > ./bitcoin-tx -create outaddr= accessed the vStrInputParts vector beyond its bounds. This also includes work by jnewbery to check the inputs for MutateTxAddPubKey() Github-Pull: #10130 Rebased-From: eb66bf9bdd5ae20c546314eb2c494ac09929970f --- src/bitcoin-tx.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp index 3c3646523a035..43fa3fdfb969d 100644 --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -242,6 +242,9 @@ static void MutateTxAddOutAddr(CMutableTransaction& tx, const std::string& strIn std::vector vStrInputParts; boost::split(vStrInputParts, strInput, boost::is_any_of(":")); + if (vStrInputParts.size() != 2) + throw std::runtime_error("TX output missing or too many separators"); + // Extract and validate VALUE CAmount value = ExtractAndValidateValue(vStrInputParts[0]); @@ -264,6 +267,9 @@ static void MutateTxAddOutPubKey(CMutableTransaction& tx, const std::string& str std::vector vStrInputParts; boost::split(vStrInputParts, strInput, boost::is_any_of(":")); + if (vStrInputParts.size() < 2 || vStrInputParts.size() > 3) + throw std::runtime_error("TX output missing or too many separators"); + // Extract and validate VALUE CAmount value = ExtractAndValidateValue(vStrInputParts[0]); From ecc523288cc655089d83f168e81ae1f249a3ae88 Mon Sep 17 00:00:00 2001 From: John Newbery Date: Wed, 29 Mar 2017 10:20:10 -0400 Subject: [PATCH 16/40] Check stderr when testing bitcoin-tx Github-Pull: #10130 Rebased-From: 21704f6334d2a4bd140c6e3260c4bfa3f3157bad --- src/test/bctest.py | 12 ++++++++++++ src/test/data/bitcoin-util-test.json | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/src/test/bctest.py b/src/test/bctest.py index adc5d0e41819a..7ea15dfddcdda 100644 --- a/src/test/bctest.py +++ b/src/test/bctest.py @@ -98,6 +98,18 @@ def bctest(testDir, testObj, exeext): logging.error("Return code mismatch for " + outputFn) raise Exception + if "error_txt" in testObj: + want_error = testObj["error_txt"] + # Compare error text + # TODO: ideally, we'd compare the strings exactly and also assert + # That stderr is empty if no errors are expected. However, bitcoin-tx + # emits DISPLAY errors when running as a windows application on + # linux through wine. Just assert that the expected error text appears + # somewhere in stderr. + if want_error not in outs[1]: + logging.error("Error mismatch:\n" + "Expected: " + want_error + "\nReceived: " + outs[1].rstrip()) + raise Exception + def bctester(testDir, input_basename, buildenv): """ Loads and parses the input file, runs all tests and reports results""" input_filename = testDir + "/" + input_basename diff --git a/src/test/data/bitcoin-util-test.json b/src/test/data/bitcoin-util-test.json index a80ab519015c2..2a0a8f1a99d83 100644 --- a/src/test/data/bitcoin-util-test.json +++ b/src/test/data/bitcoin-util-test.json @@ -42,6 +42,7 @@ "args": ["-", "delin=31"], "input": "tx394b54bb.hex", "return_code": 1, + "error_txt": "error: Invalid TX input index '31'", "description": "Attempts to delete an input with a bad index from a transaction. Expected to fail." }, { "exec": "./bitcoin-tx", @@ -60,6 +61,7 @@ "args": ["-", "delout=2"], "input": "tx394b54bb.hex", "return_code": 1, + "error_txt": "error: Invalid TX output index '2'", "description": "Attempts to delete an output with a bad index from a transaction. Expected to fail." }, { "exec": "./bitcoin-tx", @@ -233,6 +235,7 @@ "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "outdata=4:badhexdata"], "return_code": 1, + "error_txt": "error: invalid TX output data", "description": "Attempts to create a new transaction with one input and an output with malformed hex data. Expected to fail" }, { "exec": "./bitcoin-tx", @@ -241,6 +244,7 @@ "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "outdata=badhexdata"], "return_code": 1, + "error_txt": "error: invalid TX output data", "description": "Attempts to create a new transaction with one input and an output with no value and malformed hex data. Expected to fail" }, { "exec": "./bitcoin-tx", From f59e3dfc599ca9a30a1189e9a5bb033923498af2 Mon Sep 17 00:00:00 2001 From: John Newbery Date: Wed, 29 Mar 2017 10:53:11 -0400 Subject: [PATCH 17/40] Add tests for bitcoin-tx input checking Github-Pull: #10130 Rebased-From: 19ecd1e2e13514c8a92a2a4337c2568c3d5d13e5 --- src/test/data/bitcoin-util-test.json | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/test/data/bitcoin-util-test.json b/src/test/data/bitcoin-util-test.json index 2a0a8f1a99d83..b61a4f7f8f946 100644 --- a/src/test/data/bitcoin-util-test.json +++ b/src/test/data/bitcoin-util-test.json @@ -76,6 +76,38 @@ "output_cmp": "tt-locktime317000-out.json", "description": "Adds an nlocktime to a transaction (output in json)" }, + { "exec": "./bitcoin-tx", + "args": + ["-create", + "outaddr=1"], + "return_code": 1, + "error_txt": "error: TX output missing or too many separators", + "description": "Malformed outaddr argument (no address specified). Expected to fail." + }, + { "exec": "./bitcoin-tx", + "args": + ["-create", + "outaddr=1:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o:garbage"], + "return_code": 1, + "error_txt": "error: TX output missing or too many separators", + "description": "Malformed outaddr argument (too many separators). Expected to fail." + }, + { "exec": "./bitcoin-tx", + "args": + ["-create", + "outpubkey=0"], + "return_code": 1, + "error_txt": "error: TX output missing or too many separators", + "description": "Malformed outpubkey argument (no pubkey specified). Expected to fail." + }, + { "exec": "./bitcoin-tx", + "args": + ["-create", + "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W:non53nse"], + "return_code": 1, + "error_txt": "error: TX output missing or too many separators", + "description": "Malformed outpubkey argument (too many separators). Expected to fail." + }, { "exec": "./bitcoin-tx", "args": ["-create", From e4c9a90fe9aa702d2e1f7d932fc29a9c9f23fd4a Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 30 Mar 2017 09:37:47 +0200 Subject: [PATCH 18/40] util: Work around (virtual) memory exhaustion on 32-bit w/ glibc glibc-specific: On 32-bit systems set the number of arenas to 1. By default, since glibc 2.10, the C library will create up to two heap arenas per core. This is known to cause excessive virtual address space usage in our usage. Work around it by setting the maximum number of arenas to 1. Github-Pull: #10120 Rebased-From: 625488ace5c41ccba1b68323a72588000782f820 --- configure.ac | 8 ++++++++ src/util.cpp | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/configure.ac b/configure.ac index a2332578a63ba..da42a0a1603fb 100644 --- a/configure.ac +++ b/configure.ac @@ -557,6 +557,14 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [ AC_MSG_RESULT(no)] ) +dnl Check for mallopt(M_ARENA_MAX) (to set glibc arenas) +AC_MSG_CHECKING(for mallopt M_ARENA_MAX) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[ mallopt(M_ARENA_MAX, 1); ]])], + [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MALLOPT_ARENA_MAX, 1,[Define this symbol if you have mallopt with M_ARENA_MAX]) ], + [ AC_MSG_RESULT(no)] +) + AC_MSG_CHECKING([for visibility attribute]) AC_LINK_IFELSE([AC_LANG_SOURCE([ int foo_def( void ) __attribute__((visibility("default"))); diff --git a/src/util.cpp b/src/util.cpp index 78c353dfe521d..6f812d9104e90 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -72,6 +72,10 @@ #include #endif +#ifdef HAVE_MALLOPT_ARENA_MAX +#include +#endif + #include // for to_lower() #include #include // for startswith() and endswith() @@ -792,6 +796,16 @@ void RenameThread(const char* name) void SetupEnvironment() { +#ifdef HAVE_MALLOPT_ARENA_MAX + // glibc-specific: On 32-bit systems set the number of arenas to 1. + // By default, since glibc 2.10, the C library will create up to two heap + // arenas per core. This is known to cause excessive virtual address space + // usage in our usage. Work around it by setting the maximum number of + // arenas to 1. + if (sizeof(void*) == 4) { + mallopt(M_ARENA_MAX, 1); + } +#endif // On most POSIX systems (e.g. Linux, but not BSD) the environment's locale // may be invalid, in which case the "C" locale is used as fallback. #if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__) From 0b5e162b84ec95cb63903dd21e4003a3d4503421 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Thu, 30 Mar 2017 12:05:05 -0700 Subject: [PATCH 19/40] Compensate for memory peak at flush time Github-Pull: #10126 Rebased-From: 7228ce853de5670d559d752f04a7db79578990ea --- src/validation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/validation.cpp b/src/validation.cpp index e8a3736e5dd51..5643d2ab59c16 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2027,7 +2027,7 @@ bool static FlushStateToDisk(CValidationState &state, FlushStateMode mode, int n nLastSetChain = nNow; } int64_t nMempoolSizeMax = GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000; - int64_t cacheSize = pcoinsTip->DynamicMemoryUsage(); + int64_t cacheSize = pcoinsTip->DynamicMemoryUsage() * 2; // Compensate for extra memory peak (x1.5-x1.9) at flush time. int64_t nTotalSpace = nCoinCacheUsage + std::max(nMempoolSizeMax - nMempoolUsage, 0); // The cache is large and we're within 10% and 100 MiB of the limit, but we have time now (not in the middle of a block processing). bool fCacheLarge = mode == FLUSH_STATE_PERIODIC && cacheSize > std::max((9 * nTotalSpace) / 10, nTotalSpace - 100 * 1024 * 1024); From f15268db3bf1a8c4ea410f4f63c6187b45e06ded Mon Sep 17 00:00:00 2001 From: practicalswift Date: Tue, 28 Mar 2017 08:20:08 +0200 Subject: [PATCH 20/40] [rpc] Remove auth cookie on shutdown Accidentally removed in 40b556d3742a1f65d67e2d4c760d0b13fe8be5b7 Github-Pull: #10139 Rebased-From: 4b87973c32bcaa5fa7509793e4f0c4f4f981f21b --- src/rpc/server.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rpc/server.cpp b/src/rpc/server.cpp index 0b763acd451d6..67fc825804f2b 100644 --- a/src/rpc/server.cpp +++ b/src/rpc/server.cpp @@ -331,6 +331,7 @@ void StopRPC() { LogPrint("rpc", "Stopping RPC\n"); deadlineTimers.clear(); + DeleteAuthCookie(); g_rpcSignals.Stopped(); } From 2fea10ad03c22d3299c56a45370598501d7ee7cf Mon Sep 17 00:00:00 2001 From: Gregory Maxwell Date: Sun, 2 Apr 2017 21:28:17 +0000 Subject: [PATCH 21/40] Make GetWitnessCommitmentIndex callable on blocks without a coinbase txn. This isn't actually needed anywhere, but it's less brittle. Github-Pull: #10146 Rebased-From: ada0caa165905b50db351a56ec124518c922085a --- src/validation.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/validation.cpp b/src/validation.cpp index 5643d2ab59c16..43ef8c88febfc 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2922,9 +2922,11 @@ bool IsWitnessEnabled(const CBlockIndex* pindexPrev, const Consensus::Params& pa static int GetWitnessCommitmentIndex(const CBlock& block) { int commitpos = -1; - for (size_t o = 0; o < block.vtx[0]->vout.size(); o++) { - if (block.vtx[0]->vout[o].scriptPubKey.size() >= 38 && block.vtx[0]->vout[o].scriptPubKey[0] == OP_RETURN && block.vtx[0]->vout[o].scriptPubKey[1] == 0x24 && block.vtx[0]->vout[o].scriptPubKey[2] == 0xaa && block.vtx[0]->vout[o].scriptPubKey[3] == 0x21 && block.vtx[0]->vout[o].scriptPubKey[4] == 0xa9 && block.vtx[0]->vout[o].scriptPubKey[5] == 0xed) { - commitpos = o; + if (!block.vtx.empty()) { + for (size_t o = 0; o < block.vtx[0]->vout.size(); o++) { + if (block.vtx[0]->vout[o].scriptPubKey.size() >= 38 && block.vtx[0]->vout[o].scriptPubKey[0] == OP_RETURN && block.vtx[0]->vout[o].scriptPubKey[1] == 0x24 && block.vtx[0]->vout[o].scriptPubKey[2] == 0xaa && block.vtx[0]->vout[o].scriptPubKey[3] == 0x21 && block.vtx[0]->vout[o].scriptPubKey[4] == 0xa9 && block.vtx[0]->vout[o].scriptPubKey[5] == 0xed) { + commitpos = o; + } } } return commitpos; From a44a6a15f94a6223a71790c5a65eb2b8a5b35dd2 Mon Sep 17 00:00:00 2001 From: Gregory Maxwell Date: Sun, 2 Apr 2017 21:39:32 +0000 Subject: [PATCH 22/40] Check transaction count early in submitblock. There is no point in even hashing a submitted block which doesn't have a coinbase transaction. This also results in more useful error reporting on corrupted input. Thanks to rawodb for the bug report. Github-Pull: #10146 Rebased-From: 4f15ea102d15eb237b63464725508dc509e98819 --- src/rpc/mining.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 38d7b1eb1e225..33e234a95efbf 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -748,6 +748,10 @@ UniValue submitblock(const JSONRPCRequest& request) if (!DecodeHexBlk(block, request.params[0].get_str())) throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "Block decode failed"); + if (block.vtx.empty() || !block.vtx[0]->IsCoinBase()) { + throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "Block does not start with a coinbase"); + } + uint256 hash = block.GetHash(); bool fBlockPresent = false; { From ab864d3e4943fc617853a64cf22fa3939f89fcd2 Mon Sep 17 00:00:00 2001 From: Alex Morcos Date: Fri, 31 Mar 2017 10:17:13 -0400 Subject: [PATCH 23/40] Make pcoinsTip memory calculations consistent Since we are more accurately measuring pcoinsTip peak usage at twice the current in dynamic usage, it makes sense to double the default (this will lead to the same effective usage and peak usage as previously). We should also double the buffer used to avoid flushing if above 90% but still sufficient space remaining. Github-Pull: #10133 Rebased-From: 5b95a190e8d7059039ce61e808d494dcf89ebb3b --- src/txdb.h | 6 +++++- src/validation.cpp | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/txdb.h b/src/txdb.h index 7f5cf2b583fdf..963f1006eaab3 100644 --- a/src/txdb.h +++ b/src/txdb.h @@ -21,8 +21,12 @@ class CBlockIndex; class CCoinsViewDBCursor; class uint256; +//! Compensate for extra memory peak (x1.5-x1.9) at flush time. +static constexpr int DB_PEAK_USAGE_FACTOR = 2; +//! No need to flush if at least this much space still available. +static constexpr int MAX_BLOCK_COINSDB_USAGE = 100 * DB_PEAK_USAGE_FACTOR; //! -dbcache default (MiB) -static const int64_t nDefaultDbCache = 300; +static const int64_t nDefaultDbCache = 600; //! max. -dbcache (MiB) static const int64_t nMaxDbCache = sizeof(void*) > 4 ? 16384 : 1024; //! min. -dbcache (MiB) diff --git a/src/validation.cpp b/src/validation.cpp index 43ef8c88febfc..b8555507285b0 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2027,10 +2027,10 @@ bool static FlushStateToDisk(CValidationState &state, FlushStateMode mode, int n nLastSetChain = nNow; } int64_t nMempoolSizeMax = GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000; - int64_t cacheSize = pcoinsTip->DynamicMemoryUsage() * 2; // Compensate for extra memory peak (x1.5-x1.9) at flush time. + int64_t cacheSize = pcoinsTip->DynamicMemoryUsage() * DB_PEAK_USAGE_FACTOR; int64_t nTotalSpace = nCoinCacheUsage + std::max(nMempoolSizeMax - nMempoolUsage, 0); // The cache is large and we're within 10% and 100 MiB of the limit, but we have time now (not in the middle of a block processing). - bool fCacheLarge = mode == FLUSH_STATE_PERIODIC && cacheSize > std::max((9 * nTotalSpace) / 10, nTotalSpace - 100 * 1024 * 1024); + bool fCacheLarge = mode == FLUSH_STATE_PERIODIC && cacheSize > std::max((9 * nTotalSpace) / 10, nTotalSpace - MAX_BLOCK_COINSDB_USAGE * 1024 * 1024); // The cache is over the limit, we have to write now. bool fCacheCritical = mode == FLUSH_STATE_IF_NEEDED && cacheSize > nTotalSpace; // It's been a while since we wrote the block index to disk. Do this frequently, so we don't need to redownload after a crash. From d6867689d187b72145bb36f4a204f4468e46ee7e Mon Sep 17 00:00:00 2001 From: Alex Morcos Date: Fri, 31 Mar 2017 10:25:39 -0400 Subject: [PATCH 24/40] Lower default memory footprint slightly Github-Pull: #10133 Rebased-From: f33afd3b2be1bcabeb10168a53835359c9ff4a3e --- src/txdb.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/txdb.h b/src/txdb.h index 963f1006eaab3..337942ffaf372 100644 --- a/src/txdb.h +++ b/src/txdb.h @@ -26,7 +26,7 @@ static constexpr int DB_PEAK_USAGE_FACTOR = 2; //! No need to flush if at least this much space still available. static constexpr int MAX_BLOCK_COINSDB_USAGE = 100 * DB_PEAK_USAGE_FACTOR; //! -dbcache default (MiB) -static const int64_t nDefaultDbCache = 600; +static const int64_t nDefaultDbCache = 450; //! max. -dbcache (MiB) static const int64_t nMaxDbCache = sizeof(void*) > 4 ? 16384 : 1024; //! min. -dbcache (MiB) From 0e5133cb2ef8973951f1b576ead37792f9b37f83 Mon Sep 17 00:00:00 2001 From: Alex Morcos Date: Fri, 31 Mar 2017 10:26:25 -0400 Subject: [PATCH 25/40] Make threshold for flushing more conservative. Always leave a reasonable buffer of 50MB for usage from newly connected block (once over 50%) and increase the high water mark buffer to 200MB. Github-Pull: #10133 Rebased-From: 1b55e07b7a61a9e6c299cf4c40fde80fa715d440 --- src/txdb.h | 6 ++++-- src/validation.cpp | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/txdb.h b/src/txdb.h index 337942ffaf372..d9214ba618546 100644 --- a/src/txdb.h +++ b/src/txdb.h @@ -23,8 +23,10 @@ class uint256; //! Compensate for extra memory peak (x1.5-x1.9) at flush time. static constexpr int DB_PEAK_USAGE_FACTOR = 2; -//! No need to flush if at least this much space still available. -static constexpr int MAX_BLOCK_COINSDB_USAGE = 100 * DB_PEAK_USAGE_FACTOR; +//! No need to periodic flush if at least this much space still available. +static constexpr int MAX_BLOCK_COINSDB_USAGE = 200 * DB_PEAK_USAGE_FACTOR; +//! Always periodic flush if less than this much space still available. +static constexpr int MIN_BLOCK_COINSDB_USAGE = 50 * DB_PEAK_USAGE_FACTOR; //! -dbcache default (MiB) static const int64_t nDefaultDbCache = 450; //! max. -dbcache (MiB) diff --git a/src/validation.cpp b/src/validation.cpp index b8555507285b0..c9135c442b1a4 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2029,8 +2029,9 @@ bool static FlushStateToDisk(CValidationState &state, FlushStateMode mode, int n int64_t nMempoolSizeMax = GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000; int64_t cacheSize = pcoinsTip->DynamicMemoryUsage() * DB_PEAK_USAGE_FACTOR; int64_t nTotalSpace = nCoinCacheUsage + std::max(nMempoolSizeMax - nMempoolUsage, 0); - // The cache is large and we're within 10% and 100 MiB of the limit, but we have time now (not in the middle of a block processing). - bool fCacheLarge = mode == FLUSH_STATE_PERIODIC && cacheSize > std::max((9 * nTotalSpace) / 10, nTotalSpace - MAX_BLOCK_COINSDB_USAGE * 1024 * 1024); + // The cache is large and we're within 10% and 200 MiB or 50% and 50MiB of the limit, but we have time now (not in the middle of a block processing). + bool fCacheLarge = mode == FLUSH_STATE_PERIODIC && cacheSize > std::min(std::max(nTotalSpace / 2, nTotalSpace - MIN_BLOCK_COINSDB_USAGE * 1024 * 1024), + std::max((9 * nTotalSpace) / 10, nTotalSpace - MAX_BLOCK_COINSDB_USAGE * 1024 * 1024)); // The cache is over the limit, we have to write now. bool fCacheCritical = mode == FLUSH_STATE_IF_NEEDED && cacheSize > nTotalSpace; // It's been a while since we wrote the block index to disk. Do this frequently, so we don't need to redownload after a crash. From d947afc0f7868815dff248ad398c3680def5bf81 Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Mon, 3 Apr 2017 15:48:55 -0400 Subject: [PATCH 26/40] Test prioritisetransaction and ancestor fee state There is already a similar test for descendant fee state. Github-Pull: #10144 Rebased-From: ba7dd8bf6f41de647a8df0c4570df6ac20b08e48 --- qa/rpc-tests/mempool_packages.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/qa/rpc-tests/mempool_packages.py b/qa/rpc-tests/mempool_packages.py index f605e7524f765..f53515d32e283 100755 --- a/qa/rpc-tests/mempool_packages.py +++ b/qa/rpc-tests/mempool_packages.py @@ -102,6 +102,18 @@ def run_test(self): assert_equal(mempool[x], v_descendants[x]) assert(chain[0] not in v_descendants.keys()) + # Check that ancestor modified fees includes fee deltas from + # prioritisetransaction + self.nodes[0].prioritisetransaction(chain[0], 1000) + mempool = self.nodes[0].getrawmempool(True) + ancestor_fees = 0 + for x in chain: + ancestor_fees += mempool[x]['fee'] + assert_equal(mempool[x]['ancestorfees'], ancestor_fees * COIN + 1000) + + # Undo the prioritisetransaction for later tests + self.nodes[0].prioritisetransaction(chain[0], -1000) + # Check that descendant modified fees includes fee deltas from # prioritisetransaction self.nodes[0].prioritisetransaction(chain[-1], 0, 1000) From ea060c7495b10394ecf6909bc0327e93a2a34a7f Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Mon, 3 Apr 2017 15:50:15 -0400 Subject: [PATCH 27/40] Bugfix: ancestor modifed fees were incorrect for descendants If prioritisetransaction was called for a tx with in-mempool descendants, the modified ancestor fee values for those descendants was incorrect. Github-Pull: #10144 Rebased-From: 9bef02e36525d0eed4e2e31678b3ff04bbb0b8cb --- src/txmempool.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/txmempool.cpp b/src/txmempool.cpp index 5842dd88d838c..91040fb9b21a1 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -938,6 +938,13 @@ void CTxMemPool::PrioritiseTransaction(const uint256 hash, const std::string str BOOST_FOREACH(txiter ancestorIt, setAncestors) { mapTx.modify(ancestorIt, update_descendant_state(0, nFeeDelta, 0)); } + // Now update all descendants' modified fees with ancestors + setEntries setDescendants; + CalculateDescendants(it, setDescendants); + setDescendants.erase(it); + BOOST_FOREACH(txiter descendantIt, setDescendants) { + mapTx.modify(descendantIt, update_ancestor_state(0, nFeeDelta, 0, 0)); + } } } LogPrintf("PrioritiseTransaction: %s priority += %f, fee += %d\n", strHash, dPriorityDelta, FormatMoney(nFeeDelta)); From 47d24c85b71b854939522238f8e44c891d8674af Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 5 Apr 2017 09:12:17 +0200 Subject: [PATCH 28/40] Bump version to 0.14.1 --- configure.ac | 2 +- doc/Doxyfile | 2 +- doc/README.md | 2 +- doc/README_windows.txt | 2 +- src/clientversion.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index da42a0a1603fb..a9156c348030e 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 0) define(_CLIENT_VERSION_MINOR, 14) -define(_CLIENT_VERSION_REVISION, 0) +define(_CLIENT_VERSION_REVISION, 1) define(_CLIENT_VERSION_BUILD, 0) define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2017) diff --git a/doc/Doxyfile b/doc/Doxyfile index a10e4a552cdc0..2146a00220626 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "Bitcoin Core" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.14.0 +PROJECT_NUMBER = 0.14.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/doc/README.md b/doc/README.md index fb2e0ee7d00cb..52a4cc0bf680e 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,4 +1,4 @@ -Bitcoin Core 0.14.0 +Bitcoin Core 0.14.1 ===================== Setup diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 67eb7873a1743..5b9aaef57a4a0 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin Core 0.14.0 +Bitcoin Core 0.14.1 ===================== Intro diff --git a/src/clientversion.h b/src/clientversion.h index 2b259fb9f02fe..aa46955daee61 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -16,7 +16,7 @@ //! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 0 #define CLIENT_VERSION_MINOR 14 -#define CLIENT_VERSION_REVISION 0 +#define CLIENT_VERSION_REVISION 1 #define CLIENT_VERSION_BUILD 0 //! Set to true for release, false for prerelease or test build From 920acbcca8240cb11a74055a81d5129c8a4c85af Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 5 Apr 2017 11:52:16 +0200 Subject: [PATCH 29/40] doc: Update release notes for 0.14.1 --- doc/release-notes.md | 56 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 41fb500f164bf..6b6b66728865a 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,9 +1,6 @@ -(note: this is a temporary file, to be added-to by anybody, and moved to -release-notes at release time) +Bitcoin Core version 0.14.1 is now available from: -Bitcoin Core version 0.14.x is now available from: - - + This is a new minor version release, including various bugfixes and performance improvements, as well as updated translations. @@ -33,9 +30,6 @@ frequently tested on them. Notable changes =============== -Example item ------------------------------------------------ - RPC changes ----------- @@ -43,7 +37,7 @@ The first positional argument of `createrawtransaction` was renamed. This interface change breaks compatibility with 0.14.0, when the named arguments functionality, introduced in 0.14.0, is used. -0.14.x Change log +0.14.1 Change log ================= Detailed release notes follow. This overview includes changes that affect @@ -51,14 +45,54 @@ behavior, not code moves, refactors and string updates. For convenience in locat the code changes and accompanying discussion, both the pull request and git merge commit are mentioned. -[to be filled in at release] +### RPC and other APIs +- #10084 `142fbb2` Rename first named arg of createrawtransaction (MarcoFalke) +- #10139 `f15268d` Remove auth cookie on shutdown (practicalswift) +- #10146 `2fea10a` Better error handling for submitblock (gmaxwell) +- #10144 `d947afc` Prioritisetransaction wasn't always updating ancestor fee (sdaftuar) + +### Block and transaction handling +- #10126 `0b5e162` Compensate for memory peak at flush time (sipa) +- #9912 `fc3d7db` Optimize GetWitnessHash() for non-segwit transactions (sdaftuar) +- #10133 `ab864d3` Clean up calculations of pcoinsTip memory usage (morcos) + +### P2P protocol and network code +- #9953/#10013 `d2548a4` Fix shutdown hang with >= 8 -addnodes set (TheBlueMatt) + +### Build system +- #9973 `e9611d1` depends: fix zlib build on osx (theuni) + +### GUI +- #10060 `ddc2dd1` Ensure an item exists on the rpcconsole stack before adding (achow101) + +### Mining +- #9955/#10006 `569596c` Don't require segwit in getblocktemplate for segwit signalling or mining (sdaftuar) +- #9959/#10127 `b5c3440` Prevent slowdown in CreateNewBlock on large mempools (sdaftuar) + +### Miscellaneous +- #10094 `37bf0d5` 0.14: Clear release notes (MarcoFalke) +- #10037 `4d8e660` Trivial: Fix typo in help getrawtransaction RPC (keystrike) +- #10120 `e4c9a90` util: Work around (virtual) memory exhaustion on 32-bit w/ glibc (laanwj) +- #10130 `ecc5232` bitcoin-tx input verification (awemany, jnewbery) Credits ======= Thanks to everyone who directly contributed to this release: -[to be filled in at release] +- Alex Morcos +- Andrew Chow +- Awemany +- Cory Fields +- Gregory Maxwell +- James Evans +- John Newbery +- MarcoFalke +- Matt Corallo +- Pieter Wuille +- practicalswift +- Suhas Daftuar +- Wladimir J. van der Laan As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). From df82ea914f6f569e244ab59ca24e4eea898eb1a9 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 5 Apr 2017 13:01:32 +0200 Subject: [PATCH 30/40] doc: Remove release note about release notes --- doc/release-notes.md | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 6b6b66728865a..5eba44d950ca3 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -70,7 +70,6 @@ git merge commit are mentioned. - #9959/#10127 `b5c3440` Prevent slowdown in CreateNewBlock on large mempools (sdaftuar) ### Miscellaneous -- #10094 `37bf0d5` 0.14: Clear release notes (MarcoFalke) - #10037 `4d8e660` Trivial: Fix typo in help getrawtransaction RPC (keystrike) - #10120 `e4c9a90` util: Work around (virtual) memory exhaustion on 32-bit w/ glibc (laanwj) - #10130 `ecc5232` bitcoin-tx input verification (awemany, jnewbery) From 39febb8c6dbe286946773630d0484027307e5f42 Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Wed, 5 Apr 2017 08:30:51 -0400 Subject: [PATCH 31/40] [qa] Fix mempool_packages.py for the 0.14 branch The backport in d947afc0f7868815dff248ad398c3680def5bf81 of this test was incorrect due to an api change in prioritisetransaction. --- qa/rpc-tests/mempool_packages.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qa/rpc-tests/mempool_packages.py b/qa/rpc-tests/mempool_packages.py index f53515d32e283..99e01534d69a2 100755 --- a/qa/rpc-tests/mempool_packages.py +++ b/qa/rpc-tests/mempool_packages.py @@ -104,7 +104,7 @@ def run_test(self): # Check that ancestor modified fees includes fee deltas from # prioritisetransaction - self.nodes[0].prioritisetransaction(chain[0], 1000) + self.nodes[0].prioritisetransaction(chain[0], 0, 1000) mempool = self.nodes[0].getrawmempool(True) ancestor_fees = 0 for x in chain: @@ -112,7 +112,7 @@ def run_test(self): assert_equal(mempool[x]['ancestorfees'], ancestor_fees * COIN + 1000) # Undo the prioritisetransaction for later tests - self.nodes[0].prioritisetransaction(chain[0], -1000) + self.nodes[0].prioritisetransaction(chain[0], 0, -1000) # Check that descendant modified fees includes fee deltas from # prioritisetransaction From 226a9cb35d2951629abe978e74a1a137c5e26d1a Mon Sep 17 00:00:00 2001 From: Gregory Maxwell Date: Wed, 5 Apr 2017 17:23:43 +0000 Subject: [PATCH 32/40] Add some more release notes for 0.14.1. This adds a blurb for the segwit signaling and fixes up the attribution. --- doc/release-notes.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 5eba44d950ca3..22452190aea70 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -37,6 +37,20 @@ The first positional argument of `createrawtransaction` was renamed. This interface change breaks compatibility with 0.14.0, when the named arguments functionality, introduced in 0.14.0, is used. + +Mining +------ + +Getblocktemplate sets the segwit version bit even when the downstream +client has not been updated to include the segwit commitment. Ability +to enforce the rule is the only required criteria for safe activation, +but previously signaling was only requested if the miner could include +transactions in order to avoid a potential outcome where segwit would +activate at a time when no segwit transactions could be included. +Since many miners are now including the segwit commitment this concern +no longer applies. + + 0.14.1 Change log ================= @@ -48,7 +62,7 @@ git merge commit are mentioned. ### RPC and other APIs - #10084 `142fbb2` Rename first named arg of createrawtransaction (MarcoFalke) - #10139 `f15268d` Remove auth cookie on shutdown (practicalswift) -- #10146 `2fea10a` Better error handling for submitblock (gmaxwell) +- #10146 `2fea10a` Better error handling for submitblock (rawodb, gmaxwell) - #10144 `d947afc` Prioritisetransaction wasn't always updating ancestor fee (sdaftuar) ### Block and transaction handling @@ -90,6 +104,7 @@ Thanks to everyone who directly contributed to this release: - Matt Corallo - Pieter Wuille - practicalswift +- rawodb - Suhas Daftuar - Wladimir J. van der Laan From b7caa30c48eb60ef14f4746dd1617865187788b1 Mon Sep 17 00:00:00 2001 From: Suhas Daftuar Date: Tue, 11 Apr 2017 09:28:07 -0400 Subject: [PATCH 33/40] Mention dbcache memory changes in 0.14.1 release notes --- doc/release-notes.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/doc/release-notes.md b/doc/release-notes.md index 22452190aea70..4479c1a456ac0 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -50,6 +50,24 @@ activate at a time when no segwit transactions could be included. Since many miners are now including the segwit commitment this concern no longer applies. +UTXO memory accounting +---------------------- + +Memory usage for the UTXO cache is being calculated more accurately, so that +the configured limit (`-dbcache`) will be respected when memory usage peaks +during cache flushes. The memory accounting in prior releases is estimated to +only account for half the actual peak utilization. + +The default `-dbcache` has also been changed in this release to 450MiB. Users +who currently set `-dbcache` to a high value (e.g. to keep the UTXO more fully +cached in memory) should consider increasing this setting in order to achieve +the same cache performance as prior releases. Users on low-memory systems +(such as systems with 1GB or less) should consider specifying a lower value for +this parameter. + +Additional information relating to running on low-memory systems can be found +here: +[reducing-bitcoind-memory-usage.md](https://gist.github.com/laanwj/efe29c7661ce9b6620a7). 0.14.1 Change log ================= From 3c796026e56abddf1b37128c0478532a371b5f9f Mon Sep 17 00:00:00 2001 From: John Newbery Date: Thu, 13 Apr 2017 15:38:59 -0400 Subject: [PATCH 34/40] [rpc] rename disconnectnode argument Github-Pull: #10204 Rebased-From: 883154cbcb306dcc6205fe349c7056ced1f6c5fc --- src/rpc/net.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index f590db5efaa74..8706b4295156b 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -237,11 +237,11 @@ UniValue addnode(const JSONRPCRequest& request) UniValue disconnectnode(const JSONRPCRequest& request) { if (request.fHelp || request.params.size() != 1) - throw runtime_error( - "disconnectnode \"node\" \n" + throw std::runtime_error( + "disconnectnode \"address\" \n" "\nImmediately disconnects from the specified node.\n" "\nArguments:\n" - "1. \"node\" (string, required) The node (see getpeerinfo for nodes)\n" + "1. \"address\" (string, required) The IP address/port of the node\n" "\nExamples:\n" + HelpExampleCli("disconnectnode", "\"192.168.0.6:8333\"") + HelpExampleRpc("disconnectnode", "\"192.168.0.6:8333\"") @@ -609,7 +609,7 @@ static const CRPCCommand commands[] = { "network", "ping", &ping, true, {} }, { "network", "getpeerinfo", &getpeerinfo, true, {} }, { "network", "addnode", &addnode, true, {"node","command"} }, - { "network", "disconnectnode", &disconnectnode, true, {"node"} }, + { "network", "disconnectnode", &disconnectnode, true, {"address"} }, { "network", "getaddednodeinfo", &getaddednodeinfo, true, {"node"} }, { "network", "getnettotals", &getnettotals, true, {} }, { "network", "getnetworkinfo", &getnetworkinfo, true, {} }, From 30fa231011a63404a087420a9de7271af077affa Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Mon, 10 Apr 2017 15:00:23 -0400 Subject: [PATCH 35/40] net: define NodeId as an int64_t This should make occurances of NodeId wrapping essentially impossible for real-world usage. Github-Pull: #10176 Rebased-From: c851be4b25905977ca471c42435dc590fd2ff2f5 --- src/net.h | 2 +- src/qt/peertablemodel.cpp | 2 +- src/qt/rpcconsole.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/net.h b/src/net.h index 29b6a44c88ff2..dc727152a3474 100644 --- a/src/net.h +++ b/src/net.h @@ -92,7 +92,7 @@ static const ServiceFlags REQUIRED_SERVICES = NODE_NETWORK; // NOTE: When adjusting this, update rpcnet:setban's help ("24h") static const unsigned int DEFAULT_MISBEHAVING_BANTIME = 60 * 60 * 24; // Default 24-hour ban -typedef int NodeId; +typedef int64_t NodeId; struct AddedNodeInfo { diff --git a/src/qt/peertablemodel.cpp b/src/qt/peertablemodel.cpp index 974a71ddca64b..fff072fd4c8cf 100644 --- a/src/qt/peertablemodel.cpp +++ b/src/qt/peertablemodel.cpp @@ -166,7 +166,7 @@ QVariant PeerTableModel::data(const QModelIndex &index, int role) const switch(index.column()) { case NetNodeId: - return rec->nodeStats.nodeid; + return (qint64)rec->nodeStats.nodeid; case Address: return QString::fromStdString(rec->nodeStats.addrName); case Subversion: diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 001f19926474b..77e5e03e6432f 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -1115,7 +1115,7 @@ void RPCConsole::disconnectSelectedNode() for(int i = 0; i < nodes.count(); i++) { // Get currently selected peer address - NodeId id = nodes.at(i).data().toInt(); + NodeId id = nodes.at(i).data().toLongLong(); // Find the node, disconnect it and clear the selected node if(g_connman->DisconnectNode(id)) clearSelectedNode(); @@ -1132,7 +1132,7 @@ void RPCConsole::banSelectedNode(int bantime) for(int i = 0; i < nodes.count(); i++) { // Get currently selected peer address - NodeId id = nodes.at(i).data().toInt(); + NodeId id = nodes.at(i).data().toLongLong(); // Get currently selected peer address int detailNodeRow = clientModel->getPeerTableModel()->getRowByNodeId(id); From 348a71701db4cb29a762c7d60aba34380ee1d403 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 14 Apr 2017 10:25:11 +0000 Subject: [PATCH 36/40] qt: translations update pre-rc2 --- src/qt/locale/bitcoin_da.ts | 4 +- src/qt/locale/bitcoin_de.ts | 66 ++++- src/qt/locale/bitcoin_el_GR.ts | 12 + src/qt/locale/bitcoin_en.ts | 2 +- src/qt/locale/bitcoin_eo.ts | 122 ++++++++- src/qt/locale/bitcoin_es.ts | 80 +++++- src/qt/locale/bitcoin_es_ES.ts | 78 +++++- src/qt/locale/bitcoin_et_EE.ts | 32 +++ src/qt/locale/bitcoin_fa.ts | 24 ++ src/qt/locale/bitcoin_fr.ts | 2 +- src/qt/locale/bitcoin_it_IT.ts | 20 ++ src/qt/locale/bitcoin_ms_MY.ts | 338 +++++++++++++++++++++++- src/qt/locale/bitcoin_nb.ts | 138 +++++++++- src/qt/locale/bitcoin_sk.ts | 462 ++++++++++++++++++++++++++++++++- src/qt/locale/bitcoin_sv.ts | 20 +- src/qt/locale/bitcoin_tr.ts | 6 +- 16 files changed, 1369 insertions(+), 37 deletions(-) diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts index 54ef4a2bdf5c5..235b48f853d55 100644 --- a/src/qt/locale/bitcoin_da.ts +++ b/src/qt/locale/bitcoin_da.ts @@ -3,7 +3,7 @@ AddressBookPage Right-click to edit address or label - Højreklik for at redigere adresse eller mærke + Højreklik for at redigere adresse eller mærkat Create a new address @@ -604,7 +604,7 @@ Received with label - Modtaget med mærke + Modtaget med mærkat Received with address diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index af79d4773633c..9bc94cc8ded33 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -43,7 +43,7 @@ Choose the address to send coins to - Wählen Sie die Adresse aus, an die Sie Bitcoins überweisen möchten + Wählen Sie die Adresse aus, an die Sie Bitcoins senden möchten Choose the address to receive coins with @@ -885,6 +885,14 @@ Form Formular + + Recent transactions may not yet be visible, and therefore your wallet's balance might be incorrect. This information will be correct once your wallet has finished synchronizing with the bitcoin network, as detailed below. + Neueste Transaktionen werden eventuell noch nicht angezeigt, daher könnte Ihr Kontostand veraltet sein. Er wird korrigiert, sobald Ihr Wallet die Synchronisation mit dem Bitcoin-Netzwerk erfolgreich abgeschlossen. Details dazu finden sich weiter unten. + + + Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network. + Versuche, Bitcoins aus noch nicht angezeigten Transaktionen auszugeben, werden vom Netzwerk nicht akzeptiert. + Number of blocks left Anzahl verbleibender Blöcke @@ -2200,6 +2208,10 @@ Confirm custom change address Bestätige benutzerdefinierte Wechselgeld-Adresse + + The address you selected for change is not part of this wallet. Any or all funds in your wallet may be sent to this address. Are you sure? + Die ausgewählte Wechselgeld-Adresse ist nicht Bestandteil dieses Wallets. Einige oder alle Mittel aus Ihrem Wallet könnten an diese Adresse gesendet werden. Wollen Sie das wirklich? + (no label) (keine Bezeichnung) @@ -2997,6 +3009,10 @@ Accept connections from outside (default: 1 if no -proxy or -connect/-noconnect) Eingehende Verbindungen annehmen (Standard: 1, wenn nicht -proxy oder -connect/-noconnect) + + Connect only to the specified node(s); -noconnect or -connect=0 alone to disable automatic connections + Verbindungen nur zu spezifizierten Node(s); verwenden Sie -noconnect oder -connect=0 alleine um automatische Verbindungen zu deaktivieren + Distributed under the MIT software license, see the accompanying file %s or %s Veröffentlicht unter der MIT-Softwarelizenz, siehe beiligende Datei %s oder %s. @@ -3073,6 +3089,14 @@ Execute command when a wallet transaction changes (%s in cmd is replaced by TxID) Befehl ausführen wenn sich eine Wallet-Transaktion verändert (%s im Befehl wird durch die Transaktions-ID ersetzt) + + Extra transactions to keep in memory for compact block reconstructions (default: %u) + Zusätzliche Transaktionen für kompakten Block-Nachbau im Speicher vorhalten (default: %u) + + + If this block is in the chain assume that it and its ancestors are valid and potentially skip their script verification (0 to verify all, default: %s, testnet: %s) + Sofern dieser Block Bestandteil der Blockchain ist, nehme an das er und seine Vorgänger gültig sind und überspringe ggf. dessen Skriptverifikation (0 um alle zu verifizieren, default: %s, testnet: %s) + Maximum allowed median peer time offset adjustment. Local perspective of time may be influenced by peers forward or backward by this amount. (default: %u seconds) Maximum allowed median peer time offset adjustment. Local perspective of time may be influenced by peers forward or backward by this amount. (default: %u seconds) @@ -3089,6 +3113,14 @@ Please contribute if you find %s useful. Visit %s for further information about the software. Wenn sie %s nützlich finden, sind Helfer sehr gern gesehen. Besuchen Sie %s um mehr über das Softwareprojekt zu erfahren. + + Reduce storage requirements by enabling pruning (deleting) of old blocks. This allows the pruneblockchain RPC to be called to delete specific blocks, and enables automatic pruning of old blocks if a target size in MiB is provided. This mode is incompatible with -txindex and -rescan. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, 1 = allow manual pruning via RPC, >%u = automatically prune block files to stay under the specified target size in MiB) + Speicherplatzanforderung durch Kürzen (Pruning) alter Blöcke reduzieren. Dies erlaubt das Aufrufen des sogenannten Pruneblockchain RPC zum Löschen spezifischer Blöcke und und aktiviert das automatische Pruning alter Blöcke, sofern eine Zielgröße in MIB angegeben wird. Dieser Modus ist nicht mit -txindex und -resacan kompatibel. Warnung: Das Rücksetzen dieser Einstellung erfordert das erneute Herunterladen der gesamten Blockchain. (Standard: 0 = deaktiviert das Pruning, 1 = erlaubt manuelles Pruning via RPC, >%u = automatisches Pruning der Blockdateien, um angegebene Maximalgröße nicht zu überschreiten) + + + Set lowest fee rate (in %s/kB) for transactions to be included in block creation. (default: %s) + Niedrigste Gebühr (in %s/kB) für Transaktionen einstellen, die bei der Blockerzeugung berücksichtigt werden sollen. (default: %s) + Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) Maximale Anzahl an Skript-Verifizierungs-Threads festlegen (%u bis %d, 0 = automatisch, <0 = so viele Kerne frei lassen, Standard: %d) @@ -3113,6 +3145,10 @@ Username and hashed password for JSON-RPC connections. The field <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A canonical python script is included in share/rpcuser. The client then connects normally using the rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This option can be specified multiple times Benutzername und gehashtes Passwort für JSON-RPC Verbindungen. Das Feld <userpw> kommt im Format: <USERNAME>:<SALT>$<HASH>. Ein kanonisches Pythonskript ist in share/rpcuser inbegriffen. Der client benutzt wie gehabt, die rpcuser/rpcpassword Parameter. Diese Option kann mehrere Male spezifiziert werden + + Wallet will not create transactions that violate mempool chain limits (default: %u) + Das Wallet erzeugt keine Transaktionen, die das Mempool Chain Limit überschreiten (Standardeinstellung: %u) + Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. Warnung: Das Netzwerk scheint nicht vollständig übereinzustimmen! Einige Miner scheinen Probleme zu haben. @@ -3153,6 +3189,10 @@ Cannot resolve -%s address: '%s' Kann Adresse in -%s nicht auflösen: '%s' + + Chain selection options: + Chain Auswahloptionen: + Change index out of range Position des Wechselgelds außerhalb des Bereichs @@ -3645,6 +3685,10 @@ Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect/-noconnect) Adressen von Gegenstellen via DNS-Namensauflösung finden, falls zu wenige Adressen verfügbar sind (Standard: 1, außer bei -connect/-noconnect) + + Sets the serialization of raw transaction or block hex returned in non-verbose mode, non-segwit(0) or segwit(1) (default: %d) + Setzt die Serialisierung von Rohtransaktionen oder Block Hex-Daten auf non-verbose mode, nicht-Segwit(0) oder Segwit(1) (default: %d) + Support filtering of blocks and transaction with bloom filters (default: %u) Unterstütze Blöcke und Transaktionen mit Bloomfiltern zu filtern (default: %u) @@ -3705,6 +3749,10 @@ Invalid -proxy address: '%s' Ungültige Adresse in -proxy: '%s' + + Keypool ran out, please call keypoolrefill first + Der Keypool ist erschöpft. Bitte rufen Sie zunächst keypoolrefill auf. + Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) <port> nach JSON-RPC-Verbindungen abhören (Standard: %u oder Testnetz: %u) @@ -3773,6 +3821,14 @@ Spend unconfirmed change when sending transactions (default: %u) Unbestätigtes Wechselgeld darf beim Senden von Transaktionen ausgegeben werden (Standard: %u) + + Starting network threads... + Netzwerk-Threads werden gestartet... + + + The wallet will avoid paying less than the minimum relay fee. + Das Wallet verhindert Zahlungen, die die Mindesttransaktionsgebühr nicht berücksichtigen. + This is the minimum transaction fee you pay on every transaction. Dies ist die minimale Gebühr die beim Senden einer Transaktion fällig wird. @@ -3789,6 +3845,14 @@ Transaction amounts must not be negative Transaktionsbeträge dürfen nicht negativ sein. + + Transaction has too long of a mempool chain + Die Speicherpoolkette der Transaktion ist zu lang. + + + Transaction must have at least one recipient + Die Transaktion muss mindestens einen Empfänger enthalten. + Unknown network specified in -onlynet: '%s' Unbekannter Netztyp in -onlynet angegeben: '%s' diff --git a/src/qt/locale/bitcoin_el_GR.ts b/src/qt/locale/bitcoin_el_GR.ts index 0390a378e7717..21f308e80e442 100644 --- a/src/qt/locale/bitcoin_el_GR.ts +++ b/src/qt/locale/bitcoin_el_GR.ts @@ -41,6 +41,14 @@ &Delete &Διαγραφή + + Sending addresses + Διευθύνσεις αποστολής + + + Receiving addresses + Διευθύνσεις λήψης + AddressTableModel @@ -63,6 +71,10 @@ Repeat new passphrase Επανέλαβε τον νέο κωδικό πρόσβασης + + Unlock wallet + Ξεκλειδωσε το πορτοφολι + BanTableModel diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index e6a9c9228d336..a476b56596f6c 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -2030,7 +2030,7 @@ - + Select a peer to view detailed information. diff --git a/src/qt/locale/bitcoin_eo.ts b/src/qt/locale/bitcoin_eo.ts index b4ed5e7fd503f..16c584c4b10fa 100644 --- a/src/qt/locale/bitcoin_eo.ts +++ b/src/qt/locale/bitcoin_eo.ts @@ -41,10 +41,78 @@ &Delete &Forigi - + + Choose the address to send coins to + Elekti la adreson por sendi monerojn + + + Choose the address to receive coins with + Elekti la adreson ricevi monerojn kun + + + C&hoose + &Elekti + + + Sending addresses + Sendaj adresoj + + + Receiving addresses + Ricevaj adresoj + + + These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. + Jen viaj Bitmon-adresoj por sendi pagojn. Zorge kontrolu la sumon kaj la alsendan adreson antaŭ ol sendi. + + + These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. + Jen viaj bitmonaj adresoj por ricevi pagojn. Estas konsilinde uzi apartan ricevan adreson por ĉiu transakcio. + + + &Copy Address + &Kopii Adreson + + + Copy &Label + Kopii &Etikedon + + + &Edit + &Redakti + + + Export Address List + Eksporti Adresliston + + + Comma separated file (*.csv) + Perkome disigita dosiero (*.csv) + + + Exporting Failed + ekspotado malsukcesinta + + + There was an error trying to save the address list to %1. Please try again. + Okazis eraron dum konservo de adreslisto al %1. Bonvolu provi denove. + + AddressTableModel - + + Label + Etikedo + + + Address + Adreso + + + (no label) + (neniu etikedo) + + AskPassphraseDialog @@ -386,6 +454,10 @@ Confirmed Konfirmita + + (no label) + (neniu etikedo) + EditAddressDialog @@ -934,9 +1006,25 @@ &Save Image... &Konservi Bildon... + + Address + Adreso + + + Label + Etikedo + RecentRequestsTableModel + + Label + Etikedo + + + (no label) + (neniu etikedo) + SendCoinsDialog @@ -1016,7 +1104,11 @@ S&end Ŝendi - + + (no label) + (neniu etikedo) + + SendCoinsEntry @@ -1179,9 +1271,33 @@ TransactionTableModel + + Label + Etikedo + + + (no label) + (neniu etikedo) + TransactionView + + Comma separated file (*.csv) + Perkome disigita dosiero (*.csv) + + + Label + Etikedo + + + Address + Adreso + + + Exporting Failed + ekspotado malsukcesinta + UnitDisplayStatusBarControl diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index 6e220ea9605db..1cac03951c61b 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -895,7 +895,7 @@ Number of blocks left - Número de bloques dejados + Número de bloques restantes Unknown... @@ -1726,7 +1726,7 @@ WARNING: Scammers have been active, telling users to type commands here, stealing their wallet contents. Do not use this console without fully understanding the ramification of a command. - ADVERTENCIA: Los estafadores han sido activados, diciéndoles a los usuarios que escriban comandos aquí, robando el contenido de sus monederos. No utilice esta consola sin entender completamente la repercusión de un comando. + ADVERTENCIA: Hay estafadores activos diciendo a los usuarios que escriban comandos aquí y robando el contenido de sus monederos. No utilice esta consola sin entender completamente la repercusión de un comando. Network activity disabled @@ -3124,6 +3124,14 @@ Please contribute if you find %s useful. Visit %s for further information about the software. Contribuya si encuentra %s de utilidad. Visite %s para mas información acerca del programa. + + Reduce storage requirements by enabling pruning (deleting) of old blocks. This allows the pruneblockchain RPC to be called to delete specific blocks, and enables automatic pruning of old blocks if a target size in MiB is provided. This mode is incompatible with -txindex and -rescan. Warning: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, 1 = allow manual pruning via RPC, >%u = automatically prune block files to stay under the specified target size in MiB) + Reducir los requerimientos de almacenamiento habilitando la poda (eliminación) de los bloques viejos. Esto permite que la cadena de bloqueo RPC sea llamada para eliminar bloques específicos, y habilita la poda automática de bloques viejos si se provee el tamaño de un objetivo en MiB. Este modo es incompatible con -txindex and -rescan. Precaución: Revertir este ajuste requiere volver a descargar la cadena de bloqueo completa. (predefinido: 0 = deshabilita bloques de poda, 1 = permite la poda manual mediante RPC, >%u = elimina automáticamente los archivos de bloqueo para permanecer bajo el tamaño del objetivo especificado en MiB) + + + Set lowest fee rate (in %s/kB) for transactions to be included in block creation. (default: %s) + Establecer la tasa más baja (en %s/kB) por transacciones para incluirse en la creación de bloque. (predeterminado: %s) + Set the number of script verification threads (%u to %d, 0 = auto, <0 = leave that many cores free, default: %d) Establecer el número de hilos (threads) de verificación de scripts (entre %u y %d, 0 = automático, <0 = dejar libres ese número de núcleos; predeterminado: %d) @@ -3132,6 +3140,10 @@ The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct La base de datos de bloques contiene un bloque que parece ser del futuro. Esto puede ser porque la fecha y hora de tu ordenador están mal ajustados. Reconstruye la base de datos de bloques solo si estas seguro de que la fecha y hora de tu ordenador estan ajustados correctamente. + + This is a pre-release test build - use at your own risk - do not use for mining or merchant applications + Esta es una versión de prueba prelanzada - utilícelo a su propio riesgo - no lo utilice para aplicaciones de minería o comerciales + Unable to rewind the database to a pre-fork state. You will need to redownload the blockchain No es posible reconstruir la base de datos a un estado anterior. Debe descargar de nuevo la cadena de bloques. @@ -3140,6 +3152,22 @@ Use UPnP to map the listening port (default: 1 when listening and no -proxy) Utiliza UPnP para asignar el puerto de escucha (predeterminado: 1 cuando esta escuchando sin -proxy) + + Username and hashed password for JSON-RPC connections. The field <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A canonical python script is included in share/rpcuser. The client then connects normally using the rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This option can be specified multiple times + Nombre de usuario y contraseña numerada para conexiones JSON-RPC. El campo <userpw> viene en el formato: <USERNAME>:<SALT>$<HASH>. Un script canónico de python está incluído en compartir/usuario rpc. Entonces el cliente se conecta normalmente utilizando la pareja de argumentos usuario rpc=<USERNAME>/contraseña rpc=<PASSWORD>. Esta opción puede ser especificada múltiples veces + + + Wallet will not create transactions that violate mempool chain limits (default: %u) + El monedero no creará transacciones que violen los límites de la cadena mempool (predeterminado: %u) + + + Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. + Advertencia: ¡La red no parece coincidir del todo! Algunos mineros parecen estar experimentando problemas. + + + Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. + Advertencia: ¡No parecemos estar del todo con nuestros pares! Puede que necesite actualizarse, o puede que otros nodos necesiten actualizarse. + You need to rebuild the database using -reindex-chainstate to change -txindex Necesita reconstruir la base de datos usando -reindex-chainstate para cambiar -txindex @@ -3172,6 +3200,10 @@ Cannot resolve -%s address: '%s' No se puede resolver -%s direccion: '%s' + + Chain selection options: + Opciones de selección en cadena: + Change index out of range Cambio de indice fuera de rango @@ -3368,6 +3400,10 @@ Use UPnP to map the listening port (default: %u) Usar UPnP para asignar el puerto de escucha (predeterminado:: %u) + + Use the test chain + Utilice la cadena de prueba + User Agent comment (%s) contains unsafe characters. El comentario del Agente de Usuario (%s) contiene caracteres inseguros. @@ -3662,6 +3698,10 @@ Output debugging information (default: %u, supplying <category> is optional) Mostrar depuración (por defecto: %u, proporcionar <category> es opcional) + + Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect/-noconnect) + Preguntar por direcciones pares al buscar DNS, si baja en las direcciones (predeterminado: 1 a menos que -connect/-noconnect) + Sets the serialization of raw transaction or block hex returned in non-verbose mode, non-segwit(0) or segwit(1) (default: %d) https://www.transifex.com/joyful-world/breaking-english/ @@ -3671,6 +3711,14 @@ Establecer la serialización de las transacciones sin procesar o el bloque hex d Support filtering of blocks and transaction with bloom filters (default: %u) Admite filtrado de bloques, y transacciones con filtros Bloom. Reduce la carga de red. ( por defecto :%u) + + This is the transaction fee you may pay when fee estimates are not available. + Esta es la tarifa de cuota que debe pagar cuando las estimaciones de tarifas no estén disponibles. + + + This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit %s and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard. + Este producto incluye software desarrollado por el Proyecto OpenSSL para utilizarlo en el juego de herramientas OpenSSL %s y software criptográfico escrito por Eric Young y software UPnP escrito por Thomas Bernard. + Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments. La longitud total de la cadena de versión de red ( %i ) supera la longitud máxima ( %i ) . Reducir el número o tamaño de uacomments . @@ -3703,6 +3751,10 @@ Establecer la serialización de las transacciones sin procesar o el bloque hex d Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple times. Los pares de listas blancas que se conectan desde la dirección IP dada (por ejemplo, 1.2.3.4) o la red marcada CIDR (por ejemplo, 1.2.3.0/24). Se puede especificar varias veces. + + %s is set very high! + ¡%s se establece muy alto! + (default: %s) (predeterminado: %s) @@ -3763,6 +3815,10 @@ Establecer la serialización de las transacciones sin procesar o el bloque hex d Relay non-P2SH multisig (default: %u) Relay non-P2SH multisig (default: %u) + + Send transactions with full-RBF opt-in enabled (default: %u) + Enviar transacciones con full-RBF opt-in habilitado (predeterminado: %u) + Set key pool size to <n> (default: %u) Ajustar el número de claves en reserva <n> (predeterminado: %u) @@ -3795,14 +3851,34 @@ Establecer la serialización de las transacciones sin procesar o el bloque hex d Starting network threads... Iniciando funciones de red... + + The wallet will avoid paying less than the minimum relay fee. + El monedero evitará pagar menos que la cuota de retransmisión mínima. + This is the minimum transaction fee you pay on every transaction. Esta es la tarifa mínima de transacción que usted paga en cada transacción. + + This is the transaction fee you will pay if you send a transaction. + Esta es la cuota de transacción que pagará si envía una transacción. + Threshold for disconnecting misbehaving peers (default: %u) Umbral para la desconexión de pares con mal comportamiento (predeterminado: %u) + + Transaction amounts must not be negative + Las cantidades de transacción no deben ser negativa + + + Transaction has too long of a mempool chain + La transacción tiene demasiado tiempo de una cadena de mempool + + + Transaction must have at least one recipient + La transacción debe de tener al menos un receptor + Unknown network specified in -onlynet: '%s' La red especificada en -onlynet '%s' es desconocida diff --git a/src/qt/locale/bitcoin_es_ES.ts b/src/qt/locale/bitcoin_es_ES.ts index 7865483183d9f..c81723a7a4460 100644 --- a/src/qt/locale/bitcoin_es_ES.ts +++ b/src/qt/locale/bitcoin_es_ES.ts @@ -317,6 +317,22 @@ Open &URI... Abrir &URI... + + Click to disable network activity. + Haz click para desactivar la actividad de red. + + + Network activity disabled. + Actividad de red desactivada. + + + Click to enable network activity again. + Haz click para reactivar la actividad de red. + + + Syncing Headers (%1%)... + Sincronizando cabeceras (%1%)... + Reindexing blocks on disk... Reindexando bloques en disco... @@ -519,7 +535,11 @@ Wallet is <b>encrypted</b> and currently <b>locked</b> El monedero está <b>cifrado</b> y actualmente <b>bloqueado</b> - + + A fatal error occurred. Bitcoin can no longer continue safely and will quit. + Ha ocurrido un error fatal. Bitcoin no puede continuar de manera segura y se cerrará. + + CoinControlDialog @@ -853,15 +873,43 @@ Form Formulario + + Number of blocks left + Número de bloques restantes + + + Unknown... + Desconocido... + Last block time Hora del último bloque + + Progress + Progreso + + + Progress increase per hour + Incremento del progreso por hora + + + calculating... + calculando... + + + Estimated time left until synced + Tiempo estimado restante hasta sincronización completa + Hide Ocultar - + + Unknown. Syncing Headers (%1)... + Desconocido. Sincronizando cabeceras (%1)... + + OpenURIDialog @@ -1296,6 +1344,10 @@ Node/Service Nodo/Servicio + + NodeId + NodeId + QObject @@ -1339,9 +1391,17 @@ %1 and %2 %1 y %2 - + + %1 didn't yet exit safely... + %1 aún no ha salido de manera segura... + + QObject::QObject + + Error: Specified data directory "%1" does not exist. + Error: directorio especificado "%1" no existe. + QRImageWidget @@ -1936,6 +1996,10 @@ Dust: Polvo: + + Confirmation time target: + Tiempo objetivo de confirmación: + Clear &All Vaciar &todo @@ -3482,6 +3546,10 @@ Warning: Wallet file corrupt, data salvaged! Original %s saved as %s in %s; if your balance or transactions are incorrect you should restore from a backup. Aviso: fichero de monedero corrupto, datos recuperados! Original %s guardado como %s en %s; si su balance de transacciones es incorrecto, debe restaurar desde una copia de seguridad. + + %s is set very high! + %s es demasiado alto! + (default: %s) (predeterminado: %s) @@ -3538,6 +3606,10 @@ Relay non-P2SH multisig (default: %u) Relay non-P2SH multisig (default: %u) + + Send transactions with full-RBF opt-in enabled (default: %u) + Enviar transaciones con RBF-completo opt-in activado (default: %u) + Set key pool size to <n> (default: %u) Ajustar el número de claves en reserva <n> (predeterminado: %u) diff --git a/src/qt/locale/bitcoin_et_EE.ts b/src/qt/locale/bitcoin_et_EE.ts index d96ffa42f5bd1..9b0c908381581 100644 --- a/src/qt/locale/bitcoin_et_EE.ts +++ b/src/qt/locale/bitcoin_et_EE.ts @@ -87,6 +87,10 @@ The supplied passphrases do not match. Sisestatud paroolid ei kattu. + + Wallet unlock failed + Rahakoti lahtilukustamine ebaõnnestus + Wallet decryption failed Rahakoti dekrüpteerimine ebaõnnestus @@ -109,6 +113,14 @@ &Overview &Ülevaade + + Quit application + Välju rakendusest + + + &Options... + &Valikud... + Open &URI... Ava &URI... @@ -125,14 +137,30 @@ Wallet Rahakott + + &Send + &Saada + + + &Show / Hide + &Näita / Peida + &File &Fail + + &Settings + &Seaded + &Help &Abi + + &Command-line options + &Käsurea valikud + %1 behind %1 ajast maas @@ -203,6 +231,10 @@ EditAddressDialog + + &Address + &Aadress + New key generation failed. Uue võtme genereerimine ebaõnnestus. diff --git a/src/qt/locale/bitcoin_fa.ts b/src/qt/locale/bitcoin_fa.ts index c9cfad0f2a56c..b83afb8618088 100644 --- a/src/qt/locale/bitcoin_fa.ts +++ b/src/qt/locale/bitcoin_fa.ts @@ -115,6 +115,10 @@ Decrypt wallet رمزگشایی کیف پول + + Change passphrase + تغییر گذرواژه + Confirm wallet encryption تأیید رمزنگاری کیف پول @@ -506,6 +510,10 @@ Confirmed تأیید شده + + Copy address + کپی ادرس + Copy label کپی برچسب @@ -530,6 +538,10 @@ Copy quantity کپی تعداد + + Copy fee + رونوشت کارمزد + (%1 locked) (%1 قفل شده) @@ -697,6 +709,10 @@ Form فرم + + Unknown... + مشخص نیست + Last block time زمان آخرین بلوک @@ -1328,6 +1344,10 @@ Copy amount کپی مقدار + + Copy fee + رونوشت کارمزد + (no label) (بدون برچسب) @@ -1514,6 +1534,10 @@ TransactionView + + Copy address + کپی ادرس + Copy label کپی برچسب diff --git a/src/qt/locale/bitcoin_fr.ts b/src/qt/locale/bitcoin_fr.ts index 21800231596a0..883bb4f8da748 100644 --- a/src/qt/locale/bitcoin_fr.ts +++ b/src/qt/locale/bitcoin_fr.ts @@ -887,7 +887,7 @@ Recent transactions may not yet be visible, and therefore your wallet's balance might be incorrect. This information will be correct once your wallet has finished synchronizing with the bitcoin network, as detailed below. - Les transactions récentes ne sont peut-être pas encore visibles, et par conséquent, le solde de votre porte-monnaie est peut-être erroné. Cette information sera juste une fois que votre porte-monnaie aura fini de se synchroniser avec le réseau Bitcoin, tel que décrit ci-dessous. + Les transactions récentes ne sont peut-être pas encore visibles, et par conséquent, le solde de votre porte-monnaie est peut-être erroné. Cette information sera juste une fois que votre porte-monnaie aura fini de se synchroniser avec le réseau Bitcoin, comme décrit ci-dessous. Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network. diff --git a/src/qt/locale/bitcoin_it_IT.ts b/src/qt/locale/bitcoin_it_IT.ts index 09d40497fa73a..ebb30f13e4b62 100644 --- a/src/qt/locale/bitcoin_it_IT.ts +++ b/src/qt/locale/bitcoin_it_IT.ts @@ -41,9 +41,21 @@ &Delete Cancella + + Choose the address to send coins to + Scegli l'indirizzo a cui inviare denaro + + + C&hoose + Scegli + AddressTableModel + + Address + Indirizzo + AskPassphraseDialog @@ -132,6 +144,10 @@ ReceiveRequestDialog + + Address + Indirizzo + RecentRequestsTableModel @@ -168,6 +184,10 @@ TransactionView + + Address + Indirizzo + UnitDisplayStatusBarControl diff --git a/src/qt/locale/bitcoin_ms_MY.ts b/src/qt/locale/bitcoin_ms_MY.ts index 0108332dd75ea..7844093e3bb64 100644 --- a/src/qt/locale/bitcoin_ms_MY.ts +++ b/src/qt/locale/bitcoin_ms_MY.ts @@ -1,6 +1,10 @@ AddressBookPage + + Right-click to edit address or label + Klik-kanan untuk edit alamat ataupun label + Create a new address Cipta alamat baru @@ -17,6 +21,10 @@ &Copy &Salin + + C&lose + &Tutup + Delete the currently selected address from the list Padam alamat semasa yang dipilih dari senaraiyang dipilih dari senarai @@ -34,25 +42,301 @@ Alihkan fail data ke dalam tab semasa &Delete &Padam - + + Choose the address to send coins to + Pilih alamat untuk hantar koin kepada + + + Choose the address to receive coins with + Pilih alamat untuk menerima koin dengan + + + C&hoose + &Pilih + + + Sending addresses + alamat-alamat penghantaran + + + Receiving addresses + alamat-alamat penerimaan + + + These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. + Ini adalah alamat Bitcoin anda untuk pembayaran. Periksa jumlah dan alamat penerima sebelum membuat penghantaran koin sentiasa. + + + These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. + Ini adalah alamat Bitcoin anda untuk menerima pembayaraan. Anda disyorkan untuk menguna alamat menerima untuk setiap transaksi. + + + &Copy Address + &Salin Aamat + + + Copy &Label + Salin & Label + + + &Edit + &Edit + + + Export Address List + Eskport Senarai Alamat + + + Comma separated file (*.csv) + Fail dibahagi oleh koma(*.csv) + + + Exporting Failed + Mengeksport Gagal + + + There was an error trying to save the address list to %1. Please try again. + Terdapat ralat semasa cubaan menyimpan senarai alamat kepada %1. Sila cuba lagi. + + AddressTableModel - + + Label + Label + + + Address + Alamat + + + (no label) + (tiada label) + + AskPassphraseDialog - + + Passphrase Dialog + Dialog frasa laluan + + + Enter passphrase + memasukkan frasa laluan + + + New passphrase + Frasa laluan baru + + + Repeat new passphrase + Ulangi frasa laluan baru + + + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>ten or more random characters</b>, or <b>eight or more words</b>. + Memasukkan frasa laluan baru kepada dompet.<br/>Sila mengunakkan frasa laluan yang<b>mengandungi 10 atau lebih aksara rawak</b>,ataupun<b>lapan atau lebih perkataan.</b> + + + Encrypt wallet + Dompet encrypt + + + This operation needs your wallet passphrase to unlock the wallet. + Operasi ini perlukan frasa laluan dompet anda untuk membuka kunci dompet. + + + Unlock wallet + Membuka kunci dompet + + + This operation needs your wallet passphrase to decrypt the wallet. + Operasi ini memerlukan frasa laluan dompet anda untuk menyahsulit dompet. + + + Decrypt wallet + Menyahsulit dompet + + + Change passphrase + Menukar frasa laluan + + + Enter the old passphrase and new passphrase to the wallet. + Memasukkan frasa laluan lama dan frasa laluan baru untuk. + + + Confirm wallet encryption + Mengesahkan enkripsi dompet + + + Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>! + Amaran: Jika anda enkripkan dompet anda dan hilangkan frasa laluan, anda akan <b>ANDA AKAN HILANGKAN SEMUA BITCOIN ANDA</b>! + + + Are you sure you wish to encrypt your wallet? + Anda pasti untuk membuat enkripsi dompet anda? + + + Wallet encrypted + Dompet dienkripsi + + + %1 will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. + %1 akan tutup untuk menyelesaikan proses enkripsi. Ingat bahawa enkripsi tidak boleh melidungi sepenuhnya bitcoins anda daripada dicuri oleh malware yang menjangkiti komputer anda. + + + IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet. + PENTING: Apa-apa sandaran yang anda buat sebelum ini untuk fail dompet anda hendaklah digantikan dengan fail dompet enkripsi yang dijana baru. Untuk sebab-sebab keselamatan , sandaran fail dompet yang belum dibuat enkripsi sebelum ini akan menjadi tidak berguna secepat anda mula guna dompet enkripsi baru. + + + Wallet encryption failed + Enkripsi dompet gagal + + + Wallet encryption failed due to an internal error. Your wallet was not encrypted. + Enkripsi dompet gagal kerana ralat dalaman. Dompet anda tidak dienkripkan. + + + The supplied passphrases do not match. + Frasa laluan yang dibekalkan tidak sepadan. + + + Wallet unlock failed + Pembukaan kunci dompet gagal + + + The passphrase entered for the wallet decryption was incorrect. + Frasa laluan dimasukki untuk dekripsi dompet adalah tidak betul. + + + Wallet decryption failed + Dekripsi dompet gagal + + + Wallet passphrase was successfully changed. + Frasa laluan dompet berjaya ditukar. + + + Warning: The Caps Lock key is on! + Amaran: Kunci Caps Lock buka! + + BanTableModel - + + IP/Netmask + IP/Netmask + + + Banned Until + Diharamkan sehingga + + BitcoinGUI + + Sign &message... + Tandatangan & mesej... + + + Synchronizing with network... + Penyegerakan dengan rangkaian... + + + &Overview + &Gambaran Keseluruhan + + + Node + Nod + + + Show general overview of wallet + Tunjuk gambaran keseluruhan umum dompet + + + &Transactions + &Transaksi + + + Browse transaction history + Menyemak imbas sejarah transaksi + + + E&xit + &Keluar + + + Quit application + Berhenti aplikasi + + + &About %1 + &Mengenai%1 + + + Show information about %1 + Menunjuk informasi mengenai%1 + + + About &Qt + Mengenai &Qt + + + Show information about Qt + Menunjuk informasi megenai Qt + &Options... Pilihan + + Modify configuration options for %1 + Mengubah suai pilihan konfigurasi untuk %1 + + + &Encrypt Wallet... + &Enkripsi Dompet + + + &Backup Wallet... + &Dompet Sandaran... + + + &Change Passphrase... + &Menukar frasa-laluan + + + &Sending addresses... + &Menghantar frasa-laluan + + + &Receiving addresses... + &Menerima frasa-laluan... + + + Open &URI... + Buka &URI... + + + Reindexing blocks on disk... + Reindexi blok pada cakera... + + + Send coins to a Bitcoin address + Menghantar koin kepada alamat Bitcoin + + + Backup wallet to another location + Wallet sandaran ke lokasi lain + CoinControlDialog + + (no label) + (tiada label) + EditAddressDialog @@ -113,9 +397,25 @@ Alihkan fail data ke dalam tab semasa Copy &Address &Salin Alamat + + Address + Alamat + + + Label + Label + RecentRequestsTableModel + + Label + Label + + + (no label) + (tiada label) + SendCoinsDialog @@ -123,7 +423,11 @@ Alihkan fail data ke dalam tab semasa Balance: Baki - + + (no label) + (tiada label) + + SendCoinsEntry @@ -150,9 +454,33 @@ Alihkan fail data ke dalam tab semasa TransactionTableModel + + Label + Label + + + (no label) + (tiada label) + TransactionView + + Comma separated file (*.csv) + Fail dibahagi oleh koma(*.csv) + + + Label + Label + + + Address + Alamat + + + Exporting Failed + Mengeksport Gagal + UnitDisplayStatusBarControl diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts index 183cbac80aaed..d0f82b2d89cb0 100644 --- a/src/qt/locale/bitcoin_nb.ts +++ b/src/qt/locale/bitcoin_nb.ts @@ -41,10 +41,74 @@ &Delete &Slett - + + Choose the address to send coins to + Velg adressen å sende mynter til + + + Choose the address to receive coins with + Velg adressen til å motta mynter med + + + Sending addresses + Utsendingsadresser + + + Receiving addresses + Mottaksadresser + + + These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. + Dette er dine Bitcoin-adresser for sending av betalinger. Sjekk alltid beløpet og mottakeradressen før sending av mynter. + + + These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. + Dette er dine Bitcoin-adresser for å sende betalinger med. Det er anbefalt å bruke en ny mottaksadresse for hver transaksjon. + + + &Copy Address + &Kopier Adresse + + + Copy &Label + Kopier &Merkelapp + + + &Edit + &Rediger + + + Export Address List + Eksporter adresseliste + + + Comma separated file (*.csv) + Kommaseparert fil (*.csv) + + + Exporting Failed + Eksportering feilet + + + There was an error trying to save the address list to %1. Please try again. + Det oppstod en feil under lagring av adresselisten til %1. Vennligst prøv på nytt. + + AddressTableModel - + + Label + Merkelapp + + + Address + Adresse + + + (no label) + (ingen merkelapp) + + AskPassphraseDialog @@ -63,6 +127,26 @@ Repeat new passphrase Gjenta ny adgangsfrase + + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>ten or more random characters</b>, or <b>eight or more words</b>. + Oppgi adgangsfrasen til lommeboken.<br/>Vennligst bruk en adgangsfrase med <b>ti eller flere tilfeldige tegn</b>, eller <b>åtte eller flere ord</b>. + + + Encrypt wallet + Krypter lommebok + + + Unlock wallet + Lås opp lommebok + + + Decrypt wallet + Dekrypter lommebok + + + Change passphrase + Endre adgangsfrase + BanTableModel @@ -422,6 +506,10 @@ Confirmed Bekreftet + + (no label) + (ingen merkelapp) + EditAddressDialog @@ -1302,9 +1390,25 @@ &Save Image... &Lagre Bilde... + + Address + Adresse + + + Label + Merkelapp + RecentRequestsTableModel + + Label + Merkelapp + + + (no label) + (ingen merkelapp) + SendCoinsDialog @@ -1448,7 +1552,11 @@ S&end S&end - + + (no label) + (ingen merkelapp) + + SendCoinsEntry @@ -1651,9 +1759,33 @@ TransactionTableModel + + Label + Merkelapp + + + (no label) + (ingen merkelapp) + TransactionView + + Comma separated file (*.csv) + Kommaseparert fil (*.csv) + + + Label + Merkelapp + + + Address + Adresse + + + Exporting Failed + Eksportering feilet + UnitDisplayStatusBarControl diff --git a/src/qt/locale/bitcoin_sk.ts b/src/qt/locale/bitcoin_sk.ts index 1bc26d55d6680..3cd287d3add81 100644 --- a/src/qt/locale/bitcoin_sk.ts +++ b/src/qt/locale/bitcoin_sk.ts @@ -49,6 +49,10 @@ Choose the address to receive coins with Zvoľte adresu na ktorú chcete prijať mince + + C&hoose + Vybrať + Sending addresses Odosielajúce adresy @@ -81,6 +85,14 @@ Export Address List Exportovať zoznam adries + + Comma separated file (*.csv) + Čiarkou oddelovaný súbor (*.csv) + + + Exporting Failed + Export zlyhal + There was an error trying to save the address list to %1. Please try again. Nastala chyba pri pokuse uložiť zoznam adries do %1. Skúste znovu. @@ -119,14 +131,26 @@ Repeat new passphrase Zopakujte nové heslo + + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>ten or more random characters</b>, or <b>eight or more words</b>. + Zadajte nové heslo k peňaženke.<br/>Prosím použite heslo s dĺžkou <b>desať alebo viac náhodných znakov</b>, prípadne <b>osem alebo viac slov</b>. + Encrypt wallet Zašifrovať peňaženku + + This operation needs your wallet passphrase to unlock the wallet. + Táto operácia potrebuje heslo k vašej peňaženke aby ju mohla odomknúť. + Unlock wallet Odomknúť peňaženku + + This operation needs your wallet passphrase to decrypt the wallet. + Táto operácia potrebuje heslo k vašej peňaženke na dešifrovanie peňaženky. + Decrypt wallet Dešifrovať peňaženku @@ -135,6 +159,10 @@ Change passphrase Zmena hesla + + Enter the old passphrase and new passphrase to the wallet. + Zadajte staré heslo a nové heslo k peňaženke. + Confirm wallet encryption Potvrďte zašifrovanie peňaženky @@ -147,11 +175,43 @@ Wallet encrypted Peňaženka zašifrovaná + + IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet. + DÔLEŽITÉ: Všetky predchádzajúce zálohy vašej peňaženky, ktoré ste vykonali by mali byť nahradené novo vytvorenou, zašifrovanou peňaženkou. Z bezpečnostných dôvodov bude predchádzajúca záloha nezašifrovanej peňaženky k ničomu, akonáhle začnete používať novú, zašifrovanú peňaženku. + + + Wallet encryption failed + Šifrovanie peňaženky zlyhalo + + + Wallet encryption failed due to an internal error. Your wallet was not encrypted. + Šifrovanie peňaženky zlyhalo kôli internej chybe. Vaša peňaženka nebola zašifrovaná. + + + The supplied passphrases do not match. + Zadané heslá nesúhlasia. + Wallet unlock failed Odomykanie peňaženky zlyhalo - + + The passphrase entered for the wallet decryption was incorrect. + Zadané heslo pre dešifrovanie peňaženky bolo nesprávne. + + + Wallet decryption failed + Zlyhalo šifrovanie peňaženky. + + + Wallet passphrase was successfully changed. + Heslo k peňaženke bolo úspešne zmenené. + + + Warning: The Caps Lock key is on! + Upozornenie: Máte zapnutý Caps Lock! + + BanTableModel @@ -534,10 +594,54 @@ Copy amount Kopírovať sumu + + Copy transaction ID + Kopírovať ID transakcie + + + Lock unspent + Uzamknúť neminuté + + + Unlock unspent + Odomknúť neminuté + + + Copy quantity + Kopírovať množstvo + + + Copy fee + Kopírovať poplatok + + + Copy after fee + Kopírovať po poplatkoch + + + Copy bytes + Kopírovať bajty + Copy dust Kopírovať prach + + Copy change + Kopírovať zmenu + + + (%1 locked) + (%1 zamknutých) + + + yes + áno + + + no + nie + This label turns red if any recipient receives an amount smaller than the current dust threshold. Tento popis sčervenie ak ktorýkoľvek príjemca dostane sumu menšiu ako súčasný limit pre "prach". @@ -546,7 +650,15 @@ (no label) (bez popisu) - + + change from %1 (%2) + zmena od %1 (%2) + + + (change) + (zmena) + + EditAddressDialog @@ -593,7 +705,15 @@ The entered address "%1" is already in the address book. Vložená adresa "%1" sa už nachádza v adresári. - + + Could not unlock wallet. + Nepodarilo sa odomknúť peňaženku. + + + New key generation failed. + Generovanie nového kľúča zlyhalo. + + FreespaceChecker @@ -1073,6 +1193,10 @@ Payment request error Chyba pri vyžiadaní platby + + URI handling + URI manipulácia + Payment request fetch URL is invalid: %1 URL pre stiahnutie výzvy na zaplatenie je neplatné: %1 @@ -1121,14 +1245,30 @@ Requested payment amount of %1 is too small (considered dust). Požadovaná suma platby %1 je príliš nízka (považovaná za prach). + + Refund from %1 + Vrátenie z %1 + Payment request %1 is too large (%2 bytes, allowed %3 bytes). Požiadavka na platbu %1 je príliš veľká (%2 bajtov, povolené je %3 bajtov). + + Error communicating with %1: %2 + Chyba komunikácie s %1: %2 + Payment request cannot be parsed! Požiadavka na platbu nemôže byť analyzovaná! + + Bad response from server %1 + Zlá odpoveď zo servera %1 + + + Network request error + Chyba požiadavky siete + Payment acknowledged Platba potvrdená @@ -1201,7 +1341,23 @@ QRImageWidget - + + &Save Image... + Uložiť obrázok... + + + &Copy Image + Kopírovať obrázok + + + Save QR Code + Uložiť QR Code + + + PNG Image (*.png) + PNG obrázok (*.png) + + RPCConsole @@ -1595,6 +1751,10 @@ Payment information Informácia o platbe + + URI + URI + Address Adresa @@ -1615,7 +1775,11 @@ Resulting URI too long, try to reduce the text for label / message. Výsledné URI je príliš dlhé, skúste skrátiť text pre popis alebo správu. - + + Error encoding URI into QR Code. + Chyba kódovania URI do QR Code. + + RecentRequestsTableModel @@ -1793,14 +1957,42 @@ S&end &Odoslať + + Copy quantity + Kopírovať množstvo + Copy amount Kopírovať sumu + + Copy fee + Kopírovať poplatok + + + Copy after fee + Kopírovať po poplatkoch + + + Copy bytes + Kopírovať bajty + Copy dust Kopírovať prach + + Copy change + Kopírovať zmenu + + + %1 to %2 + %1 do %2 + + + Are you sure you want to send? + Určite chcete odoslať transakciu? + Total Amount %1 Celková suma %1 @@ -1825,10 +2017,18 @@ The amount exceeds your balance. Suma je vyššia ako Váš zostatok. + + The total exceeds your balance when the %1 transaction fee is included. + Celková suma prevyšuje Váš zostatok ak sú započítané aj transakčné poplatky %1. + Duplicate address found: addresses should only be used once each. Našla sa duplicitná adresa: každá adresa by sa mala použiť len raz. + + Transaction creation failed! + Vytvorenie transakcie zlyhalo! + Payment request expired. Vypršala platnosť požiadavky na platbu. @@ -1841,6 +2041,10 @@ Warning: Invalid Bitcoin address Varovanie: Neplatná Bitcoin adresa + + Warning: Unknown change address + UPOZORNENIE: Neznáma zmena adresy + Confirm custom change address Potvrďte zmenu adresy @@ -1939,7 +2143,11 @@ SendConfirmationDialog - + + Yes + áno + + ShutdownWindow @@ -2053,6 +2261,10 @@ The entered address does not refer to a key. Vložená adresa nezodpovedá žiadnemu kľúču. + + Wallet unlock was cancelled. + Odomknutie peňaženky bolo zrušené. + Private key for the entered address is not available. Súkromný kľúč pre zadanú adresu nieje k dispozícii. @@ -2102,10 +2314,18 @@ TransactionDesc + + Open until %1 + Otvorené do %1 + conflicted with a transaction with %1 confirmations koliduje s transakciou s %1 potvrdeniami + + %1/offline + %1/offline + 0/unconfirmed, %1 0/nepotvrdené, %1 @@ -2118,14 +2338,46 @@ %1 confirmations %1 potvrdení + + Status + Stav + + + , has not been successfully broadcast yet + , ešte nebola úspešne odoslaná + Date Dátum + + Source + Zdroj + + + Generated + Vygenerované + + + From + Od + + + unknown + neznámy + + + To + do + own address vlastná adresa + + watch-only + Iba sledovanie + label popis @@ -2134,10 +2386,26 @@ Credit Kredit + + not accepted + neprijaté + + + Debit + Debet + + + Total debit + Celkový debet + Total credit Celkový kredit + + Transaction fee + Transakčný poplatok + Net amount Suma netto @@ -2146,11 +2414,47 @@ Message Správa + + Comment + Komentár + + + Transaction ID + ID transakcie + + + Merchant + Kupec + + + Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + Vytvorené coins musia dospieť %1 blokov kým môžu byť minuté. Keď vytvoríte tento blok, bude rozoslaný do siete aby bol akceptovaný do reťaze blokov. Ak sa nedostane reťaze, jeho stav sa zmení na "zamietnutý" a nebude sa dať minúť. Toto sa môže občas stať ak iná nóda vytvorí blok približne v tom istom čase. + + + Debug information + Ladiace informácie + + + Transaction + Transakcie + + + Inputs + Vstupy + Amount Suma - + + true + pravda + + + false + nepravda + + TransactionDescDialog @@ -2172,6 +2476,14 @@ Label Popis + + Open until %1 + Otvorené do %1 + + + Offline + Offline + Unconfirmed Nepotvrdené @@ -2184,6 +2496,10 @@ Confirmed (%1 confirmations) Potvrdené (%1 potvrdení) + + Conflicted + V rozpore + Immature (%1 confirmations, will be available after %2) Nezrelé (%1 potvrdení, bude dostupné po %2) @@ -2192,6 +2508,10 @@ This block was not received by any other nodes and will probably not be accepted! Ten blok nebol prijatý žiadnym iným uzlom a pravdepodobne nebude akceptovaný! + + Generated but not accepted + Vypočítané ale neakceptované + Received with Prijaté s @@ -2212,6 +2532,14 @@ Mined Vyťažené + + watch-only + Iba sledovanie + + + (n/a) + (n/a) + (no label) (bez popisu) @@ -2307,14 +2635,38 @@ Copy amount Kopírovať sumu + + Copy transaction ID + Kopírovať ID transakcie + + + Copy raw transaction + Skopírovať neupravenú transakciu + Edit label Upraviť popis + + Show transaction details + Zobraziť podrobnosti transakcie + + + Export Transaction History + Exportovať históriu transakcií + + + Comma separated file (*.csv) + Čiarkou oddelovaný súbor (*.csv) + Confirmed Potvrdené + + Watch-only + Iba sledovanie + Date Dátum @@ -2331,11 +2683,35 @@ Address Adresa + + ID + ID + + + Exporting Failed + Export zlyhal + + + There was an error trying to save the transaction history to %1. + Vyskytla sa chyba pri pokuse o uloženie histórie transakcií do %1. + + + Exporting Successful + Export úspešný + + + The transaction history was successfully saved to %1. + História transakciá bola úspešne uložená do %1. + Range: Rozsah: - + + to + do + + UnitDisplayStatusBarControl @@ -2345,13 +2721,53 @@ WalletFrame - + + No wallet has been loaded. + Nie je načítaná peňaženka. + + WalletModel - + + Send Coins + Poslať mince + + WalletView - + + &Export + &Exportovať... + + + Export the data in the current tab to a file + Exportovať dáta v aktuálnej karte do súboru + + + Backup Wallet + Zálohovanie peňaženky + + + Wallet Data (*.dat) + Dáta peňaženky (*.dat) + + + Backup Failed + Zálohovanie zlyhalo + + + There was an error trying to save the wallet data to %1. + Vyskytla sa chyba pri pokuse o uloženie dát peňaženky do %1. + + + Backup Successful + Záloha úspešná + + + The wallet data was successfully saved to %1. + Dáta peňaženky boli úspešne uložené do %1. + + bitcoin-core @@ -2450,6 +2866,22 @@ The block database contains a block which appears to be from the future. This may be due to your computer's date and time being set incorrectly. Only rebuild the block database if you are sure that your computer's date and time are correct Databáza blokov obsahuje blok, ktorý vyzerá byť z budúcnosti. Toto môže byť spôsobené nesprávnym systémovým časom vášho počítača. Obnovujte databázu blokov len keď ste si istý, že systémový čas je nastavený správne. + + This is a pre-release test build - use at your own risk - do not use for mining or merchant applications + Toto je predbežná testovacia zostava - používate na vlastné riziko - nepoužívajte na ťaženie alebo obchodné aplikácie + + + Use UPnP to map the listening port (default: 1 when listening and no -proxy) + Skúsiť použiť UPnP pre mapovanie počúvajúceho portu (predvolené: 1 počas počúvania a bez -proxy) + + + Warning: The network does not appear to fully agree! Some miners appear to be experiencing issues. + Varovanie: Javí sa že sieť sieť úplne nesúhlasí! Niektorí mineri zjavne majú ťažkosti. + + + Warning: We do not appear to fully agree with our peers! You may need to upgrade, or other nodes may need to upgrade. + Varovanie: Zjavne sa úplne nezhodujeme s našimi peer-mi! Možno potrebujete prejsť na novšiu verziu alebo ostatné uzly potrebujú vyššiu verziu. + %s corrupt, salvage failed %s je poškodený, záchrana zlyhala @@ -2698,6 +3130,10 @@ Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) Vykonať príkaz po prijatí patričného varovania alebo uvidíme veľmi dlhé rozdvojenie siete (%s v cmd je nahradené správou) + + Fees (in %s/kB) smaller than this are considered zero fee for relaying, mining and transaction creation (default: %s) + Poplatky (v %s/kB) menšie ako toto, sú považované za nulový transakčný poplatok (predvolené: %s) + If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u) Ak nie je nastavené paytxfee, pridať dostatočný poplatok aby sa transakcia začala potvrdzovať priemerne v rámci bloku (predvolené: %u) @@ -2866,6 +3302,10 @@ (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) (1 = zachovať metaúdaje tx napr. vlastníka účtu a informácie o platobných príkazoch, 2 = zahodiť metaúdaje tx) + + Fees (in %s/kB) smaller than this are considered zero fee for transaction creation (default: %s) + Poplatky (v %s/kB) menšie ako toto, sú považované za nulový transakčný poplatok (predvolené: %s) + How thorough the block verification of -checkblocks is (0-4, default: %u) Ako dôkladné je -checkblocks overenie blokov (0-4, predvolené: %u) diff --git a/src/qt/locale/bitcoin_sv.ts b/src/qt/locale/bitcoin_sv.ts index 2986115a62096..edd808c9b5848 100644 --- a/src/qt/locale/bitcoin_sv.ts +++ b/src/qt/locale/bitcoin_sv.ts @@ -540,7 +540,11 @@ Var vänlig och försök igen. Wallet is <b>encrypted</b> and currently <b>locked</b> Denna plånbok är <b>krypterad</b> och för närvarande <b>låst</b> - + + A fatal error occurred. Bitcoin can no longer continue safely and will quit. + Ett kritiskt fel uppstod. Bitcoin kan inte fortsätta att köra säkert och kommer att avslutas. + + CoinControlDialog @@ -679,7 +683,7 @@ Var vänlig och försök igen. Directory already exists. Add %1 if you intend to create a new directory here. - Katalogen finns redan. Läggtill %1 om du vill skapa en ny katalog här. + Katalogen finns redan. Lägg till %1 om du vill skapa en ny katalog här. Path already exists, and is not a directory. @@ -2099,6 +2103,18 @@ Var vänlig och försök igen. TransactionView + + Enter address or label to search + Ange en adress eller etikett att söka efter + + + Min amount + Minsta belopp + + + Abandon transaction + Avbryt transaktionen + Copy address Kopiera adress diff --git a/src/qt/locale/bitcoin_tr.ts b/src/qt/locale/bitcoin_tr.ts index 2de0d14ddd24b..321effc7e136b 100644 --- a/src/qt/locale/bitcoin_tr.ts +++ b/src/qt/locale/bitcoin_tr.ts @@ -295,15 +295,15 @@ &Encrypt Wallet... - Cüzdanı &Şifrele... + &Cüzdanı Şifrele... &Backup Wallet... - Cüzdanı &Yedekle... + &Cüzdanı Yedekle... &Change Passphrase... - Parolayı &Değiştir... + &Parolayı Değiştir... &Sending addresses... From 33fadc20bae4828788d6d82c582c457adc6941e1 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 14 Apr 2017 12:45:28 +0200 Subject: [PATCH 37/40] doc: Update release notes pre-rc2 --- doc/release-notes.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 4479c1a456ac0..4b5e3c56ed600 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -33,10 +33,14 @@ Notable changes RPC changes ----------- -The first positional argument of `createrawtransaction` was renamed. -This interface change breaks compatibility with 0.14.0, when the named -arguments functionality, introduced in 0.14.0, is used. +- The first positional argument of `createrawtransaction` was renamed from + `transactions` to `inputs`. +- The argument of `disconnectnode` was renamed from `node` to `address`. + +These interface changes break compatibility with 0.14.0, when the named +arguments functionality, introduced in 0.14.0, is used. Client software +using these calls with named arguments needs to be updated. Mining ------ @@ -82,6 +86,7 @@ git merge commit are mentioned. - #10139 `f15268d` Remove auth cookie on shutdown (practicalswift) - #10146 `2fea10a` Better error handling for submitblock (rawodb, gmaxwell) - #10144 `d947afc` Prioritisetransaction wasn't always updating ancestor fee (sdaftuar) +- #10204 `3c79602` Rename disconnectnode argument (jnewbery) ### Block and transaction handling - #10126 `0b5e162` Compensate for memory peak at flush time (sipa) @@ -90,6 +95,7 @@ git merge commit are mentioned. ### P2P protocol and network code - #9953/#10013 `d2548a4` Fix shutdown hang with >= 8 -addnodes set (TheBlueMatt) +- #10176 `30fa231` net: gracefully handle NodeId wrapping (theuni) ### Build system - #9973 `e9611d1` depends: fix zlib build on osx (theuni) @@ -101,6 +107,9 @@ git merge commit are mentioned. - #9955/#10006 `569596c` Don't require segwit in getblocktemplate for segwit signalling or mining (sdaftuar) - #9959/#10127 `b5c3440` Prevent slowdown in CreateNewBlock on large mempools (sdaftuar) +### Tests and QA +- #10157 `55f641c` Fix the `mempool_packages.py` test (sdaftuar) + ### Miscellaneous - #10037 `4d8e660` Trivial: Fix typo in help getrawtransaction RPC (keystrike) - #10120 `e4c9a90` util: Work around (virtual) memory exhaustion on 32-bit w/ glibc (laanwj) From 38ab0a7465942c138051fad8fc270cd2f8e3e4a5 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 19 Apr 2017 16:45:38 +0000 Subject: [PATCH 38/40] release-notes: Accurately explain getblocktemplate improvements --- doc/release-notes.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 4b5e3c56ed600..ef072afd4d7fb 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -45,14 +45,18 @@ using these calls with named arguments needs to be updated. Mining ------ -Getblocktemplate sets the segwit version bit even when the downstream -client has not been updated to include the segwit commitment. Ability -to enforce the rule is the only required criteria for safe activation, -but previously signaling was only requested if the miner could include -transactions in order to avoid a potential outcome where segwit would -activate at a time when no segwit transactions could be included. -Since many miners are now including the segwit commitment this concern -no longer applies. +In previous versions, getblocktemplate required segwit support from downstream +clients/miners once the feature activated on the network. In this version, it +now supports non-segwit clients even after activation, by removing all segwit +transactions from the returned block template. This allows non-segwit miners to +continue functioning correctly even after segwit has activated. + +Due to the limitations in previous versions, getblocktemplate also recommended +non-segwit clients to not signal for the segwit version-bit. Since this is no +longer an issue, getblocktemplate now always recommends signalling segwit for +all miners. This is safe because ability to enforce the rule is the only +required criteria for safe activation, not actually producing segwit-enabled +blocks. UTXO memory accounting ---------------------- From 51c787dfb4963d2a59dc8944f45e065be0a06613 Mon Sep 17 00:00:00 2001 From: Warren Togami Date: Thu, 13 Apr 2017 20:11:42 -0700 Subject: [PATCH 39/40] Clarify importprivkey help text with example of blank label without rescan Occasionally I waste a lot of time not remembering that the second parameter to importprivkey must be blank if you intend to stop rescan with "false" as the third parameter. Github-Pull: #10207 Rebased-From: c9e31c36ffacedb85d4d9ce75a92e011a3e7d4b4 --- src/wallet/rpcdump.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp index 20a3cbda1e78b..cfb53af497c89 100644 --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -96,6 +96,8 @@ UniValue importprivkey(const JSONRPCRequest& request) + HelpExampleCli("importprivkey", "\"mykey\"") + "\nImport using a label and without rescan\n" + HelpExampleCli("importprivkey", "\"mykey\" \"testing\" false") + + "\nImport using default blank label and without rescan\n" + + HelpExampleCli("importprivkey", "\"mykey\" \"\" false") + "\nAs a JSON-RPC call\n" + HelpExampleRpc("importprivkey", "\"mykey\", \"testing\", false") ); From f2a96e7d0289682eb87877a3528cb6a170f8b786 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 22 Apr 2017 16:21:47 +0200 Subject: [PATCH 40/40] doc: clean out release notes --- doc/release-notes.md | 100 +-------------- doc/release-notes/release-notes-0.14.1.md | 143 ++++++++++++++++++++++ 2 files changed, 148 insertions(+), 95 deletions(-) create mode 100644 doc/release-notes/release-notes-0.14.1.md diff --git a/doc/release-notes.md b/doc/release-notes.md index ef072afd4d7fb..49cbdb55d0458 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,6 +1,6 @@ -Bitcoin Core version 0.14.1 is now available from: +Bitcoin Core version 0.14.x is now available from: - + This is a new minor version release, including various bugfixes and performance improvements, as well as updated translations. @@ -30,54 +30,11 @@ frequently tested on them. Notable changes =============== -RPC changes ------------ +Example item +------------ -- The first positional argument of `createrawtransaction` was renamed from - `transactions` to `inputs`. -- The argument of `disconnectnode` was renamed from `node` to `address`. - -These interface changes break compatibility with 0.14.0, when the named -arguments functionality, introduced in 0.14.0, is used. Client software -using these calls with named arguments needs to be updated. - -Mining ------- - -In previous versions, getblocktemplate required segwit support from downstream -clients/miners once the feature activated on the network. In this version, it -now supports non-segwit clients even after activation, by removing all segwit -transactions from the returned block template. This allows non-segwit miners to -continue functioning correctly even after segwit has activated. - -Due to the limitations in previous versions, getblocktemplate also recommended -non-segwit clients to not signal for the segwit version-bit. Since this is no -longer an issue, getblocktemplate now always recommends signalling segwit for -all miners. This is safe because ability to enforce the rule is the only -required criteria for safe activation, not actually producing segwit-enabled -blocks. - -UTXO memory accounting ----------------------- - -Memory usage for the UTXO cache is being calculated more accurately, so that -the configured limit (`-dbcache`) will be respected when memory usage peaks -during cache flushes. The memory accounting in prior releases is estimated to -only account for half the actual peak utilization. - -The default `-dbcache` has also been changed in this release to 450MiB. Users -who currently set `-dbcache` to a high value (e.g. to keep the UTXO more fully -cached in memory) should consider increasing this setting in order to achieve -the same cache performance as prior releases. Users on low-memory systems -(such as systems with 1GB or less) should consider specifying a lower value for -this parameter. - -Additional information relating to running on low-memory systems can be found -here: -[reducing-bitcoind-memory-usage.md](https://gist.github.com/laanwj/efe29c7661ce9b6620a7). - -0.14.1 Change log +0.14.x Change log ================= Detailed release notes follow. This overview includes changes that affect @@ -85,59 +42,12 @@ behavior, not code moves, refactors and string updates. For convenience in locat the code changes and accompanying discussion, both the pull request and git merge commit are mentioned. -### RPC and other APIs -- #10084 `142fbb2` Rename first named arg of createrawtransaction (MarcoFalke) -- #10139 `f15268d` Remove auth cookie on shutdown (practicalswift) -- #10146 `2fea10a` Better error handling for submitblock (rawodb, gmaxwell) -- #10144 `d947afc` Prioritisetransaction wasn't always updating ancestor fee (sdaftuar) -- #10204 `3c79602` Rename disconnectnode argument (jnewbery) - -### Block and transaction handling -- #10126 `0b5e162` Compensate for memory peak at flush time (sipa) -- #9912 `fc3d7db` Optimize GetWitnessHash() for non-segwit transactions (sdaftuar) -- #10133 `ab864d3` Clean up calculations of pcoinsTip memory usage (morcos) - -### P2P protocol and network code -- #9953/#10013 `d2548a4` Fix shutdown hang with >= 8 -addnodes set (TheBlueMatt) -- #10176 `30fa231` net: gracefully handle NodeId wrapping (theuni) - -### Build system -- #9973 `e9611d1` depends: fix zlib build on osx (theuni) - -### GUI -- #10060 `ddc2dd1` Ensure an item exists on the rpcconsole stack before adding (achow101) - -### Mining -- #9955/#10006 `569596c` Don't require segwit in getblocktemplate for segwit signalling or mining (sdaftuar) -- #9959/#10127 `b5c3440` Prevent slowdown in CreateNewBlock on large mempools (sdaftuar) - -### Tests and QA -- #10157 `55f641c` Fix the `mempool_packages.py` test (sdaftuar) - -### Miscellaneous -- #10037 `4d8e660` Trivial: Fix typo in help getrawtransaction RPC (keystrike) -- #10120 `e4c9a90` util: Work around (virtual) memory exhaustion on 32-bit w/ glibc (laanwj) -- #10130 `ecc5232` bitcoin-tx input verification (awemany, jnewbery) Credits ======= Thanks to everyone who directly contributed to this release: -- Alex Morcos -- Andrew Chow -- Awemany -- Cory Fields -- Gregory Maxwell -- James Evans -- John Newbery -- MarcoFalke -- Matt Corallo -- Pieter Wuille -- practicalswift -- rawodb -- Suhas Daftuar -- Wladimir J. van der Laan As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). diff --git a/doc/release-notes/release-notes-0.14.1.md b/doc/release-notes/release-notes-0.14.1.md new file mode 100644 index 0000000000000..ef072afd4d7fb --- /dev/null +++ b/doc/release-notes/release-notes-0.14.1.md @@ -0,0 +1,143 @@ +Bitcoin Core version 0.14.1 is now available from: + + + +This is a new minor version release, including various bugfixes and +performance improvements, as well as updated translations. + +Please report bugs using the issue tracker at github: + + + +To receive security and update notifications, please subscribe to: + + + +Compatibility +============== + +Bitcoin Core is extensively tested on multiple operating systems using +the Linux kernel, macOS 10.8+, and Windows Vista and later. + +Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), +No attempt is made to prevent installing or running the software on Windows XP, you +can still do so at your own risk but be aware that there are known instabilities and issues. +Please do not report issues about Windows XP to the issue tracker. + +Bitcoin Core should also work on most other Unix-like systems but is not +frequently tested on them. + +Notable changes +=============== + +RPC changes +----------- + +- The first positional argument of `createrawtransaction` was renamed from + `transactions` to `inputs`. + +- The argument of `disconnectnode` was renamed from `node` to `address`. + +These interface changes break compatibility with 0.14.0, when the named +arguments functionality, introduced in 0.14.0, is used. Client software +using these calls with named arguments needs to be updated. + +Mining +------ + +In previous versions, getblocktemplate required segwit support from downstream +clients/miners once the feature activated on the network. In this version, it +now supports non-segwit clients even after activation, by removing all segwit +transactions from the returned block template. This allows non-segwit miners to +continue functioning correctly even after segwit has activated. + +Due to the limitations in previous versions, getblocktemplate also recommended +non-segwit clients to not signal for the segwit version-bit. Since this is no +longer an issue, getblocktemplate now always recommends signalling segwit for +all miners. This is safe because ability to enforce the rule is the only +required criteria for safe activation, not actually producing segwit-enabled +blocks. + +UTXO memory accounting +---------------------- + +Memory usage for the UTXO cache is being calculated more accurately, so that +the configured limit (`-dbcache`) will be respected when memory usage peaks +during cache flushes. The memory accounting in prior releases is estimated to +only account for half the actual peak utilization. + +The default `-dbcache` has also been changed in this release to 450MiB. Users +who currently set `-dbcache` to a high value (e.g. to keep the UTXO more fully +cached in memory) should consider increasing this setting in order to achieve +the same cache performance as prior releases. Users on low-memory systems +(such as systems with 1GB or less) should consider specifying a lower value for +this parameter. + +Additional information relating to running on low-memory systems can be found +here: +[reducing-bitcoind-memory-usage.md](https://gist.github.com/laanwj/efe29c7661ce9b6620a7). + +0.14.1 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 other APIs +- #10084 `142fbb2` Rename first named arg of createrawtransaction (MarcoFalke) +- #10139 `f15268d` Remove auth cookie on shutdown (practicalswift) +- #10146 `2fea10a` Better error handling for submitblock (rawodb, gmaxwell) +- #10144 `d947afc` Prioritisetransaction wasn't always updating ancestor fee (sdaftuar) +- #10204 `3c79602` Rename disconnectnode argument (jnewbery) + +### Block and transaction handling +- #10126 `0b5e162` Compensate for memory peak at flush time (sipa) +- #9912 `fc3d7db` Optimize GetWitnessHash() for non-segwit transactions (sdaftuar) +- #10133 `ab864d3` Clean up calculations of pcoinsTip memory usage (morcos) + +### P2P protocol and network code +- #9953/#10013 `d2548a4` Fix shutdown hang with >= 8 -addnodes set (TheBlueMatt) +- #10176 `30fa231` net: gracefully handle NodeId wrapping (theuni) + +### Build system +- #9973 `e9611d1` depends: fix zlib build on osx (theuni) + +### GUI +- #10060 `ddc2dd1` Ensure an item exists on the rpcconsole stack before adding (achow101) + +### Mining +- #9955/#10006 `569596c` Don't require segwit in getblocktemplate for segwit signalling or mining (sdaftuar) +- #9959/#10127 `b5c3440` Prevent slowdown in CreateNewBlock on large mempools (sdaftuar) + +### Tests and QA +- #10157 `55f641c` Fix the `mempool_packages.py` test (sdaftuar) + +### Miscellaneous +- #10037 `4d8e660` Trivial: Fix typo in help getrawtransaction RPC (keystrike) +- #10120 `e4c9a90` util: Work around (virtual) memory exhaustion on 32-bit w/ glibc (laanwj) +- #10130 `ecc5232` bitcoin-tx input verification (awemany, jnewbery) + +Credits +======= + +Thanks to everyone who directly contributed to this release: + +- Alex Morcos +- Andrew Chow +- Awemany +- Cory Fields +- Gregory Maxwell +- James Evans +- John Newbery +- MarcoFalke +- Matt Corallo +- Pieter Wuille +- practicalswift +- rawodb +- Suhas Daftuar +- Wladimir J. van der Laan + +As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/). +