test: introduce ExtendedPrivateKey and ExtendedPublicKey classes#35543
Conversation
…n types Passing a version in the byte form is allowed now in addition to the integral version type. This will be helpful in the next commit.
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code Coverage & BenchmarksFor details see: https://corecheck.dev/bitcoin/bitcoin/pulls/35543. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please copy-paste ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
|
Forced-pushed to fix the failing lint CI job. |
9518d1b to
ea640a3
Compare
|
Force pushed to use the ExtendedPrivateKey in more functional tests. |
pseudoramdom
left a comment
There was a problem hiding this comment.
Concept ACK-ish on reducing hardcoded xpub/xprv blobs in the functional tests.
Review d583a35
Adding a custom BIP32 implementation to the test framework seems like something that'll require ongoing maintenance to adhere to the BIP and handle edge cases.
It is good that this is backed by BIP32 test vectors, but if this helper a bug, it could make tests pass because the test data and expectations may drift together.
That said, I'd feel better if the tests use deterministic seeds instead of generating new random keys, so that failures are reproducible and expected outputs can remain pinned
These are just basic utilities that are needed for the functional tests. Not everything from the BIP needs to be reimplemented. BIP32 is more than a decade old and has been in the deployed stage for quite a while. I don't see why ongoing maintenance would be needed here. These extended classes act as thin wrappers over the existing ECKey and ECPubKey classes in key.py.
I don't fully understand this comment. I believe the BIP32 tests vectors in the unit test should be sufficient to uncover a bug in the implementation. |
0a432e7 to
e56196c
Compare
Using these classes allows the developers to dynamically create xprvs and xpubs so that they don't need to hardcode such long keys in the tests that most of the times clutter the tests and make them difficult to update. Co-authored-by: w0xlt <94266259+w0xlt@users.noreply.github.com>
This avoids hardcoding xprvs and xpubs in the test. Also use key's parent fingerprint and derivation path while creating descriptors so that all of it is self-documenting and not dependent on hardcoded values, making them easy to read and update. Also use descsum_create function more to avoid hardcoding the descriptor checksum.
Thanks for highlighting, I think I got them all in that test now. |
|
ACK 8791c47 |
…xtendedPublicKey classes b13711f test: use ExtendedPrivateKey in wallet_taproot.py (rkrux) 2f31828 test: use ExtendedPrivateKey in wallet_listdescriptors.py (rkrux) f1f2a9b test: use ExtendedPrivateKey in wallet_send.py (rkrux) 9816aff test: use ExtendedPrivateKey in wallet_keypool.py (rkrux) fad5358 test: use ExtendedPrivateKey in wallet_fundrawtransaction.py (rkrux) c049194 test: use ExtendedPrivateKey in wallet_descriptor.py (rkrux) 03cdf5c test: use ExtendedPrivateKey in wallet_createwallet.py (rkrux) 07e9108 test: use ExtendedPrivateKey in wallet_bumpfee.py (rkrux) 8e1fc1a test: use ExtendedPrivateKey in feature_notifications.py (rkrux) 59751ea test: use ExtendedPrivateKey in wallet_importdescriptors.py (rkrux) 701f557 test: add extendedkey.py unit tests by using BIP32 test vectors (rkrux) bb8699c test: introduce ExtendedPrivateKey and ExtendedPublicKey classes (rkrux) d93064a test: generalise byte_to_base58 utility function to allow more version types (rkrux) Pull request description: Many a times there has been a need to come up with dynamic xprvs and xpubs in the functional tests, but the lack of code that creates them dynamically has led to the presence of several hardcoded keys in the testing framework. This is not developer friendly and not self-documenting, clutters the testing code, and makes it difficult to update the tests in the future. This PR introduces two utility classes ExtendedPrivateKey and ExtendedPublicKey that allows the developer to create them on the fly to be used in the tests. I have intentionally not introduced any library for this purpose and have reused the existing libraries and functions in the framework. The implementation is supposed to provide basic functionality for creating xprv randomly or from a fixed seed, creating corresponding xpub, and deriving child xprvs and xpubs at custom derivation paths. I've updated many tests to show how these can be used, there are more tests as well that can be updated in the future to completely remove such non-deterministic hardcoded keys. ACKs for top commit: achow101: ACK b13711f w0xlt: ACK b13711f Tree-SHA512: f8ec4e09eaa6cc44b0f1c9a91337e570b12fb882c258be89b470de1a8cecf9d2fd40d9f02ee739dcbf639462ea7710aa145a3726f0f537f5a1f1e7772e5b019d
2a9e35d293b Merge bitcoin/bitcoin#35588: scripted-diff: Rename `Sock::{RECV,SEND,ERR}` 41ceea400e8 scripted-diff: Rename `StatusLevel::{INFO,WARN,ERR}` f395acdeeea scripted-diff: Rename `Sock::{RECV,SEND,ERR}` 7a74f652935 Merge bitcoin/bitcoin#35536: fuzz: share a single mocked steady clock across FuzzedSock instances e1290ce7f74 Merge bitcoin/bitcoin#35543: test: introduce ExtendedPrivateKey and ExtendedPublicKey classes 7ac25c91771 util, refactor: Rename local `ERR` in `Sock::Accept` ea9afb61a1c Merge bitcoin/bitcoin#35602: doc: Clarify build docs about `pkgconf` / `pkg-config` requirements 672eedc46b0 Merge bitcoin/bitcoin#35220: fuzz: connman: strengthen assertions and extend coverage 0e5c718d8af Merge bitcoin/bitcoin#35506: test: ensure group data cluster pointers are live 93012d7ff91 Merge bitcoin/bitcoin#35601: wallet: remove experimental warning from send and sendall 8ebfff0f88b doc: add send RPC release note fb8a1038867 doc: Clarify build docs about `pkgconf` / `pkg-config` requirements 5884f5a4fa9 wallet: remove experimental warning from send RPCs 7b84e5106c3 Merge bitcoin/bitcoin#35595: ci: remove some packages from Chimera job 58560c281d0 ci: remove some packages from Chimera job 295ce6f45c8 Merge bitcoin/bitcoin#35576: test: raise `feature_reindex` RPC timeout 633044f1436 Merge bitcoin/bitcoin#35266: rpc, wallet: add an option to not load the wallet after migrating d6269e2a903 Merge bitcoin/bitcoin#35594: fuzz: cover async chainstate compaction d84fc352cbc Merge bitcoin/bitcoin#35550: net_processing: fix BIP152 first integer interpretation 703a671fbc2 fuzz: compact coins view db during fuzzing 0868c85fd57 refactor: rename async coin compaction fafff08e1fe Merge bitcoin/bitcoin#35403: mining: pr 33966 followups (disentangle miner startup defaults) e12db0902be Merge bitcoin/bitcoin#34411: Full Libevent removal fa8e4700ba9 Merge bitcoin/bitcoin#35424: doc, wallet: align external signer documentation, reject sendtoaddress/sendmany 6fa4132298a fuzz: share a single mocked steady clock across FuzzedSock instances 8791c4764ca test: use ExtendedPrivateKey in wallet_taproot.py 89ceafafb9f test: use ExtendedPrivateKey in wallet_listdescriptors.py bbfffcab588 test: use ExtendedPrivateKey in wallet_send.py 2ab6e590f73 test: use ExtendedPrivateKey in wallet_keypool.py 9e20118720d test: use ExtendedPrivateKey in wallet_fundrawtransaction.py 06af0cddbb9 test: use ExtendedPrivateKey in wallet_descriptor.py 4100fac20e8 test: use ExtendedPrivateKey in wallet_createwallet.py ff3f6def9a5 test: use ExtendedPrivateKey in wallet_bumpfee.py 003f2a01f63 test: use ExtendedPrivateKey in feature_notifications.py f988e6d6e64 test: use ExtendedPrivateKey in wallet_importdescriptors.py 146b3adfaa1 doc: remove libevent 96d7f55f1df vcpkg: remove libevent 0443943dc03 ci: remove libevent a0ca249f3fc depends: remove libevent 35d2d067978 cmake: remove libevent 6b58eb6d514 Merge bitcoin/bitcoin#35070: validation: prevent FindMostWorkChain from causing UB 0cdd817a82a add release note 517d37ce3eb test: tests wallet migration with load_wallet disabled b98dd63da7b rpc: Add load_wallet argument to migratewallet RPC 4acd063ba6f wallet: make loading the wallet after migrating optional 6d8e15dff01 Merge bitcoin/bitcoin#35571: ci: use warp docker buildkit cache 33e3c7524ff Merge bitcoin/bitcoin#35521: fuzz: Speed up `dbwrapper_concurrent_reads` harness 1a3cfdf1b7a fuzz: connman: cover AddLocalServices/RemoveLocalServices c507fb30634 fuzz: connman: add outbound-bytes invariants 4a6fce43ead fuzz: connman: add AddNode/RemoveAddedNode invariants 9c20859b5f0 Merge bitcoin/bitcoin#35182: Replace libevent with our own HTTP and socket-handling implementation 48df0939e72 fuzz: Remove unnecessary thread pool mutexes a4c3b003f87 fuzz: Speed up dbwrapper_concurrent_reads harness 61020b36c5f doc: add release note for #35182 replace libevent HTTP server 39e9099da59 logging: deprecate libevent category 8c1eea0777c http: remove libevent usage from this subsystem e427c227fa3 fuzz: switch http_libevent::HTTPRequest to http_bitcoin::HTTPRequest 21c7542cf88 http: switch servers from libevent to bitcoin cbb8d1fb33a HTTPServer: disconnect after idle timeout (-rpcservertimeout) e5f242eef3a HTTPServer: implement control methods to match legacy API 2ca645c2e4d refactor: split HTTPBindAddresses into config parse and libevent setup fec6b6bca81 refactor: split http_request_cb into libevent callback and dispatch f946ff5a0bb Add helper methods to HTTPRequest to match original API dd11b5e01ba define HTTP request methods at module level outside of class 7ee7df988ef HTTPServer: use a queue to pipeline requests from each connected client 5ef1b80a09c Allow http workers to send data optimistically as an optimization a69bb9e1e6d HTTPServer: disconnect clients cdf71998e55 HTTPServer: compose and send replies to connected clients 6734bcdeff4 HTTPserver: support "chunked" Transfer-Encoding 80e1cfe5a25 HTTPServer: read requests from connected clients 3c5226ab96a HTTPServer: start an I/O loop in a new thread and accept connections 4ef4ebdc0c8 http: Introduce HTTPRemoteClient class a85286c5c71 HTTPServer: generate sequential Ids for each newly accepted connection 5a3aa1af285 HTTPServer: implement and test AcceptConnection() f5bc018948f http: Introduce HTTPServer class and implement binding to listening socket 9463e98781d http: Implement HTTPRequest class ad50aa4a0fa http: Implement HTTPResponse class 68b5d289d19 http: Implement HTTPHeaders class 89c54ae4cbc http: enclose libevent-dependent code in a namespace 5aa3629b489 util/string: LineReader should only trim \r or \r\n 0cdbb191b50 util/string: use string_view in LineReader 881d4b6c75c test: cover common HTTP attacks and common malformed requests 08a25a72313 Merge bitcoin/bitcoin#35465: coins: compact chainstate regularly 27262a28841 Merge bitcoin/bitcoin#35559: scripted-diff: Rename SteadyClockContext to FakeSteadyClock 9e6546c517c test: raise reindex mining RPC timeout ea626c268ad Merge bitcoin/bitcoin#35560: lint: Require scripted-diff script to succeed (take 2) c0922f78af9 Merge bitcoin/bitcoin#35567: depends: latest config.guess & config.sub b552f1713ad ci: use warp docker buildkit cache 1a2523e901a Merge bitcoin/bitcoin#34937: Fix startup failure with RLIM_INFINITY fd limits 5883ba77ead Merge bitcoin/bitcoin#34764: rpc: replace ELISION references with explicit result fields f6939fd13d5 Merge bitcoin/bitcoin#35564: Update secp256k1 subtree to latest master 61c754ae994 Merge bitcoin/bitcoin#35512: wallet: move fAbortRescan reset into WalletRescanReserver reserve function 794befd4b06 Merge bitcoin/bitcoin#35384: util: Check write failures before renaming settings.json d2a03d50acb test: add extendedkey.py unit tests by using BIP32 test vectors afdb3780821 test: introduce ExtendedPrivateKey and ExtendedPublicKey classes 8f0354995b6 depends: latest config.guess & config.sub 0e95e1abdb4 Merge bitcoin/bitcoin#35437: migrate: Handle HD chains that have identical seeds but different IDs fab2874269c lint: Require scripted-diff script to succeed 9caae506829 Update secp256k1 subtree to latest upstream 1f3f0a4e220 Squashed 'src/secp256k1/' changes from 7262adb4b4..bd0287d650 855a3fee882 scripted-diff: Rename SteadyClockContext to FakeSteadyClock 341360964a6 Merge bitcoin/bitcoin#35549: argsman: Fix duplicate option assertion to allow HIDDEN category registration abc33ff043f test: announce field must be 0 or 1 in sendcmpct 2d0dce0af54 net_processing: fix BIP152 first integer interpretation f963f2b6755 argsman: allow duplicate registration between HIDDEN and other categories 0654511e1b9 util: Check write failures before renaming settings.json 1e169a8a6cb Merge bitcoin/bitcoin#35548: doc: updated ci docs to reflect removal of REPO_USE_WARP_RUNNERS flag f570d7cd538 Merge bitcoin/bitcoin#35547: lint: Require scripted-diff script to succeed 744d4950190 ci: updated docs to reflect removal of REPO_USE_WARP_RUNNERS flag 2a36d6a5614 lint: Require scripted-diff script to succeed 0f156c16e80 Merge bitcoin/bitcoin#35470: argsman: Prevent duplicate option registration across categories 09ba59ff6b9 Merge bitcoin/bitcoin#35540: test: descriptor: bare multisig at TOP level with exactly 3 pubkeys is allowed 0e475098cdf Merge bitcoin/bitcoin#35463: depends: Drop trailing slash from `CMAKE_INSTALL_LIBDIR` 0136e17c0a9 Merge bitcoin/bitcoin#35546: ci: Use GCC consistently in i686 task fae482b4e6f ci: Use GCC consistently in i686 task 32df86f1d80 argsman: Prevent duplicate option registration across categories a30ef6b91f7 Merge bitcoin/bitcoin#35396: ci: Rewrite broken wrap-valgrind.sh to .py 4dbaa7cc65b test: generalise byte_to_base58 utility function to allow more version types 55a4c946f67 test: descriptor: bare multisig at TOP level with 3 pubkeys is allowed 9460090f1ac Merge bitcoin/bitcoin#35520: lint: remove redundant test suite uniqueness check 61a03054222 Merge bitcoin/bitcoin#35526: ci: bump MSan fuzz timeout from 150 to 180 minutes 6d5c1fb3ee6 Merge bitcoin/bitcoin#35173: util: shorten thread names to avoid Linux truncation d3e40af2597 index: shorten indexer thread names d69c46292dc util: zero-pad thread number suffixes 41e531c4abd util: shorten `ThreadPool` worker names 92d812446e8 Merge bitcoin/bitcoin#35538: test: make TestChain100Setup's m_clock timestamp more readable 011ad6ea3c4 Merge bitcoin/bitcoin#35441: ci: inline runner selection 58cc2a0453d test: make TestChain100Setup's m_clock timestamp more readable 6e93ef4623a Merge bitcoin/bitcoin#35503: guix: CMake-related improvements f655d887f09 Merge bitcoin/bitcoin#35535: iwyu: Fix warning in `bench/pool.cpp` 059edf19089 guix: Fix "Ignoring empty string" CMake warning for non-Linux hosts 2d86083fd47 guix: Drop redundant CMake `--verbose` options d92a20b310e iwyu: Fix warning in `bench/pool.cpp` 6921f5df011 Merge bitcoin/bitcoin#35414: iwyu: Fix warnings in `src/bench` and treat them as error 355fffb8ccf Merge bitcoin/bitcoin#35528: test: doc: remove `--perf` profiling from functional test framework 46927cf82c4 Merge bitcoin/bitcoin#35504: test/doc: Follow-up nits for #35269 6bc2d996b00 Merge bitcoin/bitcoin#35499: guix: add `package.sh` 87d099d5f81 Merge bitcoin/bitcoin#35519: rpc: tighten setmocktime upper bound to UINT32_MAX 04eccc2be5a Merge bitcoin/bitcoin#35043: refactor: Properly return from ThreadSafeQuestion signal + btcsignals follow-ups 2cfb10b668f Merge bitcoin/bitcoin#35498: net: move cs_main up in FetchBlock to fix rpc assert crash 9fae7e98865 test: doc: remove `--perf` profiling from functional test framework 17353f9d977 ci: bump MSan fuzz timeout debac5f2cd1 Merge bitcoin/bitcoin#35523: Revert "build: exclude mptest target from compile commands" 406c2348ddb rpc: tighten setmocktime upper bound to UINT32_MAX d186c390f4c Revert "build: exclude mptest target from compile commands" 2447385f47a rpc: remove unused RPCResult::Type::ELISION 7a851180058 rpc: expand decodepsbt output script with explicit fields 88e2a6ae89a rpc: expand getaddressinfo embedded with explicit fields a9f9e7d17e2 rpc: extract fee estimate result helpers 8a615a88005 rpc: extract ListSinceBlockTxFields() helper 372ac283ac6 rpc: extend TxDoc() for getblock verbosity 2/3 0380a1c46bf rpc: extend TxDoc() for getrawtransaction verbosity 2 946feb3f1fa test: remove redundant test suite uniqueness lint b3371029dc5 doc: use signing pubkey instead of aggregate xonly key 4c99ed10766 Merge bitcoin/bitcoin#35418: build: exclude mptest target from compile commands 9bfdde74b5a guix: add package.sh 142e86a65c8 Merge bitcoin/bitcoin#35458: qa: Avoid extra tracebacks when exception is raised 216b50c9a6c Merge bitcoin/bitcoin#35179: test: Add importdescriptors rpc error coverage 77772e7a308 undo "ui: Compile boost:signals2 only once" fa45783d55b mv btcsignals.h to src/util fa4903db8a3 refactor: Make scoped_connection ctor explicit fa1bc1fe515 test: Check btcsignals determinism in thread_safety test case fa86e5dba94 refactor: Properly return from ThreadSafeQuestion signal fa4badc0fd4 refactor: Make ThreadSafeMessageBox signal void faad9d64348 refactor: Mark btcsignals operator [[nodiscard]] 2fe34808faa wallet: reject sendtoaddress and sendmany for external signers 394e473d42b coins: compact chainstate in background aa021b26f39 validation: randomly compact chainstate bd5a32f7db2 doc: add taproot descriptor to getdescriptors example 7131c829378 doc: clarify which commands receive --chain, --fingerprint and --stdin 4fdd4d8d29f doc: replace stale signtransaction wording with current signtx flow fab92257fe6 doc, rpc: document enumerate model field and fingerprint deduplication b10889d1075 coins: test chainstate flush baseline c117bbc467f Merge bitcoin/bitcoin#35514: ci: Alpine 3.24 df9eb72b129 test: ensure group data cluster pointers are live 3be1115ade3 ci: Alpine 3.24 3b712b9d024 Merge bitcoin/bitcoin#35120: btcsignals: delete broken scoped_connection move assignment 2818a171c00 test: add abortscan unit test bc30e951632 wallet: move fAbortRescan reset into WalletRescanReserver reserve() b83a999b144 btcsignals: delete broken scoped_connection move assignment 46d0e21d758 Merge bitcoin/bitcoin#35288: ci: Bump toward Ubuntu 26.04 d0b8d445fb7 Merge bitcoin/bitcoin#35455: fuzz: improve dbwrapper_concurrent_reads performance d6359937bfa validation: check invariants when inserting into m_blocks_unlinked 0852925bd8d test/doc: remove misleading comment and improve tests ca4a3802819 test: add coverage for UB caused by FindMostWorkChain c787b3b99b6 validation: avoid duplicates in m_blocks_unlinked e0fb41fd2a1 Merge bitcoin/bitcoin#35489: fuzz: test non-max descriptor satisfaction weight 50e9f2ad336 Merge bitcoin/bitcoin#35497: test: FakeNodeClock follow-ups in unit tests 809f909e582 Merge bitcoin/bitcoin#35451: lint: Grep for `AUTO` test suites in file names 530e1f5290c Merge bitcoin/bitcoin#34636: node: allocate index caches proportional to usage patterns 8598ec22045 Merge bitcoin/bitcoin#35221: BIP 434 Support: Peer feature negotiation 526aae3768d fuzz: test non-max descriptor satisfaction weight 472b950b7f7 qa: Use custom assert_greater_than() over naked assert 1ce9e262395 fuzz: improve dbwrapper_concurrent_reads performance fb47793b99f Merge bitcoin/bitcoin#35168: validation: Don't add pruned blocks to `m_blocks_unlinked` on startup 53b836cdced Merge bitcoin/bitcoin#34028: p2p: Prevent integer overflow in LocalServiceInfo::nScore 3bbc3c67ad4 Merge bitcoin/bitcoin#35101: refactor: disable default std::hash for CTransactionRef 288018131ec Merge bitcoin/bitcoin#35254: crypto: cleanse HMAC stack buffers after use and ChainCode c85e04f0791 Merge bitcoin/bitcoin#35478: fuzz: reset the mockable steady clock between iterations ed11dd6a5fe test: add coverage for importdescriptors when manually interrupting a wallet rescan d90d7f0a55d test: add coverage for importdescriptors errors when using assumeutxo ad388bf2541 test: add coverage for importdescriptors while wallet is rescanning ddceb4e6038 test: updated different_key to be different_field and also used a single assert_equal with 3 args instead of multiple assert_equals 6751a323c01 iwyu: Fix warnings in `src/bench` and treat them as error fab52281f72 refactor: Drop unused includes after iwyu CI bump fa4774d032d ci: Bump APT_LLVM_V-based task configs to Ubuntu 26.04 fa1414a36a8 ci: Debian Trixie -> Ubuntu 26.04 359680b74db net: move cs_main up in FetchBlock to fix rpc assert crash 4b91316643f Merge bitcoin/bitcoin#35459: guix: add setup.sh fa03852e9cc test: Use SteadyClockContext in pcp_tests fa3716c439a test: Use FakeNodeClock in more places fae9623c8db test: Add FakeNodeClock m_clock to TestChain100Setup a6ed29d6c2f bench, refactor: Use `std::string_view` for `BenchRunner` ctor parameter bcbf5bae164 Merge bitcoin/bitcoin#35114: test: NodeClockContext follow-ups 543c00f47dd Merge bitcoin/bitcoin#35448: ci: don't build libunwind in msan 17ed7f50609 Merge bitcoin/bitcoin#35297: p2p: Release m_peer_mutex early in InitiateTxBroadcastToAll 087f02c929c ci: skip libunwind runtime in LLVM build 6d47f7cc6fc ci: use llvm 22.1.7 9868e1bf651 Merge bitcoin/bitcoin#35487: scripted-diff: Rename UNIQUE_NAME to BITCOIN_UNIQUE_NAME 577999c2ce9 Merge bitcoin/bitcoin#35462: test: remove unnecessary nodes from wallet_multisig_descriptor_psbt e36f5d5d0b6 Merge bitcoin/bitcoin#35456: test: Perform full reset of CoinsResult in order to avoid passing 21M BTC 1d3bc816c39 Merge bitcoin/bitcoin#35267: rpc: make getprivatebroadcastinfo and abortprivatebroadcast fail if privatebroadcast is not enabled fba713a28c8 scripted-diff: Rename UNIQUE_NAME to BITCOIN_UNIQUE_NAME 1aafd490770 Merge bitcoin/bitcoin#35359: blockstorage: Remove cs_LastBlockFile recursive mutex 84d07e471cb test: add coverage for importdescriptor with an encrypted wallet ec6cf49b91f blockstorage: Remove cs_LastBlockFile recursive mutex 35a814a045f test: Limit clocks to one active instance 55e402ffef2 scripted-diff: Rename NodeClockContext to FakeNodeClock 1e9546fcf4b test: Use NodeClockContext in more call sites 758fea59a89 test: Drop ++ from NodeClockContext default constructor 7c2ec3949aa test: Enter mocktime before peer creation in block_relay_only_eviction 0bfc5e4fff3 add release notes fdc9fc1df26 test: check getprivatebroadcast and abortprivatebroadcast throw if the node is running without -privatebroadcast set 7b821ef9b75 rpc: getprivatebroadcastinfo and abortprivatebroadcast throw if -privatebroadcast is disabled 5f33da9aa30 Merge bitcoin/bitcoin#35481: fuzz: fix dead HD keypaths (de)serialization round-trip 5deb053a75f fuzz: fix dead HD keypaths (de)serialization round-trip 19b32a2e180 fuzz: reset the mockable steady clock between iterations 27472a542c6 Merge bitcoin/bitcoin#35466: ci: run ipc functional tests in arm job f6bdbcf79d9 lint: Grep for `AUTO` test suites in file names b2fbd5b5dda ci: run ipc functional tests in arm job 44fc3a290d6 rpc: introduce HelpElision variant and ElideGroup helper 2cf2b22ff1b depends: Drop trailing slash from `CMAKE_INSTALL_LIBDIR` da74ff9ca49 test: Add functional test for BIP434 01b8a117d2c test_framework: BIP 434 support 6a129983c9b BIP434: FEATURE message support 3210fc477ac net: Add AdvertisedVersion() for protocol version advertised to a peer 5b65e312701 test: remove two unnecessary nodes from the test 94ed45427c5 serialize: add LimitedVectorFormatter 1b3f776ebbc serialize: string_view serialization 47da4f9b716 Merge bitcoin/bitcoin#35410: net: use the proxy if overriden when doing v2->v1 reconnections 54de023a7c9 guix: add setup.sh 0cac23b66e1 Merge bitcoin/bitcoin#35431: test: pass -datadir to bitcoin-cli -ipcconnect check f42226d526e qa: Silence socket.timeout exception when substituting it for a JSONRPCException 659671ac3db qa: Avoid cleanup when exception is raised e01741e6ac1 Merge bitcoin/bitcoin#35446: ci: use pyzmq over zmq 628816bc551 Merge bitcoin/bitcoin#35447: ci: use warpbuild cache for docker buildkit cache d0b76c7f3e6 rpc+bitcoin-tx: Specify correct type for ParseFixedPoint() a5050ddb6bb Merge bitcoin/bitcoin#32150: coinselection: Optimize BnB exploration 082bb1a1047 Merge bitcoin/bitcoin#35335: Make deployment configuration available outside of regtest in unit tests 43ca54ca000 refactor(test): Make CAmount arg explicit for BuildCreditingTransaction() b5e91e946c8 wallet: Remove CoinsResult::Clear() 5bd990a3ddb Merge bitcoin/bitcoin#34779: BIP 323: reserve version bits 5-28 as extra nonce space 2189a6f5f22 p2p: Saturate LocalServiceInfo::nScore updates at INT_MAX 82901981bfb ci: use Warp cache for Docker layers 7c2718a4b82 Merge bitcoin/bitcoin#34767: Bugfix: GUI/Intro: Handle errors from SelectParams the same as if during InitConfig 4a6d1458b4b ci: add pyzmq to msan job c21b58e2635 ci: use pyzmq over zmq b28cf409a13 Merge bitcoin/bitcoin#34866: fuzz: target concurrent leveldb reads de92208c2b5 migrate: Handle HD chains that have identical seeds but different IDs 2669019fe82 Merge bitcoin/bitcoin#35269: musig: Include pubnonce in session id 7735c134887 test: run bitcoin-cli -ipcconnect check under valgrind with -datadir 8cb8653a223 fuzz: target concurrent leveldb reads 6609088fe67 fuzz: extract ConsumeDBParams helper 61d1c78ed41 Merge bitcoin/bitcoin#35192: wallet: unfriend LegacyDataSPKM and DescriptorScriptPubKeyMan 726e196ef26 ci: inline runner selection 2e0a36c3606 Merge bitcoin/bitcoin#35439: test: Improve loopback address check in `rpc_bind.py` 53373d07c3e Merge bitcoin/bitcoin#35430: ci: use warp caching on warp runners 4731049ba4f build: exclude mptest target from compile commands 255f7c720f1 Merge bitcoin/bitcoin#35404: wallet: allow anti-fee-sniping in sendall RPC while not relying on RBF default c8b8c275fa5 test: Improve loopback address check in `rcp_bind.py` 654a5223af5 Merge bitcoin/bitcoin#33661: test: Add test on skip heights in CBlockIndex 19e45334bcf Merge bitcoin/bitcoin#35312: kernel: assert invalid buffer preconditions in `btck_*_create` functions 107d4178d91 versionbits: update VersionBitsCache doc comment to match current behaviour 94e3ac0b215 doc: release notes and bips doc update for #34779 1d5240574a1 qa: test we don't warn for ignored unknown version bits deployments f802edf57cc versionbits: Limit live activation params and activation warnings per BIP323 2ce4ae7d8f0 ci: Add dynamic cache switching to warp cache fbe628756cc Merge bitcoin/bitcoin#35131: guix, refactor: Minor script cleanups and improvements bf0d257c11b net: un-default the OpenNetworkConnection()'s proxy_override argument 5a3756d150f test: add a regression test for private broadcast v1 retries 34ac53457fd Merge bitcoin/bitcoin#35402: doc: Compress doc/build-unix.md dependency package names into table 10dfdd4b9fa Merge bitcoin/bitcoin#35379: test: Fix feature_dbcrash.py --usecli error 214ad1761b4 Merge bitcoin/bitcoin#35408: ci: 35378 followups a3dc44c0855 Merge bitcoin/bitcoin#35385: test: restore JSONRPCException error format 9c1fcaca5cb wallet, test: fix sendall anti-fee-sniping when locktime is not specified 570a6276400 kernel: assert invalid buffer preconditions in `btck_*_create` functions ac09260982a test: restore JSONRPCException error format ab35a028ede test: make reusable filling of a node's addrman 2333be9cbc5 test: make reusable starting a standalone P2P listener 2ffa81fac40 test: make reusable SOCKS5 server starting 6c525c2ec13 wallet: unfriend LegacyDataSPKM and DescriptorScriptPubKeyMan classes 8877eec726d wallet: allow anti-fee-sniping in sendall RPC while not relying on RBF default 13b7fffc5e0 Merge bitcoin/bitcoin#35011: iwyu: Fix warnings in `src/script` and treat them as errors 61839425137 ci, iwyu: Fix warnings in src/scripts and treat them as error 5700a61b733 ci: use ubuntu-latest instead of ubuntu-24.04 265563bf75c doc: remove reference to cirrus b847626562e test: refresh MiniWallet after node restart f4e643cb152 test: merge mining options in package feerate check 280ce6a0aed miner: ensure block_max_weight is flattened before limit checks 65bd3164fbb mining: clarify test_block_validity comment 978e7216e62 test: use shared default_ipc_timeout a5859edef45 fuzz: connman: set m_local_services/m_use_addrman_outgoing/m_max_automatic_connections 4b84c9125ad fuzz: connman: add network activity invariants 1ea532e590c Merge bitcoin/bitcoin#34953: crypto: disable ASan instrumentation of SSE4 SHA256 for GCC (matching Clang) d0a54dd8e0e Merge bitcoin/bitcoin#35381: wallet, test: optinrbf deprecation followups c6f225c757c Merge bitcoin/bitcoin#28333: wallet: Construct ScriptPubKeyMans with all data rather than loaded progressively 5486ef8cc25 Merge bitcoin/bitcoin#34198: wallet: fix ancient wallets migration fa787043f56 doc: Compress doc/build-unix.md dependency package names into table f1344e6c7fd Merge bitcoin/bitcoin#35378: ci: switch to warp runners d12d8e52d23 Merge bitcoin/bitcoin#35400: doc: Remove good_first_issue.yml, Reword "Getting started" section b86c1c443d8 test: add coverage for migrating ancient wallets fd44d48b24b wallet: fix ancient wallets migration a34dbc836c5 Merge bitcoin/bitcoin#35313: Bump leveldb subtree 896eaacd913 Merge bitcoin/bitcoin#34644: mining: add submitBlock to IPC Mining interface fa51f37f180 doc: Reword the Getting-Started section 53388773af7 guix: Remove redundant ShellCheck `source` directives 62cf7bc53f2 guix, refactor: Add `BASE` argument to `*_for_host` functions 5d46429e322 guix, refactor: Move `distsrc_for_host()` to `prelude.bash` cab65ea9c69 guix, refactor: Move duplicated `profiledir_for_host()` to `prelude.bash` faa9d4345ff guix, refactor: Move duplicated `outdir_for_host()` to `prelude.bash` 6b59fd6b8cf guix, refactor: Remove `contains()` function d4c69a72246 guix, refactor: Remove unused `out_name()` function fad585b6e59 test: Wait for node exit after crash in verify_utxo_hash faf14755149 ci: Exclude feature_dbcrash.py under --v2transport --usecli fac27d702fd test: Fix feature_dbcrash.py --usecli intermittent error fa09de8b686 test: [refactor] Simplify submit_block_catch_error f701cd159af doc: fix typo in release notes of #34917 7bc39e3d084 wallet, test: add wallet_deprecated_rbf.py for walletrbf deprecated keys & options 2cbbcb5659b wallet, test: remove -deprecatedrpc=bip125 from wallet_send.py 307134bd7e2 wallet, test: remove -deprecatedrpc=bip125 from wallet_migration.py 3ec550d1688 wallet, test: remove -deprecatedrpc=bip125 from wallet_basic.py a52ea9bff90 wallet, test: remove -walletrbf startup option from wallet_backwards_compatibility.py e3f5c189134 Merge bitcoin/bitcoin#34948: guix: Split manifest into build and codesign manifests a9ac680af30 build: remove FALLTHROUGH_INTENDED from leveldb.cmake 4d58c3271c0 build: remove -Wno-conditional-uninitialized from leveldb build 5fe0615f7ab Update leveldb subtree to latest upstream 58cdb5c2e83 Squashed 'src/leveldb/' changes from ab6c84e6f3..a7f9bdc611 4bdd46ace37 ci: switch runners from cirrus to warpbuild fab5733f5d6 doc: Remove good_first_issue.yml fa98d449517 ci: Rewrite broken wrap-valgrind.sh to .py 00af5620f01 Merge bitcoin/bitcoin#35206: doc: fix doxygen links to threads in developer-notes.md faf7e389736 ci: refactor: Avoid warning: INSTALL_BCC_TRACING_TOOLS: unbound variable 85c27c9de56 Merge bitcoin/bitcoin#35394: test: remove unnecessary rpc calls from feature_dbcrash 42330922dd8 wallet, test: remove -walletrbf startup option from wallet_backwards_compatibility.py 8cb6e405d88 wallet, test: remove -walletrbf startup option from wallet_listtransactions.py 0ee94b2fef0 wallet, test: remove -deprecatedrpc=bip125 from wallet_listtransactions.py 5e833e068d7 wallet, test: -walletrbf startup option from wallet_bumpfee.py a2a2b1745f0 wallet, test: remove -walletrbf startup option from rpc_psbt.py 615c0aefa8f Merge bitcoin/bitcoin#35391: test: Use operator<< for time_points instead of manual TickSinceEpoch c17cc76a187 test: speed up feature_dbcrash 0687438e94d Merge bitcoin/bitcoin#35372: refactor: Enhance type safety in overflow operations fad4f417d15 test: Use operator<< for time_points instead of manual TickSinceEpoch d846444d012 guix: Split manifest into build and codesign manifests 0b9e10ad404 guix: Update `python-signapple` and wrap with OpenSSL paths 3962138cc03 test: add IPC submitBlock functional test 5b60f69e40a mining: add submitBlock IPC method to Mining interface 813b4a80d7f refactor: introduce SubmitBlock helper a3fe455a953 wallet: refactor to read -walletrbf only once instead of twice 9c150222604 Merge bitcoin/bitcoin#35337: doc: add feature deprecation and removal process to developer notes a4157fc24a2 Merge bitcoin/bitcoin#33966: refactor: disentangle miner startup defaults from runtime options ac9424fdc63 Merge bitcoin/bitcoin#35145: validation: fix misleading VerifyDB summary log 9767e80b213 Merge bitcoin/bitcoin#35296: doc: Fix broken links in dev notes, move sections 9ec4efebd1e Merge bitcoin/bitcoin#35015: bitcoin-cli: note -rpcclienttimeout is not implemented for IPC connections b43a9363556 Merge bitcoin/bitcoin#33974: cmake: Check dependencies after build option interaction d5188b55924 Merge bitcoin/bitcoin#35363: test: Allow --usecli in more tests 743bf350f21 Merge bitcoin/bitcoin#35049: test: remove circular dependency between authproxy and util fa24693819e test: Allow --usecli in tests that already support it fa8d4d5c35e test: Catch CalledProcessError to support --usecli in feature_dbcrash.py faf0f848ef1 test: use echojson to allow rpc_named_arguments.py --usecli faf993ee442 test: Stop node before modifying config to support rpc_users.py --usecli dd0dea3e898 Merge bitcoin/bitcoin#34917: wallet: mark bip125-replaceable RPC key and walletrbf startup option as deprecated acea6f2caf8 Merge bitcoin/bitcoin#35251: wallet: Fix for duplicate external signers case 801e3bfe38e chainparams: add overloads for RegTest and SigNet with no options 4995c00a9cc chainparams: make deployment configuration available on all test networks 0774eaaf0c2 util: Require integers for SaturatingAdd() and AdditionOverflow() 32d072a49f3 doc: add release notes for #35319 d01b461f71e net: ensure no direct private broadcast connections fd230f942d8 net: use the proxy if overriden when doing v2->v1 reconnections a815e3e2629 rpc: Correct type for tx_sigops 7be0d6fa180 test: remove the lazy import of util in authproxy 779f4446803 test: move out JSONRPCException from authproxy to util 2e9fdcc6da6 doc: add feature deprecation and removal process to developer notes fa4fc8c1d7b test: Set TestNode url field early, so that feature_loadblock.py --usecli works 5faf2ad8802 doc: add release notes for deprecation of wallet rbf & bip125 fields aba24a9b62c wallet: remove "RPC Only" from -walletrbf option help description 1e5d3b4f0da doc: add release note for mining option validation 0317f52022c ci: enforce iwyu for touched files 8c58f63578a refactor: have mining files include what they use 3bb6498fb0f mining: store block create options in NodeContext 4637cd157da mining: reject invalid block create options 8daac1d6eba mining: add block create option helpers 128da7c3ff8 miner: add block_max_weight to BlockCreateOptions fa81e51eaee mining: parse block creation args in mining_args 020166080cf mining: use interface for tests, bench and fuzzers 44082bea479 interfaces: make Mining use const NodeContext d4368e059cf move-only: add node/mining_types.h 6aeb1fbea23 test: cover IPC blockmaxweight policy 63b23ea1e94 test: regression test for waitNext mining policy 24750f8b31a test: add createNewBlock failure helper 63ee9cd15b6 test: misc interface_ipc_mining.py improvements 97f7cc02332 wallet: mark -walletrbf startup option as deprecated c4a7613e6a7 wallet: mark `bip125-replaceable` key as deprecated in transaction RPCs 131fa570b95 test: Add test for BuildSkip() and skip heights f05b1a3532b rpc: Fix for duplicate external signers case 97d08d62baf refactor: store wallet names to MigrationResult df7ed5f3554 chainparams: encapsulate deployment configuration logic faf6afd99df doc: Move mutex and thread section into guideline section fa514caad75 doc: move-only Valgrind section fa0202f31da doc: move-only Python section fa37606c656 doc: Regroup clang-tidy rules fa9c2ddea9b doc: Fix to use lower-case anchors in links to C++ Core Guidelines a154c05d495 cmake: Check dependencies after build option interaction fa2afba28b5 p2p: Release m_peer_mutex early in InitiateTxBroadcastToAll 2ef6679c2ca test: Check that MuSig2 signing does not reuse nonces 21a1380c134 key: cleanse ChainCode on destruction bb05986c0a8 musig: Include pubnonce in session id 3f44f9aef7c test: Add coverage for m_blocks_unlinked invariant in LoadBlockIndex b3a3f88346d crypto: cleanse HMAC stack buffers after use d5adb9d09b8 doc: fix doxygen links to threads in developer-notes.md 08c3c37d123 bitcoin-cli: note -rpcclienttimeout is not implemented for IPC connections 5a2e3592137 clarify blockfilterindex cache allocation rationale 451fdd26a4f test: wallet: Constructing a DSPKM that can't TopUp() throws. 32946e0291f wallet: Setup new autogenerated descriptors on construction e20aaff70f0 wallet: Construct ExternalSignerSPKM with the new descriptor aa4f7823aa1 wallet: include keys when constructing DescriptorSPKM during import 6538f691357 fuzz: Skip adding descriptor to wallet if it cannot be expanded 8be5ee554bb test: wallet: Check that loading wallet with both unencrypted and encrypted keys fails. 80b0c259921 wallet: Load everything into DescSPKM on construction f713fd1725f refactor: wallet: Don't reuse WALLET_BLANK flag for born-encrypted wallets. cd912c4e108 wallet: Consolidate generation setup callers into one function 0301c758ea0 wallet migration, fuzz: Migrate hd seed once 0e4b0bacecf validation: Don't add pruned blocks to m_blocks_unlinked on startup 1d669637495 log: clarify VerifyDB summary log a9301cfa073 refactor: disable default std::hash for CTransactionRef 47d68cd981f ci: backport iwyu PR 2013 std::hash mapping 735b25519aa support: clamp RLIMIT_MEMLOCK to size_t 8ab4b9fc856 init: clamp fd limits to int 4afbabdcef8 Fix startup failure with RLIM_INFINITY fd limits 7249b376a0a opt: Skip UTXOs with worse waste, same eff_value 52042918606 opt: Skip evaluation of equivalent input sets ba1807b981a coinselection: Track effective_value lookahead fa226ab902f coinselection: BnB skip exploring high waste 7ecea1dc5dc coinselection: Track whether BnB completed 3ca0f36164b coinselection: rewrite BnB in CoinGrinder-style 2e737398372 coinselection: Track BnB iteration count in result d06dabf26be node: allocate index caches proportional to usage patterns fedeff7f201 crypto: disable ASan instrumentation of SSE4 SHA256 for GCC 55d37546faa Bugfix: GUI/Intro: Handle errors from SelectParams the same as if during InitConfig git-subtree-dir: bitcoinkernel/bitcoin git-subtree-split: 2a9e35d293b308e81811fa93ad2e5e8ed20e66e0
…f591d0b84 2df591d0b84 kernel: Add script tracer f26c15bdd28 Merge bitcoin/bitcoin#35397: ci: add OpenBSD Clang cross job dc282ff31d1 Merge bitcoin/bitcoin#35597: logging: More fully remove libevent log category ec98037f7ae Merge bitcoin/bitcoin#35615: fuzz: restore CreateSock in PCP targets 43d89bb6e10 Merge bitcoin/bitcoin#35610: bitcoin-util: Add netmagic command e35c8054894 Merge bitcoin/bitcoin#35129: test: add fuzz test for private broadcast a318f43254c bitcoin-util: Add netmagic command 3c76bd43568 Merge bitcoin/bitcoin#35603: build: QRencode cleanups 57b3bf84960 Merge bitcoin/bitcoin#35609: ci: Bump tsan config to ubuntu:26.04 with -U_FORTIFY_SOURCE d64ea158240 ci: add openBSD cross CI job 5404b620742 depends: add openbsd_LDFLAGS 2a9e35d293b Merge bitcoin/bitcoin#35588: scripted-diff: Rename `Sock::{RECV,SEND,ERR}` a0e5e30010a fuzz: restore CreateSock in PCP targets 41ceea400e8 scripted-diff: Rename `StatusLevel::{INFO,WARN,ERR}` f395acdeeea scripted-diff: Rename `Sock::{RECV,SEND,ERR}` 7a74f652935 Merge bitcoin/bitcoin#35536: fuzz: share a single mocked steady clock across FuzzedSock instances e1290ce7f74 Merge bitcoin/bitcoin#35543: test: introduce ExtendedPrivateKey and ExtendedPublicKey classes 7ac25c91771 util, refactor: Rename local `ERR` in `Sock::Accept` bbbbab86a81 ci: Bump tsan config to ubuntu:26.04 with -U_FORTIFY_SOURCE ea9afb61a1c Merge bitcoin/bitcoin#35602: doc: Clarify build docs about `pkgconf` / `pkg-config` requirements 672eedc46b0 Merge bitcoin/bitcoin#35220: fuzz: connman: strengthen assertions and extend coverage 0e5c718d8af Merge bitcoin/bitcoin#35506: test: ensure group data cluster pointers are live 93012d7ff91 Merge bitcoin/bitcoin#35601: wallet: remove experimental warning from send and sendall 829255c8bed cmake: Remove `SelectLibraryConfigurations` from `FindQRencode` module 5c55606da9b depends: Remove unused `lib/pkgconfig` in `qrencode` package 402ba10b20b cmake: Drop optional `PkgConfig` use in `FindQRencode` module 8ebfff0f88b doc: add send RPC release note fb8a1038867 doc: Clarify build docs about `pkgconf` / `pkg-config` requirements 5884f5a4fa9 wallet: remove experimental warning from send RPCs 7b84e5106c3 Merge bitcoin/bitcoin#35595: ci: remove some packages from Chimera job 58560c281d0 ci: remove some packages from Chimera job 295ce6f45c8 Merge bitcoin/bitcoin#35576: test: raise `feature_reindex` RPC timeout 633044f1436 Merge bitcoin/bitcoin#35266: rpc, wallet: add an option to not load the wallet after migrating d6269e2a903 Merge bitcoin/bitcoin#35594: fuzz: cover async chainstate compaction 3765b428d19 logging: More fully remove libevent log category 703a671fbc2 fuzz: compact coins view db during fuzzing 0868c85fd57 refactor: rename async coin compaction 6fa4132298a fuzz: share a single mocked steady clock across FuzzedSock instances 8791c4764ca test: use ExtendedPrivateKey in wallet_taproot.py 89ceafafb9f test: use ExtendedPrivateKey in wallet_listdescriptors.py bbfffcab588 test: use ExtendedPrivateKey in wallet_send.py 2ab6e590f73 test: use ExtendedPrivateKey in wallet_keypool.py 9e20118720d test: use ExtendedPrivateKey in wallet_fundrawtransaction.py 06af0cddbb9 test: use ExtendedPrivateKey in wallet_descriptor.py 4100fac20e8 test: use ExtendedPrivateKey in wallet_createwallet.py ff3f6def9a5 test: use ExtendedPrivateKey in wallet_bumpfee.py 003f2a01f63 test: use ExtendedPrivateKey in feature_notifications.py f988e6d6e64 test: use ExtendedPrivateKey in wallet_importdescriptors.py 0cdd817a82a add release note 517d37ce3eb test: tests wallet migration with load_wallet disabled b98dd63da7b rpc: Add load_wallet argument to migratewallet RPC 4acd063ba6f wallet: make loading the wallet after migrating optional 1a3cfdf1b7a fuzz: connman: cover AddLocalServices/RemoveLocalServices c507fb30634 fuzz: connman: add outbound-bytes invariants 4a6fce43ead fuzz: connman: add AddNode/RemoveAddedNode invariants 9e6546c517c test: raise reindex mining RPC timeout d2a03d50acb test: add extendedkey.py unit tests by using BIP32 test vectors afdb3780821 test: introduce ExtendedPrivateKey and ExtendedPublicKey classes 2ee4fafa3f4 test: add fuzz test for private broadcast 08b7c61fc70 private broadcast: enforce sending to unique node ids 4dbaa7cc65b test: generalise byte_to_base58 utility function to allow more version types df9eb72b129 test: ensure group data cluster pointers are live a5859edef45 fuzz: connman: set m_local_services/m_use_addrman_outgoing/m_max_automatic_connections 4b84c9125ad fuzz: connman: add network activity invariants 97d08d62baf refactor: store wallet names to MigrationResult git-subtree-dir: libbitcoinkernel-sys/bitcoin git-subtree-split: 2df591d0b8497b5b1fb48b762990b829acd5f843
…f591d0b84 2df591d0b84 kernel: Add script tracer f26c15bdd28 Merge bitcoin/bitcoin#35397: ci: add OpenBSD Clang cross job dc282ff31d1 Merge bitcoin/bitcoin#35597: logging: More fully remove libevent log category ec98037f7ae Merge bitcoin/bitcoin#35615: fuzz: restore CreateSock in PCP targets 43d89bb6e10 Merge bitcoin/bitcoin#35610: bitcoin-util: Add netmagic command e35c8054894 Merge bitcoin/bitcoin#35129: test: add fuzz test for private broadcast a318f43254c bitcoin-util: Add netmagic command 3c76bd43568 Merge bitcoin/bitcoin#35603: build: QRencode cleanups 57b3bf84960 Merge bitcoin/bitcoin#35609: ci: Bump tsan config to ubuntu:26.04 with -U_FORTIFY_SOURCE d64ea158240 ci: add openBSD cross CI job 5404b620742 depends: add openbsd_LDFLAGS 2a9e35d293b Merge bitcoin/bitcoin#35588: scripted-diff: Rename `Sock::{RECV,SEND,ERR}` a0e5e30010a fuzz: restore CreateSock in PCP targets 41ceea400e8 scripted-diff: Rename `StatusLevel::{INFO,WARN,ERR}` f395acdeeea scripted-diff: Rename `Sock::{RECV,SEND,ERR}` 7a74f652935 Merge bitcoin/bitcoin#35536: fuzz: share a single mocked steady clock across FuzzedSock instances e1290ce7f74 Merge bitcoin/bitcoin#35543: test: introduce ExtendedPrivateKey and ExtendedPublicKey classes 7ac25c91771 util, refactor: Rename local `ERR` in `Sock::Accept` bbbbab86a81 ci: Bump tsan config to ubuntu:26.04 with -U_FORTIFY_SOURCE ea9afb61a1c Merge bitcoin/bitcoin#35602: doc: Clarify build docs about `pkgconf` / `pkg-config` requirements 672eedc46b0 Merge bitcoin/bitcoin#35220: fuzz: connman: strengthen assertions and extend coverage 0e5c718d8af Merge bitcoin/bitcoin#35506: test: ensure group data cluster pointers are live 93012d7ff91 Merge bitcoin/bitcoin#35601: wallet: remove experimental warning from send and sendall 829255c8bed cmake: Remove `SelectLibraryConfigurations` from `FindQRencode` module 5c55606da9b depends: Remove unused `lib/pkgconfig` in `qrencode` package 402ba10b20b cmake: Drop optional `PkgConfig` use in `FindQRencode` module 8ebfff0f88b doc: add send RPC release note fb8a1038867 doc: Clarify build docs about `pkgconf` / `pkg-config` requirements 5884f5a4fa9 wallet: remove experimental warning from send RPCs 7b84e5106c3 Merge bitcoin/bitcoin#35595: ci: remove some packages from Chimera job 58560c281d0 ci: remove some packages from Chimera job 295ce6f45c8 Merge bitcoin/bitcoin#35576: test: raise `feature_reindex` RPC timeout 633044f1436 Merge bitcoin/bitcoin#35266: rpc, wallet: add an option to not load the wallet after migrating d6269e2a903 Merge bitcoin/bitcoin#35594: fuzz: cover async chainstate compaction 3765b428d19 logging: More fully remove libevent log category 703a671fbc2 fuzz: compact coins view db during fuzzing 0868c85fd57 refactor: rename async coin compaction 6fa4132298a fuzz: share a single mocked steady clock across FuzzedSock instances 8791c4764ca test: use ExtendedPrivateKey in wallet_taproot.py 89ceafafb9f test: use ExtendedPrivateKey in wallet_listdescriptors.py bbfffcab588 test: use ExtendedPrivateKey in wallet_send.py 2ab6e590f73 test: use ExtendedPrivateKey in wallet_keypool.py 9e20118720d test: use ExtendedPrivateKey in wallet_fundrawtransaction.py 06af0cddbb9 test: use ExtendedPrivateKey in wallet_descriptor.py 4100fac20e8 test: use ExtendedPrivateKey in wallet_createwallet.py ff3f6def9a5 test: use ExtendedPrivateKey in wallet_bumpfee.py 003f2a01f63 test: use ExtendedPrivateKey in feature_notifications.py f988e6d6e64 test: use ExtendedPrivateKey in wallet_importdescriptors.py 0cdd817a82a add release note 517d37ce3eb test: tests wallet migration with load_wallet disabled b98dd63da7b rpc: Add load_wallet argument to migratewallet RPC 4acd063ba6f wallet: make loading the wallet after migrating optional 1a3cfdf1b7a fuzz: connman: cover AddLocalServices/RemoveLocalServices c507fb30634 fuzz: connman: add outbound-bytes invariants 4a6fce43ead fuzz: connman: add AddNode/RemoveAddedNode invariants 9e6546c517c test: raise reindex mining RPC timeout d2a03d50acb test: add extendedkey.py unit tests by using BIP32 test vectors afdb3780821 test: introduce ExtendedPrivateKey and ExtendedPublicKey classes 2ee4fafa3f4 test: add fuzz test for private broadcast 08b7c61fc70 private broadcast: enforce sending to unique node ids 4dbaa7cc65b test: generalise byte_to_base58 utility function to allow more version types df9eb72b129 test: ensure group data cluster pointers are live a5859edef45 fuzz: connman: set m_local_services/m_use_addrman_outgoing/m_max_automatic_connections 4b84c9125ad fuzz: connman: add network activity invariants 97d08d62baf refactor: store wallet names to MigrationResult git-subtree-dir: libbitcoinkernel-sys/bitcoin git-subtree-split: 2df591d0b8497b5b1fb48b762990b829acd5f843
…05fc7ab 81405fc7ab Merge bitcoin/bitcoin#35689: test: Inline incorrect check in `util_tests` cd2a4bc510 test: Redeclare variable as signed in `util_tests` 6f1c56f03a Merge bitcoin/bitcoin#35670: net: optimize compact block extra tx iteration e94fda8a40 Merge bitcoin/bitcoin#35685: doc: Archive 30.3 release notes 5223cf1795 Merge bitcoin/bitcoin#35616: refactor: Use u64 over size_t for all cache sizes to fix a 32-bit overflow c0e91efdb3 Merge bitcoin/bitcoin#35295: validation: fetch block input prevouts in parallel during ConnectBlock f0da26cfc8 Merge bitcoin/bitcoin#34997: p2p: Don't participate in addr relay with feelers 443179a9eb doc: Archive 30.3 release notes fabafd91f1 refactor: Use u64 over size_t for all cache sizes to fix a 32-bit overflow 32941e1314 Merge bitcoin/bitcoin#35649: depends: move FreeBSD SDK handling to CI f379d716b1 Merge bitcoin/bitcoin#35669: doc: archive release notes for v31.1 881bb7b355 Merge bitcoin/bitcoin#35673: refactor: Move LoadGenesisBlock to ChainstateManager 3f3e644beb Merge bitcoin/bitcoin#35678: private broadcast: define and use new RPC_LIMIT_EXCEEDED error code ( + other follow-ups) e3b026bf56 Merge bitcoin/bitcoin#34020: mining: add getTransactions(ByWitnessID) IPC methods 62f9089343 Merge bitcoin/bitcoin#35386: doc: add an AI contribution policy fa615bd163 refactor: Move LoadGenesisBlock to ChainstateManager 8ac222484c private broadcast: remove no-op [[nodiscard]] 191bdcba26 test: align test better with described scenario 7ad311be18 test: use BOOST_CHECK_EQUAL for PrivateBroadcast::AddResult 82a02a2a22 rpc: define and use new RPC_LIMIT_EXCEEDED error code a64df338e6 Merge bitcoin/bitcoin#35651: doc: Improve offline-signing-tutorial after 32489 4498fa5d5b Merge bitcoin/bitcoin#35406: private broadcast: limit outstanding txs to count of 10,000 ec5edcd72b Merge bitcoin/bitcoin#35661: Update libmultiprocess subtree to add `ThreadMap.makePool` method ea67fea062 Merge bitcoin/bitcoin#35464: kernel: Add function for creating chainparams with a signet challenge a7b5f23bb8 Merge bitcoin/bitcoin#35667: refactor: Use `NetworkErrorString` for macOS code in `netif.cpp` 69fc991791 Merge bitcoin/bitcoin#32606: p2p: Drop unsolicited CMPCTBLOCK from non-HB peer and when blocksonly 1a3cbf1bd2 net: optimize compact block extra tx iteration bc33509ae2 Merge bitcoin/bitcoin#35650: doc: Add release notes for 32489 (exportwatchonlywallet RPC) 2b6e767d96 doc: archive release notes for v31.1 b0735336ee p2p: Don't participate in addr relay with feeler connections 302733fd96 Merge bitcoin/bitcoin#35652: init: fix reindex deadlock by waking cv after interrupt c1313b199f init: wake genesis wait after ImportBlocks() returns eccb04a321 refactor: Use `NetworkErrorString` for macOS code in `netif.cpp` f79ecfd9c7 Merge bitcoin/bitcoin#35658: refactor: Drop unneeded `<sys/types.h>` include before `<ifaddrs.h>` 22ac4ad949 ci: ensure we use correct lld version in OpenBSD job 495f43f7b3 ci: FreeBSD 15.1 244739db9d depends: move FreeBSD SDK handling to CI bab0120053 Merge bitcoin/bitcoin#35621: validation: Ignore eventual error message from flushing in AcceptBlock 02afa66169 Merge commit '6b0a907302364649dcaffeb0340b985f14141b4e' into pr/subtree-11 6b0a907302 Squashed 'src/ipc/libmultiprocess/' changes from 3edbe8f67c1..16bf05dea02 22c328d388 refactor: Drop unneeded `<sys/types.h>` include before `<ifaddrs.h>` 2063f02bd5 Merge bitcoin/bitcoin#35510: test: SOCKS5 proxy: expect that connection may be reset during SOCKS5 handshake or data forwarding 1360001f43 Merge bitcoin/bitcoin#34959: wallet: Enforce BDB btree levels and overflow item sizes 10ffef4b3b Merge bitcoin/bitcoin#35604: log: expose `-logratelimit` in normal help b393985aa0 Merge bitcoin/bitcoin#35634: txospenderindex: use zero-byte entry values 1835f2fcbf Merge bitcoin/bitcoin#35653: fuzz: Remove `ConsumeUniValue` 9f3e427228 fuzz: Remove ConsumeUniValue 68cb7840d2 doc: improve offline-signing-tutorial after 32489 32ddfc92d9 Merge bitcoin/bitcoin#35599: doc: Add release notes for #33671 (getbalances nonmempool field) f56804bcf5 Merge bitcoin/bitcoin#35640: ci: use a 8x instance over 16x for riscv job 239d6c5260 Merge bitcoin/bitcoin#35614: HTTPServer: Prevent race condition between worker thread and I/O thread cddbad325d doc: Add release notes for 32489 (exportwatchonlywallet RPC) 0a1bbec688 Merge bitcoin/bitcoin#32489: wallet: Add `exportwatchonlywallet` RPC to export a watchonly version of a wallet 4a007126fb Merge bitcoin/bitcoin#35147: depends: Boost 1.91.0-1 31abaa264c doc: add an AI contribution policy a15bdc0598 doc: update offline-signing-tutorial to use exportwatchonlywallet rpc a388076401 test: Test for exportwatchonlywallet d053e3e5c8 wallet, rpc: Add exportwatchonlywallet RPC 444878efef wallet: Add CWallet::ExportWatchOnly f9273f01db wallet: Move listdescriptors retrieving from RPC to CWallet a1c83789a7 wallet: Write new descriptor's cache in AddWalletDescriptor 1e996640e6 wallet: Use Descriptor::CanSelfExpand() in CanGetAddresses() d2ee9227da descriptor: Add CanSelfExpand() 2990bd7735 Merge bitcoin/bitcoin#35118: fuzz: add ipc round-trip fuzz target fb1d152c24 depends: Boost 1.91.0-1 ba48852f9e Merge bitcoin/bitcoin#35438: test: introduce NodeSigner, run feature_taproot.py without wallet compiled 47bbed052e ci: use true|false over "true|false" 9a25bc3989 ci: use a 8x instance over 16x 9871dc7ab4 Merge bitcoin/bitcoin#31425: CI: Add Riscv bare metal job 113402286e doc: add txospenderindex release note ce06878288 index: shrink txospenderindex value markers a99148d576 test kernel: Don't log on warnings change 5b4fd284f4 kernel: Generate a signet with a challenge 037ad77071 fuzz: add IPC round-trip target a8823c0996 Merge bitcoin/bitcoin#35607: nanobench: fix performance counter buffer initialization f26c15bdd2 Merge bitcoin/bitcoin#35397: ci: add OpenBSD Clang cross job 91586f701e test: introduce NodeSigner, run feature_taproot.py without wallet compiled 771200ca43 test: return full keypair from `getnewdestination` helper 4e29de719e private broadcast: add release note for limited cap cbf8c107c1 Release cs_main between individual private tx re-attempts 5aea3d0373 private broadcast: limit outstanding txs to count of 10,000 dc282ff31d Merge bitcoin/bitcoin#35597: logging: More fully remove libevent log category ec98037f7a Merge bitcoin/bitcoin#35615: fuzz: restore CreateSock in PCP targets 43d89bb6e1 Merge bitcoin/bitcoin#35610: bitcoin-util: Add netmagic command e35c805489 Merge bitcoin/bitcoin#35129: test: add fuzz test for private broadcast dc1c17c085 doc: add release notes 0e10937184 fuzz: add coins_view_stacked fuzz harness to test concurrent leveldb reads ce610a6ff4 fuzz: update harnesses to cover CoinsViewOverlay::StartFetching 760fb22dc3 test: add unit tests for CoinsViewOverlay::StartFetching d69a3b20de doc: update CoinsViewOverlay docstring to describe parallel fetching ab2a379237 coins: fetch inputs in parallel fdf283036a coins: add ready flag to InputToFetch ede11b8314 validation: collect block inputs in CoinsViewOverlay before ConnectBlock f82043af50 coins: introduce thread pool in CoinsViewOverlay 5bf1c32008 validation: add -prevoutfetchthreads configuration option a318f43254 bitcoin-util: Add netmagic command 256482ab56 validation: In AcceptBlock, ignore flush result 3c76bd4356 Merge bitcoin/bitcoin#35603: build: QRencode cleanups f595daf1dd test: ensure HTTPServer race condition is fixed b98b10c072 test: introduce a worker thread in http socket error test 922b08d375 test: socket error handling in HTTPServer using ErrorSock mock socket 73da2a8a52 http: prevent race condition between worker thread and I/O thread 57b3bf8496 Merge bitcoin/bitcoin#35609: ci: Bump tsan config to ubuntu:26.04 with -U_FORTIFY_SOURCE d64ea15824 ci: add openBSD cross CI job 5404b62074 depends: add openbsd_LDFLAGS 2a9e35d293 Merge bitcoin/bitcoin#35588: scripted-diff: Rename `Sock::{RECV,SEND,ERR}` a0e5e30010 fuzz: restore CreateSock in PCP targets 41ceea400e scripted-diff: Rename `StatusLevel::{INFO,WARN,ERR}` f395acdeee scripted-diff: Rename `Sock::{RECV,SEND,ERR}` 7a74f65293 Merge bitcoin/bitcoin#35536: fuzz: share a single mocked steady clock across FuzzedSock instances e1290ce7f7 Merge bitcoin/bitcoin#35543: test: introduce ExtendedPrivateKey and ExtendedPublicKey classes 7ac25c9177 util, refactor: Rename local `ERR` in `Sock::Accept` bbbbab86a8 ci: Bump tsan config to ubuntu:26.04 with -U_FORTIFY_SOURCE 095596ddf7 log: expose -logratelimit option ea9afb61a1 Merge bitcoin/bitcoin#35602: doc: Clarify build docs about `pkgconf` / `pkg-config` requirements 672eedc46b Merge bitcoin/bitcoin#35220: fuzz: connman: strengthen assertions and extend coverage 0e5c718d8a Merge bitcoin/bitcoin#35506: test: ensure group data cluster pointers are live b6b1d0653a nanobench: fix perf counter buffer init 93012d7ff9 Merge bitcoin/bitcoin#35601: wallet: remove experimental warning from send and sendall 829255c8be cmake: Remove `SelectLibraryConfigurations` from `FindQRencode` module 5c55606da9 depends: Remove unused `lib/pkgconfig` in `qrencode` package 402ba10b20 cmake: Drop optional `PkgConfig` use in `FindQRencode` module 8ebfff0f88 doc: add send RPC release note fb8a103886 doc: Clarify build docs about `pkgconf` / `pkg-config` requirements 5884f5a4fa wallet: remove experimental warning from send RPCs 7b84e5106c Merge bitcoin/bitcoin#35595: ci: remove some packages from Chimera job 58560c281d ci: remove some packages from Chimera job 295ce6f45c Merge bitcoin/bitcoin#35576: test: raise `feature_reindex` RPC timeout b36730a3ef Add CI job for riscv bare metal bfdbf513f6 Add CI job for producing a static bare metal binary a9a1d92a1d build: Add option for building for bare metal envs 9b2ef81757 doc: add release notes for #33671 (getbalances nonmempool field) 633044f143 Merge bitcoin/bitcoin#35266: rpc, wallet: add an option to not load the wallet after migrating d6269e2a90 Merge bitcoin/bitcoin#35594: fuzz: cover async chainstate compaction 3765b428d1 logging: More fully remove libevent log category 703a671fbc fuzz: compact coins view db during fuzzing 0868c85fd5 refactor: rename async coin compaction 6fa4132298 fuzz: share a single mocked steady clock across FuzzedSock instances 8791c4764c test: use ExtendedPrivateKey in wallet_taproot.py 89ceafafb9 test: use ExtendedPrivateKey in wallet_listdescriptors.py bbfffcab58 test: use ExtendedPrivateKey in wallet_send.py 2ab6e590f7 test: use ExtendedPrivateKey in wallet_keypool.py 9e20118720 test: use ExtendedPrivateKey in wallet_fundrawtransaction.py 06af0cddbb test: use ExtendedPrivateKey in wallet_descriptor.py 4100fac20e test: use ExtendedPrivateKey in wallet_createwallet.py ff3f6def9a test: use ExtendedPrivateKey in wallet_bumpfee.py 003f2a01f6 test: use ExtendedPrivateKey in feature_notifications.py f988e6d6e6 test: use ExtendedPrivateKey in wallet_importdescriptors.py 0cdd817a82 add release note 517d37ce3e test: tests wallet migration with load_wallet disabled b98dd63da7 rpc: Add load_wallet argument to migratewallet RPC 4acd063ba6 wallet: make loading the wallet after migrating optional 1a3cfdf1b7 fuzz: connman: cover AddLocalServices/RemoveLocalServices c507fb3063 fuzz: connman: add outbound-bytes invariants 4a6fce43ea fuzz: connman: add AddNode/RemoveAddedNode invariants 9e6546c517 test: raise reindex mining RPC timeout d2a03d50ac test: add extendedkey.py unit tests by using BIP32 test vectors afdb378082 test: introduce ExtendedPrivateKey and ExtendedPublicKey classes 55e3a57f22 qa: Avoid UTXO reuse between test functions 9c5dd2926a p2p: Ignore CMPCTBLOCK from peer that hasn't sent SENDCMPCT bf9884f4e5 p2p: make blocksonly nodes ignore CMPCTBLOCK messages 92cea63c71 test: (Un)solicited invalid cb -> get disconnected. e845e26344 test: p2p: Nodes ignore unsolicited CMPCTBLOCK's 8313591715 p2p: Drop unsolicited CMPCTBLOCK from non-HB peer 44f377a71f refactor: test: Static assert_highbandwidth_states 25457a3272 test: Tighten getblocktxn checks in parallel cb reconstruction test. 2ee4fafa3f test: add fuzz test for private broadcast 08b7c61fc7 private broadcast: enforce sending to unique node ids 9a8ef9b0a3 test: SOCKS5 proxy: expect that connection may be reset during handshake eb3208364a test: SOCKS5 proxy: expect that connection may be reset when forwarding 4dbaa7cc65 test: generalise byte_to_base58 utility function to allow more version types df9eb72b12 test: ensure group data cluster pointers are live a5859edef4 fuzz: connman: set m_local_services/m_use_addrman_outgoing/m_max_automatic_connections 4b84c9125a fuzz: connman: add network activity invariants 9784818442 mining: add getTransactionsByWitnessID() IPC method d282ae6883 mining: add getTransactionsByTxID() IPC method 0d5e4d4712 test: restart node after IPC option override test f16b3613cd ipc: Serialize null CTransactionRef as empty Data 0f466e1094 mempool: add lookup by witness hash 51dd90fb50 refactor: Merge announce_cmpct_block() defs into one 97d08d62ba refactor: store wallet names to MigrationResult 8a739a5510 build: allow ipc fuzz builds b2de59d486 wallet, bdbro: Validate btree page levels dc3a2b9c3b wallet, bdbro: Enforce overflow data lengths git-subtree-dir: libbitcoinkernel-sys/bitcoin git-subtree-split: 81405fc7abbd1889f3978b8924e7acbe12b3403b
Many a times there has been a need to come up with dynamic xprvs and xpubs
in the functional tests, but the lack of code that creates them dynamically has
led to the presence of several hardcoded keys in the testing framework. This
is not developer friendly and not self-documenting, clutters the testing code,
and makes it difficult to update the tests in the future.
This PR introduces two utility classes ExtendedPrivateKey and
ExtendedPublicKey that allows the developer to create them on the fly
to be used in the tests. I have intentionally not introduced any library for this
purpose and have reused the existing libraries and functions in the framework.
The implementation is supposed to provide basic functionality for creating
xprv randomly or from a fixed seed, creating corresponding xpub, and
deriving child xprvs and xpubs at custom derivation paths.
I've updated many tests to show how these can be used, there are more
tests as well that can be updated in the future to completely remove such
non-deterministic hardcoded keys.