aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-10-14[wallet] Remove package limit config access from walletJohn Newbery
The wallet should not be able to directly access global configuration from the node. Remove access of "-limitancestorcount" and "-limitdescendantcount".
2019-10-14Merge #17124: test: speed up wallet_address_types by whitelisting peers ↵MarcoFalke
(immediate tx relay) fba4baa4fa22fdf96935af1bd6b253c3ad76165f test: speed up wallet_address_types by whitelisting peers (immediate tx relay) (Sebastian Falbesoner) Pull request description: approaches another part of #16613 ("Functional test suite bottlenecks") As for `wallet_backup.py` (Commit 581c9be0d8bff46cd68bd6a3bf72f22d11c09aea), the bottleneck is in relaying transactions. By whitelisting the peers, the inventory is transmissioned immediately rather than on average every 5 seconds, speeding up the test significantly: before: ``` $ time ./wallet_address_types.py real 1m30.072s user 0m6.478s sys 0m2.298s ``` with this PR: ``` $ time ./wallet_address_types.py real 0m26.785s user 0m5.525s sys 0m1.888s ``` ACKs for top commit: fanquake: ACK - fba4baa4fa22fdf96935af1bd6b253c3ad76165f Tree-SHA512: 6728ae44bd8839426fa943d06af884e40c2d88de5d7807269a1e78ff987077160aa7e8d395f4468e6ca1d6f2110c7a03cd346a3339b256702f4cdabd285f7f86
2019-10-14Merge #17108: test: fix "tx-size-small" errors after default address changeMarcoFalke
32d665c2657793c8b2cc7248d26d80a940acfe20 test: fix "tx-size-small" errors after default address change (Sebastian Falbesoner) Pull request description: Addresses #17043, affects RBF and BIP68 functional tests. The "tx-size-small" policy rule rejects transactions with a non-witness size of smaller than 82 bytes (see `src/validation.cpp:MemPoolAccept::PreChecks(...)`), which corresponds to a transaction with 1 segwit input and 1 P2WPKH output. Through the default address change, the created test transactions have segwit inputs now and sending to short scriptPubKeys might violate this rule. By bumping the dummy scriptPubKey size to 22 bytes (= the size of a P2WPKH scriptPubKey), on all occurences the problem is solved. The dummy scriptPubKey has the format: ```21 <21-byte-long string of 'a' or 1s>``` ACKs for top commit: instagibbs: reACK https://github.com/bitcoin/bitcoin/pull/17108/commits/32d665c2657793c8b2cc7248d26d80a940acfe20 just s/Bytes/bytes/ MarcoFalke: ACK 32d665c2657793c8b2cc7248d26d80a940acfe20 Tree-SHA512: 80e0386ff3c3f462901ba5c1e5ef2cbf095d9c0a40c8c3cfeacd4a3ab676afe744aa95b9eed77b4b3eec88bed930b33aa718117ed0977f6374e858a2f3bd5c57
2019-10-14Merge #17009: tests: Add EvalScript(...) fuzzing harnessMarcoFalke
7e50abcc29dc5fde24a1b3e57c6316eabda35e2e tests: Add EvalScript(...) fuzzing harness (practicalswift) bebb637472d0469037a9f438572fc71db4236d97 tests: Add FuzzedDataProvider fuzzing helper from the Chromium project (practicalswift) Pull request description: Add `EvalScript(...)` fuzzing harness. To test this PR: We can run `contrib/devtools/test_fuzzing_harnesses.sh` (#17000) during five seconds to quickly verify that the newly added fuzz harness seem to hit relevant code regions, that the fuzzing throughput seems reasonable, etc. `test_fuzzing_harnesses.sh eval 5` runs all fuzzers matching the regexp `eval` giving them five seconds of runtime each. ``` $ CC=clang CXX=clang++ ./configure --enable-fuzz --with-sanitizers=address,fuzzer,undefined $ make $ contrib/devtools/test_fuzzing_harnesses.sh eval 5 Testing fuzzer eval_script during 5 second(s) A subset of reached functions: NEW_FUNC[1/24]: 0x557b808742e0 in prevector<28u, unsigned char, unsigned int, int>::indirect_ptr(int) src/./prevector.h:161 NEW_FUNC[2/24]: 0x557b80875460 in prevector<28u, unsigned char, unsigned int, int>::indirect_ptr(int) const src/./prevector.h:162 NEW_FUNC[6/9]: 0x557b81acdaa0 in popstack(std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > >&) src/script/interpreter.cpp:57 NEW_FUNC[5/16]: 0x557b809f1bf0 in CScriptNum::serialize(long const&) src/./script/script.h:326 NEW_FUNC[4/6]: 0x557b817c93d0 in CScriptNum::CScriptNum(std::vector<unsigned char, std::allocator<unsigned char> > const&, bool, unsigned long) src/./script/script.h:225 NEW_FUNC[5/6]: 0x557b817cbb80 in CScriptNum::set_vch(std::vector<unsigned char, std::allocator<unsigned char> > const&) src/./script/script.h:360 NEW_FUNC[0/11]: 0x557b80a88170 in CHash256::Write(unsigned char const*, unsigned long) src/./hash.h:34 NEW_FUNC[1/11]: 0x557b80a88270 in CHash256::Finalize(unsigned char*) src/./hash.h:28 NEW_FUNC[5/11]: 0x557b81affdb0 in CSHA256::CSHA256() src/crypto/sha256.cpp:644 NEW_FUNC[6/11]: 0x557b81affe80 in (anonymous namespace)::sha256::Initialize(unsigned int*) src/crypto/sha256.cpp:66 NEW_FUNC[7/11]: 0x557b81b00460 in CSHA256::Write(unsigned char const*, unsigned long) src/crypto/sha256.cpp:649 NEW_FUNC[8/11]: 0x557b81b009a0 in CSHA256::Finalize(unsigned char*) src/crypto/sha256.cpp:675 NEW_FUNC[9/11]: 0x557b81b015e0 in CSHA256::Reset() src/crypto/sha256.cpp:692 NEW_FUNC[10/11]: 0x557b81b01d90 in (anonymous namespace)::sha256::Transform(unsigned int*, unsigned char const*, unsigned long) src/crypto/sha256.cpp:79 NEW_FUNC[0/1]: 0x557b808cc180 in BaseSignatureChecker::CheckLockTime(CScriptNum const&) const src/./script/interpreter.h:153 NEW_FUNC[0/2]: 0x557b81ab5640 in CastToBool(std::vector<unsigned char, std::allocator<unsigned char> > const&) src/script/interpreter.cpp:36 NEW_FUNC[0/1]: 0x557b817c9c30 in CScriptNum::getint() const src/./script/script.h:312 NEW_FUNC[0/1]: 0x557b81ae1df0 in CScriptNum::operator-=(long const&) src/./script/script.h:298 NEW_FUNC[0/5]: 0x557b81af5670 in CRIPEMD160::CRIPEMD160() src/crypto/ripemd160.cpp:243 NEW_FUNC[1/5]: 0x557b81af5740 in (anonymous namespace)::ripemd160::Initialize(unsigned int*) src/crypto/ripemd160.cpp:25 NEW_FUNC[2/5]: 0x557b81af5b00 in CRIPEMD160::Write(unsigned char const*, unsigned long) src/crypto/ripemd160.cpp:248 NEW_FUNC[3/5]: 0x557b81af5fa0 in (anonymous namespace)::ripemd160::Transform(unsigned int*, unsigned char const*) src/crypto/ripemd160.cpp:55 NEW_FUNC[4/5]: 0x557b81af8d60 in CRIPEMD160::Finalize(unsigned char*) src/crypto/ripemd160.cpp:274 NEW_FUNC[0/16]: 0x557b80857a30 in CScript::operator<<(std::vector<unsigned char, std::allocator<unsigned char> > const&) src/./script/script.h:462 NEW_FUNC[1/16]: 0x557b80872670 in prevector<28u, unsigned char, unsigned int, int>::insert(prevector<28u, unsigned char, unsigned int, int>::iterator, unsigned char const&) src/./prevector.h:342 NEW_FUNC[2/16]: 0x557b80872e00 in void prevector<28u, unsigned char, unsigned int, int>::insert<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > > >(prevector<28u, unsigned char, unsigned int, int>::iterator, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char> > >) src/./prevector.h:368 NEW_FUNC[3/16]: 0x557b80873630 in prevector<28u, unsigned char, unsigned int, int>::capacity() const src/./prevector.h:295 NEW_FUNC[4/16]: 0x557b80874ed0 in void prevector<28u, unsigned char, unsigned int, int>::fill<prevector<28u, unsigned char, unsigned int, int>::const_iterator>(unsigned char*, prevector<28u, unsigned char, unsigned int, int>::const_iterator, prevector<28u, unsigned char, unsigned int, int>::const_iterator) src/./prevector.h:204 NEW_FUNC[5/16]: 0x557b808cc0f0 in BaseSignatureChecker::CheckSig(std::vector<unsigned char, std::allocator<unsigned char> > const&, std::vector<unsigned char, std::allocator<unsigned char> > const&, CScript const&, SigVersion) const src/./script/interpreter.h:148 NEW_FUNC[6/16]: 0x557b809edb10 in CScript::operator=(CScript&&) src/./script/script.h:390 NEW_FUNC[7/16]: 0x557b809f8ec0 in void prevector<28u, unsigned char, unsigned int, int>::insert<prevector<28u, unsigned char, unsigned int, int>::const_iterator>(prevector<28u, unsigned char, unsigned int, int>::iterator, prevector<28u, unsigned char, unsigned int, int>::const_iterator, prevector<28u, unsigned char, unsigned int, int>::const_iterator) src/./prevector.h:368 NEW_FUNC[8/16]: 0x557b809f9260 in prevector<28u, unsigned char, unsigned int, int>::swap(prevector<28u, unsigned char, unsigned int, int>&) src/./prevector.h:451 NEW_FUNC[9/16]: 0x557b81ab58c0 in CheckSignatureEncoding(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, ScriptError_t*) src/script/interpreter.cpp:200 NEW_FUNC[10/16]: 0x557b81ab6f30 in FindAndDelete(CScript&, CScript const&) src/script/interpreter.cpp:254 NEW_FUNC[11/16]: 0x557b81acdc20 in CheckPubKeyEncoding(std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, SigVersion const&, ScriptError_t*) src/script/interpreter.cpp:217 NEW_FUNC[12/16]: 0x557b81ad3890 in IsCompressedOrUncompressedPubKey(std::vector<unsigned char, std::allocator<unsigned char> > const&) src/script/interpreter.cpp:63 NEW_FUNC[13/16]: 0x557b81ad8830 in CScript::GetOp(prevector<28u, unsigned char, unsigned int, int>::const_iterator&, opcodetype&) const src/./script/script.h:505 NEW_FUNC[14/16]: 0x557b81ae21a0 in prevector<28u, unsigned char, unsigned int, int>::prevector<prevector<28u, unsigned char, unsigned int, int>::const_iterator>(prevector<28u, unsigned char, unsigned int, int>::const_iterator, prevector<28u, unsigned char, unsigned int, int>::const_iterator) src/./prevector.h:246 NEW_FUNC[0/1]: 0x557b81ae1a40 in CScriptNum::operator+=(long const&) src/./script/script.h:290 NEW_FUNC[0/5]: 0x557b81af9760 in CSHA1::CSHA1() src/crypto/sha1.cpp:150 NEW_FUNC[1/5]: 0x557b81af9830 in (anonymous namespace)::sha1::Initialize(unsigned int*) src/crypto/sha1.cpp:32 NEW_FUNC[2/5]: 0x557b81af9bf0 in CSHA1::Write(unsigned char const*, unsigned long) src/crypto/sha1.cpp:155 NEW_FUNC[3/5]: 0x557b81afa090 in (anonymous namespace)::sha1::Transform(unsigned int*, unsigned char const*) src/crypto/sha1.cpp:47 NEW_FUNC[4/5]: 0x557b81afc5e0 in CSHA1::Finalize(unsigned char*) src/crypto/sha1.cpp:181 NEW_FUNC[0/1]: 0x557b81ada4f0 in CScriptNum::operator-() const src/./script/script.h:278 NEW_FUNC[0/1]: 0x557b808cc210 in BaseSignatureChecker::CheckSequence(CScriptNum const&) const src/./script/interpreter.h:158 NEW_FUNC[0/1]: 0x557b81ab5c00 in IsValidSignatureEncoding(std::vector<unsigned char, std::allocator<unsigned char> > const&) src/script/interpreter.cpp:107 stat::number_of_executed_units: 9728 stat::average_exec_per_sec: 1621 stat::new_units_added: 844 stat::slowest_unit_time_sec: 0 stat::peak_rss_mb: 326 Number of unique code paths taken during fuzzing round: 583 Tested fuzz harnesses seem to work as expected. ``` ACKs for top commit: MarcoFalke: ACK 7e50abcc29dc5fde24a1b3e57c6316eabda35e2e Tree-SHA512: 4874ab28efb4219c24a4cfc9be901a3297d1973f43acadec415c2e1d6843e4e661f90e8f9695849373775a4556884cdcc8862a092246ae0383b844c37c1627d5
2019-10-14test: fix "tx-size-small" errors after default address changeSebastian Falbesoner
Addresses #17043, affects RBF and BIP68 functional tests. The "tx-size-small" policy rule rejects transactions with a non-witness size of smaller than 82 bytes (see src/validation.cpp:MemPoolAccept::PreChecks(...)), which corresponds to a transaction with 1 segwit input and 1 P2WPKH output. Through the default address change, the created test transactions have segwit inputs now and sending to short scriptPubKeys might violate this rule. By bumping the dummy scriptPubKey size to 22 bytes (= the size of a P2WPKH scriptPubKey), on all occurences the problem is solved. The dummy scriptPubKey has the format: 21 <21-byte-long string of 'a' or 1s> former commit messages, now squashed: test: rbf, bip68: use constant DUMMY_P2WPKH_SCRIPT for bumped scriptPubKey test: rbf, bip68: use constant DUMMY_P2WPKH_SCRIPT for dummy scriptPubKeys (b'a' * 35) test: rbf, bip68: comment DUMMY_P2WPKH_SCRIPT constant, put into common (new) module
2019-10-14Merge #16667: build: remove mingw linker workaround from win gitian descriptorMarcoFalke
bd3f5a90ecd6de40516141b23b0861dbba0b31b6 build: remove mingw linker workaround from win gitian descriptor (fanquake) Pull request description: This workaround was added as part of the switch to gitian building using Ubuntu 14.04 (#6900). However, it should no longer be required, as we have switched to Bionic (#13171) and that has a far newer version of binutils. Original discussion: https://github.com/bitcoin/bitcoin/pull/6900 binutils patch: https://sourceware.org/bugzilla/show_bug.cgi?id=16192 ACKs for top commit: MarcoFalke: ACK bd3f5a90ecd6de40516141b23b0861dbba0b31b6 theuni: ACK bd3f5a90ecd6de40516141b23b0861dbba0b31b6 laanwj: ACK bd3f5a90ecd6de40516141b23b0861dbba0b31b6 Tree-SHA512: 01a5789994decf8cdedf7aaa0a449d2100a77e2e6b422d6b9dd5a4ac3e2e0b538c3d43aae4a1c3713614782f3c6b09d8d8bb21c20e86ce3c1734183dedd02d0c
2019-10-14Merge #17057: build: switch to upstream libdmg-hfsplusWladimir J. van der Laan
9192ce5d634f4c65776d14539e9663c67b4367d3 depends: pull upstream libdmg-hfsplus changes (fanquake) 9b54f3436bb9a2d23bd84c0da99168386e2d5c31 depends: latest config.guess & config.sub (fanquake) Pull request description: Pulled the first two commits off #16392, as they are standalone. Corys PRs (https://github.com/planetbeing/libdmg-hfsplus/pull/7, https://github.com/planetbeing/libdmg-hfsplus/pull/8) have been merged, and the author was active for a little while in 2017/18, so switch back to the upstream [`libdmg-hfsplus`](https://github.com/planetbeing/libdmg-hfsplus) repo. I've added the last of Corys patches into depends. [Switching back to upstream discussion](https://github.com/bitcoin/bitcoin/pull/16392#discussion_r303610767). Top commit has no ACKs. Tree-SHA512: a2313a731242251fef28921faf403c9bc354e6271cd7a26e9904ff5fae5766678136697fb5696006498a982ce319747b52b1df5151837388cda8f8145b45ab7c
2019-10-13test: speed up wallet_address_types by whitelisting peers (immediate tx relay)Sebastian Falbesoner
approaches another part of #16613 ("Functional test suite bottlenecks") As for wallet_backup.py (Commit 581c9be0d8bff46cd68bd6a3bf72f22d11c09aea), the bottleneck is in relaying transactions. By whitelisting the peers, the inventory is transmissioned immediately rather than on average every 5 seconds, speeding up the test significantly: before: $ time ./wallet_address_types.py real 1m30.072s user 0m6.478s sys 0m2.298s with this PR: $ time ./wallet_address_types.py real 0m26.785s user 0m5.525s sys 0m1.888s
2019-10-13Merge #17121: test: speedup wallet_backup by whitelisting peers (immediate ↵fanquake
tx relay) 581c9be0d8bff46cd68bd6a3bf72f22d11c09aea test: speedup wallet_backup by whitelisting peers (immediate tx relay) (Sebastian Falbesoner) Pull request description: approaches part of #16613 ("Functional test suite bottlenecks") The majority of the test time is spent in `sync_mempools()` after sending to addresses, i.e. the bottleneck is in relaying transactions. By whitelisting the peers via `-whitelist`, the inventory is transmissioned immediately rather than on average every 5 seconds, speeding up the test by at least a factor of two: before: ``` $ time ./wallet_backup.py real 2m2.523s user 0m6.093s sys 0m2.454s ``` with this PR: ``` $ time ./wallet_backup_with_whitelist.py real 0m36.570s user 0m5.365s sys 0m1.696s ``` Note that the test is not deterministic (the `sendtoaddress` RPC in function `one_send()` is executed with a probability of 50%), hence the times could vary between individual runs. ACKs for top commit: MarcoFalke: ACK 581c9be0d8bff46cd68bd6a3bf72f22d11c09aea, this test is testing the backup behaviour, not the tx relay behaviour fanquake: ACK 581c9be0d8bff46cd68bd6a3bf72f22d11c09aea Tree-SHA512: d016f39cdb85501e17a74a4c4db5a9f7404baa76fbcc3675a34d3cd7bf03d7a4cb4fd3e5f17cb0597248120bb5ac8b15d3db7663007b76b010902be72954bde0
2019-10-13test: speedup wallet_backup by whitelisting peers (immediate tx relay)Sebastian Falbesoner
approaches part of #16613 ("Functional test suite bottlenecks") The majority of the test time is spent in sync_mempools() after sending to addresses, i.e. the bottleneck is in relaying transactions. By whitelisting the peers via -whitelist, the inventory is transmissioned immediately rather than on average every 5 seconds, speeding up the test by at least a factor of two: before: $ time ./wallet_backup.py real 2m2.523s user 0m6.093s sys 0m2.454s with this PR: $ time ./wallet_backup_with_whitelist.py real 0m36.570s user 0m5.365s sys 0m1.696s Note that the test is not deterministic (the sendtoaddress RPC in function one_send() is executed with a probability of 50%), hence the times could vary between individual runs.
2019-10-12tests: Add EvalScript(...) fuzzing harnesspracticalswift
2019-10-11Merge #16947: doc: Doxygen-friendly script/descriptor.h commentsMarcoFalke
15ac916642f20918f66e32729bb6b0b674e3bc24 doc: Doxygen-friendly descriptor.h comments (Jon Layton) Pull request description: Closes #16942. - Make `Descriptor` overview subtext of `Interface for parsed descriptor objects.` - Conform to `@param[in, out] argname: Info` in parameter comments. Present in code: https://github.com/bitcoin/bitcoin/blob/feb162d500273040c8a2e5cdd3393edf34dff45b/src/net_processing.cpp#L1001 - Remove redundant argument type, `in` vs `out` mentions - Removed unnecessary backticks around `IsSolvable()`, since Doxygen builds a link to the known function's docs - Add backticks to refer to `argname`s `descriptor.cpp` has more documentation, but Doxygen's output doesn't include anything inside unnamed namespaces for some reason. Tried to access them via searchbar. Top commit has no ACKs. Tree-SHA512: 587cc7596de46358a08b0321a7cf08a08785945715dbdce8945d837e1bee0664d1e11b1e47b7be85c4f35262f7ea173fb1f6202efcacc2023e2c6b0bd44133b3
2019-10-11Merge #17097: build: Add README.md to DIST targetMarcoFalke
fa91590a74985ff321000864ab3e8ef7414d84eb build: Add README.md to DIST target (MarcoFalke) Pull request description: This is required because our release tarball is generated by listing each needed file. See: #16734 Should fix the failing builds after commit 9b4dfec831e6c20ce06c40412a692315b482e456 ACKs for top commit: fanquake: ACK fa91590a74985ff321000864ab3e8ef7414d84eb - just checked that `README.md` is present inside the tarball after running `make dist`. Tree-SHA512: 92e6145cbea4f7d0edfc88e4dcc11a34349bbf2f1948340531d2ff8832cfef94f979add8bd925b7e2c82a6bed4be40b8d41e94807d4a69983dcda3bccb206a31
2019-10-11Merge #17102: doc: Add missing indexes/blockfilter/basic to doc/files.mdfanquake
fa191c058f00116bb844e59e42e24ad961e19cbe doc: Add missing indexes/blockfilter/basic/ to doc/files.md (MarcoFalke) Pull request description: ACKs for top commit: hebasto: ACK fa191c058f00116bb844e59e42e24ad961e19cbe fanquake: ACK fa191c058f00116bb844e59e42e24ad961e19cbe Tree-SHA512: ea30776224e4a26bc6f60c9c65361f0b9d7b2b4f844c6d2aefd108f852dd7d813963df631a8ed20daea5acae7a23d0b405d12a162f90a6f61a3db236f5beed45
2019-10-11doc: Add missing indexes/blockfilter/basic/ to doc/files.mdMarcoFalke
2019-10-10tests: Add FuzzedDataProvider fuzzing helper from the Chromium projectpracticalswift
Source: https://cs.chromium.org/chromium/src/third_party/libFuzzer/src/utils/FuzzedDataProvider.h?rcl=b9f51dc8c98065df0c8da13c051046f5bab833db
2019-10-10Merge #16983: doc: Add detailed info about Bitcoin Core filesMarcoFalke
86b9f92da25f2768eb29eefd6526320135f39a2f doc: Add detailed info about Bitcoin Core files (Hennadii Stepanov) Pull request description: This PR: - provides detailed info about the Bitcoin Core files; - does not mention temporary files, e.g., `mempool.dat.new` and `peers.????` ACKs for top commit: ch4ot1c: ACK 86b9f92 laanwj: ACK 86b9f92da25f2768eb29eefd6526320135f39a2f MarcoFalke: ACK 86b9f92da25f2768eb29eefd6526320135f39a2f Tree-SHA512: 9352119b08e3f6aaab4ce3797afc6533f90852e461957acb2bc73962fd4881403fabeaa5a371bd1218309f36f9b0f90fb147b80698e2e30a016634a62a160a15
2019-10-10Merge #16973: test: Fix combine_logs.py for AppVeyor buildMarcoFalke
d478a472eb0d666e8a762ed8d24fafbabc5f94f3 test: Fix combine_logs.py for AppVeyor build (Martin Zumsande) Pull request description: Fixes #16894 This fixes the problem of AppVeyor builds not showing `debug.log` if a functional test fails, because the windows separator `\` doesn't work together with the regex in `combine_logs.py`. A fix was already attempted in #16896, however, that PR became inactive and was marked "up for grabs", plus it's a really small change. As suggested by jamesob, this PR uses `pathlib`: For the glob and to convert the path to a posix-style string, it leaves the regex as is (in contrast to #16896 which adjusted the regex). I tested this locally on Windows and Ubuntu. Top commit has no ACKs. Tree-SHA512: 603b4359b6009b6da874c30f69759acda03730ee5747898a0fe957a5fc37ee9ba07858c6aa2169bf4c40521f37e47138e8314d698652ea2760fa0a3f76b890bd
2019-10-10Merge #16887: Abstract out some of the descriptor Span-parsing helpersMarcoFalke
bb36372b8f2bd675313ae8553ceb61f28c2c1afd test: add unit tests for Span-parsing helpers (Sebastian Falbesoner) 5e69aeec3f2a0fafd5e591b7222716f00145761d Add documenting comments to spanparsing.h (Pieter Wuille) 230d43fdbc41b356700b0d8a6984d69e00279ade Abstract out some of the descriptor Span-parsing helpers (Pieter Wuille) Pull request description: As suggested here: https://github.com/bitcoin/bitcoin/pull/16800#issuecomment-531605482. This moves the Span parsing functions out of the descriptor module, making them more easily usable for other parsers (in particular, in preparation for miniscript parsing). ACKs for top commit: MarcoFalke: ACK bb36372b8f2bd675313ae8553ceb61f28c2c1afd Tree-SHA512: b5c5c11a9bc3f0a1c2c4cfa22755654ecfb8d4b69da0dc1fb9f04e1556dc0f6ffd87ad153600963279ac465d587d7971b53d240ced802d12693682411ac73deb
2019-10-10Merge #16786: test: add unit test for wallet watch-only methods involving ↵MarcoFalke
PubKeys a57a1d42d52fe51e5b413a1fd3a5ef2b7a2120e3 test: add unit test for wallet watch-only methods involving PubKeys (Sebastian Falbesoner) Pull request description: The motivation for this addition was to unit test the function `wallet.cpp:ExtractPubKey()` (see recent change in commit 798a589aff64b83a0844688a661f4bd987c3340c) which is however static and only indirectly available via the public methods `AddWatchOnly()`, `LoadWatchOnly()` and `RemoveWatchOnly()`. Since the first of those methods also stores the addresses to the disk, the second, simpler one was chosen which only operates in memory. ACKs for top commit: Sjors: ACK a57a1d4 instagibbs: reACK https://github.com/bitcoin/bitcoin/pull/16786/commits/a57a1d42d52fe51e5b413a1fd3a5ef2b7a2120e3 Sjors: re-ACK a57a1d4 Tree-SHA512: 92a242204ab533022cd848662997372c41815b1265d07b3d96305697f801db29a5ba5668337faf4bea702bec1451972529afd6665927fb142aaf91700a338b26
2019-10-10build: Add README.md to DIST targetMarcoFalke
2019-10-10Merge #16689: rpc: add missing fields to wallet rpc help outputMarcoFalke
f4c8953b0073e6bc37abd18ec4a5cbc3ea9719a1 Add missing fields in TransactionDescriptionString and others (Antoine Riard) 353010849185cda53c97da1f5089565dccf6f16a MOVEONLY : move RPC wallets helpers to TransactionDescriptionString (Antoine Riard) Pull request description: Knowledge of `walletconflicts` field existence is really nice when you're debugging conflicts. Was added in #3671 but never documented in RPC helps. Others were added after a quick skim, we may still have missing ones in wallet rpcs. ACKs for top commit: MarcoFalke: re-ACK f4c8953b0073e6bc37abd18ec4a5cbc3ea9719a1 (only change is addressing my nits) kristapsk: ACK f4c8953b0073e6bc37abd18ec4a5cbc3ea9719a1 Tree-SHA512: 2bea4d8743399fb152f942df7454548b896b2ad5654fd4bf60253afec1a5387ef8797ced97776dc7ba4912291263c08abe7c2b608c6a28f9a0df67be4ebc4635
2019-10-10Merge #17076: tests: Add fuzzing harness for CheckTransaction(...), ↵MarcoFalke
IsStandardTx(...) and other CTransaction related functions 5c2987636faa5bc175b37b81fd98ab48e576da0b tests: Remove TRANSACTION_DESERIALIZE (replaced by transaction fuzzer) (practicalswift) 0a573682f24d20cb178b8b6f97c35ec46901c4db tests: Add fuzzing harness for CheckTransaction(...), IsStandardTx(...) and other CTransaction related functions (practicalswift) Pull request description: Add fuzzing harness for `CheckTransaction(...)`, `IsStandardTx(...)` and other `CTransaction` related functions. **Testing this PR** Run: ``` $ CC=clang CXX=clang++ ./configure --enable-fuzz --with-sanitizers=address,fuzzer,undefined $ make $ src/test/fuzz/transaction … # And to to quickly verify that the relevant code regions are triggered, that the # fuzzing throughput seems reasonable, etc. $ contrib/devtools/test_fuzzing_harnesses.sh '^transaction$' ``` `test_fuzzing_harnesses.sh` can be found in PR #17000. ACKs for top commit: MarcoFalke: ACK 5c2987636faa5bc175b37b81fd98ab48e576da0b Tree-SHA512: 2f422df795c9dca13c98209ca9ce0fe5a0d4a71fb052fa33d599cc9c9f1d637fee27d58d02ed17b956b3e3d40931cbc1367fc99aa2e882473e54d95dee04d6b7
2019-10-10Merge #17085: init: Change fallback locale to C.UTF-8Wladimir J. van der Laan
facb9a1315f97489a20eb0e969fdb14b5128ed2f init: Change fallback locale to C.UTF-8 (Wladimir J. van der Laan) Pull request description: Much of our code assumes file system UTF-8 support, and this is a more realistic guess for modern systems anyway than the default character set (which would be ASCII only). So change the assumed fallback locale (if no locale is defined by the user or OS) to `C.UTF-8`. related: https://github.com/bitcoin/bitcoin/issues/14948#issuecomment-488385462 ACKs for top commit: MarcoFalke: ACK facb9a1315f97489a20eb0e969fdb14b5128ed2f Tree-SHA512: 5075f9fe6791572d76ec38c58cd56f04ed8086c06a7d7f446d062dffc313c62466ba81f1a7d6b8c7e95791fcff82e4f76871c3534478fbfe5beb456dd8eea340
2019-10-10Merge #15756: gui: Add shortcuts for tab toolsJonas Schnelli
091747b46ecf06244ce2650028f1833b2e7c5062 gui: Add shortcuts for tab tools (João Barbosa) Pull request description: This makes accessing the RPC console very fast/easy. It also improves accessibility. <img width="234" alt="Screenshot 2019-10-02 at 01 30 53" src="https://user-images.githubusercontent.com/3534524/66009867-50104300-e4b4-11e9-90b5-6b8dc961a8a1.png"> ACKs for top commit: jonasschnelli: Tested ACK 091747b46ecf06244ce2650028f1833b2e7c5062 - this is an improvment. Further solutions to solve the interference between the console and the shortcuts (if possible) can be done upstream (Qt) or with another PR. Tree-SHA512: 6b8bc07e8a3a75e53c05f0fdb73458d75ef025f950569e885e655de53fdac8b91dcabfb1c6e643b1d23065420fa2701847c00cc1718bc188778640aefb5bcbd8
2019-10-10Merge #15023: GUI: Restore RPC Console to non-wallet tray icon menuJonas Schnelli
f33efa8ec535faae96b490c34978432799ca221f GUI: Restore RPC Console to non-wallet tray icon menu (Luke Dashjr) Pull request description: #14383 moved the debug window's menu position, to make it conditional on wallet mode. The rationale given was to match the behaviour of the 'Help' menu. #14573 replaced the 'Help' menu's conditional debug window with an unconditional list of items in the new 'Window' menu. This PR reverts the no-longer-applicable part of #14383, putting the debug window back on the tray menu unconditionally, and in the position it previously had. ACKs for top commit: jonasschnelli: Tested ACK f33efa8ec535faae96b490c34978432799ca221f - the debug window is also accessible from the menu (though directly the subpages which counts IMO). Tree-SHA512: c04a588fed37a8c31cb413baaa346e3c1c18724f9b40d64b8528c517f65290930d577bccf0a794180e968e84d3c52e9fa3fdc8a40bbc5fe3418eaddd73481271
2019-10-09test: add unit tests for Span-parsing helpersSebastian Falbesoner
tests the following four functions: - Const() [parse constant] - Func() [parse function] - Expr() [parse expression] - Split() [split up a string]
2019-10-09Merge #17087: build: Add variable printing target to Makefilesfanquake
181989f6c9427fc266dbdcc84cb60ac03e67cdb2 build: Add variable printing target to Makefiles (Carl Dong) Pull request description: ``` I kept finding myself needing these to debug our build system, since they are innocuous and are very helpful they probably belong in the codebase. Source: John Graham-Cumming https://www.cmcrossroads.com/article/printing-value-makefile-variable ``` ACKs for top commit: MarcoFalke: ACK 181989f6c9427fc266dbdcc84cb60ac03e67cdb2 fanquake: ACK 181989f6c9427fc266dbdcc84cb60ac03e67cdb2 - concise amount of useful code. Tested on macOS. Did not visit the link. Tree-SHA512: 2139621e68a499c7347663ca9dc04e166ea6280e05986c27858df0156016ef2f9461262464d70c601419384f43a4ae3bcc67dfc0a05dbeef64f08386ab429cd8
2019-10-09Merge #13728: lint: Run the CI lint stage on macMarcoFalke
cd82f75a431967030d25bcfe7c4aaefe5b345a99 lint: Install grep and git via brew on mac for --perl-regexp (Ben Woosley) eafa747ca5926d47f555820cecae0846ac01e20f lint: Fix shellcheck SC2155 (Ben Woosley) 615ff4e7dbe2c4fc888ef489cf71dbca25d1b568 lint: Run the linters against Mac OS on Travis (Ben Woosley) Pull request description: This helps ensure ongoing compatibility with macOS-distributed version of GNU bash. ACKs for top commit: MarcoFalke: ACK cd82f75a431967030d25bcfe7c4aaefe5b345a99 Tree-SHA512: 8d56d2303bbebedba8ea2291f4ab35b7fdf3245b7a4c3f04557eee4f19d83573798ad32facc92bfa060aaeb294e6d2c95e6d1c3b795fd7951dcf3aa1cccec107
2019-10-09Merge #15098: qt: Show addresses for "SendToSelf" transactionsfanquake
11fdfcf7f940fab48625d102e825a59c16ad4fbc Show addresses for "SendToSelf" transactions (Hennadii Stepanov) Pull request description: Fix #11464 Fix #12688 Ref: #11471 by jonasschnelli Note: change addresses are not recognized (ref: https://github.com/bitcoin/bitcoin/pull/11471#discussion_r180547041) Result: ![screenshot from 2019-01-04 09-06-12](https://user-images.githubusercontent.com/32963518/50677356-19c79500-1002-11e9-986c-999c366e4b2a.png) ACKs for top commit: jonasschnelli: Tested ACK 11fdfcf7f940fab48625d102e825a59c16ad4fbc fanquake: ACK 11fdfcf7f940fab48625d102e825a59c16ad4fbc - did the bare minimum testing. Tree-SHA512: 2678a2fdf017c376750c73fdc751b7838b0d3a970ba02e9032e4c5824494362672036c3ebf87b425aefdfe197fb952b70e4b7b6011077abb39a8bfc1ae14dfd2
2019-10-09Add missing fields in TransactionDescriptionString and othersAntoine Riard
Fields involvesWatchonly, generated, walletconflicts were missing in result description of listtransactions, listsinceblock, gettransaction Align getttransaction fields which were odd compare to other rpc helpers
2019-10-09MOVEONLY : move RPC wallets helpers to TransactionDescriptionStringAntoine Riard
2019-10-09build: Add variable printing target to MakefilesCarl Dong
I kept finding myself needing these to debug our build system, since they are innocuous and are very helpful they probably belong in the codebase. Source: John Graham-Cumming https://www.cmcrossroads.com/article/printing-value-makefile-variable
2019-10-09lint: Install grep and git via brew on mac for --perl-regexpBen Woosley
Particularly `--with-pcre2` is needed to run `git grep --perl-regexp` in `test/link/check-doc.py`
2019-10-09lint: Fix shellcheck SC2155Ben Woosley
Declare and assign separately to avoid masking return values. https://github.com/koalaman/shellcheck/wiki/SC2155
2019-10-09lint: Run the linters against Mac OS on TravisBen Woosley
This helps ensure ongoing compatibility with macOS-distributed version of GNU bash.
2019-10-09depends: pull upstream libdmg-hfsplus changesfanquake
2019-10-09depends: latest config.guess & config.subfanquake
2019-10-09Merge #17041: ci: Run tests on armfanquake
fa79dff624110992ca85c4abf6950e3ac0df72ef ci: Run tests on arm (MarcoFalke) Pull request description: Closes #16576 ACKs for top commit: laanwj: ACK fa79dff624110992ca85c4abf6950e3ac0df72ef fanquake: ACK fa79dff624110992ca85c4abf6950e3ac0df72ef - assuming Travis is green again. Tree-SHA512: c430db9852632567c6836981fb3c5922ccd7d3b6ab4a1c6405ffad75096b80433ba54785ffa4c5088c1a127689a945f0f86058a42de1d3efea3cc4967832d662
2019-10-09tests: Remove TRANSACTION_DESERIALIZE (replaced by transaction fuzzer)practicalswift
2019-10-09tests: Add fuzzing harness for CheckTransaction(...), IsStandardTx(...) and ↵practicalswift
other CTransaction related functions
2019-10-09Merge #17081: doc: fix Makefile target in benchmarking.mdfanquake
a54ab2104c82c41d17ca603999a9a03161eefc9e [doc] fix Makefile target in benchmarking.md (Sebastian Falbesoner) Pull request description: While the resulting binary is called `bench_bitcoin`, the Makefile target is named `bitcoin_bench` (see `src/Makefile.bench.include`) ACKs for top commit: fanquake: ACK a54ab2104c82c41d17ca603999a9a03161eefc9e - Tested on macOS and Debian 9.9, as this only [seemed to work there](https://github.com/bitcoin/bitcoin/pull/16536#discussion_r310366868) when these docs were added. Tree-SHA512: bcf8d48ccba488f0533111a3be57ddc6c948b3a38beed129635e1c7e0b4608bc9ddf625e8469606bb31d4cedf3341c443564a197d6b1ab5268a9ed44ed5018a3
2019-10-09ci: Run tests on armMarcoFalke
2019-10-09Merge #16821: Fix bug where duplicate PSBT keys are acceptedfanquake
9743432034586385cfef87df4b377c255ed0cba8 Fix bug where duplicate PSBT keys are accepted (John L. Jegutanis) Pull request description: As per the BIP 174 spec a PSBT key cannot be duplicated, however the current code accepts key duplication. The PSBT key/value entries can be duplicated when the value is `empty()` or `IsNull()` for `CScript` or `CTxOut` respectively and if those key/value entries are serialized before the non-empty ones. For example, the following PSBT, included in the test vectors, contains a duplicate field: ``` // magic 70736274ff // global tx //// key 0100 //// value 2a02000000000140420f000000000017a9146e91b72d5593e7d4391e2ff44e91e985c31641f08700000000 //// separator 00 // no inputs // outputs //// key PSBT_OUT_WITNESSSCRIPT 0101 //// value (empty script) 00 //// key PSBT_OUT_WITNESSSCRIPT (same as the above) 0101 //// value (an OP_RETURN script) 016a //// separator 00 ``` ACKs for top commit: achow101: ACK 9743432034586385cfef87df4b377c255ed0cba8 instagibbs: code review ACK https://github.com/bitcoin/bitcoin/pull/16821/commits/9743432034586385cfef87df4b377c255ed0cba8 Tree-SHA512: 34f4b34c8e6561c6a6ab745cdd319f6687eac6f7cecc735c94035eeca8c5157e17a27f2ae853dbaa6634fcd5a8f4e1c6cc13d1ebd7e563459665d72bb147cc1e
2019-10-09Merge #17084: build: Fix #include sys/poll.h to just poll.h (without sys/)Wladimir J. van der Laan
4de0bde7bc546638cbbbb8bc4eb0d840d81cb953 build: Fix #include sys/poll.h to just poll.h (without sys/) (Daki Carnhof) Pull request description: http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html http://man7.org/linux/man-pages/man2/poll.2.html ACKs for top commit: Empact: ACK 4de0bde7bc546638cbbbb8bc4eb0d840d81cb953 Tree-SHA512: 01c22a62b5bc327b3a46f721312af2283f4e09cb314bc7a3f82dbc1f4eda6f018a394559c4370fee895532e768b8a9152783979d61cb8a0ed86de069f7c150fb
2019-10-09init: Change fallback locale to C.UTF-8Wladimir J. van der Laan
Much of our code assumes UTF-8 support, and this is a more realistic guess for modern systems anyway than the default character set (which would be ASCII only). So change the assumed fallback locale (if no locale is defined by the user or OS) to `C.UTF-8`.
2019-10-09build: Fix #include sys/poll.h to just poll.h (without sys/)Daki Carnhof
http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html http://man7.org/linux/man-pages/man2/poll.2.html
2019-10-09Merge #15437: p2p: Remove BIP61 reject messagesWladimir J. van der Laan
fa25f43ac5692082dba3f90456c501eb08f1b75c p2p: Remove BIP61 reject messages (MarcoFalke) Pull request description: Reject messages (BIP 61) appear in the following settings: * Parsing of reject messages (in case `-debug=net` is set, off by default). This has only been used for a single `LogPrint` call for several releases now. Such logging is completely meaningless to us and should thus be removed. * The sending of reject messages (in case `-enablebip61` is set, off by default). This can be used to debug a node that is under our control. Instead of hacking this debugging into the p2p protocol, it could be more easily achieved by parsing the debug log. (Use `-printtoconsole` to have it as stream, or read from the `debug.log` file like our python function `assert_debug_log` in the test framework does) Having to maintain all of this logic and code to accommodate debugging, which can be achieved by other means a lot easier, is a burden. It makes review on net processing changes a lot harder, since the reject message logic has to be carried around without introducing any errors or DOS vectors. ACKs for top commit: jnewbery: utACK fa25f43ac5692082dba3f90456c501eb08f1b75c laanwj: I'm still not 100% convinced that I like getting rid of BIP61 conceptually, but apparently everyone wants it, code review ACK fa25f43ac5692082dba3f90456c501eb08f1b75c. ryanofsky: Code review ACK fa25f43ac5692082dba3f90456c501eb08f1b75c Tree-SHA512: daf55254202925e56be3d6cfb3c1c804e7a82cecb1dd1e5bd7b472bae989fd68ac4f21ec53fc46751353056fd645f7f877bebcb0b40920257991423a3d99e0be
2019-10-09Merge #17074: build: Added double quotesWladimir J. van der Laan
dd85166b6c8200265ff222226305e6823149de19 Added double quotes (Ava Barron) Pull request description: Added double quotes to prevent globbing and word splitting. ACKs for top commit: laanwj: ~~ACK dd85166b6c8200265ff222226305e6823149de19~~ practicalswift: ACK dd85166b6c8200265ff222226305e6823149de19 -- diff looks correct hebasto: ACK dd85166b6c8200265ff222226305e6823149de19, tested locally on Linux Mint 19.2. Tree-SHA512: 503ed8c4a5dafd3868465fbb66b13e15862c114573609f681b69259703e76fe85260b782c45a1e0780b7d3fdf34d8fd2f627b59f4013b99eeb1b771a652e7b10
2019-10-09Merge #17029: gitian: Various improvements for Windows descriptorWladimir J. van der Laan
9d1f971c7554bd5eb80792a1b9a692e0145ed516 gitian: Put things in the right place to begin with (Carl Dong) 71949a97a7d050d4cd511731062a9ffe471ac438 gitian: Eliminate rename dependency (Carl Dong) 999a9a5f5b4165dbdcb032c8d58c0ac1085ddcd1 gitian: Smaller diff with gitian-linux.yml (Carl Dong) c4a3c25ba11b20871699e570fc7b98a7b8472503 gitian: Fix README inclusion in archives (Carl Dong) 93cb974980c578c459c15fd28e565c9722a1627d gitian: Use split-debug.sh for Win builds (Carl Dong) Pull request description: It would seem that our `gitian-win.yml` has not been keeping up with `gitian-linux.yml`, this PR: 1. Minimizes the diff size between `gitian-{win,linux}.yml` 2. Eliminates the `rename` dependency ACKs for top commit: laanwj: ACK 9d1f971c7554bd5eb80792a1b9a692e0145ed516 Tree-SHA512: 84ed47c685e12d0064c02811907ae3d0fd3c47db8773d497dcc38f0defbfb3040fd82899fb026cf355f229b906d05a1c8038a95642bb90d044afbc2e0b239af2