mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-13 12:33:42 +02:00
Merge 6ab96ec546 into merged_master (Bitcoin PR #18574)
This commit is contained in:
commit
f3fc8e9b77
5 changed files with 94 additions and 13 deletions
|
|
@ -18,7 +18,7 @@
|
|||
#define CLIENT_VERSION_MAJOR 0
|
||||
|
||||
/* Minor version */
|
||||
#define CLIENT_VERSION_MINOR 19
|
||||
#define CLIENT_VERSION_MINOR 20
|
||||
|
||||
/* Build revision */
|
||||
#define CLIENT_VERSION_REVISION 99
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
AC_PREREQ([2.69])
|
||||
define(_CLIENT_VERSION_MAJOR, 0)
|
||||
define(_CLIENT_VERSION_MINOR, 19)
|
||||
define(_CLIENT_VERSION_MINOR, 20)
|
||||
define(_CLIENT_VERSION_REVISION, 99)
|
||||
define(_CLIENT_VERSION_BUILD, 0)
|
||||
define(_CLIENT_VERSION_RC, 0)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,73 @@
|
|||
Please edit the release notes here:
|
||||
*After branching off for a major version release of Bitcoin Core, use this
|
||||
template to create the initial release notes draft.*
|
||||
|
||||
https://github.com/bitcoin-core/bitcoin-devwiki/wiki/0.20.0-Release-Notes-Draft
|
||||
*The release notes draft is a temporary file that can be added to by anyone. See
|
||||
[/doc/developer-notes.md#release-notes](/doc/developer-notes.md#release-notes)
|
||||
for the process.*
|
||||
|
||||
*Create the draft, named* "*version* Release Notes Draft"
|
||||
*(e.g. "0.20.0 Release Notes Draft"), as a collaborative wiki in:*
|
||||
|
||||
https://github.com/bitcoin-core/bitcoin-devwiki/wiki/
|
||||
|
||||
*Before the final release, move the notes back to this git repository.*
|
||||
|
||||
*version* Release Notes Draft
|
||||
===============================
|
||||
|
||||
Bitcoin Core version *version* is now available from:
|
||||
|
||||
<https://bitcoincore.org/bin/bitcoin-core-*version*/>
|
||||
|
||||
This release includes new features, various bug fixes and performance
|
||||
improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at GitHub:
|
||||
|
||||
<https://github.com/bitcoin/bitcoin/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://bitcoincore.org/en/list/announcements/join/>
|
||||
|
||||
How to Upgrade
|
||||
==============
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on Mac)
|
||||
or `bitcoind`/`bitcoin-qt` (on Linux).
|
||||
|
||||
Upgrading directly from a version of Bitcoin Core that has reached its EOL is
|
||||
possible, but it might take some time if the datadir needs to be migrated. Old
|
||||
wallet versions of Bitcoin Core are generally supported.
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Bitcoin Core is supported and extensively tested on operating systems using
|
||||
the Linux kernel, macOS 10.10+, and Windows 7 and newer. It is not recommended
|
||||
to use Bitcoin Core on unsupported systems.
|
||||
|
||||
Bitcoin Core should also work on most other Unix-like systems but is not
|
||||
as frequently tested on them.
|
||||
|
||||
From Bitcoin Core 0.17.0 onwards, macOS versions earlier than 10.10 are no
|
||||
longer supported, as Bitcoin Core is now built using Qt 5.9.x which requires
|
||||
macOS 10.10+. Additionally, Bitcoin Core does not yet change appearance when
|
||||
macOS "dark mode" is activated.
|
||||
|
||||
In addition to previously supported CPU platforms, this release's pre-compiled
|
||||
distribution provides binaries for the RISC-V platform.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
|
||||
As well as to everyone that helped with translations on
|
||||
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).
|
||||
|
|
|
|||
|
|
@ -228,6 +228,7 @@ public:
|
|||
const int ID_NETWORKINFO = 0;
|
||||
const int ID_BLOCKCHAININFO = 1;
|
||||
const int ID_WALLETINFO = 2;
|
||||
const int ID_BALANCES = 3;
|
||||
|
||||
/** Create a simulated `getinfo` request. */
|
||||
UniValue PrepareRequest(const std::string& method, const std::vector<std::string>& args) override
|
||||
|
|
@ -239,6 +240,7 @@ public:
|
|||
result.push_back(JSONRPCRequestObj("getnetworkinfo", NullUniValue, ID_NETWORKINFO));
|
||||
result.push_back(JSONRPCRequestObj("getblockchaininfo", NullUniValue, ID_BLOCKCHAININFO));
|
||||
result.push_back(JSONRPCRequestObj("getwalletinfo", NullUniValue, ID_WALLETINFO));
|
||||
result.push_back(JSONRPCRequestObj("getbalances", NullUniValue, ID_BALANCES));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -246,9 +248,9 @@ public:
|
|||
UniValue ProcessReply(const UniValue &batch_in) override
|
||||
{
|
||||
UniValue result(UniValue::VOBJ);
|
||||
std::vector<UniValue> batch = JSONRPCProcessBatchReply(batch_in, 3);
|
||||
// Errors in getnetworkinfo() and getblockchaininfo() are fatal, pass them on
|
||||
// getwalletinfo() is allowed to fail in case there is no wallet.
|
||||
std::vector<UniValue> batch = JSONRPCProcessBatchReply(batch_in, batch_in.size());
|
||||
// Errors in getnetworkinfo() and getblockchaininfo() are fatal, pass them on;
|
||||
// getwalletinfo() and getbalances() are allowed to fail if there is no wallet.
|
||||
if (!batch[ID_NETWORKINFO]["error"].isNull()) {
|
||||
return batch[ID_NETWORKINFO];
|
||||
}
|
||||
|
|
@ -265,13 +267,15 @@ public:
|
|||
result.pushKV("difficulty", batch[ID_BLOCKCHAININFO]["result"]["difficulty"]);
|
||||
result.pushKV("chain", UniValue(batch[ID_BLOCKCHAININFO]["result"]["chain"]));
|
||||
if (!batch[ID_WALLETINFO]["result"].isNull()) {
|
||||
result.pushKV("balance", batch[ID_WALLETINFO]["result"]["balance"]);
|
||||
result.pushKV("keypoolsize", batch[ID_WALLETINFO]["result"]["keypoolsize"]);
|
||||
if (!batch[ID_WALLETINFO]["result"]["unlocked_until"].isNull()) {
|
||||
result.pushKV("unlocked_until", batch[ID_WALLETINFO]["result"]["unlocked_until"]);
|
||||
}
|
||||
result.pushKV("paytxfee", batch[ID_WALLETINFO]["result"]["paytxfee"]);
|
||||
}
|
||||
if (!batch[ID_BALANCES]["result"].isNull()) {
|
||||
result.pushKV("balance", batch[ID_BALANCES]["result"]["mine"]["trusted"]);
|
||||
}
|
||||
result.pushKV("relayfee", batch[ID_NETWORKINFO]["result"]["relayfee"]);
|
||||
result.pushKV("warnings", batch[ID_NETWORKINFO]["result"]["warnings"]);
|
||||
return JSONRPCReplyObj(result, NullUniValue, 1);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,12 @@
|
|||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import assert_equal, assert_raises_process_error, get_auth_cookie
|
||||
|
||||
# The block reward of coinbaseoutput.nValue (50) BTC/block matures after
|
||||
# COINBASE_MATURITY (100) blocks. Therefore, after mining 101 blocks we expect
|
||||
# node 0 to have a balance of (BLOCKS - COINBASE_MATURITY) * 50 BTC/block.
|
||||
BLOCKS = 101
|
||||
BALANCE = (BLOCKS - 100) * 50
|
||||
|
||||
class TestBitcoinCli(BitcoinTestFramework):
|
||||
|
||||
def set_test_params(self):
|
||||
|
|
@ -17,6 +23,7 @@ class TestBitcoinCli(BitcoinTestFramework):
|
|||
|
||||
def run_test(self):
|
||||
"""Main test logic"""
|
||||
self.nodes[0].generate(BLOCKS)
|
||||
|
||||
cli_response = self.nodes[0].cli("-version").send_cli()
|
||||
assert "{} RPC client version".format(self.config['environment']['PACKAGE_NAME']) in cli_response
|
||||
|
|
@ -35,7 +42,7 @@ class TestBitcoinCli(BitcoinTestFramework):
|
|||
user, password = get_auth_cookie(self.nodes[0].datadir, self.chain)
|
||||
|
||||
self.log.info("Test -stdinrpcpass option")
|
||||
assert_equal(0, self.nodes[0].cli('-rpcuser=%s' % user, '-stdinrpcpass', input=password).getblockcount())
|
||||
assert_equal(BLOCKS, self.nodes[0].cli('-rpcuser=%s' % user, '-stdinrpcpass', input=password).getblockcount())
|
||||
assert_raises_process_error(1, "Incorrect rpcuser or rpcpassword", self.nodes[0].cli('-rpcuser=%s' % user, '-stdinrpcpass', input="foo").echo)
|
||||
|
||||
self.log.info("Test -stdin and -stdinrpcpass")
|
||||
|
|
@ -51,10 +58,8 @@ class TestBitcoinCli(BitcoinTestFramework):
|
|||
self.log.info("Make sure that -getinfo with arguments fails")
|
||||
assert_raises_process_error(1, "-getinfo takes no arguments", self.nodes[0].cli('-getinfo').help)
|
||||
|
||||
self.log.info("Compare responses from `elements-cli -getinfo` and the RPCs data is retrieved from.")
|
||||
self.log.info("Test that -getinfo returns the expected network and blockchain info")
|
||||
cli_get_info = self.nodes[0].cli('-getinfo').send_cli()
|
||||
if self.is_wallet_compiled():
|
||||
wallet_info = self.nodes[0].getwalletinfo()
|
||||
network_info = self.nodes[0].getnetworkinfo()
|
||||
blockchain_info = self.nodes[0].getblockchaininfo()
|
||||
|
||||
|
|
@ -65,11 +70,15 @@ class TestBitcoinCli(BitcoinTestFramework):
|
|||
assert_equal(cli_get_info['proxy'], network_info['networks'][0]['proxy'])
|
||||
assert_equal(cli_get_info['chain'], blockchain_info['chain'])
|
||||
if self.is_wallet_compiled():
|
||||
assert_equal(cli_get_info['balance'], wallet_info['balance'])
|
||||
self.log.info("Test that -getinfo returns the expected wallet info")
|
||||
assert_equal(cli_get_info['balance']['bitcoin'], BALANCE)
|
||||
wallet_info = self.nodes[0].getwalletinfo()
|
||||
assert_equal(cli_get_info['keypoolsize'], wallet_info['keypoolsize'])
|
||||
assert_equal(cli_get_info['paytxfee'], wallet_info['paytxfee'])
|
||||
assert_equal(cli_get_info['relayfee'], network_info['relayfee'])
|
||||
# unlocked_until is not tested because the wallet is not encrypted
|
||||
else:
|
||||
self.log.info("*** Wallet not compiled; -getinfo wallet tests skipped")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue