aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2020-10-03Merge #19956: rpc: Improve invalid vout value rpc error messagefanquake
f471a3be00c2b6433b8c258b716982c0539da13f scripted diff: Improve invalid vout value rpc error message (Nima Yazdanmehr) Pull request description: Since the `vout` value can start at `0`, the error message for *negative* values can be improved to something like: `vout cannot be negative`. ACKs for top commit: fanquake: ACK f471a3be00c2b6433b8c258b716982c0539da13f promag: Code review ACK f471a3be00c2b6433b8c258b716982c0539da13f. Tree-SHA512: fbdee3d0ddd5b58eb93934a1217b44e125a9ad39e672b1f35c7609c6c5fcf45ae1b731d3d6135b7225d98792dbfc34a50907b8c41274a5b029d7b5c59f886560
2020-10-02Merge #19951: net, test: CNetAddr scoped ipv6 test coverage, rename scopeId ↵Wladimir J. van der Laan
to m_scope_id f36887fa47b42af60f8a06a3995baca7c73ca310 net: rename CNetAddr scopeId to m_scope_id, improve code doc (Jon Atack) 5cb5fd3005435f3a7ca0c3401951d1db8db4fb88 test: add test coverage for CNetAddr ipv6 scoped addresses (Jon Atack) Pull request description: Add some test coverage for the IPv6 scoped address feature in `netaddress`/`netbase` per https://tools.ietf.org/html/rfc4007, update the member name `scopeId` to `m_scope_id` per `doc/developer-notes.md`, and improve the code doc. ---- Reviewers can manually verify the test with these steps: - [pull down the changes locally and check out this branch](https://jonatack.github.io/articles/how-to-review-pull-requests-in-bitcoin-core#pull-down-the-code-locally) - [build Bitcoin Core](https://jonatack.github.io/articles/how-to-compile-bitcoin-core-and-run-the-tests) - run the test: `cd src ; test/test_bitcoin -t net_tests/cnetaddr_basic -l all` <details><summary><em>you should see passing test output like this</em></summary><p> ``` Running 1 test case... Entering test module "Bitcoin Core Test Suite" test/net_tests.cpp(85): Entering test suite "net_tests" test/net_tests.cpp(204): Entering test case "cnetaddr_basic" test/net_tests.cpp(210): info: check LookupHost("0.0.0.0", addr, false) has passed test/net_tests.cpp(211): info: check !addr.IsValid() has passed test/net_tests.cpp(212): info: check addr.IsIPv4() has passed test/net_tests.cpp(214): info: check addr.IsBindAny() has passed test/net_tests.cpp(215): info: check addr.ToString() == "0.0.0.0" has passed test/net_tests.cpp(218): info: check LookupHost("255.255.255.255", addr, false) has passed test/net_tests.cpp(219): info: check !addr.IsValid() has passed test/net_tests.cpp(220): info: check addr.IsIPv4() has passed test/net_tests.cpp(222): info: check !addr.IsBindAny() has passed test/net_tests.cpp(223): info: check addr.ToString() == "255.255.255.255" has passed test/net_tests.cpp(226): info: check LookupHost("12.34.56.78", addr, false) has passed test/net_tests.cpp(227): info: check addr.IsValid() has passed test/net_tests.cpp(228): info: check addr.IsIPv4() has passed test/net_tests.cpp(230): info: check !addr.IsBindAny() has passed test/net_tests.cpp(231): info: check addr.ToString() == "12.34.56.78" has passed test/net_tests.cpp(234): info: check LookupHost("::", addr, false) has passed test/net_tests.cpp(235): info: check !addr.IsValid() has passed test/net_tests.cpp(236): info: check addr.IsIPv6() has passed test/net_tests.cpp(238): info: check addr.IsBindAny() has passed test/net_tests.cpp(239): info: check addr.ToString() == "::" has passed test/net_tests.cpp(242): info: check LookupHost(ipv6_addr, addr, false) has passed test/net_tests.cpp(243): info: check addr.IsValid() has passed test/net_tests.cpp(244): info: check addr.IsIPv6() has passed test/net_tests.cpp(246): info: check !addr.IsBindAny() has passed test/net_tests.cpp(247): info: check addr.ToString() == ipv6_addr has passed test/net_tests.cpp(254): info: check LookupHost(scoped_addr, addr, false) has passed test/net_tests.cpp(255): info: check addr.IsValid() has passed test/net_tests.cpp(256): info: check addr.IsIPv6() has passed test/net_tests.cpp(257): info: check !addr.IsBindAny() has passed test/net_tests.cpp(258): info: check addr.ToString() == scoped_addr has passed test/net_tests.cpp(254): info: check LookupHost(scoped_addr, addr, false) has passed test/net_tests.cpp(255): info: check addr.IsValid() has passed test/net_tests.cpp(256): info: check addr.IsIPv6() has passed test/net_tests.cpp(257): info: check !addr.IsBindAny() has passed test/net_tests.cpp(258): info: check addr.ToString() == scoped_addr has passed test/net_tests.cpp(254): info: check LookupHost(scoped_addr, addr, false) has passed test/net_tests.cpp(255): info: check addr.IsValid() has passed test/net_tests.cpp(256): info: check addr.IsIPv6() has passed test/net_tests.cpp(257): info: check !addr.IsBindAny() has passed test/net_tests.cpp(258): info: check addr.ToString() == scoped_addr has passed test/net_tests.cpp(254): info: check LookupHost(scoped_addr, addr, false) has passed test/net_tests.cpp(255): info: check addr.IsValid() has passed test/net_tests.cpp(256): info: check addr.IsIPv6() has passed test/net_tests.cpp(257): info: check !addr.IsBindAny() has passed test/net_tests.cpp(258): info: check addr.ToString() == scoped_addr has passed test/net_tests.cpp(263): info: check !LookupHost(ipv6_addr + "%" + zone_id, addr, false) has passed test/net_tests.cpp(263): info: check !LookupHost(ipv6_addr + "%" + zone_id, addr, false) has passed test/net_tests.cpp(263): info: check !LookupHost(ipv6_addr + "%" + zone_id, addr, false) has passed test/net_tests.cpp(266): info: check LookupHost(ipv6_addr + "%0", addr, false) has passed test/net_tests.cpp(267): info: check addr.IsValid() has passed test/net_tests.cpp(268): info: check addr.IsIPv6() has passed test/net_tests.cpp(269): info: check !addr.IsBindAny() has passed test/net_tests.cpp(270): info: check addr.ToString() == ipv6_addr has passed test/net_tests.cpp(274): info: check addr.IsValid() has passed test/net_tests.cpp(275): info: check addr.IsTor() has passed test/net_tests.cpp(277): info: check !addr.IsBindAny() has passed test/net_tests.cpp(278): info: check addr.ToString() == "6hzph5hv6337r6p2.onion" has passed test/net_tests.cpp(282): info: check !addr.IsValid() has passed test/net_tests.cpp(283): info: check addr.IsInternal() has passed test/net_tests.cpp(285): info: check !addr.IsBindAny() has passed test/net_tests.cpp(286): info: check addr.ToString() == "esffpvrt3wpeaygy.internal" has passed test/net_tests.cpp(204): Leaving test case "cnetaddr_basic"; testing time: 30933us test/net_tests.cpp(85): Leaving test suite "net_tests"; testing time: 30975us Leaving test module "Bitcoin Core Test Suite"; testing time: 31169us *** No errors detected ``` </p>/</details> - change this line in the code to break the feature: ```diff --- a/src/netaddress.cpp +++ b/src/netaddress.cpp @@ -716,7 +716,7 @@ bool CService::GetSockAddr(struct sockaddr* paddr, socklen_t *addrlen) const memset(paddrin6, 0, *addrlen); if (!GetIn6Addr(&paddrin6->sin6_addr)) return false; - paddrin6->sin6_scope_id = m_scope_id; + // paddrin6->sin6_scope_id = m_scope_id; ``` - rebuild, e.g. `make` - run the test: `test/test_bitcoin -t net_tests/cnetaddr_basic -l all`, verify that the added tests break <details><summary><em>you should see test output with a few failed tests like this</em></summary><p> ``` Running 1 test case... Entering test module "Bitcoin Core Test Suite" test/net_tests.cpp(85): Entering test suite "net_tests" test/net_tests.cpp(204): Entering test case "cnetaddr_basic" test/net_tests.cpp(210): info: check LookupHost("0.0.0.0", addr, false) has passed test/net_tests.cpp(211): info: check !addr.IsValid() has passed test/net_tests.cpp(212): info: check addr.IsIPv4() has passed test/net_tests.cpp(214): info: check addr.IsBindAny() has passed test/net_tests.cpp(215): info: check addr.ToString() == "0.0.0.0" has passed test/net_tests.cpp(218): info: check LookupHost("255.255.255.255", addr, false) has passed test/net_tests.cpp(219): info: check !addr.IsValid() has passed test/net_tests.cpp(220): info: check addr.IsIPv4() has passed test/net_tests.cpp(222): info: check !addr.IsBindAny() has passed test/net_tests.cpp(223): info: check addr.ToString() == "255.255.255.255" has passed test/net_tests.cpp(226): info: check LookupHost("12.34.56.78", addr, false) has passed test/net_tests.cpp(227): info: check addr.IsValid() has passed test/net_tests.cpp(228): info: check addr.IsIPv4() has passed test/net_tests.cpp(230): info: check !addr.IsBindAny() has passed test/net_tests.cpp(231): info: check addr.ToString() == "12.34.56.78" has passed test/net_tests.cpp(234): info: check LookupHost("::", addr, false) has passed test/net_tests.cpp(235): info: check !addr.IsValid() has passed test/net_tests.cpp(236): info: check addr.IsIPv6() has passed test/net_tests.cpp(238): info: check addr.IsBindAny() has passed test/net_tests.cpp(239): info: check addr.ToString() == "::" has passed test/net_tests.cpp(242): info: check LookupHost(ipv6_addr, addr, false) has passed test/net_tests.cpp(243): info: check addr.IsValid() has passed test/net_tests.cpp(244): info: check addr.IsIPv6() has passed test/net_tests.cpp(246): info: check !addr.IsBindAny() has passed test/net_tests.cpp(247): info: check addr.ToString() == ipv6_addr has passed test/net_tests.cpp(254): info: check LookupHost(scoped_addr, addr, false) has passed test/net_tests.cpp(255): info: check addr.IsValid() has passed test/net_tests.cpp(256): info: check addr.IsIPv6() has passed test/net_tests.cpp(257): info: check !addr.IsBindAny() has passed test/net_tests.cpp(258): error: in "net_tests/cnetaddr_basic": check addr.ToString() == scoped_addr has failed [1122:3344:5566:7788:9900:aabb:ccdd:eeff != 1122:3344:5566:7788:9900:aabb:ccdd:eeff%1] test/net_tests.cpp(254): info: check LookupHost(scoped_addr, addr, false) has passed test/net_tests.cpp(255): info: check addr.IsValid() has passed test/net_tests.cpp(256): info: check addr.IsIPv6() has passed test/net_tests.cpp(257): info: check !addr.IsBindAny() has passed test/net_tests.cpp(258): error: in "net_tests/cnetaddr_basic": check addr.ToString() == scoped_addr has failed [1122:3344:5566:7788:9900:aabb:ccdd:eeff != 1122:3344:5566:7788:9900:aabb:ccdd:eeff%21] test/net_tests.cpp(254): info: check LookupHost(scoped_addr, addr, false) has passed test/net_tests.cpp(255): info: check addr.IsValid() has passed test/net_tests.cpp(256): info: check addr.IsIPv6() has passed test/net_tests.cpp(257): info: check !addr.IsBindAny() has passed test/net_tests.cpp(258): error: in "net_tests/cnetaddr_basic": check addr.ToString() == scoped_addr has failed [1122:3344:5566:7788:9900:aabb:ccdd:eeff != 1122:3344:5566:7788:9900:aabb:ccdd:eeff%19] test/net_tests.cpp(254): info: check LookupHost(scoped_addr, addr, false) has passed test/net_tests.cpp(255): info: check addr.IsValid() has passed test/net_tests.cpp(256): info: check addr.IsIPv6() has passed test/net_tests.cpp(257): info: check !addr.IsBindAny() has passed test/net_tests.cpp(258): error: in "net_tests/cnetaddr_basic": check addr.ToString() == scoped_addr has failed [1122:3344:5566:7788:9900:aabb:ccdd:eeff != 1122:3344:5566:7788:9900:aabb:ccdd:eeff%3] test/net_tests.cpp(263): info: check !LookupHost(ipv6_addr + "%" + zone_id, addr, false) has passed test/net_tests.cpp(263): info: check !LookupHost(ipv6_addr + "%" + zone_id, addr, false) has passed test/net_tests.cpp(263): info: check !LookupHost(ipv6_addr + "%" + zone_id, addr, false) has passed test/net_tests.cpp(266): info: check LookupHost(ipv6_addr + "%0", addr, false) has passed test/net_tests.cpp(267): info: check addr.IsValid() has passed test/net_tests.cpp(268): info: check addr.IsIPv6() has passed test/net_tests.cpp(269): info: check !addr.IsBindAny() has passed test/net_tests.cpp(270): info: check addr.ToString() == ipv6_addr has passed test/net_tests.cpp(274): info: check addr.IsValid() has passed test/net_tests.cpp(275): info: check addr.IsTor() has passed test/net_tests.cpp(277): info: check !addr.IsBindAny() has passed test/net_tests.cpp(278): info: check addr.ToString() == "6hzph5hv6337r6p2.onion" has passed test/net_tests.cpp(282): info: check !addr.IsValid() has passed test/net_tests.cpp(283): info: check addr.IsInternal() has passed test/net_tests.cpp(285): info: check !addr.IsBindAny() has passed test/net_tests.cpp(286): info: check addr.ToString() == "esffpvrt3wpeaygy.internal" has passed test/net_tests.cpp(204): Leaving test case "cnetaddr_basic"; testing time: 32316us test/net_tests.cpp(85): Leaving test suite "net_tests"; testing time: 32354us Leaving test module "Bitcoin Core Test Suite"; testing time: 32522us *** 4 failures are detected in the test module "Bitcoin Core Test Suite" ``` </p></details> - leave your review here ACKs for top commit: laanwj: ACK f36887fa47b42af60f8a06a3995baca7c73ca310 Tree-SHA512: 8e77e512db130642be7d3a910735ca803a2afdb5a704f713f163f8b5a80be3077a2be6f0a3ca43d299731dcd2545ac35571f8c74e5250a72a48233c26f9a3ab5
2020-10-02Merge #19871: doc: Clarify scope of eviction protection of outbound ↵Wladimir J. van der Laan
block-relay peers d76925478efd35e6fd835370639f2139b28381e4 [doc] Clarify semantic of peer's m_protect w.r.t to outbound eviction logics (Antoine Riard) ac71fe936da290adf5a3155fe8db5f78b485f1f1 [doc] Clarify scope of eviction protection of outbound block-relay peers (Antoine Riard) Pull request description: Block-relay-only peers were introduced by #15759. According to its author, it was intented to make them only immune to outbound peer rotation-based eviction and not from all eviction as modified comment leans to think of. Clearly indicate that outbound block-relay peers aren't protected from eviction by the bad/lagging chain logic. Fix #19863 ACKs for top commit: naumenkogs: ACK d76925478efd35e6fd835370639f2139b28381e4 jonatack: ACK d76925478efd35e6fd835370639f2139b28381e4 Tree-SHA512: 597fbd62838a6e39276024165b11514cad20a2e9d33cf9202d261cbadcb62b2df427c858e0cb57e585840d4c1d4600104aa53916bb868541f2580e4eed9b4b52
2020-10-02net: rename CNetAddr scopeId to m_scope_id, improve code docJon Atack
2020-10-02test: add test coverage for CNetAddr ipv6 scoped addressesJon Atack
2020-10-02Merge #19991: net: Use alternative port for incoming Tor connectionsWladimir J. van der Laan
96571b3d4cb4cda0fd3d5a457ae4a12f615de82b doc: Update onion service target port numbers in tor.md (Hennadii Stepanov) bb145c9050203b3f3d8bff10fb3bba31da51adb1 net: Extend -bind config option with optional network type (Hennadii Stepanov) 92bd3c1da48d17c8ba20349e18ad19051614bc1a net, refactor: Move AddLocal call one level up (Hennadii Stepanov) 57f17e57c8c410e10c16a46f7372c0ea8b7dd467 net: Pass onion service target to Tor controller (Hennadii Stepanov) e3f07851f02857b4844fccb2e91070c5cd3aad4d refactor: Rename TorController::target to m_tor_control_center (Hennadii Stepanov) fdd3ae4d264f26f87009879838dec035db5a7aed net, refactor: Refactor CBaseChainParams::RPCPort function (Hennadii Stepanov) a5266d4546c444cfd6d36cb63d2df52ce9e689e2 net: Add alternative port for onion service (Hennadii Stepanov) b3273cf4039d26e66ae58a8acb9d865461618d54 net: Use network byte order for in_addr.s_addr (Hennadii Stepanov) Pull request description: This PR adds ability to label incoming Tor connections as different from normal localhost connections. Closes #8973. Closes #16693. Default onion service target ports are: - 8334 on mainnnet - 18334 on testnet - 38334 on signet - 18445 on regtest To set the onion service target socket manually the extended `-bind` config option could be used: ``` $ src/bitcoind -help | grep -A 6 -e '-bind' -bind=<addr>[:<port>][=onion] Bind to given address and always listen on it (default: 0.0.0.0). Use [host]:port notation for IPv6. Append =onion to tag any incoming connections to that address and port as incoming Tor connections (default: 127.0.0.1:8334=onion, testnet: 127.0.0.1:18334=onion, signet: 127.0.0.1:38334=onion, regtest: 127.0.0.1:18445=onion) ``` Since [pr19991.02 update](https://github.com/bitcoin/bitcoin/pull/19991#issuecomment-698882284) this PR is an alternative to #19043. ACKs for top commit: Sjors: re-utACK 96571b3d4cb4cda0fd3d5a457ae4a12f615de82b vasild: ACK 96571b3d4 laanwj: Re-ACK 96571b3d4cb4cda0fd3d5a457ae4a12f615de82b Tree-SHA512: cb0eade80f4b3395f405f775e1b89c086a1f09d5a4464df6cb4faf808d9c2245474e1720b2b538f203f6c1996507f69b09f5a6e35ea42633c10e22bd733d4438
2020-10-02Merge #20055: rpc: Set HTTP Content-Type in bitcoin-clifanquake
7eab781a145a35d0373c4ab4d237a82b4919e88d rpc: Set HTTP Content-Type in bitcoin-cli (Wladimir J. van der Laan) Pull request description: We don't set any `Content-Type` in the client. It is more consistent with our other JSON-RPC use to set it to `application/json`. Note that our server doesn't enforce content types, so it doesn't make a difference in practice. But it is fairly strange HTTP behavior to not set it at all for a POST request. This came up in #18950. ACKs for top commit: promag: ACK 7eab781a145a35d0373c4ab4d237a82b4919e88d. jonatack: Tested ACK 7eab781a145a35d0373c4ab4d237a82b4919e88d practicalswift: ACK 7eab781a145a35d0373c4ab4d237a82b4919e88d: patch looks correct fanquake: ACK 7eab781a145a35d0373c4ab4d237a82b4919e88d - Looks fine to me. Tree-SHA512: a9fa155324d0f7bff955585a336ead6bb60b721039f424521a435e4bb0fad3f4532e5cc7b7a9acc4e93585e8d3db3082c010138810f22c0e92b8f749b86ef653
2020-10-02refactor: fix -Wbraced-scalar-init warning in validation testsfanquake
Introduced in #20004 (fa29b5ae666bbb4c19188f0dcf8a1ba738aac624). ```bash test/validation_tests.cpp:68:88: warning: braces around scalar initializer [-Wbraced-scalar-init] BOOST_CHECK(signet_params->GetConsensus().signet_challenge == std::vector<uint8_t>{{OP_TRUE}}); ^~~~~~~~~ /usr/local/include/boost/test/tools/old/interface.hpp:83:6: note: expanded from macro 'BOOST_CHECK' (P), BOOST_TEST_STRINGIZE( P ), CHECK, CHECK_PRED, _ ) ^ /usr/local/include/boost/test/tools/old/interface.hpp:68:61: note: expanded from macro 'BOOST_TEST_TOOL_IMPL' BOOST_JOIN( BOOST_TEST_TOOL_PASS_PRED, frwd_type )( P, ARGS ), \ ^ /usr/local/include/boost/test/tools/old/interface.hpp:51:47: note: expanded from macro 'BOOST_TEST_TOOL_PASS_PRED2' ^ 1 warning generated. ```
2020-10-01qt: Periodic translations updateWladimir J. van der Laan
2020-10-01net: Extend -bind config option with optional network typeHennadii Stepanov
2020-10-01net, refactor: Move AddLocal call one level upHennadii Stepanov
This change simplifies the following commit.
2020-10-01net: Pass onion service target to Tor controllerHennadii Stepanov
2020-10-01Merge #18309: zmq: Add support to listen on multiple interfacesWladimir J. van der Laan
e66870c5a4c2adbd30dca67d409fd5cd98697587 zmq: Append address to notify log output (nthumann) 241803da211265444e65f254f24dd184f2457fa9 test: Add zmq test to support multiple interfaces (nthumann) a0b2e5cb6aa8db0563fac7d67a949b9baefe3a25 doc: Add release notes to support multiple interfaces (nthumann) b1c3f180ecb63f3960506d202feebaa4271058ae doc: Adjust ZMQ usage to support multiple interfaces (nthumann) 347c94f551c3f144c44e00373e4dd61ff6d908b7 zmq: Add support to listen on multiple interfaces (Nicolas Thumann) Pull request description: This PR adds support for ZeroMQ to listen on multiple interfaces, just like the RPC server. Currently, if you specify more than one e.g. `zmqpubhashblock` paramter, only the first one will be used. Therefore a user may be forced to listen on all interfaces (e.g. `zmqpubhashblock=0.0.0.0:28332`), which can result in an increased attack surface. With this PR a user can specify multiple interfaces to listen on, e.g. `-zmqpubhashblock=tcp://127.0.0.1:28332 -zmqpubhashblock=tcp://192.168.1.123:28332`. ACKs for top commit: laanwj: Code review ACK e66870c5a4c2adbd30dca67d409fd5cd98697587 instagibbs: reACK https://github.com/bitcoin/bitcoin/pull/18309/commits/e66870c5a4c2adbd30dca67d409fd5cd98697587 Tree-SHA512: f38ab4a6ff00dc821e5f4842508cefadb701e70bb3893992c1b32049be20247c8aa9476a1f886050c5f17fe7f2ce99ee30193ce2c81a7482a5a51f8fc22300c7
2020-10-01rpc: Set HTTP Content-Type in bitcoin-cliWladimir J. van der Laan
We don't set any `Content-Type` in the client. It is more consistent with our other JSON-RPC use to set it to `application/json`. Note that our server doesn't enforce content types, so it doesn't make a difference in practice. But it is fairly strange HTTP behavior to not set it. This came up in #18950.
2020-10-01signet: do not log signet startup messages for other chainsJon Atack
and move signet network magic logging from chainparams.cpp to init.cpp
2020-10-01zmq: Append address to notify log outputnthumann
2020-09-30scripted diff: Improve invalid vout value rpc error messageNima Yazdanmehr
-BEGIN VERIFY SCRIPT- r() { sed -i 's/vout must be positive/vout cannot be negative/g' $1 } r $(git grep -l 'vout must be positive') -END VERIFY SCRIPT-
2020-09-30Merge #20004: test: Add signet witness commitment section parse testsWladimir J. van der Laan
fa29b5ae666bbb4c19188f0dcf8a1ba738aac624 test: Add signet witness commitment section parse tests (MarcoFalke) fa23308e9aad70c99a31f91d8556f1876ea02c04 Remove gArgs global from CreateChainParams to aid testing (MarcoFalke) Pull request description: ACKs for top commit: laanwj: ACK fa29b5ae666bbb4c19188f0dcf8a1ba738aac624 Tree-SHA512: f956407d690decbfb8178bcb8f101d107389fecc3aa7be515f7b0f5ceac26d798c165100f7ddf08cec569beabcc6514862dda23b667cc4fd0a784316784735c2
2020-09-30Merge #19498: Tidy up ProcessOrphanTxMarcoFalke
001343f4bc8b22fa9e313bd2867756eb9d614fa3 ProcessOrphanTx: Move AddToCompactExtraTransactions call into ProcessOrphanTx (John Newbery) 4fce726bd1e35a686cd9d48add5da22b1b5e25e1 ProcessOrphanTx: Remove aliases (John Newbery) e07c5d94231cefb748f9534ab8ff0b3e2b04c4d8 ProcessOrphanTx: Remove outdated commented (John Newbery) 4763b51bca86fb9e49175619a47cdbef34feaf99 ProcessOrphanTx: remove useless setMisbehaving set (John Newbery) 55c79a9cefb6c83cdebbf6c538c471607695b457 ProcessOrphanTx: remove useless done variable (John Newbery) 6e8dd99ef1c147898bd06fee7014afdff6618f18 [net processing] Add doxygen comments for orphan data and function (John Newbery) Pull request description: Originally a follow-up to #19364, this simplifies the logic in ProcessOrphanTx() and removes unused variables. ACKs for top commit: troygiorshev: ACK 001343f4bc8b22fa9e313bd2867756eb9d614fa3 sipa: utACK 001343f4bc8b22fa9e313bd2867756eb9d614fa3 MarcoFalke: ACK 001343f4bc8b22fa9e313bd2867756eb9d614fa3 🌮 Tree-SHA512: be558457f2e08ebb6bddcd49bdd75bd410c3650da44a76c688fc9f07822f94d5a1af93fa1342678052b2c8163cdb9745c352c7884325ab0a41fa593c3eb89116
2020-09-30Merge #20043: doc: Add 19501 release notesfanquake
fa710a6d67b2de64bde90def77c70d0a052f9030 doc: Add 19501 release notes (MarcoFalke) faf60dee34ae3dbe8e103a2c1b0679f13df6a921 doc: Remove double-whitespace from help string, other whitespace fixups (MarcoFalke) Pull request description: Adds release notes and fixes up some whitespace nits for the touched RPCs ACKs for top commit: fanquake: ACK fa710a6d67b2de64bde90def77c70d0a052f9030 laanwj: Code review ACK fa710a6d67b2de64bde90def77c70d0a052f9030 Tree-SHA512: b84a96386a9a8ed69f464c7dffdd600cf9a8b33a06120798b141b300991baed369ab91ae48df6446e89e1d62534ccd8ae721454e7a19b48900b317e9192afc47
2020-09-30Merge #20006: Fix misleading error message: Clean stack ruleWladimir J. van der Laan
af57766182013e17c23245671a33463f754ccd28 Fix misleading error message: Clean stack rule (sanket1729) Pull request description: Error messages in clean stack is misleading as it lets the user believe that there are extra elements on the stack which is incorrect if the stack is empty. Let me know if this requires additional test. ACKs for top commit: instagibbs: re-ACK https://github.com/bitcoin/bitcoin/pull/20006/commits/af57766182013e17c23245671a33463f754ccd28 gzhao408: reACK https://github.com/bitcoin/bitcoin/commit/af57766182013e17c23245671a33463f754ccd28 theStack: re-ACK af57766182013e17c23245671a33463f754ccd28 darosior: re ACK af57766182013e17c23245671a33463f754ccd28 Tree-SHA512: 88e77416e220b080246fec368f5552a891d102d072b7bee62ac560d5e31c4a8c2ee9cbe569740b253e9df177d21dc788d10d856b2a542ab47761bb81698e4082
2020-09-30Merge #20036: signet: Add assumed values for default signetWladimir J. van der Laan
fac966142e00f6838cfd666ff8905078204d014e signet: Add assumed values for default signet (MarcoFalke) Pull request description: Doesn't matter much right now, but when the default signet is bigger, this might come in handy ACKs for top commit: jsarenik: Tested ACK fac966142e00f6838cfd666ff8905078204d014e laanwj: Tested ACK fac966142e00f6838cfd666ff8905078204d014e (did a new re-sync) kallewoof: utACK fac966142e00f6838cfd666ff8905078204d014e Tree-SHA512: ed2692f5896350f8dc81f9bc5d79fbf1a4544b8f724c5c667fcadec3a37e26e9833ac189a3067a0731fd7b17a0c94f6b44a641fffe448e42259f7b7b44910db1
2020-09-30doc: Remove double-whitespace from help string, other whitespace fixupsMarcoFalke
2020-09-30Merge #19501: send* RPCs in the wallet returns the "fee reason"MarcoFalke
69cf5d4eeb73f7d685e915fc17af64634d88a4a2 [test] Make sure send rpc returns fee reason (Sishir Giri) d5863c0b3e20d56acf7246008b7832efde68ab21 [send] Make send RPCs return fee reason (Sishir Giri) Pull request description: Whenever a wallet funds a transaction, the fee reason is reported to the user only if the verbose is set to true. I added an extra parameter to `CreateTransaction` function in wallet.cpp. Then I implemented the fee reason return logic in `SendMoney` in rpcwallet.cpp, followed by verbose parameter in `sendtoaddress` and `sendmany` functions. I also added a fee reason test case in walletbasic.py. link to the issue: https://github.com/MarcoFalke/bitcoin-core/issues/22#issue-616251578 ACKs for top commit: instagibbs: ACK https://github.com/bitcoin/bitcoin/pull/19501/commits/69cf5d4eeb73f7d685e915fc17af64634d88a4a2 meshcollider: utACK 69cf5d4eeb73f7d685e915fc17af64634d88a4a2 Tree-SHA512: 2e3af32dcfbd5511ba95f8bc8edca7acfe709a8430ff03e43172e5d0af3dfa4b2f57906978e7f272d878043b9ed8c6004674cf47d7496b005d5f612e9a58aa0e
2020-09-30Merge #19958: doc: Better document features of feelersfanquake
2ea62cae483b764e30f61c06d8ac65755bbd864c Improve docs about feeler connections (Gleb Naumenko) Pull request description: "feeler" and "test-before-evict" are two different strategies suggest in [Eclipse Attacks on Bitcoin’s Peer-to-Peer Network](https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-heilman.pdf). In our codebase, we use `ConnType::FEELER` to implement both. It is confusing, up to the point that our documentation was just incorrect. This PR: - ~clarifies this aspect by renaming "ConnType::FEELER" to "ConnType::PROBE", meaning that this connections only probes that the node is operational, and then disconnects.~ - fixes the documentation ACKs for top commit: amitiuttarwar: ACK 2ea62cae48. thank you! practicalswift: ACK 2ea62cae483b764e30f61c06d8ac65755bbd864c Tree-SHA512: c9c03c09eefeacec28ea199cc3f697b0a98723f2f849f7a8115edc43791f8165e296e0e25a82f0b5a4a781a7de38c8954b48bf74c714eba02cdc21f7460673e5
2020-09-29Merge #19984: log: Remove static log message "Initializing chainstate ↵Wladimir J. van der Laan
Chainstate [ibd] @ height -1 (null)" f22d6a11423a4462196de24cd68e7f45513cc001 log: Remove static log message "Initializing chainstate Chainstate [ibd] @ height -1 (null)" (practicalswift) Pull request description: Remove static log message `Initializing chainstate Chainstate [ibd] @ height -1 (null)`. AFAICT `chainstate->ToString()` will always equal `"Chainstate [ibd] @ height -1 (null)"` here which makes the log message neither relevant nor interesting :) ACKs for top commit: laanwj: ACK f22d6a11423a4462196de24cd68e7f45513cc001 promag: ACK f22d6a11423a4462196de24cd68e7f45513cc001, just get rid of it. hebasto: ACK f22d6a11423a4462196de24cd68e7f45513cc001, I agree that the removed log message in its current state is cryptic and useless. Tree-SHA512: 1a65c0d14c9a433afcdaadef9bfcdd5d63276d5d2caee1bf3c48ac477e54fa28138f64020e6e26ca5e67872954a1e7d93fa24a12accc7c7211bc6e7a6039051d
2020-09-29Merge #20003: net: Exit with error message if -proxy is specified without ↵Wladimir J. van der Laan
arguments (instead of continuing without proxy server) 9b4fa0af40cd88ed25dd77962235fbf268bdcaa7 net: Print error message if -proxy is specified without arguments (instead of continuing without proxy server) (practicalswift) Pull request description: Exit with error message if `-proxy` is specified without arguments (instead of continuing without proxy server). Continuing without a proxy server when the end-user has specified `-proxy` may result in accidental loss of privacy. (The end-user might think he/she is using a proxy when he/she is not.) Before this patch: ``` $ src/bitcoind -proxy … 2020-09-23T00:24:33Z InitParameterInteraction: parameter interaction: -proxy set -> setting -listen=0 2020-09-23T00:24:33Z InitParameterInteraction: parameter interaction: -proxy set -> setting -upnp=0 2020-09-23T00:24:33Z InitParameterInteraction: parameter interaction: -proxy set -> setting -discover=0 2020-09-23T00:24:33Z InitParameterInteraction: parameter interaction: -listen=0 -> setting -listenonion=0 … 2020-09-23T00:24:33Z init message: Starting network threads... ``` `bitcoind` is now running *without* a proxy server (`GetProxy(…, …) == false`, `HaveNameProxy() == false`, etc.). Note that the "-proxy set" log messages above which the end-user might interpret as "good, my traffic is now routed via the proxy". After this patch: ``` $ src/bitcoind -proxy Error: No proxy server specified. Use -proxy=<ip> or -proxy=<ip:port>. $ echo $? 1 ``` ACKs for top commit: laanwj: re-ACK 9b4fa0af40cd88ed25dd77962235fbf268bdcaa7 kristapsk: ACK 9b4fa0af40cd88ed25dd77962235fbf268bdcaa7, I have tested the code. hebasto: re-ACK 9b4fa0af40cd88ed25dd77962235fbf268bdcaa7 Tree-SHA512: 4ba7a011991699a54b5bb87ec68367c681231bf5dcd36f8c89ff9ddc2e8d29df453817b7e362597e652ad6b341a22b7274be0fd78d435e5f0fd8058e5221c4ce
2020-09-29signet: Add assumed values for default signetMarcoFalke
2020-09-29Merge #19898: log: print unexpected version warning in validation log categoryfanquake
62dba9628d2532dca0c44934600f5aac3b21e275 log: print unexpected version warning in validation log category (nthumann) Pull request description: Fixes #19603: As suggested by practicalswift, instead of always printing `<n> of the last 100 blocks have unexpected version` as a warning appended to UpdateTip, it is now printed in the validation log category and therefore only visible with `-debug=validation` enabled. Before: `2020-09-06T15:56:00Z UpdateTip: new best=00000000000000000001b2872e107a98b57913120e5c6c87ce2715a34c40adf8 height=646969 version=0x20400000 log2_work=92.261571 tx=565651941 date='2020-09-06T10:35:36Z' progress=0.999888 cache=32.2MiB(237417txo) warning='72 of last 100 blocks have unexpected version'` After: `2020-09-06T16:31:26Z UpdateTip: new best=0000000000000000000b3bd786dc42745dd7be4a8c695500a04518cb9e2f4dc1 height=646971 version=0x20000000 log2_work=92.261607 tx=565655901 date='2020-09-06T10:57:19Z' progress=0.999883 cache=3.8MiB(27550txo)` `2020-09-06T16:31:26Z 71 of last 100 blocks have unexpected version` Ran unit & functional tests, confirmed that the warning is now only printed when validation category is enabled. ACKs for top commit: theStack: ACK 62dba9628d2532dca0c44934600f5aac3b21e275 MarcoFalke: re-ACK 62dba96 practicalswift: ACK 62dba9628d2532dca0c44934600f5aac3b21e275 -- only change since last ACK is `s/nUpgraded/num_unexpected_version/` hebasto: re-ACK 62dba9628d2532dca0c44934600f5aac3b21e275, https://github.com/bitcoin/bitcoin/pull/19898#pullrequestreview-483158708 is resolved now. Tree-SHA512: 2100ca7d6d3fd67c92e81d75162d2506d6f1ecf1761d5180d76663fac06771b35e5c4235ebe1a00731b5f7db82db3cd19328627929c8f22912df592686ba51d3
2020-09-29Merge #19630: Cleanup fee estimation codefanquake
a3abeec33a6ae903e514c7a7b6f587b7c17288a0 policy/fees: remove a floating-point division by zero (Antoine Poinsot) c36869bbf6a38626833b4aea53be024c48ede475 policy/fees: unify some duplicated for loops (Antoine Poinsot) 569d92a4d2924a1f6d50775980b591552f6372e7 policy/fees: small readability improvements (Antoine Poinsot) 5b8cb35621891b681f9b49a9de5f6d8da4ccdecc policy/fee: remove requireGreater parameter in EstimateMedianVal() (Antoine Poinsot) dba8196b447b6a85be66890db70928100e867d8b policy/fees: correct decay explanation comments (Antoine Poinsot) Pull request description: This (*does not* change behaviour and) cleans up a bit of unused code in `CBlockPolicyEstimator` and friends, and slightly improves readability of the rest (comment correction etc.). The last commit is a small reformatting one which I could not resist but am happy to remove at will. ACKs for top commit: jnewbery: utACK a3abeec33a6ae903e514c7a7b6f587b7c17288a0 MarcoFalke: ACK a3abeec33a6ae903e514c7a7b6f587b7c17288a0 💹 ariard: Code Review ACK a3abeec. Tree-SHA512: b7620bcd23a2ffa8f7ed859467868fc0f6488279e3ee634f6d408872cb866ad086a037e8ace76599a05b7e9c07768adf5016b0ae782d153196b9c030db4c34a5
2020-09-29test: Add signet witness commitment section parse testsMarcoFalke
2020-09-29Remove gArgs global from CreateChainParams to aid testingMarcoFalke
2020-09-29Merge #19107: p2p: Move all header verification into the network layer, ↵fanquake
extend logging deb52711a17236d0fca302701b5af585341ab42a Remove header checks out of net_processing (Troy Giorshev) 52d4ae46ab822d0f54e246a6f2364415cda149bd Give V1TransportDeserializer CChainParams& member (Troy Giorshev) 5bceef6b12fa16d20287693be377dace3dfec3e5 Change CMessageHeader Constructor (Troy Giorshev) 1ca20c1af8f08f07c407c3183c37b467ddf0f413 Add doxygen comment for ReceiveMsgBytes (Troy Giorshev) 890b1d7c2b8312d41d048d2db124586c5dbc8a49 Move checksum check from net_processing to net (Troy Giorshev) 2716647ebf60cea05fc9edce6a18dcce4e7727ad Give V1TransportDeserializer an m_node_id member (Troy Giorshev) Pull request description: Inspired by #15206 and #15197, this PR moves all message header verification from the message processing layer and into the network/transport layer. In the previous PRs there is a change in behavior, where we would disconnect from peers upon a single failed checksum check. In various discussions there was concern over whether this was the right choice, and some expressed a desire to see how this would look if it was made to be a pure refactor. For more context, see https://bitcoincore.reviews/15206.html#l-81. This PR improves the separation between the p2p layers, helping improvements like [BIP324](https://github.com/bitcoin/bitcoin/pull/18242) and #18989. ACKs for top commit: ryanofsky: Code review ACK deb52711a17236d0fca302701b5af585341ab42a just rebase due to conflict on adjacent line jnewbery: Code review ACK deb52711a17236d0fca302701b5af585341ab42a. Tree-SHA512: 1a3b7ae883b020cfee1bef968813e04df651ffdad9dd961a826bd80654f2c98676ce7f4721038a1b78d8790e4cebe8060419e3d8affc97ce2b9b4e4b72e6fa9f
2020-09-29Merge #19969: Send RPC bug fix and touch-upsfanquake
f7b331ea85d45c7337e527b6e77a45da7a689b7d rpc: add brackets to ConstructTransaction (Sjors Provoost) d813d26f06248aaa7be3c698c87939cc777fafd0 [rpc] send: various touch-ups (Sjors Provoost) 0fc1c685e1ca68ca8ed2b35f623bbe6a9fc36d66 [rpc] send: fix parsing replaceable option (Sjors Provoost) efc9b85e6f4aa431d308089874a18f0bbdcdd0fd Mark send RPC experimental (Sjors Provoost) Pull request description: Followup based on #16378 nits. It also fixes an argument parsing error (uncaught because the test wasn't sufficiently thorough). I marked the RPC as experimental so we can tweak it a bit over the next release cycle. ACKs for top commit: meshcollider: utACK f7b331ea85d45c7337e527b6e77a45da7a689b7d fjahr: utACK f7b331ea85d45c7337e527b6e77a45da7a689b7d kallewoof: ACK f7b331ea85d45c7337e527b6e77a45da7a689b7d Tree-SHA512: 82dd8ac76a6558872db3f5249d4d6440469400aaa339153bc627d1ee673a91ecfadecb486bc1939ba87ebbd80e26ff29698e93e358599f3d26fde0e526892afe
2020-09-29refactor: Rename TorController::target to m_tor_control_centerHennadii Stepanov
`target` is a proper name for the onion service target address and port. This change is required for the following commit.
2020-09-29net, refactor: Refactor CBaseChainParams::RPCPort functionHennadii Stepanov
2020-09-29net: Add alternative port for onion serviceHennadii Stepanov
This change allows to distinguish incoming Tor connections from others.
2020-09-29net: Use network byte order for in_addr.s_addrHennadii Stepanov
It is documented in the ip(7) manual page.
2020-09-29Merge #20014: doc: Mention signet in -help outputfanquake
b3972bca9f74b3e75918676ef029f1964b0622a1 doc: Mention signet in -help output (Hennadii Stepanov) Pull request description: ``` $ src/bitcoind -help | grep -A 4 -e '-chain=' | head -8 -chain=<chain> Use the chain <chain> (default: main). Allowed values: main, test, signet, regtest -signet Use the signet chain. Equivalent to -chain=signet. Note that the network is defined by the -signetchallenge parameter ``` ``` $ src/bitcoind -help | grep -A 3 -e '-port=' -port=<port> Listen for connections on <port> (default: 8333, testnet: 18333 signet: 38333, regtest: 18444) ``` ``` $ src/bitcoind -help | grep -A 3 -e '-rpcport=' -rpcport=<port> Listen for JSON-RPC connections on <port> (default: 8332, testnet: 18332, signet: 38332, regtest: 18443) ``` ACKs for top commit: jonatack: ACK b3972bca9f74b3e75918676ef029f1964b0622a1 kallewoof: ACK b3972bca9f74b3e75918676ef029f1964b0622a1 ajtowns: ACK b3972bca9f74b3e75918676ef029f1964b0622a1 - skimmed code only, looks fine to me Tree-SHA512: 66c59cdc3c19e8f8a02d3f3f992ff1db06769df63244d4af62629e18aaf4a12b3b7e75e4a0b9f616033cdc4415da046053ba36fede8be145b2dc695b2aa69a02
2020-09-28Merge #19845: net: CNetAddr: add support to (un)serialize as ADDRv2Pieter Wuille
7be6ff61875a8d5d2335bff5d1f16ba40557adb0 net: recognize TORv3/I2P/CJDNS networks (Vasil Dimov) e0d73573a37bf4b519f6f61e5678572d48a64517 net: CNetAddr: add support to (un)serialize as ADDRv2 (Vasil Dimov) fe42411b4b07b99c591855f5f00ad45dfeec8e30 test: move HasReason so it can be reused (Vasil Dimov) d2bb681f96fb327b4c4d5b2b113692ca22fdffbf util: move HasPrefix() so it can be reused (Vasil Dimov) Pull request description: (chopped off from #19031 to ease review) Add an optional support to serialize/unserialize `CNetAddr` in ADDRv2 format (BIP155). The new serialization is engaged by ORing a flag into the stream version. So far this is only used in tests to ensure the new code works as expected. ACKs for top commit: Sjors: re-tACK 7be6ff61875a8d5d2335bff5d1f16ba40557adb0 sipa: re-utACK 7be6ff61875a8d5d2335bff5d1f16ba40557adb0 eriknylund: ACK 7be6ff61875a8d5d2335bff5d1f16ba40557adb0 I built the PR on macOS Catalina 10.15.6, ran both tests and functional tests. I've reviewed the code and think the changes look good and according to BIP155. I verified that the added Base32 encoding test looks as proposed and working. I've run a node for a week only with Onion addresses `-onlynet=onion` without issues and I can connect to other peer reviewers running TorV3 on their nodes and I can connect both of my test nodes to each other. jonatack: re-ACK 7be6ff61875a8d5d2335bff5d1f16ba40557adb0 per `git diff b9c46e0 7be6ff6`, debug build, ran/running bitcoind with this change and observed the log and `-netinfo` peer connections while connected as a tor v2 service to both tor v2 peers and also five tor v3 peers. hebasto: ACK 7be6ff61875a8d5d2335bff5d1f16ba40557adb0, tested on Linux Mint 20 (x86_64): on top of this pull and #19031 I'm able to connect to onion v3 addresses, and jonatack is able to connect to my created onion v3 address. Tree-SHA512: dc621411ac4393993aa3ccad10991717ec5f9f2643cae46a24a89802df0a33d6042994fc8ff2f0f397a3dbcd1c0e58fe4724305a2f9eb64d9342c3bdf784d9be
2020-09-28Merge #15367: feature: Added ability for users to add a startup commandMarcoFalke
090530cc24054d6b4658752bb88f75a3b73eab5d feature: Added ability for users to add a startup command (Ben Carman) Pull request description: Thoughts for adding the feature is for users to be able to add things like electrum-personal-server or lnd to run whenever Bitcoin Core is running. Open to feedback about the feature. ACKs for top commit: MarcoFalke: re-ACK 090530cc24 dongcarl: tACK 090530c Tree-SHA512: ba514d2fc8b4fb12b781c1a9c89845a25fce0b80ba7c907761cde4abb81edd03fa643682edc895986dc20b273ac3b95769508806db7fbd99ec28623f85c41e67
2020-09-28feature: Added ability for users to add a startup commandBen Carman
2020-09-28Merge #20016: uint256: 1 is a constantMarcoFalke
4cc7171c9887e88027642927c979e507d7b78dda wallet: no need for duplicate storage for ABANDON_HASH constant (Anthony Towns) 82cf4641f4a161834d07ce83c18982d9b143c040 scripted-diff: Replace UINT256_ONE() with uint256::ONE (Anthony Towns) 183f308fff4caad3e3ada654b6fdf597d262c4c1 uint256: Update constructors to c++11, make ONE static (Anthony Towns) Pull request description: `UINT256_ONE()` returns a reference to a global; mark it as const to be sure someone doesn't accidently modify it. ACKs for top commit: promag: ACK 4cc7171c9887e88027642927c979e507d7b78dda MarcoFalke: re ACK 4cc7171c98, only change is some constexpr shuffling 🛁 kallewoof: ACK 4cc7171c9887e88027642927c979e507d7b78dda Tree-SHA512: 7f399658bfd9ffa4075bc2349049476d842b9579a67518fb7151f56eab36907ef24b1474ee1e89bdc69fe181abe7295dfe19e33b3623d43cec71fc00e356e347
2020-09-28wallet: no need for duplicate storage for ABANDON_HASH constantAnthony Towns
2020-09-28scripted-diff: Replace UINT256_ONE() with uint256::ONEAnthony Towns
-BEGIN VERIFY SCRIPT- sed -i '/inline.* UINT256_ONE() {/,+1d' src/uint256.h sed -i 's/UINT256_ONE()/uint256::ONE/' $(git grep -l UINT256_ONE) -END VERIFY SCRIPT-
2020-09-28uint256: Update constructors to c++11, make ONE staticAnthony Towns
Replace the memset with C++11 value/aggregate initialisation of the m_data array, which still ensures the unspecified values end up as zero-initialised. This then allows changing UINT256_ONE() from dynamically allocating an object, to a simpler referencing a static allocation.
2020-09-26[send] Make send RPCs return fee reasonSishir Giri
2020-09-26Merge #19725: [RPC] Add connection type to getpeerinfo, improve logsMarcoFalke
a512925e19a70d7f6b80ac530a169f45ffaafa1c [doc] Release notes (Amiti Uttarwar) 50f94b34a33c954f6e207f509c93d33267a5c3e2 [rpc] Deprecate getpeerinfo addnode field (Amiti Uttarwar) df091b9b509f0b10e4315c0bfa2da0cc0c31c22f [refactor] Rename test file to allow any getpeerinfo deprecations. (Amiti Uttarwar) 395acfa83a5436790c1a722a5609ac9d48df235f [rpc] Add connection type to getpeerinfo RPC, update tests (Amiti Uttarwar) 49c10a9ca40967d28ae16dfea9cccc6f3a6624a1 [log] Add connection type to log statement (Amiti Uttarwar) Pull request description: After #19316, we can more directly expose information about the connection type on the `getpeerinfo` RPC. Doing so also makes the existing addnode field redundant, so this PR begins the process of deprecating this field. This PR also includes one commit that improves a log message, as both use a shared function to return the connection type as a string. Suggested by sdaftuar- https://github.com/bitcoin/bitcoin/pull/19316#discussion_r468001604 & https://github.com/bitcoin/bitcoin/pull/19316#discussion_r468018093 ACKs for top commit: jnewbery: Code review ACK a512925e19a70d7f6b80ac530a169f45ffaafa1c. sipa: utACK a512925e19a70d7f6b80ac530a169f45ffaafa1c guggero: Tested and code review ACK a512925e. MarcoFalke: cr ACK a512925e19a70d7f6b80ac530a169f45ffaafa1c 🌇 promag: Code review ACK a512925e19a70d7f6b80ac530a169f45ffaafa1c. Tree-SHA512: 601a7a38aee235ee59aca690784f886dc2ae4e418b2e6422c4b58cd597376c00f74910f66920b08a08a0bec28bf8022e71a1435785ff6ba8a188954261aba78e
2020-09-25doc: Mention signet in -help outputHennadii Stepanov
2020-09-24Fix misleading error message: Clean stack rulesanket1729
Error messages in cleanstack is misleading as it lets the user believe that there are extra elements on stack which is incorrect if the stack is empty.