aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2024-01-09Revert "build: Fix undefined reference to __mulodi4"MarcoFalke
This reverts commit e4c8bb62e4a6873c45f42d0d2a24927cb241a0ea.
2024-01-09Merge bitcoin/bitcoin#29172: fuzz: set `nMaxOutboundLimit` in connman targetfanquake
e5b9ee0221ec8aa238fb5720fcd6faa01b09fe46 fuzz: set `nMaxOutboundLimit` in connman target (brunoerg) Pull request description: Setting `nMaxOutboundLimit` (`-maxuploadtarget`) will make fuzz to reach more coverage in connman target. This value is used in `GetMaxOutboundTimeLeftInCycle`, `OutboundTargetReached` and `GetOutboundTargetBytesLeft`. ACKs for top commit: dergoegge: utACK e5b9ee0221ec8aa238fb5720fcd6faa01b09fe46 jonatack: ACK e5b9ee0221ec8aa238fb5720fcd6faa01b09fe46 Tree-SHA512: d19c83602b0a487e6da0e3be539aa2abc95b8bbf36cf9a3e391a4af53b959f68ca38548a96d27d56742e3b772f648da04e2bf8973dfc0ab1cdabf4f2e8d44de6
2024-01-08rpc: renaming txid -> transactionidkevkevin
renamed to transactionid because it is named this way in getrawmempool and getmempoolancestors
2024-01-08rpc: changed prioritisation-map -> ""kevkevin
prioritisation-map gets eaten by the help generator to be "" so we are setting to "" to begin with
2024-01-08Merge bitcoin/bitcoin#28610: wallet: Migrate entire address book entries to ↵fanquake
watchonly and solvables too 406b71abcb72f234ddf9245a3f57e748343c774f wallet: Migrate entire address book entries (Andrew Chow) Pull request description: Not all of the data in an address book entry was being copied to the watchonly and solvables wallets. This includes information such as whether the address was previously spent, and any receive requests that may exist. A test has been added to check that the previously spent information is copied, although it passes without the changes in this PR since this information is also regenerated when a transaction is loaded/added into a wallet. ACKs for top commit: ryanofsky: Code review ACK 406b71abcb72f234ddf9245a3f57e748343c774f. Just suggested change since last review furszy: Code review ACK 406b71ab Tree-SHA512: 13de42b16a1d8524fe0555764744139566b2e7d29741ceffc1158a905dd537136b762330568b3b5cac28cbee1bfd363a20de97d0a6c5296738cb3aa99133945b
2024-01-08Merge bitcoin/bitcoin#29184: RPC/Blockchain: scanblocks: Accept named param ↵glozow
for filter_false_positives 5779010ed7be1cbe9b98a91c7487d3d14b7cf24d RPC/Blockchain: scanblocks: Accept named param for filter_false_positives (Luke Dashjr) Pull request description: Possibly due to a silent cross-merge, `scanblocks` was left out of 96233146dd31c1d99fd1619be4449944623ef750 ACKs for top commit: stickies-v: ACK 5779010ed7be1cbe9b98a91c7487d3d14b7cf24d theStack: ACK 5779010ed7be1cbe9b98a91c7487d3d14b7cf24d Tree-SHA512: bade107c7cb5fdd1265224c263a1e1edfc8bc0698b3abfac8d65c49a270181f0311713f7243813de17932a7a7ca65a36850e527ab0b433cf64c32191d3adde70
2024-01-07net: create I2P sessions with both ECIES-X25519 and ElGamal encryptionJon Atack
A Bitcoin Core node may only connect to a peer destination via I2P if both sides have sessions with the same encryption type. The encryption type is a property of the session, not the destination. Sessions may support multiple encryption types. As Bitcoin Core is not currently setting the I2P encryption type when creating sessions, it is using the older default, ElGamal (type 0). This pull updates Bitcoin Core to use both ECIES-X25519 and ElGamal (types 4 and 0, respectively). This allows to connect to I2P peers with either type, and the newer, faster ECIES-X25519 will be preferred. See also the recently updated section "Signature and Encryption Types" in https://geti2p.net/en/docs/api/samv3 Thanks and credit to zzzi2p (https://github.com/zzzi2p) for reporting. Closes https://github.com/bitcoin/bitcoin/issues/29197.
2024-01-05Merge bitcoin/bitcoin#29117: wallettool: Always be able to dump a wallet's ↵fanquake
database d83bea42d1f0ffb0899a6de3556c489543468995 wallettool: Don't create CWallet when dumping DB (Andrew Chow) 40c80e36b1a204ed133acc403016a6cb1a92051e wallettool: Don't unilaterally reset wallet_instance if loading error (Ava Chow) Pull request description: https://github.com/bitcoin/bitcoin/issues/29109#issuecomment-1863449058 reports that a wallet with noncritical errors cannot be dumped with `bitcoin-wallet dump`. This was caused by an erroneous reset of the wallet pointer when the loading the wallet returns something other than `LOAD_OK`. Not all errors are errors that require aborting, so unilaterally resetting the pointer at that time is incorrect. The first commit resolves this issue. Furthermore, if a wallet has loading errors, that should not prevent the wallet tool from dumping the wallet. The wallet application logic should not get in the way of performing such a low level database operation, especially when it's primary usage is for debugging potentially corrupted wallets. The 2nd commit is taken from #28710 and changes the `dump` to stop at making a `WalletDatabase` rather than making a `CWallet` only to retrieve the underlying `WalletDatabase`. ACKs for top commit: furszy: Code review ACK d83bea42d1 BrandonOdiwuor: Code Review ACK d83bea42d1f0ffb0899a6de3556c489543468995 Tree-SHA512: 425d712dfff1002bd81272aca0bae1016f9126a3c89506f8cb7cf0a0ec9f33d0c03b8d03896394f3a45c2998e59047e19218dfd08dc8a5f40e8625134e886b0f
2024-01-05crypto, hash: replace custom rotl32 with std::rotlFabian Jahr
2024-01-05fuzz: set `nMaxOutboundLimit` in connman targetbrunoerg
2024-01-05Merge bitcoin/bitcoin#29042: doc: Clarify C++20 commentsfanquake
fa87f8feb76da42eeb5c4d32ee7be070b2bd559f doc: Clarify C++20 comments (MarcoFalke) Pull request description: Turns out "class template argument deduction for aggregates" is one of the few things implemented only in recent compilers, see https://en.cppreference.com/w/cpp/compiler_support/20 So clarify the comments. ACKs for top commit: hebasto: ACK fa87f8feb76da42eeb5c4d32ee7be070b2bd559f, I verified the code with clang-{16,17}. Tree-SHA512: f6d20f946cb6f8e34db224e074ed8f9dfa598377c066d1b58a8feb9e64d007444f1e2c0399e91a3e282fd5d59f90e0d7df90aa3956824d96bc78070ee12f603c
2024-01-05build: remove --enable-ltofanquake
This has outlived its usefulness, doesn't gel well with newer compilers & `-flto` related options, i.e thin vs full, or `=auto`, and having `-flto` as the only option means that sometimes this just needs to be worked around, i.e in oss-fuzz: https://github.com/google/oss-fuzz/blob/master/projects/bitcoin-core/build.sh. While it was convenient when `-flto` was newer, support for `-flto` is now in all compilers we use, and there's also no-longer any real need for us to treat `-flto` different to any other optimization option. Remove it, to remove build complexity, and so there's no need to port a similar option to CMake. Note that the LTO option remains in depends, because we still a way to build packages that have LTO specific patches/options. If we decide to merge this, I'll follow up downstream in oss-fuzz first, to make sure we don't break the build.
2024-01-05Merge bitcoin/bitcoin#28890: rpc: Remove deprecated -rpcserialversionfanquake
fa46cc22bc696e6845915ae91d6b68e36bf4c242 Remove deprecated -rpcserialversion (MarcoFalke) Pull request description: The flag is problematic for many reasons: * It is deprecated * It is a global flag, requiring a restart to change, as opposed to a flag that can be set on each RPC invocation * It may be hidden in config files by accident, hard to debug, causing LND crashes and bugs, see https://github.com/bitcoin/bitcoin/issues/28730#issuecomment-1780940868 * It makes performance improvements harder to implement: https://github.com/bitcoin/bitcoin/pull/17529#issuecomment-556082818 Fix all issues by removing it. If there is a use-case, likely a per-RPC flag can be added, if needed. ACKs for top commit: ajtowns: crACK fa46cc22bc696e6845915ae91d6b68e36bf4c242 TheCharlatan: lgtm ACK fa46cc22bc696e6845915ae91d6b68e36bf4c242 Tree-SHA512: 96ba1c60356ce93954fe5c2a59045771c6d1516ad0d9dc436ef1800a1f1b0153f0d5fb78ca99d53ad54ba25fbce36962bdf1d4325aceedfc8154a61347a6a915
2024-01-05doc: Clarify C++20 commentsMarcoFalke
2024-01-04Merge bitcoin/bitcoin#28832: fuzz: rule-out too deep derivation paths in ↵Ava Chow
descriptor parsing targets a44808fb437864878c2d9696b8a96193091446ee fuzz: rule-out too deep derivation paths in descriptor parsing targets (Antoine Poinsot) Pull request description: This fixes the `mocked_descriptor_parse` timeout reported in #28812 and direct the targets more toward what they are intended to fuzz: the descriptor syntax. ACKs for top commit: sipa: utACK a44808fb437864878c2d9696b8a96193091446ee achow101: ACK a44808fb437864878c2d9696b8a96193091446ee dergoegge: ACK a44808fb437864878c2d9696b8a96193091446ee - Not running into timeouts anymore TheCharlatan: ACK a44808fb437864878c2d9696b8a96193091446ee Tree-SHA512: a5dd1dbe9adf8f088bdc435addab88b56f435e6d7d2065bd6d5c6d80a32e3f1f97d3d2323131ab233618cd6dcc477c458abe3c4c865ab569449b8bc176231e93
2024-01-04RPC/Blockchain: scanblocks: Accept named param for filter_false_positivesLuke Dashjr
2024-01-04Merge bitcoin/bitcoin#29169: Update libsecp256k1 subtree to current masterglozow
29fde0223abc706925188014209eba75390a9df8 Squashed 'src/secp256k1/' changes from 199d27cea3..efe85c70a2 (fanquake) Pull request description: This includes changes from the 0.4.1 release: https://github.com/bitcoin-core/secp256k1/releases/tag/v0.4.1. > The point multiplication algorithm used for ECDH operations (module ecdh) was replaced with a slightly faster one. > Optional handwritten x86_64 assembly for field operations was removed because modern C compilers are able to output more efficient assembly. This change results in a significant speedup of some library functions when handwritten x86_64 assembly is enabled (--with-asm=x86_64 in GNU Autotools, -DSECP256K1_ASM=x86_64 in CMake), which is the default on x86_64. Benchmarks with GCC 10.5.0 show a 10% speedup for secp256k1_ecdsa_verify and secp256k1_schnorrsig_verify. ACKs for top commit: hebasto: re-ACK e2cdeb592596432039d21f4c819d45f1e46d65ef jonasnick: reACK e2cdeb592596432039d21f4c819d45f1e46d65ef Tree-SHA512: eaa82721b63e84b9d8dae82956d5e75dbcee50c58c9049b7901055d79aef938bd268e18ce4ff85feb73aae7ee1cf58018b93067692f8f69f80216d336bd6f10a
2024-01-04Update secp256k1 subtree to latest masterfanquake
2024-01-04Squashed 'src/secp256k1/' changes from 199d27cea3..efe85c70a2fanquake
efe85c70a2 Merge bitcoin-core/secp256k1#1466: release cleanup: bump version after 0.4.1 4b2e06f460 release cleanup: bump version after 0.4.1 1ad5185cd4 Merge bitcoin-core/secp256k1#1465: release: prepare for 0.4.1 672053d801 release: prepare for 0.4.1 1a81df826e Merge bitcoin-core/secp256k1#1380: Add ABI checking tool for release process 74a4d974d5 doc: Add ABI checking with `check-abi.sh` to the Release Process e7f830e32c Add `tools/check-abi.sh` 77af1da9f6 Merge bitcoin-core/secp256k1#1455: doc: improve secp256k1_fe_set_b32_mod doc 3928b7c383 doc: improve secp256k1_fe_set_b32_mod doc 5e9a4d7aec Merge bitcoin-core/secp256k1#990: Add comment on length checks when parsing ECDSA sigs 4197d667ec Merge bitcoin-core/secp256k1#1431: Add CONTRIBUTING.md 0e5ea62207 CONTRIBUTING: add some coding and style conventions e2c9888eee Merge bitcoin-core/secp256k1#1451: changelog: add entry for "field: Remove x86_64 asm" d2e36a2b81 changelog: add entry for "field: Remove x86_64 asm" 1a432cb982 README: update first sentence 0922a047fb docs: move coverage report instructions to CONTRIBUTING 76880e4015 Add CONTRIBUTING.md including scope and guidelines for new code d3e29db8bb Merge bitcoin-core/secp256k1#1450: Add group.h ge/gej equality functions 04af0ba162 Replace ge_equals_ge[,j] calls with group.h equality calls 60525f6c14 Add unit tests for group.h equality functions a47cd97d51 Add group.h ge/gej equality functions 10e6d29b60 Merge bitcoin-core/secp256k1#1446: field: Remove x86_64 asm 07687e811d Merge bitcoin-core/secp256k1#1393: Implement new policy for VERIFY_CHECK and #ifdef VERIFY (issue #1381) bb4672342e remove VERIFY_SETUP define a3a3e11acd remove unneeded VERIFY_SETUP uses in ECMULT_CONST_TABLE_GET_GE macro a0fb68a2e7 introduce and use SECP256K1_SCALAR_VERIFY macro cf25c86d05 introduce and use SECP256K1_{FE,GE,GEJ}_VERIFY macros 5d89bc031b remove superfluous `#ifdef VERIFY`/`#endif` preprocessor conditions c2688f8de9 redefine VERIFY_CHECK to empty in production (non-VERIFY) mode 5814d8485c Merge bitcoin-core/secp256k1#1438: correct assertion for secp256k1_fe_mul_inner c1b4966410 Merge bitcoin-core/secp256k1#1445: bench: add --help option to bench_internal f07cead0ca build: Don't call assembly an optimization 2f0762fa8f field: Remove x86_64 asm 1ddd76af0a bench: add --help option to bench_internal e72103932d Merge bitcoin-core/secp256k1#1441: asm: add .note.GNU-stack section for non-exec stack ea47c82e01 Merge bitcoin-core/secp256k1#1442: Return temporaries to being unsigned in secp256k1_fe_sqr_inner dcdda31f2c Tighten secp256k1_fe_mul_inner's VERIFY_BITS checks 10271356c8 Return temporaries to being unsigned in secp256k1_fe_sqr_inner 33dc7e4d3e asm: add .note.GNU-stack section for non-exec stack c891c5c2f4 Merge bitcoin-core/secp256k1#1437: ci: Ignore internal errors of snapshot compilers 8185e72d29 ci: Ignore internal errors in snapshot compilers 40f50d0fbd Merge bitcoin-core/secp256k1#1184: Signed-digit based ecmult_const algorithm 8e2a5fe908 correct assertion for secp256k1_fe_mul_inner 355bbdf38a Add changelog entry for signed-digit ecmult_const algorithm 21f49d9bec Remove unused secp256k1_scalar_shr_int 115fdc7232 Remove unused secp256k1_wnaf_const aa9f3a3c00 ecmult_const: add/improve tests 4d16e90111 Signed-digit based ecmult_const algorithm ba523be067 make SECP256K1_SCALAR_CONST reduce modulo exhaustive group order 2140da9cd5 Add secp256k1_scalar_half for halving scalars (+ tests/benchmarks). 1f1bb78b7f Merge bitcoin-core/secp256k1#1430: README: remove CI badge 5dab0baa80 README: remove CI badge b314cf2833 Merge bitcoin-core/secp256k1#1426: ci/cirrus: Add native ARM64 jobs fa4d6c76b6 ci/cirrus: Add native ARM64 persistent workers ee7aaf213e Merge bitcoin-core/secp256k1#1395: tests: simplify `random_fe_non_zero` (remove loop limit and unneeded normalize) ba9cb6f378 Merge bitcoin-core/secp256k1#1424: ci: Bump major versions for docker actions d9d80fd155 ci: Bump major versions for docker actions 4fd00f4bfe Merge bitcoin-core/secp256k1#1422: cmake: Install `libsecp256k1.pc` file 421d84855a ci: Align Autotools/CMake `CI_INSTALL` directory names 9f005c60d6 cmake: Install `libsecp256k1.pc` file 2262d0eaab ci/cirrus: Bring back skeleton .cirrus.yml without jobs b10ddd2bd2 Merge bitcoin-core/secp256k1#1416: doc: Align documented scripts with CI ones 49be5be9e8 Merge bitcoin-core/secp256k1#1390: tests: Replace counting_illegal_callbacks with CHECK_ILLEGAL_VOID cbf3053ff1 Merge bitcoin-core/secp256k1#1417: release cleanup: bump version after 0.4.0 9b118bc7fb release cleanup: bump version after 0.4.0 70303643cf tests: add CHECK_ERROR_VOID and use it in scratch tests f8d7ea68df tests: Replace counting_illegal_callbacks with CHECK_ILLEGAL_VOID b0f7bfedc9 doc: Do not mention soname in CHANGELOG.md "ABI Compatibility" section bd9d98d353 doc: Align documented scripts with CI ones a1d52e3e12 tests: remove unnecessary test in run_ec_pubkey_parse_test 875b0ada25 tests: remove unnecessary set_illegal_callback c45b7c4fbb refactor: introduce testutil.h (deduplicate `random_fe_`, `ge_equals_` helpers) dc5514144f tests: simplify `random_fe_non_zero` (remove loop limit and unneeded normalize) e02f313b1f Add comment on length checks when parsing ECDSA sigs git-subtree-dir: src/secp256k1 git-subtree-split: efe85c70a2e357e3605a8901a9662295bae1001f
2024-01-04wallet: Fix use-after-free in WalletBatch::EraseRecordsMarcoFalke
2024-01-03Merge bitcoin/bitcoin#29013: test: doc: follow-up #28368Gloria Zhao
b1318dcc56a0181783ee7ddbd388ae878a0efc52 test: change `m_submitted_in_package` input to fuzz data provider boolean (ismaelsadeeq) 5615e16b705d74bf6ebb7c39523844f97a41cb6f tx fees: update `m_from_disconnected_block` to `m_mempool_limit_bypassed` (ismaelsadeeq) fcd429664818f14cace580513e7e6159335b5416 doc: fix typo and update incorrect comment (ismaelsadeeq) 562664d26374331d291b97e2e2f7fca1f0fd467b test: wait for fee estimator to catch up before estimating fees (ismaelsadeeq) Pull request description: This is a simple PR that does two things 1. Fixes #29000 by waiting for the fee estimator to catch up after `removeForBlock` calls before calling `estimateFee` in the `BlockPolicyEstimates` unit test. 2. Addressed some outstanding review comments from #28368 - Updated `NewMempoolTransactionInfo::m_from_disconnected_block` to `NewMempoolTransactionInfo::m_mempool_limit_bypassed` which now correctly indicates what the boolean does. - Changed input of `processTransaction`'s tx_info `m_submitted_in_package` input from false to fuzz data provider boolean. - Fixed some typos, and update incorrect comment ACKs for top commit: martinus: re-ACK b1318dcc56a0181783ee7ddbd388ae878a0efc52 glozow: utACK b1318dcc56a0181783ee7ddbd388ae878a0efc52 Tree-SHA512: 45268729bc044da4748fe004524e0df696d2ec92c5bd053db9aad6e15675f3838429b2a7b9061a6b694be4dc319d1782a876b44df506ddd439d62ad07252d0e1
2024-01-02Merge bitcoin/bitcoin#29076: fuzz: set `m_fallback_fee` and `m_fee_mode` in ↵Ava Chow
`wallet_fees` target e03d6f7ed534f423f58236866f8e83beee1871e1 fuzz: set `m_fallback_fee`/`m_fee_mode` in `wallet_fees` target (brunoerg) Pull request description: `m_fallback_fee` and `m_fee_mode` are used in `GetMinimumFeeRate` but we're not setting any value for them in `wallet_fees` target. That's the reason fuzzing is never reaching the following code: ![Screenshot 2023-12-13 at 15 04 30](https://github.com/bitcoin/bitcoin/assets/19480819/454ddcaa-75ca-452f-ad13-5f142de0bdce) This PR fixes it. ACKs for top commit: maflcko: review ACK e03d6f7ed534f423f58236866f8e83beee1871e1 achow101: ACK e03d6f7ed534f423f58236866f8e83beee1871e1 murchandamus: ACK e03d6f7ed534f423f58236866f8e83beee1871e1 Tree-SHA512: 5d364f5351d65762a3ddf88e3abb7bda401b7e4955285e083031d216fb50082b1ea98e2c065aff75a5a8a3d1bc4c2e5e3ca9f9478d902ee8f8d4347b6cbe53af
2024-01-02Merge bitcoin/bitcoin#26684: bench: add readblock benchmarkAva Chow
1c4b9cbe906507295d8b7d52855de1441ad411dd bench: add readblock benchmark (Andrew Toth) Pull request description: Requested in https://github.com/bitcoin/bitcoin/pull/13151#issuecomment-385962450. See https://github.com/bitcoin/bitcoin/pull/26415 and https://github.com/bitcoin/bitcoin/pull/21319. Benchmarking shows a >50x increase in speed on both nvme and spinning disk. Benchmark results: | ns/op | op/s | err% | ins/op | cyc/op | IPC | bra/op | miss% | total | benchmark |--------------------:|--------------------:|--------:|----------------:|----------------:|-------:|---------------:|--------:|----------:|:---------- | 5,377,375.00 | 185.96 | 0.2% | 60,125,513.00 | 11,633,676.00 | 5.168 | 3,588,800.00 | 0.4% | 0.09 | `ReadBlockFromDiskTest` | ns/op | op/s | err% | ins/op | cyc/op | IPC | bra/op | miss% | total | benchmark |--------------------:|--------------------:|--------:|----------------:|----------------:|-------:|---------------:|--------:|----------:|:---------- | 89,945.58 | 11,117.83 | 0.7% | 12,743.90 | 64,530.33 | 0.197 | 2,595.20 | 0.2% | 0.01 | `ReadRawBlockFromDiskTest` ACKs for top commit: maflcko: lgtm ACK 1c4b9cbe906507295d8b7d52855de1441ad411dd achow101: ACK 1c4b9cbe906507295d8b7d52855de1441ad411dd TheCharlatan: ACK 1c4b9cbe906507295d8b7d52855de1441ad411dd Tree-SHA512: 71dbcd6c7e2be97eb3001e35d0a95ef8e0c9b10dc9193025c7f8e11a09017fa2fbf89489b686353cd88fb409fb729fe2c4a25c567d2988f64c9c164ab09fba9f
2024-01-02test: change `m_submitted_in_package` input to fuzz data provider booleanismaelsadeeq
In reality some mempool transaction might be submitted in a package, so change m_submitted_in_package to fuzz data provider boolean just like m_has_no_mempool_parents.
2024-01-02tx fees: update `m_from_disconnected_block` to `m_mempool_limit_bypassed`ismaelsadeeq
The boolean indicates whether the transaction was added without enforcing mempool fee limits. m_mempool_limit_bypassed is the correct variable name. Also changes NewMempoolTransactionInfo booleans descriptions to the format that is consistent with the codebase.
2024-01-02doc: fix typo and update incorrect commentismaelsadeeq
2023-12-31fuzz: rule-out too deep derivation paths in descriptor parsing targetsAntoine Poinsot
This fixes the reported timeouts and direct the target cycles toward what it's intended to fuzz: the descriptor syntax.
2023-12-27cli: add transport protcol column to -netinfoMartin Zumsande
2023-12-27net: attempt v2 transport for addrfetch connections if we support itMartin Zumsande
2023-12-27net: attempt v2 transport for manual connections if we support itMartin Zumsande
This affects manual connections made either with -connect, or with -addnode provided as a bitcoind config arg (the addnode RPC has an extra option for v2). We don't necessarily know if our peer supports v2, but will reconnect with v1 if they don't. In order to do that, improve the reconnection behavior such that we will reconnect after a sleep of 500ms (which usually should be enough for our peer to send us their version message).
2023-12-23refactor: share and use `GenerateRandomKey` helperSebastian Falbesoner
Making the `GenerateRandomKey` helper available to other modules via key.{h.cpp} allows us to create random private keys directly at instantiation of CKey, in contrast to the two-step process of creating the instance and then having to call `MakeNewKey(...)`.
2023-12-21Merge bitcoin/bitcoin#29056: refactor: Print verbose serialize compiler ↵Ava Chow
error messages fae526345de539ab8f9b80100f6dfbe8e1d3284b Allow std::byte C-style array serialization (MarcoFalke) fa898e6836a8fc2c7b6c8c15ad21818b16a89863 refactor: Print verbose serialize compiler error messages (MarcoFalke) Pull request description: Currently, trying to serialize an object that can't be serialized will fail with a short error message. For example, the diff and the error message: ```diff diff --git a/src/test/serialize_tests.cpp b/src/test/serialize_tests.cpp index d75eb499b4..773f49845b 100644 --- a/src/test/serialize_tests.cpp +++ b/src/test/serialize_tests.cpp @@ -62,6 +62,8 @@ public: BOOST_AUTO_TEST_CASE(sizes) { + int b[4]; + DataStream{} << b << Span{b}; BOOST_CHECK_EQUAL(sizeof(unsigned char), GetSerializeSize((unsigned char)0)); BOOST_CHECK_EQUAL(sizeof(int8_t), GetSerializeSize(int8_t(0))); BOOST_CHECK_EQUAL(sizeof(uint8_t), GetSerializeSize(uint8_t(0))); ``` ``` ./serialize.h:765:6: error: member reference base type 'const int[4]' is not a structure or union 765 | a.Serialize(os); | ~^~~~~~~~~~ ``` ``` ./serialize.h:277:109: error: no matching function for call to 'UCharCast' 277 | template <typename Stream, typename B> void Serialize(Stream& s, Span<B> span) { (void)/* force byte-type */UCharCast(span.data()); s.write(AsBytes(span)); } | ^~~~~~~~~ ``` This is fine. However, it would be more helpful for developers and more accurate by the compiler to explain why each function is not selected. Fix this by using C++20 concepts where appropriate. ACKs for top commit: ajtowns: reACK fae526345de539ab8f9b80100f6dfbe8e1d3284b achow101: ACK fae526345de539ab8f9b80100f6dfbe8e1d3284b TheCharlatan: Re-ACK fae526345de539ab8f9b80100f6dfbe8e1d3284b Tree-SHA512: e03a684ccfcc5fbcad7f8a4899945a05989b555175fdcaebdb113aff46b52b4ee7b467192748edf99c5c348a620f8e52ab98bed3f3fca88280a64dbca458fe8a
2023-12-21Merge bitcoin/bitcoin#29027: wallet: fix key parsing check for miniscript ↵Ava Chow
expressions e1281f1bbd884f15d40053c9bc24794d0ce9a58a wallet: fix key parsing check for miniscript expressions in `ParseScript` (brunoerg) Pull request description: In `ParseScript`, when processing miniscript expressions, the way we check for key parsing error is wrong, the actual code is unreachable because we're checking it into `if (node)` (successful parsing) statement. ACKs for top commit: sipa: utACK e1281f1bbd884f15d40053c9bc24794d0ce9a58a RandyMcMillan: utACK https://github.com/bitcoin/bitcoin/commit/e1281f1bbd884f15d40053c9bc24794d0ce9a58a achow101: ACK e1281f1bbd884f15d40053c9bc24794d0ce9a58a Tree-SHA512: c4b3765d32673928a1f6d84ecbaa311870da9a9625753ed15ea57c802a9f16ddafa48c1dc66c0e4be284c5862e7821ed94135498ed9b9f3d7342a080035da289
2023-12-20Merge bitcoin/bitcoin#28372: fuzz: coinselection, improve ↵Ava Chow
`min_viable_change`/`change_output_size` cd810075eddd8b1a7139559b475b56126f70a93d fuzz: coinselection, improve `min_viable_change`/`change_output_size` (brunoerg) Pull request description: Instead of "randomly" fuzzing `min_viable_change` and `change_output_size`, and since they're correlated, this PR changes the approach to fuzz them according to the logic in `CreateTransactionInternal`. ACKs for top commit: murchandamus: ACK cd810075eddd8b1a7139559b475b56126f70a93d achow101: ACK cd810075eddd8b1a7139559b475b56126f70a93d furszy: Code ACK cd810075eddd Tree-SHA512: 4539b469f00cdf666078d80c07ed062726f804e390400348148cd3092db9cdc178c6d00ead39aef19acf97badfb6576ce23546d8967387e81c5398d52d7f4404
2023-12-20Merge bitcoin/bitcoin#29115: [doc]: add doxygen comment describing what ↵glozow
`CheckPackageLimits` returns 19bb65bf255df0f876e37de90fb8c4c6229cdf52 [doc]: add doxygen return comment for CheckPackageLimits (ismaelsadeeq) Pull request description: This PR adds a doxygen comment on `CheckPackageLimits` describing what the method returns. Fixes https://github.com/bitcoin/bitcoin/pull/28863#discussion_r1429805433 ACKs for top commit: Sjors: utACK 19bb65bf255df0f876e37de90fb8c4c6229cdf52 Zero-1729: utACK 19bb65bf255df0f876e37de90fb8c4c6229cdf52 Tree-SHA512: ccf1cc00a44d3fff60f28ad6766019a9f61b349729eab3cb02bc76b13c2e55441348a1602d806e60e4b2eabeb1f5d1ddacddf86c0bcdb78b078bb3a863b650c2
2023-12-20logging: Replace uses of LogPrintfCategoryAnthony Towns
Replace LogPrintfCategory with alternative unconditional log statements.
2023-12-20logging: add LogError, LogWarning, LogInfo, LogDebug, LogTraceAnthony Towns
These provide simple and clear ways to write the most common logging operations: LogInfo("msg"); LogDebug(BCLog::LogFlags::NET, "msg"); LogError("msg"); LogWarning("msg"); LogTrace(BCLog::LogFlags::NET, "msg"); For cases where the level cannot be hardcoded, LogPrintLevel(category, level, ...) remains available.
2023-12-19Merge bitcoin/bitcoin#29037: Add multiplication operator to CFeeRateAva Chow
1757452cc55a6dacc62e4258043ee4d711fd281a test: Add tests for CFeeRate multiplication operator (Kashif Smith) 1553c8078698df1058b62e8fdadaf74160977b30 Add multiplication operator to CFeeRate (Murch) Pull request description: Allows us to use `coin_selection_params.m_long_term_feerate * 3` or `3 * coin_selection_params.m_long_term_feerate` instead of `CFeeRate{coin_selection_params.m_long_term_feerate.GetFee(3000)}` inspired by https://github.com/bitcoin/bitcoin/pull/27877#discussion_r1414455724 ACKs for top commit: kevkevinpal: reACK [1757452](https://github.com/bitcoin/bitcoin/pull/29037/commits/1757452cc55a6dacc62e4258043ee4d711fd281a) achow101: ACK 1757452cc55a6dacc62e4258043ee4d711fd281a ajtowns: ACK 1757452cc55a6dacc62e4258043ee4d711fd281a ; lgtm ismaelsadeeq: ACK 1757452cc55a6dacc62e4258043ee4d711fd281a Tree-SHA512: a86faac1efd1b7688630cd811246533d184d56b62064a7fd9007de95dbf81fa668aa2252253d102fba67517b6a4ca2dc367c5388b8ab936215734d7d370740cf
2023-12-19wallettool: Don't create CWallet when dumping DBAndrew Chow
It's not necessary to set up an entire CWallet just so we can get access to the WalletDatabase and read the records. Instead we can go one level lower and make just a WalletDatabase.
2023-12-19wallettool: Don't unilaterally reset wallet_instance if loading errorAva Chow
When there is a wallet loading error, it could be a noncritical one so it is not necessary to make wallet_instance a nullptr. The wallet can still go on with normal operation in that case, as we do for loading in bitcoind and bitcoin-qt.
2023-12-19[doc]: add doxygen return comment for CheckPackageLimitsismaelsadeeq
2023-12-18Merge bitcoin/bitcoin#28863: wallet, mempool: propagete `checkChainLimits` ↵glozow
error message to wallet 8dec9c560b53488c1e71d8f74241c7dce42cb387 wallet, mempool: propagete `checkChainLimits` error message to wallet (ismaelsadeeq) Pull request description: * Requested in [#28391 comment](https://github.com/bitcoin/bitcoin/pull/28391#discussion_r1382997719) * The error message is static when a new transaction is created and package limit is reached. `Transaction has too long of a mempool chain` While the [`CTxMempool::CheckPackageLimits`](https://github.com/bitcoin/bitcoin/blob/5800c558eb5efb4839ed00d6967e43306d68e1c3/src/txmempool.cpp#L199) provide explicit information about the error message. * This PR updates [`CTxMempool::CheckPackageLimits`](https://github.com/bitcoin/bitcoin/blob/5800c558eb5efb4839ed00d6967e43306d68e1c3/src/txmempool.cpp#L199) return type to `util::Result<void>`, `CheckPackageLimits` now returns void when package limit is not hit, and returns the error string whenever package limit is hit instead of using out parameter `errString`. * The PR updates [`checkChainLimits`](https://github.com/bitcoin/bitcoin/blob/5800c558eb5efb4839ed00d6967e43306d68e1c3/src/node/interfaces.cpp#L703) return type to `util::Result<void>`. * Now the wallet `CreateTransactionInternal` will have access to the package limit error string whenever its hit. * Also Updated functional test to reflect the error message from `CTxMempool::CheckPackageLimits` output. ACKs for top commit: glozow: utACK 8dec9c560b Sjors: utACK 8dec9c560b53488c1e71d8f74241c7dce42cb387 TheCharlatan: Re-ACK 8dec9c560b53488c1e71d8f74241c7dce42cb387 Tree-SHA512: ddeac18aeba6f8e3be0e3fe76bf3db655352e3b415169f1f83ea1e8976a2f3e3de021c8da6880eb8382ab52d545e418e3f4d57adcc68ecb4f390339710ee6f30
2023-12-18Merge bitcoin/bitcoin#29064: fuzz: Improve fuzzing stability for minisketch ↵fanquake
harness b2fc7a2eda103724ac8cbeaf99df3ce6f5b7d974 [fuzz] Improve fuzzing stability for minisketch harness (dergoegge) Pull request description: The `minisketch` harness has low stability due to: * Rng internal to minisketch * Benchmarkning for the best minisketch impl Fix this by seeding the rng and letting the fuzzer choose the impl. Also see #29018. ACKs for top commit: maflcko: review ACK b2fc7a2eda103724ac8cbeaf99df3ce6f5b7d974 Tree-SHA512: 3d81414299c6803c34e928a53bcf843722fa8c38e1d3676cde7fa80923f9058b1ad4b9a2941f718303a6641b17eeb28b4a22eda09678102e9fb7c4e31d06f8f2
2023-12-18Merge bitcoin/bitcoin#29079: fuzz: Limit p2p fuzz targets to ↵fanquake
MAX_PROTOCOL_MESSAGE_LENGTH fa769d3e41daec696452b8a0a8753ba511b0a4b5 fuzz: Limit p2p fuzz targets to MAX_PROTOCOL_MESSAGE_LENGTH (MarcoFalke) Pull request description: Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65039 ACKs for top commit: dergoegge: utACK fa769d3e41daec696452b8a0a8753ba511b0a4b5 brunoerg: crACK fa769d3e41daec696452b8a0a8753ba511b0a4b5 Tree-SHA512: 46f70d1acf4e2f95055c70162909010c6322f8504a810906e1ab4db470dc2525f9a494b8427b254279bc68b1c8b87338c943787fd5249df7113556740701a51a
2023-12-17wallet, mempool: propagete `checkChainLimits` error message to walletismaelsadeeq
Update CheckPackageLimits to use util::Result to pass the error message instead of out parameter. Also update test to reflect the error message from `CTxMempool` `CheckPackageLimits` output.
2023-12-15Merge bitcoin/bitcoin#29088: tests: Don't depend on value of ↵Ava Chow
DEFAULT_PERMIT_BAREMULTISIG 7b45744df33c6a4759eae1a3984f389cbac837c2 tests: ensure functional tests set permitbaremultisig=1 when needed (Anthony Towns) 7dfabdcf860c529772a54b0e8fa235cbb4a78b4d tests: test both settings for permitbaremultisig in p2sh tests (Anthony Towns) Pull request description: Update unit and functional tests so that they continue to work if the default for `-permitbaremultisig` is changed. ACKs for top commit: maflcko: lgtm ACK 7b45744df33c6a4759eae1a3984f389cbac837c2 instagibbs: crACK https://github.com/bitcoin/bitcoin/pull/29088/commits/7b45744df33c6a4759eae1a3984f389cbac837c2 ajtowns: > crACK [7b45744](https://github.com/bitcoin/bitcoin/commit/7b45744df33c6a4759eae1a3984f389cbac837c2) achow101: ACK 7b45744df33c6a4759eae1a3984f389cbac837c2 glozow: ACK 7b45744df33c6a4759eae1a3984f389cbac837c2, changed default locally and all tests passed Tree-SHA512: f89f9e2bb11f07662cfd57390196df9e531064e1bd662e1db7dcfc97694394ae5e8014e9d209b9405aa09195bf46fc331b7fba10378065cdb270cbd0669ae904
2023-12-15Allow std::byte C-style array serializationMarcoFalke
2023-12-15refactor: Print verbose serialize compiler error messagesMarcoFalke
2023-12-15fuzz: coinselection, improve `min_viable_change`/`change_output_size`brunoerg
Change it to use same approach from `CreateTransactionInternal`.
2023-12-15tests: test both settings for permitbaremultisig in p2sh testsAnthony Towns