mirror of
https://github.com/dashpay/dash.git
synced 2024-12-23 19:12:47 +01:00
Merge #6220: backport: Merge bitcoin#18448,24433, 24139, 23001, (partial) 24339, (partial) core/gui#420
1a12ef14da
(partial)Merge bitcoin-core/gui#420: Ensure translator comments end in full stop (Hennadii Stepanov)d891d3c95c
(partial) Merge bitcoin/bitcoin#24339: rpc: Improve RPC help by explicitly mentioning output types (MarcoFalke)237279950b
Merge bitcoin/bitcoin#23001: doc: Enable TLS in links in documentation (fanquake)e4c8ea5061
Merge bitcoin/bitcoin#24139: Avoid unsigned integer overflow in bitcoin-tx (MarcoFalke)98f7e82d07
Merge bitcoin/bitcoin#24433: doc: Explain that feedback needs to be addressed (fanquake)a3a4f63315
Merge bitcoin/bitcoin#18448: rpc: fix/add missing RPCExamples for "Util" RPCs (MarcoFalke) Pull request description: btc backports ACKs for top commit: PastaPastaPasta: utACK1a12ef14da
Tree-SHA512: 4e3c4414d4db6ea355c336a9a6b30a26b628b607cbac51b7e17366cc1e6e8ba0aeb8af88529d018107482bdfb60bbd12b6d66e8acaaa1d6b21b4b06e0929b899
This commit is contained in:
commit
8e32dd80d4
@ -12,8 +12,8 @@ revolves around a meritocracy where contributors earn trust from the developer
|
|||||||
community over time. Nevertheless, some hierarchy is necessary for practical
|
community over time. Nevertheless, some hierarchy is necessary for practical
|
||||||
purposes. As such, there are repository "maintainers" who are responsible for
|
purposes. As such, there are repository "maintainers" who are responsible for
|
||||||
merging pull requests, as well as a "lead maintainer" who is responsible for the
|
merging pull requests, as well as a "lead maintainer" who is responsible for the
|
||||||
release cycle as well as overall merging, moderation and appointment of
|
[release cycle](/doc/release-process.md) as well as overall merging, moderation
|
||||||
maintainers.
|
and appointment of maintainers.
|
||||||
|
|
||||||
Getting Started
|
Getting Started
|
||||||
---------------
|
---------------
|
||||||
@ -169,9 +169,14 @@ in the body of the pull request to indicate tasks are pending.
|
|||||||
|
|
||||||
At this stage, one should expect comments and review from other contributors. You
|
At this stage, one should expect comments and review from other contributors. You
|
||||||
can add more commits to your pull request by committing them locally and pushing
|
can add more commits to your pull request by committing them locally and pushing
|
||||||
to your fork until you have satisfied all feedback.
|
to your fork.
|
||||||
|
|
||||||
Note: Code review is a burdensome but important part of the development process, and as such, certain types of pull requests are rejected. In general, if the **improvements** do not warrant the **review effort** required, the PR has a high chance of being rejected. It is up to the PR author to convince the reviewers that the changes warrant the review effort, and if reviewers are "Concept NACK'ing" the PR, the author may need to present arguments and/or do research backing their suggested changes.
|
You are expected to reply to any review comments before your pull request is
|
||||||
|
merged. You may update the code or reject the feedback if you do not agree with
|
||||||
|
it, but you should express so in a reply. If there is outstanding feedback and
|
||||||
|
you are not actively working on it, your pull request may be closed.
|
||||||
|
|
||||||
|
Please refer to the [peer review](#peer-review) section below for more details.
|
||||||
|
|
||||||
### Squashing Commits
|
### Squashing Commits
|
||||||
|
|
||||||
@ -302,6 +307,14 @@ maintainers take into account the peer review when determining if there is
|
|||||||
consensus to merge a pull request (remember that discussions may have been
|
consensus to merge a pull request (remember that discussions may have been
|
||||||
spread out over GitHub, mailing list and IRC discussions).
|
spread out over GitHub, mailing list and IRC discussions).
|
||||||
|
|
||||||
|
Code review is a burdensome but important part of the development process, and
|
||||||
|
as such, certain types of pull requests are rejected. In general, if the
|
||||||
|
**improvements** do not warrant the **review effort** required, the PR has a
|
||||||
|
high chance of being rejected. It is up to the PR author to convince the
|
||||||
|
reviewers that the changes warrant the review effort, and if reviewers are
|
||||||
|
"Concept NACK'ing" the PR, the author may need to present arguments and/or do
|
||||||
|
research backing their suggested changes.
|
||||||
|
|
||||||
#### Conceptual Review
|
#### Conceptual Review
|
||||||
|
|
||||||
A review can be a conceptual review, where the reviewer leaves a comment
|
A review can be a conceptual review, where the reviewer leaves a comment
|
||||||
@ -482,11 +495,6 @@ the contents onto the [Tracker](https://docs.google.com/spreadsheets/d/1DnKxat0S
|
|||||||
|
|
||||||
When pasting the contents, make sure to split the values into the cells so every line is not present under commit hash.
|
When pasting the contents, make sure to split the values into the cells so every line is not present under commit hash.
|
||||||
|
|
||||||
Release Policy
|
|
||||||
--------------
|
|
||||||
|
|
||||||
The project leader is the release manager for each Dash Core release.
|
|
||||||
|
|
||||||
Copyright
|
Copyright
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
@ -364,7 +364,7 @@ This is especially notable because Ubuntu Focal packages `libgit2 v0.28.4`, and
|
|||||||
Should you be in this situation, you need to build both `libgit2 v1.1.x` and
|
Should you be in this situation, you need to build both `libgit2 v1.1.x` and
|
||||||
`guile-git` from source.
|
`guile-git` from source.
|
||||||
|
|
||||||
Source: http://logs.guix.gnu.org/guix/2020-11-12.log#232527
|
Source: https://logs.guix.gnu.org/guix/2020-11-12.log#232527
|
||||||
|
|
||||||
##### `{scheme,guile}-bytestructures` v1.0.8 and v1.0.9 are broken for Guile v2.2
|
##### `{scheme,guile}-bytestructures` v1.0.8 and v1.0.9 are broken for Guile v2.2
|
||||||
|
|
||||||
|
@ -430,6 +430,6 @@ used.
|
|||||||
If you start `guix-daemon` using an init script, you can edit said script to
|
If you start `guix-daemon` using an init script, you can edit said script to
|
||||||
supply this flag.
|
supply this flag.
|
||||||
|
|
||||||
[b17e]: http://bootstrappable.org/
|
[b17e]: https://bootstrappable.org/
|
||||||
[r12e/source-date-epoch]: https://reproducible-builds.org/docs/source-date-epoch/
|
[r12e/source-date-epoch]: https://reproducible-builds.org/docs/source-date-epoch/
|
||||||
[env-vars-list]: #recognized-environment-variables
|
[env-vars-list]: #recognized-environment-variables
|
||||||
|
@ -447,7 +447,7 @@ make cov
|
|||||||
|
|
||||||
Profiling is a good way to get a precise idea of where time is being spent in
|
Profiling is a good way to get a precise idea of where time is being spent in
|
||||||
code. One tool for doing profiling on Linux platforms is called
|
code. One tool for doing profiling on Linux platforms is called
|
||||||
[`perf`](http://www.brendangregg.com/perf.html), and has been integrated into
|
[`perf`](https://www.brendangregg.com/perf.html), and has been integrated into
|
||||||
the functional test framework. Perf can observe a running process and sample
|
the functional test framework. Perf can observe a running process and sample
|
||||||
(at some frequency) where its execution is.
|
(at some frequency) where its execution is.
|
||||||
|
|
||||||
|
@ -383,13 +383,16 @@ static void MutateTxAddOutData(CMutableTransaction& tx, const std::string& strIn
|
|||||||
if (pos==0)
|
if (pos==0)
|
||||||
throw std::runtime_error("TX output value not specified");
|
throw std::runtime_error("TX output value not specified");
|
||||||
|
|
||||||
if (pos != std::string::npos) {
|
if (pos == std::string::npos) {
|
||||||
|
pos = 0;
|
||||||
|
} else {
|
||||||
// Extract and validate VALUE
|
// Extract and validate VALUE
|
||||||
value = ExtractAndValidateValue(strInput.substr(0, pos));
|
value = ExtractAndValidateValue(strInput.substr(0, pos));
|
||||||
|
++pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
// extract and validate DATA
|
// extract and validate DATA
|
||||||
std::string strData = strInput.substr(pos + 1, std::string::npos);
|
const std::string strData{strInput.substr(pos, std::string::npos)};
|
||||||
|
|
||||||
if (!IsHex(strData))
|
if (!IsHex(strData))
|
||||||
throw std::runtime_error("invalid TX output data");
|
throw std::runtime_error("invalid TX output data");
|
||||||
|
@ -306,7 +306,7 @@ void AddressBookPage::on_exportButton_clicked()
|
|||||||
QString filename = GUIUtil::getSaveFileName(this,
|
QString filename = GUIUtil::getSaveFileName(this,
|
||||||
tr("Export Address List"), QString(),
|
tr("Export Address List"), QString(),
|
||||||
/*: Expanded name of the CSV file format.
|
/*: Expanded name of the CSV file format.
|
||||||
See https://en.wikipedia.org/wiki/Comma-separated_values */
|
See: https://en.wikipedia.org/wiki/Comma-separated_values. */
|
||||||
tr("Comma separated file") + QLatin1String(" (*.csv)"), nullptr);
|
tr("Comma separated file") + QLatin1String(" (*.csv)"), nullptr);
|
||||||
|
|
||||||
if (filename.isNull())
|
if (filename.isNull())
|
||||||
|
@ -133,7 +133,7 @@ void QRImageWidget::saveImage()
|
|||||||
QString fn = GUIUtil::getSaveFileName(
|
QString fn = GUIUtil::getSaveFileName(
|
||||||
this, tr("Save QR Code"), QString(),
|
this, tr("Save QR Code"), QString(),
|
||||||
/*: Expanded name of the PNG file format.
|
/*: Expanded name of the PNG file format.
|
||||||
See https://en.wikipedia.org/wiki/Portable_Network_Graphics */
|
See: https://en.wikipedia.org/wiki/Portable_Network_Graphics. */
|
||||||
tr("PNG Image") + QLatin1String(" (*.png)"), nullptr);
|
tr("PNG Image") + QLatin1String(" (*.png)"), nullptr);
|
||||||
if (!fn.isEmpty())
|
if (!fn.isEmpty())
|
||||||
{
|
{
|
||||||
|
@ -364,7 +364,7 @@ void TransactionView::exportClicked()
|
|||||||
QString filename = GUIUtil::getSaveFileName(this,
|
QString filename = GUIUtil::getSaveFileName(this,
|
||||||
tr("Export Transaction History"), QString(),
|
tr("Export Transaction History"), QString(),
|
||||||
/*: Expanded name of the CSV file format.
|
/*: Expanded name of the CSV file format.
|
||||||
See https://en.wikipedia.org/wiki/Comma-separated_values */
|
See: https://en.wikipedia.org/wiki/Comma-separated_values. */
|
||||||
tr("Comma separated file") + QLatin1String(" (*.csv)"), nullptr);
|
tr("Comma separated file") + QLatin1String(" (*.csv)"), nullptr);
|
||||||
|
|
||||||
if (filename.isNull())
|
if (filename.isNull())
|
||||||
|
@ -1143,7 +1143,8 @@ static RPCHelpMan estimatesmartfee()
|
|||||||
"have been observed to make an estimate for any number of blocks."},
|
"have been observed to make an estimate for any number of blocks."},
|
||||||
}},
|
}},
|
||||||
RPCExamples{
|
RPCExamples{
|
||||||
HelpExampleCli("estimatesmartfee", "6")
|
HelpExampleCli("estimatesmartfee", "6") +
|
||||||
|
HelpExampleRpc("estimatesmartfee", "6")
|
||||||
},
|
},
|
||||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||||
{
|
{
|
||||||
|
@ -308,7 +308,7 @@ static RPCHelpMan createmultisig()
|
|||||||
"\nCreate a multisig address from 2 public keys\n"
|
"\nCreate a multisig address from 2 public keys\n"
|
||||||
+ HelpExampleCli("createmultisig", "2 \"[\\\"03789ed0bb717d88f7d321a368d905e7430207ebbd82bd342cf11ae157a7ace5fd\\\",\\\"03dbc6764b8884a92e871274b87583e6d5c2a58819473e17e107ef3f6aa5a61626\\\"]\"") +
|
+ HelpExampleCli("createmultisig", "2 \"[\\\"03789ed0bb717d88f7d321a368d905e7430207ebbd82bd342cf11ae157a7ace5fd\\\",\\\"03dbc6764b8884a92e871274b87583e6d5c2a58819473e17e107ef3f6aa5a61626\\\"]\"") +
|
||||||
"\nAs a JSON-RPC call\n"
|
"\nAs a JSON-RPC call\n"
|
||||||
+ HelpExampleRpc("createmultisig", "2, \"[\\\"03789ed0bb717d88f7d321a368d905e7430207ebbd82bd342cf11ae157a7ace5fd\\\",\\\"03dbc6764b8884a92e871274b87583e6d5c2a58819473e17e107ef3f6aa5a61626\\\"]\"")
|
+ HelpExampleRpc("createmultisig", "2, [\"03789ed0bb717d88f7d321a368d905e7430207ebbd82bd342cf11ae157a7ace5fd\",\"03dbc6764b8884a92e871274b87583e6d5c2a58819473e17e107ef3f6aa5a61626\"]")
|
||||||
},
|
},
|
||||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||||
{
|
{
|
||||||
@ -345,6 +345,8 @@ static RPCHelpMan createmultisig()
|
|||||||
|
|
||||||
static RPCHelpMan getdescriptorinfo()
|
static RPCHelpMan getdescriptorinfo()
|
||||||
{
|
{
|
||||||
|
const std::string EXAMPLE_DESCRIPTOR = "wpkh([d34db33f/84h/0h/0h]0279be667ef9dcbbac55a06295Ce870b07029Bfcdb2dce28d959f2815b16f81798)";
|
||||||
|
|
||||||
return RPCHelpMan{"getdescriptorinfo",
|
return RPCHelpMan{"getdescriptorinfo",
|
||||||
{"\nAnalyses a descriptor.\n"},
|
{"\nAnalyses a descriptor.\n"},
|
||||||
{
|
{
|
||||||
@ -362,7 +364,9 @@ static RPCHelpMan getdescriptorinfo()
|
|||||||
},
|
},
|
||||||
RPCExamples{
|
RPCExamples{
|
||||||
"\nAnalyse a descriptor\n"
|
"\nAnalyse a descriptor\n"
|
||||||
+ HelpExampleCli("getdescriptorinfo", "\"pkh([d34db33f/84h/0h/0h]0279be667ef9dcbbac55a06295Ce870b07029Bfcdb2dce28d959f2815b16f81798)\"")
|
+ HelpExampleCli("getdescriptorinfo", "\"" + EXAMPLE_DESCRIPTOR + "\"") +
|
||||||
|
HelpExampleRpc("getdescriptorinfo", "\"" + EXAMPLE_DESCRIPTOR + "\"")
|
||||||
|
|
||||||
},
|
},
|
||||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||||
{
|
{
|
||||||
@ -389,6 +393,8 @@ static RPCHelpMan getdescriptorinfo()
|
|||||||
|
|
||||||
static RPCHelpMan deriveaddresses()
|
static RPCHelpMan deriveaddresses()
|
||||||
{
|
{
|
||||||
|
const std::string EXAMPLE_DESCRIPTOR = "wpkh([d34db33f/84h/0h/0h]xpub6DJ2dNUysrn5Vt36jH2KLBT2i1auw1tTSSomg8PhqNiUtx8QX2SvC9nrHu81fT41fvDUnhMjEzQgXnQjKEu3oaqMSzhSrHMxyyoEAmUHQbY/0/*)#cjjspncu";
|
||||||
|
|
||||||
return RPCHelpMan{"deriveaddresses",
|
return RPCHelpMan{"deriveaddresses",
|
||||||
"\nDerives one or more addresses corresponding to an output descriptor.\n"
|
"\nDerives one or more addresses corresponding to an output descriptor.\n"
|
||||||
"Examples of output descriptors are:\n"
|
"Examples of output descriptors are:\n"
|
||||||
@ -410,7 +416,8 @@ static RPCHelpMan deriveaddresses()
|
|||||||
},
|
},
|
||||||
RPCExamples{
|
RPCExamples{
|
||||||
"\nFirst three receive addresses\n"
|
"\nFirst three receive addresses\n"
|
||||||
+ HelpExampleCli("deriveaddresses", "\"pkh([d34db33f/84h/0h/0h]xpub6DJ2dNUysrn5Vt36jH2KLBT2i1auw1tTSSomg8PhqNiUtx8QX2SvC9nrHu81fT41fvDUnhMjEzQgXnQjKEu3oaqMSzhSrHMxyyoEAmUHQbY/0/*)#cjjspncu\" \"[0,2]\"")
|
+ HelpExampleCli("deriveaddresses", "\"" + EXAMPLE_DESCRIPTOR + "\" \"[0,2]\"") +
|
||||||
|
HelpExampleRpc("deriveaddresses", "\"" + EXAMPLE_DESCRIPTOR + "\", \"[0,2]\"")
|
||||||
},
|
},
|
||||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||||
{
|
{
|
||||||
|
@ -867,16 +867,6 @@ static RPCHelpMan decoderawtransaction()
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string GetAllOutputTypes()
|
|
||||||
{
|
|
||||||
std::vector<std::string> ret;
|
|
||||||
using U = std::underlying_type<TxoutType>::type;
|
|
||||||
for (U i = (U)TxoutType::NONSTANDARD; i <= (U)TxoutType::NULL_DATA; ++i) {
|
|
||||||
ret.emplace_back(GetTxnOutputType(static_cast<TxoutType>(i)));
|
|
||||||
}
|
|
||||||
return Join(ret, ", ");
|
|
||||||
}
|
|
||||||
|
|
||||||
static RPCHelpMan decodescript()
|
static RPCHelpMan decodescript()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"decodescript",
|
return RPCHelpMan{"decodescript",
|
||||||
|
@ -18,6 +18,16 @@
|
|||||||
const std::string UNIX_EPOCH_TIME = "UNIX epoch time";
|
const std::string UNIX_EPOCH_TIME = "UNIX epoch time";
|
||||||
const std::string EXAMPLE_ADDRESS[2] = {"XunLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPw0", "XwQQkwA4FYkq2XERzMY2CiAZhJTEDAbtc0"};
|
const std::string EXAMPLE_ADDRESS[2] = {"XunLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPw0", "XwQQkwA4FYkq2XERzMY2CiAZhJTEDAbtc0"};
|
||||||
|
|
||||||
|
std::string GetAllOutputTypes()
|
||||||
|
{
|
||||||
|
std::vector<std::string> ret;
|
||||||
|
using U = std::underlying_type<TxoutType>::type;
|
||||||
|
for (U i = (U)TxoutType::NONSTANDARD; i <= (U)TxoutType::NULL_DATA; ++i) {
|
||||||
|
ret.emplace_back(GetTxnOutputType(static_cast<TxoutType>(i)));
|
||||||
|
}
|
||||||
|
return Join(ret, ", ");
|
||||||
|
}
|
||||||
|
|
||||||
void RPCTypeCheck(const UniValue& params,
|
void RPCTypeCheck(const UniValue& params,
|
||||||
const std::list<UniValueType>& typesExpected,
|
const std::list<UniValueType>& typesExpected,
|
||||||
bool fAllowNull)
|
bool fAllowNull)
|
||||||
|
@ -41,6 +41,13 @@ class CPubKey;
|
|||||||
class CScript;
|
class CScript;
|
||||||
struct Sections;
|
struct Sections;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all existing output types formatted for RPC help sections.
|
||||||
|
*
|
||||||
|
* @return Comma separated string representing output type names.
|
||||||
|
*/
|
||||||
|
std::string GetAllOutputTypes();
|
||||||
|
|
||||||
/** Wrapper for UniValue::VType, which includes typeAny:
|
/** Wrapper for UniValue::VType, which includes typeAny:
|
||||||
* Used to denote don't care type. */
|
* Used to denote don't care type. */
|
||||||
struct UniValueType {
|
struct UniValueType {
|
||||||
|
@ -8,5 +8,5 @@ License
|
|||||||
|
|
||||||
The data files in this directory are distributed under the MIT software
|
The data files in this directory are distributed under the MIT software
|
||||||
license, see the accompanying file COPYING or
|
license, see the accompanying file COPYING or
|
||||||
http://www.opensource.org/licenses/mit-license.php.
|
https://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
@ -190,5 +190,5 @@ perf report -i /path/to/datadir/send-big-msgs.perf.data.xxxx --stdio | c++filt |
|
|||||||
#### See also:
|
#### See also:
|
||||||
|
|
||||||
- [Installing perf](https://askubuntu.com/q/50145)
|
- [Installing perf](https://askubuntu.com/q/50145)
|
||||||
- [Perf examples](http://www.brendangregg.com/perf.html)
|
- [Perf examples](https://www.brendangregg.com/perf.html)
|
||||||
- [Hotspot](https://github.com/KDAB/hotspot): a GUI for perf output analysis
|
- [Hotspot](https://github.com/KDAB/hotspot): a GUI for perf output analysis
|
||||||
|
@ -21,7 +21,6 @@ unsigned-integer-overflow:addrman.cpp
|
|||||||
unsigned-integer-overflow:arith_uint256.h
|
unsigned-integer-overflow:arith_uint256.h
|
||||||
unsigned-integer-overflow:basic_string.h
|
unsigned-integer-overflow:basic_string.h
|
||||||
unsigned-integer-overflow:bench/bench.h
|
unsigned-integer-overflow:bench/bench.h
|
||||||
unsigned-integer-overflow:bitcoin-tx.cpp
|
|
||||||
unsigned-integer-overflow:bloom.cpp
|
unsigned-integer-overflow:bloom.cpp
|
||||||
unsigned-integer-overflow:chain.cpp
|
unsigned-integer-overflow:chain.cpp
|
||||||
unsigned-integer-overflow:chain.h
|
unsigned-integer-overflow:chain.h
|
||||||
|
Loading…
Reference in New Issue
Block a user