aboutsummaryrefslogtreecommitdiff
path: root/src/rpc
AgeCommit message (Collapse)Author
2025-01-06Merge bitcoin/bitcoin#31596: doc: Clarify comments about endianness after #30526HEADmasterAva Chow
3e0a992a3f0f2b15b7be5049dc4f3134b4b0bc40 doc: Clarify comments about endianness after #30526 (Ryan Ofsky) Pull request description: This is a documentation-only change following up on suggestions made in the #30526 review. Motivation for this change is that I was recently reviewing #31583, which reminded me how confusing the arithmetic blob code was and made me want to write better comments. ACKs for top commit: achow101: ACK 3e0a992a3f0f2b15b7be5049dc4f3134b4b0bc40 TheCharlatan: ACK 3e0a992a3f0f2b15b7be5049dc4f3134b4b0bc40 Sjors: ACK 3e0a992a3f0f2b15b7be5049dc4f3134b4b0bc40 BrandonOdiwuor: LGTM ACK 3e0a992a3f0f2b15b7be5049dc4f3134b4b0bc40 Tree-SHA512: 90d5582a25a51fc406d83ca6b8c4e5e4d3aee828a0497f4b226b2024ff89e29b9b50d0ae8ddeac6abf2757fe78548d58cf3dd54df4b6d623f634a2106048091d
2025-01-03doc: Clarify comments about endianness after #30526Ryan Ofsky
This is a documentation-only change following up on suggestions made in the #30526 review. Motivation for this change is that I was recently reviewing #31583, which reminded me how confusing the arithmetic blob code was and made me want to write better comments.
2025-01-03Merge bitcoin/bitcoin#28121: include verbose "reject-details" field in ↵glozow
testmempoolaccept response b6f0593f43304f4ff31e8b68558ceeb1b588403c doc: add release note about testmempoolaccept debug-message (Matthew Zipkin) f9cac635237142090271022164fa5d58e014493d test: cover testmempoolaccept debug-message in RBF test (Matthew Zipkin) f9650e18ea6edb41c0136cc2ec3c7e0aba1bf83a rbf: remove unecessary newline at end of error string (Matthew Zipkin) 221c789e91696569fa34dbd162d26e98cf9cab64 rpc: include verbose reject-details field in testmempoolaccept response (Matthew Zipkin) Pull request description: Adds a new field `reject-details` in `testmempoolaccept` responses to include `m_debug_message` from `ValidationState`. This string is the complete error message thrown by the mempool in response to `sendrawtransaction`. The extra verbosity is helpful to consumers of `testmempoolaccept`, which is sort of a debug tool anyway. example: > > { > "txid": "07d7a59a7bdad4c3a5070659ea04147c9b755ad9e173c52b6a38e017abf0f5b8", > "wtxid": "5dc243b1b92ee2f5a43134eb3e23449be03d1abb3d7f3c03c836ed0f13c50185", > "allowed": false, > "reject-reason": "insufficient fee", > "reject-details": "insufficient fee, rejecting replacement 07d7a59a7bdad4c3a5070659ea04147c9b755ad9e173c52b6a38e017abf0f5b8; new feerate 0.00300000 BTC/kvB <= old feerate 0.00300000 BTC/kvB" > } ACKs for top commit: rkrux: re-ACK b6f0593f43304f4ff31e8b68558ceeb1b588403c glozow: ACK b6f0593f43304f4ff31e8b68558ceeb1b588403c Tree-SHA512: 340b8023d59cefa84598879c4efdb7c399a3f62da126e87c595523f302e53d33098fc69da9c5f8c92b7580dc75466c66cea372051f935b197265648fe15c43a3
2024-12-30Merge bitcoin/bitcoin#31563: rpc: Extend scope of validation mutex in ↵Ava Chow
generateblock fa63b8232f38e78d3c6413fa7d51809f376de75c test: generateblocks called by multiple threads (MarcoFalke) fa62c8b1f04a5386ffa171aeff713d55bd874cbe rpc: Extend scope of validation mutex in generateblock (MarcoFalke) Pull request description: The mutex (required by TestBlockValidity) must be held after creating the block, until TestBlockValidity is called. Otherwise, it is possible that the chain advances in the meantime and leads to a crash in TestBlockValidity: `Assertion failed: pindexPrev && pindexPrev == chainstate.m_chain.Tip() (validation.cpp: TestBlockValidity: 4338)` Fixes #31562 ACKs for top commit: davidgumberg: reACK https://github.com/bitcoin/bitcoin/commit/fa63b8232f38e78d3c6413fa7d51809f376de75c achow101: ACK fa63b8232f38e78d3c6413fa7d51809f376de75c ismaelsadeeq: re-ACK fa63b8232f38e78d3c6413fa7d51809f376de75c mzumsande: utACK fa63b8232f38e78d3c6413fa7d51809f376de75c Tree-SHA512: 3dfda1192af52546ab11fbffe44af8713073763863f4a63fbcdbdf95b1c6cbeb003dc4b8b29e7ec67362238ad15e07d8f6855832a0c68dc5370254f8cbf9445c
2024-12-30Merge bitcoin/bitcoin#31531: rpc: Add signet_challenge field to ↵Ava Chow
getblockchaininfo and getmininginfo ecaa786cc103cf7cc63ae899ec13d81a54e2fd1e rpc: add signet_challenge field to getblockchaininfo and getmininginfo (Ash Manning) Pull request description: Signet challenges are currently only available via `getblocktemplate` RPC. `getblockchaininfo` and `getmininginfo` both provide inadequate information to distinguish signets. Since these are the RPCs used to determine the current network, they should also provide the signet challenge for signets. Test coverage is included in `test/functional/feature_signet.py`. ACKs for top commit: sipa: utACK ecaa786cc103cf7cc63ae899ec13d81a54e2fd1e achow101: ACK ecaa786cc103cf7cc63ae899ec13d81a54e2fd1e i-am-yuvi: Concept ACK ecaa786cc103cf7cc63ae899ec13d81a54e2fd1e Sjors: ACK ecaa786cc103cf7cc63ae899ec13d81a54e2fd1e zaidmstrr: Tested ACK [ecaa786](https://github.com/bitcoin/bitcoin/pull/31531/commits/ecaa786cc103cf7cc63ae899ec13d81a54e2fd1e) Tree-SHA512: 9ccf4ae634ee74353a2a895efb881fdc62ae703a134ccd219da2cd6080c7d38319e689054584722457a7cc79004bd6022292a3b0b90eaab9f7003564665e1ea4
2024-12-24rpc: Extend scope of validation mutex in generateblockMarcoFalke
The mutex (required by TestBlockValidity) must be held after creating the block, until TestBlockValidity is called. Otherwise, it is possible that the chain advances in the meantime and leads to a crash in TestBlockValidity: Assertion failed: pindexPrev && pindexPrev == chainstate.m_chain.Tip() (validation.cpp: TestBlockValidity: 4338) The diff can be reviewed with the git options --ignore-all-space --function-context
2024-12-20rpc: add signet_challenge field to getblockchaininfo and getmininginfoAsh Manning
2024-12-18Merge bitcoin/bitcoin#31196: Prune mining interfaceRyan Ofsky
c991cea1a0c3ea99dc3e3919789ddf32a338a59d Remove processNewBlock() from mining interface (Sjors Provoost) 9a47852d88cf79a94ea2b7884f2dfa319bf37e4d Remove getTransactionsUpdated() from mining interface (Sjors Provoost) bfc4e029d41ec3052d68f174565802016cb05d41 Remove testBlockValidity() from mining interface (Sjors Provoost) Pull request description: There are three methods in the mining interface that can be dropped. The Template Provider doesn't need them and other application should probably not use them either. 1. `processNewBlock()` was added in 7b4d3249ced93ec5986500e43b324005ed89502f, but became unnecessary with the introduction of interfaces::BlockTemplate::submitSolution in 7b4d3249ced93ec5986500e43b324005ed89502f. Dropping it was suggested in https://github.com/bitcoin/bitcoin/pull/30200#issuecomment-2404460342 2. `getTransactionsUpdated()`: this is used in the implementation of #31003 `waitFeesChanged`. It's not very useful generically because the mempool updates very frequently. 3. `testBlockValidity()`: it might be useful for mining application to have a way to check the validity of a block template they modified, but the Stratum v2 Template Provider doesn't do that, and this method is a bit brittle (e.g. the block needs to build on the tip). ACKs for top commit: TheCharlatan: Re-ACK c991cea1a0c3ea99dc3e3919789ddf32a338a59d ryanofsky: Code review ACK c991cea1a0c3ea99dc3e3919789ddf32a338a59d. Since last review, just rebased to avoid conflicts in surrounding code, and edited a commit message tdb3: code review ACK c991cea1a0c3ea99dc3e3919789ddf32a338a59d Tree-SHA512: 2138e54f920b26e01c068b24498c6a210c5c4358138dce0702ab58185d9ae148a18f04c97ac9f043646d40f8031618d80a718a176b1ce4779c237de6fb9c4a67
2024-12-18Merge bitcoin/bitcoin#31393: refactor: Move GuessVerificationProgress into ↵Ryan Ofsky
ChainstateManager facb4d010ca5c898756bedee46069509900ebea0 refactor: Move GuessVerificationProgress into ChainstateManager (MarcoFalke) Pull request description: Currently the function is standalone, which means any passed-in data like `TxData` or the block pointer needs to be taken from the `ChainstateManager` and passed in. This is currently verbose and may become even more verbose if the function is reworked in the future. As the function can not be called without a `ChainstateManager` in production code anyway, make it a member function on the class. ACKs for top commit: ryanofsky: Code review ACK facb4d010ca5c898756bedee46069509900ebea0. Nice cleanup, that should make this code less awkward to work with TheCharlatan: ACK facb4d010ca5c898756bedee46069509900ebea0 danielabrozzoni: reACK facb4d010ca5c898756bedee46069509900ebea0 Tree-SHA512: b17977e12cd7c6e308c47e6a1aa920acecd4442696e46d1f30bd7c201e9898ca2d581ff0bf2cc9f7334e146c1b0c50925adb849c8c17f65dcdf6877be1c5f776
2024-12-18Remove processNewBlock() from mining interfaceSjors Provoost
processNewBlock was added in 7b4d3249ced93ec5986500e43b324005ed89502f, but became unnecessary with the introduction of interfaces::BlockTemplate::submitSolution in 7b4d3249ced93ec5986500e43b324005ed89502f. getTransactionsUpdated() is only needed by the implementation of waitFeesChanged() (not yet part of the interface).
2024-12-18Remove getTransactionsUpdated() from mining interfaceSjors Provoost
It's unnecessary to expose it via this interface.
2024-12-18Remove testBlockValidity() from mining interfaceSjors Provoost
It's very low level and not used by the proposed Template Provider. This method was introduced in d8a3496b5ad27bea4c79ea0344f595cc1b95f0d3 and a74b0f93efa1d9eaf5abc2f6591c44a632aec6ed.
2024-12-17Merge bitcoin/bitcoin#31318: Drop script_pub_key arg from createNewBlockRyan Ofsky
52fd1511a774d1ff9e747b2ce88aa1fcb778ced8 test: drop scriptPubKeyIn arg from CreateNewBlock (Sjors Provoost) ff41b9e296aba0237e068fab181523c50bf8c9d0 Drop script_pub_key arg from createNewBlock (Sjors Provoost) 7ab733ede444aee61ab52670c228eec811268c6f rpc: rename coinbase_script to coinbase_output_script (Sjors Provoost) Pull request description: Providing a script for the coinbase transaction is only done in test code and for (unoptimized) CPU solo mining. Production miners use the `getblocktemplate` RPC which omits the coinbase transaction entirely from its block template, leaving it to external (pool) software to construct it. This commit removes the `script_pub_key argument` from `createNewBlock()` in the Mining interface. A coinbase script can still be passed via `BlockCreateOptions` instead. Tests are modified to do so. ACKs for top commit: ryanofsky: Code review ACK 52fd1511a774d1ff9e747b2ce88aa1fcb778ced8. No change since last review other than rebase TheCharlatan: Re-ACK 52fd1511a774d1ff9e747b2ce88aa1fcb778ced8 vasild: ACK 52fd1511a774d1ff9e747b2ce88aa1fcb778ced8 Tree-SHA512: c4b3a53774d9a5dc90950e77f47a64dbb68f971baffbb9a0d8f59332ef8e52d0c039130c925bde73135b3d0e79e65d91d1df30dc4cff13f32d8a72e5c56669d8
2024-12-13refactor: Move GuessVerificationProgress into ChainstateManagerMarcoFalke
2024-12-12docs: remove repetitive wordsRiceChuan
Signed-off-by: RiceChuan <lc582041246@gmail.com>
2024-12-04rpc: include verbose reject-details field in testmempoolaccept responseMatthew Zipkin
2024-12-04Merge bitcoin/bitcoin#31212: util: Improve documentation and negation of argsAva Chow
95a0104f2e9869799db84add108ae8c57b56d360 test: Add tests for directories in place of config files (Hodlinator) e85abe92c7cc5380489c028479f0d42f91827efd args: Catch directories in place of config files (Hodlinator) e4b6b1822ce004365be11c54c8f5f02f95303fb0 test: Add tests for -noconf (Hodlinator) 483f0dacc413f4b1ba1b74c2429c4367b87e7f11 args: Properly support -noconf (Hodlinator) 312ec64cc0619f58c6e8abc5855fd2fa0e920c3f test refactor: feature_config_args.py - Stop nodes at the end of tests, not at the beginning (Hodlinator) 7402658bc2b9d835b240edb9c1dac308859687c3 test: -norpccookiefile (Hodlinator) 39cbd4f37c3d3a32cd993cbc78052d53f700989b args: Support -norpccookiefile for bitcoind and bitcoin-cli (Hodlinator) e82ad88452bce4132e4583727e610d52dcf9ad9e logs: Use correct path and more appropriate macros in cookie-related code (Hodlinator) 6e28c76907ca0012b1a4556d9a982dfffb5abaf6 test: Harden testing of cookie file existence (Hodlinator) 75bacabb55f3d54ad9b2c660cafc82c167e4f644 test: combine_logs.py - Output debug.log paths on error (Hodlinator) bffd92f00f5bfbb5a622d0bd20bfeed9f8b10928 args: Support -nopid (Hodlinator) 12f8d848fd91b11d5cffe21dfc3ba124102ee236 args: Disallow -nodatadir (Hodlinator) 6ff9662760099c405cf13153dd1de22900045f5e scripted-diff: Avoid printing version information for -noversion (Hodlinator) e8a2054edc814b2c4661b96a3dce91da9be68fa4 doc args: Document narrow scope of -color (Hodlinator) Pull request description: - Document `-color` as only applying to `-getinfo`, to be less confusing for bitcoin-cli users. - No longer print version information when getting passed `-noversion`. - Disallow `-nodatadir` as we cannot run without one. It was previously interpreted as a mix of unset and as a relative path of "0". - Support `-norpccookiefile` - Support `-nopid` - Properly support `-noconf` (instead of working by accident). Also detect when directories are specified instead of files. Prompted by investigation in https://github.com/bitcoin/bitcoin/pull/16545#pullrequestreview-2316714013. ACKs for top commit: l0rinc: utACK 95a0104f2e9869799db84add108ae8c57b56d360 achow101: ACK 95a0104f2e9869799db84add108ae8c57b56d360 ryanofsky: Code review ACK 95a0104f2e9869799db84add108ae8c57b56d360. Looks good! Thanks for all your work on this breaking the changes down and making them simple. Tree-SHA512: 5174251e6b9196a9c6d135eddcb94130295c551bcfccc78e633d9e118ff91523b1be0d72828fb49603ceae312e6e1f8ee2651c6a2b9e0f195603a73a9a622785
2024-12-04Drop script_pub_key arg from createNewBlockSjors Provoost
Providing a script for the coinbase transaction is only done in test code and for CPU solo mining. Production miners use the getblocktemplate RPC which omits the coinbase transaction entirely from its block template, leaving it to external (pool) software to construct it. A coinbase script can still be passed via BlockCreateOptions instead. A temporary overload is added so that the test can be modified in the next commit.
2024-12-04rpc: rename coinbase_script to coinbase_output_scriptSjors Provoost
2024-12-03Merge bitcoin/bitcoin#31096: Package validation: accept packages of size 1Ava Chow
32fc59796f74a2941772b5ec2755b1319132cd9c rpc: Allow single transaction through submitpackage (glozow) Pull request description: There's no particular reason to restrict single transaction submissions with submitpackage. This change relaxes the RPC checks as enables the `AcceptPackage` flow to accept packages of a single transaction. Resolves #31085 ACKs for top commit: naumenkogs: ACK https://github.com/bitcoin/bitcoin/commit/32fc59796f74a2941772b5ec2755b1319132cd9c achow101: ACK 32fc59796f74a2941772b5ec2755b1319132cd9c glozow: ACK 32fc59796f74a2941772b5ec2755b1319132cd9c Tree-SHA512: ffed353bfdca610ffcfd53b40b76da05ffc26df6bac4b0421492e067bede930380e03399d2e2d1d17f0e88fb91cd8eb376e3aabebbabcc724590bf068d09807c
2024-12-03Merge bitcoin/bitcoin#31175: rpc: Remove submitblock pre-checksAva Chow
73db95c65c1d372822166045ca8b9f173d5fd883 kernel: Make bitcoin-chainstate's block validation mirror submitblock's (TheCharlatan) bb53ce9bdae2f02d7bd95cf5d8ca4ccf5136466a tests: Add functional test for submitting a previously pruned block (Greg Sanders) 1f7fc738255205a64374686aca9a4c53089360f1 rpc: Remove submitblock duplicate pre-check (TheCharlatan) e62a8abd7df21795dcd173773f689b6d4c8feab6 rpc: Remove submitblock invalid-duplicate precheck (TheCharlatan) 36dbebafb9b54764005e6fffa7ad28d4cadfe5e4 rpc: Remove submitblock coinbase pre-check (TheCharlatan) Pull request description: With the introduction of a mining ipc interface and the potential future introduction of a kernel library API it becomes increasingly important to offer common behaviour between them. An example of this is ProcessNewBlock, which is used by ipc, rpc, net_processing and (potentially) the kernel library. Having divergent behaviour on suggested pre-checks and checks for these functions is confusing to both developers and users and is a maintenance burden. The rpc interface for ProcessNewBlock (submitblock) currently pre-checks if the block has a coinbase transaction and whether it has been processed before. While the current example binary for how to use the kernel library, bitcoin-chainstate, imitates these checks, the other interfaces do not. The coinbase check is repeated again early during ProcessNewBlock. Pre-checking it may also shadow more fundamental problems with a block. In most cases the block header is checked first, before validating the transactions. Checking the coinbase first therefore masks potential issues with the header. Fix this by removing the pre-check. Similary the duplicate checks are repeated early in the contextual checks of ProcessNewBlock. If duplicate blocks are detected much of their validation is skipped. Depending on the constitution of the block, validating the merkle root of the block is part of the more intensive workload when validating a block. This could be an argument for moving the pre-checks into block processing. In net_processing this would have a smaller effect however, since the block mutation check, which also validates the merkle root, is done before. Testing spamming a node with valid, but duplicate unrequested blocks seems to exhaust a CPU thread, but does not seem to significantly impact keeping up with the tip. The benefits of adding these checks to net_processing are questionable, especially since there are other ways to trigger the more CPU-intensive checks without submitting a duplicate block. Since these DOS concerns apply even less to the RPC interface, which does not have banning mechanics built in, remove them too. Finally, also remove the pre-checks from `bitcoin-chainstate.cpp`. --- This PR is part of the [libbitcoinkernel project](https://github.com/bitcoin/bitcoin/issues/27587). ACKs for top commit: Sjors: re-utACK 73db95c65c1d372822166045ca8b9f173d5fd883 achow101: ACK 73db95c65c1d372822166045ca8b9f173d5fd883 instagibbs: ACK 73db95c65c1d372822166045ca8b9f173d5fd883 mzumsande: ACK 73db95c65c1d372822166045ca8b9f173d5fd883 Tree-SHA512: 2d02e851cf402ecf6a1968c058df3576aac407e200cbf922a1a6391b7f97b4f42c6d9f6b0a78b9d1af0a6d40bdd529a7b11a1e6d88885bd7b8b090f6d1411861
2024-12-03args: Support -norpccookiefile for bitcoind and bitcoin-cliHodlinator
Replaces belt & suspenders check for initialization in RPCAuthorized() with not allowing empty passwords further down.
2024-12-03logs: Use correct path and more appropriate macros in cookie-related codeHodlinator
filepath_tmp -> filepath in last message. More material changes to nearby code in next commit.
2024-11-27Merge bitcoin/bitcoin#30708: rpc: add getdescriptoractivityAva Chow
37a5c5d83664c31d83fc649d3c8c858bd5f10f21 doc: update descriptors.md for getdescriptoractivity (James O'Beirne) ee3ce6a4f4d35afe7fcab16eff419a6788b02170 test: rpc: add no address case for getdescriptoractivity (James O'Beirne) 811f76f3a511d20750046319b390e225a1151caa rpc: add getdescriptoractivity (James O'Beirne) 25fe087de59e967ce968d35ed77138325eb9a9fa rpc: move-only: move ScriptPubKeyDoc to utils (James O'Beirne) Pull request description: The RPC command `scanblocks` provides a useful way to get a set of blockhashes that have activity relevant to a set of descriptors (`relevant_blocks`). However actually extracting the activity from those blocks is left as an exercise to the end user. This process involves not only generating the (potentially ranged) set of scripts for the descriptor set on the client side (maybe via `deriveaddresses`), but then the user must retrieve each block's contents one-by-one using `getblock <hash>`, which is transmitted over a network link. And that's all before they perform the actual search over block content. There's even more work required to incorporate unconfirmed transactions. This PR introduces an RPC `getdescriptoractivity` that [dovetails](https://bitcoin-irc.chaincode.com/bitcoin-core-dev/2024-08-16#1046393;) with `scanblocks` output, handling the process described above. Users specify the blockhashes (perhaps from `relevant_blocks`) and a set of descriptors; they are then given all spend/receive activity in that set of blocks. This is a very useful tool when implementing lightweight wallets that want neither to require a third-party indexer like electrs, nor the overhead of creating and managing watch-only wallets in Core. This allows Core to be more easily used in a "stateless" manner by wallets, with potentially many nodes interchangeably acting as backends. ### Example usage ``` % ./src/bitcoin-cli scanblocks start \ '["addr(bc1p0cp0vyag6snlta2l7c4am3rue7eef9f72l7uhx52m4v27vfydx9s8tfs7t)"]' \ 857263 { "from_height": 857263, "to_height": 858263, "relevant_blocks": [ "00000000000000000002bc5cc78f5b0913a5230a8f4b0d5060bc9a60900a5a88", "00000000000000000001c5291ed6a40c06d3db5c8fb738567654b24a14b24ecb" ], "completed": true } % ./src/bitcoin-cli getdescriptoractivity \ '["00000000000000000002bc5cc78f5b0913a5230a8f4b0d5060bc9a60900a5a88", "00000000000000000001c5291ed6a40c06d3db5c8fb738567654b24a14b24ecb"]' \ '["addr(bc1p0cp0vyag6snlta2l7c4am3rue7eef9f72l7uhx52m4v27vfydx9s8tfs7t)"]' { "activity": [ { "type": "receive", "amount": 0.00002900, "blockhash": "00000000000000000002bc5cc78f5b0913a5230a8f4b0d5060bc9a60900a5a88", "height": 857907, "txid": "c9d34f202c1f66d80cae76f305350f5fdde910b97cf6ae6bf79f5bcf2a337d06", "vout": 254, "output_spk": { "asm": "1 7e02f613a8d427f5f55ff62bddc47ccfb394953e57fdcb9a8add58af3124698b", "desc": "rawtr(7e02f613a8d427f5f55ff62bddc47ccfb394953e57fdcb9a8add58af3124698b)#yewcd80j", "hex": "51207e02f613a8d427f5f55ff62bddc47ccfb394953e57fdcb9a8add58af3124698b", "address": "bc1p0cp0vyag6snlta2l7c4am3rue7eef9f72l7uhx52m4v27vfydx9s8tfs7t", "type": "witness_v1_taproot" } }, { "type": "spend", "amount": 0.00002900, "blockhash": "00000000000000000001c5291ed6a40c06d3db5c8fb738567654b24a14b24ecb", "height": 858260, "spend_txid": "7f61d1b248d4ee46376f9c6df272f63fbb0c17039381fb23ca5d90473b823c36", "spend_vin": 0, "prevout_txid": "c9d34f202c1f66d80cae76f305350f5fdde910b97cf6ae6bf79f5bcf2a337d06", "prevout_vout": 254, "prevout_spk": { "asm": "1 7e02f613a8d427f5f55ff62bddc47ccfb394953e57fdcb9a8add58af3124698b", "desc": "rawtr(7e02f613a8d427f5f55ff62bddc47ccfb394953e57fdcb9a8add58af3124698b)#yewcd80j", "hex": "51207e02f613a8d427f5f55ff62bddc47ccfb394953e57fdcb9a8add58af3124698b", "address": "bc1p0cp0vyag6snlta2l7c4am3rue7eef9f72l7uhx52m4v27vfydx9s8tfs7t", "type": "witness_v1_taproot" } } ] } ``` ACKs for top commit: instagibbs: reACK 37a5c5d83664c31d83fc649d3c8c858bd5f10f21 achow101: ACK 37a5c5d83664c31d83fc649d3c8c858bd5f10f21 tdb3: Code review and light retest ACK 37a5c5d83664c31d83fc649d3c8c858bd5f10f21 rkrux: re-ACK 37a5c5d83664c31d83fc649d3c8c858bd5f10f21 Tree-SHA512: 04aa51e329c6c2ed72464b9886281d5ebd7511a8a8e184ea81249033a4dad535a12829b1010afc2da79b344ea8b5ab8ed47e426d0bf2eb78ab395d20b1da8dbb
2024-11-26rpc: add getdescriptoractivityJames O'Beirne
2024-11-26Merge bitcoin/bitcoin#31305: refactor: Fix remaining clang-tidy ↵Ava Chow
performance-inefficient-vector errors 11f3bc229ccd4b20191855fb1df882cfa6145264 refactor: Reserve vectors in fuzz tests (Lőrinc) 152fefe7a22b7da3cfe2815083634bece9c5654e refactor: Preallocate PrevectorFillVector(In)Direct without vector resize (Lőrinc) a774c7a339c26b1409c9a9572d2b52810ee64062 refactor: Fix remaining clang-tidy performance-inefficient-vector errors (Lőrinc) Pull request description: PR inspired by https://github.com/bitcoin/bitcoin/pull/29608#issuecomment-2437847307 (and https://github.com/bitcoin/bitcoin/pull/29458, https://github.com/bitcoin/bitcoin/pull/29606, https://github.com/bitcoin/bitcoin/pull/29607, https://github.com/bitcoin/bitcoin/pull/30093). The `clang-tidy` check can be run via: ```bash cmake -B build -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DBUILD_BENCH=ON -DBUILD_FUZZ_BINARY=ON -DBUILD_FOR_FUZZING=ON && cmake --build build -j$(nproc) run-clang-tidy -quiet -p build -j $(nproc) -checks='-*,performance-inefficient-vector-operation' | grep -v 'clang-tidy' ``` which revealed 3 tests and 1 prod warning (+ fuzz and benching, found by hebasto). Even though the tests aren't performance critical, getting rid of these warnings (for which the checks were already enabled via https://github.com/bitcoin/bitcoin/blob/master/src/.clang-tidy#L18, see below), the fix was quite simple. <details> <summary>clang-tidy -list-checks</summary> ```bash cd src && clang-tidy -list-checks | grep 'vector' performance-inefficient-vector-operation ``` </details> <details> <summary>Output before the change</summary> ``` src/test/rpc_tests.cpp:434:9: error: 'emplace_back' is called inside a loop; consider pre-allocating the container capacity before the loop [performance-inefficient-vector-operation,-warnings-as-errors] 433 | for (int64_t i = 0; i < 100; i++) { 434 | feerates.emplace_back(1 ,1); | ^ src/test/checkqueue_tests.cpp:366:13: error: 'emplace_back' is called inside a loop; consider pre-allocating the container capacity before the loop [performance-inefficient-vector-operation,-warnings-as-errors] 365 | for (size_t i = 0; i < 3; ++i) { 366 | tg.emplace_back( | ^ src/test/cuckoocache_tests.cpp:231:9: error: 'emplace_back' is called inside a loop; consider pre-allocating the container capacity before the loop [performance-inefficient-vector-operation,-warnings-as-errors] 228 | for (uint32_t x = 0; x < 3; ++x) 229 | /** Each thread is emplaced with x copy-by-value 230 | */ 231 | threads.emplace_back([&, x] { | ^ src/rpc/output_script.cpp:127:17: error: 'push_back' is called inside a loop; consider pre-allocating the container capacity before the loop [performance-inefficient-vector-operation,-warnings-as-errors] 126 | for (unsigned int i = 0; i < keys.size(); ++i) { 127 | pubkeys.push_back(HexToPubKey(keys[i].get_str())); | ^ ``` And the fuzz and benchmarks, noticed by hebasto: https://github.com/bitcoin/bitcoin/pull/31305#issuecomment-2483124499 </details> ACKs for top commit: maflcko: review ACK 11f3bc229ccd4b20191855fb1df882cfa6145264 🎦 achow101: ACK 11f3bc229ccd4b20191855fb1df882cfa6145264 theuni: ACK 11f3bc229ccd4b20191855fb1df882cfa6145264 hebasto: ACK 11f3bc229ccd4b20191855fb1df882cfa6145264, tested with clang 19.1.5 + clang-tidy. Tree-SHA512: 41691c19f35c63b922a95407617a54f9bff1af3f95f99d15642064f321df038aeb1ae5f061f854ed913f69036807cc28fa6222b2ff4c24ef43b909027fa0f9b3
2024-11-25rpc: Allow single transaction through submitpackageglozow
And under the hood suppoert single transactions in AcceptPackage. This simplifies user experience and paves the way for reducing number of codepaths for transaction acceptance in the future. Co-Authored-By: instagibbs <gsanders87@gmail.com>
2024-11-25refactor: Fix remaining clang-tidy performance-inefficient-vector errorsLőrinc
2024-11-25Merge bitcoin/bitcoin#31279: policy: ephemeral dust followupsglozow
466e4df3fb83ef82b6add22e202e3a70dbf83a12 assert_mempool_contents: assert not duplicates expected (Greg Sanders) ea5db2f26920bce7caf85e5c1b70a527cc3b82c2 functional: only generate required blocks for test (Greg Sanders) d033acb608391f3ba95864cdaa7025cc00888ea2 fuzz: package_eval: let fuzzer run out input in main tx creation loop (Greg Sanders) ba35a570c5d4ade342cb32630ffaa5f5bdd5e826 CheckEphemeralSpends: return boolean, and set child state and txid outparams (Greg Sanders) cf0cee1617c0bf065b295a9807a4c7de0558393d func: add note about lack of 1P1C propagation in tree submitpackage (Greg Sanders) 84242903043bb14fca917790c9381c411817c9f7 unit test: ephemeral_tests is using a dust relay rate, not minrelay (Greg Sanders) d9cfa5fc4eb03fb425fd5d46d3b72db72fbc3243 CheckEphemeralSpends: no need to iterate inputs if no parent dust (Greg Sanders) 87b26e3dc07b283cb05064ccde179c6777397ce8 func: rename test_free_relay to test_no_minrelay_fee (Greg Sanders) e5709a4a41ecd8c7b1e695871c1a6153864e76ae func: slight elaboration on submitpackage restriction (Greg Sanders) 08e969bd1076c99e0b43ecd01dd790b9ebd04d0a RPC: only enforce dust rules on priority when standardness active (Greg Sanders) ca050d12e76f61af7e60fa564dd04db08f2b8f38 unit test: adapt to changing MAX_DUST_OUTPUTS_PER_TX (Greg Sanders) 7c3490169c9e20375d3f525f81798fcced01a30a fuzz: package_eval: move last_tx inside txn ctor (Greg Sanders) 445eaed182a714e65ee2fe679ecdf7a86055313b fuzz: use optional status instead of should_rbf_eph_spend (Greg Sanders) 4dfdf615b9dbdc2204347029bea1db974a88e392 fuzz: remove unused TransactionsDelta validation interface (Greg Sanders) 09ce926e4a14f183cfab387d2531519e000ea176 func: cleanup reorg test comment (Greg Sanders) 768a0c1889e57ae8bb3596ac7aa9fd2b1ecab9fa func: cleanup test_dustrelay comments (Greg Sanders) bedca1cb6633f4b9a5f8f532f27e084f23f04a2e fuzz: Directly place transactions in vector (Greg Sanders) c041ad6eccb5aae87648cf510257a06f711b1bc3 fuzz: explain package eval coin tracking better (Greg Sanders) bc0d98ea6126ea95526c2b70721131764c6ff3a7 fuzz: remove dangling reference to GetEntry (Greg Sanders) 15b6cbf07f5c3db650a0a8cccf46d3fbe031aef0 unit test: make dust index less magical (Greg Sanders) 5fbcfd12b8f508c87740883435800b6260fa308b unit test: assert txid returned on CheckEphemeralSpends failures (Greg Sanders) ef94d84b4e469d8dbd63e63598d3b8d53595c695 bench: remove unnecessary CMTxn constructors (Greg Sanders) c5c10fd317c6b4c033f3001757e6975b8b9a4942 ephemeral policy doxygen cleanup (Greg Sanders) dd9044b8d4624fb7ffd432b6b89ab99290957a3e ephemeral policy: IWYU (Greg Sanders) c6859ce2de7531e42fc304b69d74ca0d8e99ea29 Move+rename GetDustIndexes -> GetDust (Greg Sanders) 62016b32300123a44599e649b4f35a3a0f32565f Use std::ranges for ephemeral policy checks (Greg Sanders) 3ed930a1f41f7d7160c6ede5dcf3d4d5f1cfa876 Have HasDust and PreCheckValidEphemeralTx take CTransaction (Greg Sanders) 04a614bf9a7bb6abad150a3edf8938358f54d55b Rename CheckValidEphemeralTx to PreCheckEphemeralTx (Greg Sanders) cbf1a47d6062ec2c2c4a788636e8c950a0271997 CheckEphemeralSpends: only compute txid of tx when needed (Greg Sanders) Pull request description: Follow-up to https://github.com/bitcoin/bitcoin/pull/30239 Here are the parent PR's comments that should be addressed by this PR: https://github.com/bitcoin/bitcoin/pull/30239/files#r1834529646 https://github.com/bitcoin/bitcoin/pull/30239/files#r1831247308 https://github.com/bitcoin/bitcoin/pull/30239/files#r1832622481 https://github.com/bitcoin/bitcoin/pull/30239/files#r1831195216 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1835805164 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1835805164 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1834639096 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1834624976 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1834619709 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1834610434 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1834504436 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1834500036 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1832985488 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1830929809 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1832376920 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1832755799 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1832492686 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1832980576 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1832784278 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1837989979 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1830996993 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1830997947 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1830012890 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1830037288 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1830977092 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1832622481 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1834726168 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1832453654 https://github.com/bitcoin/bitcoin/pull/30239#discussion_r1848488226 ACKs for top commit: naumenkogs: ACK 466e4df3fb83ef82b6add22e202e3a70dbf83a12 hodlinator: ACK 466e4df3fb83ef82b6add22e202e3a70dbf83a12 theStack: lgtm ACK 466e4df3fb83ef82b6add22e202e3a70dbf83a12 glozow: utACK 466e4df3fb83ef82b6add22e202e3a70dbf83a12 Tree-SHA512: 89106f695755c238b84e0996b89446c0733e10a94c867f656d516d26697d2efe38dfc332188b8589a0a26a3d2bd2c88c6ab70c108e187ce5bfcb91bbf3fb0391
2024-11-21rpc: Remove submitblock duplicate pre-checkTheCharlatan
The duplicate checks are repeated early in the contextual checks of ProcessNewBlock. If duplicate blocks are detected much of their validation is skipped. Depending on the constitution of the block, validating the merkle root of the block is part of the more intensive workload when validating a block. This could be an argument for moving the pre-checks into block processing. In net_processing this would have a smaller effect however, since the block mutation check, which also validates the merkle root, is done before. A side effect of this change is that a duplicate block is persisted again on disk even when pruning is activated. This is similar to the behaviour with getblockfrompeer. Add a release note for this change in behaviour. Testing spamming a node with valid, but duplicate unrequested blocks seems to exhaust a CPU thread, but does not seem to significantly impact keeping up with the tip. The benefits of adding these checks to net_processing are questionable, especially since there are other ways to trigger the more CPU-intensive checks without submitting a duplicate block. Since these DOS concerns apply even less to the RPC interface, which does not have banning mechanics built in, remove them too. --- With the introduction of a mining ipc interface and the potential future introduction of a kernel library API it becomes increasingly important to offer common behaviour between them. An example of this is ProcessNewBlock, which is used by ipc, rpc, net_processing and (potentially) the kernel library. Having divergent behaviour on suggested pre-checks and checks for these functions is confusing to both developers and users and is a maintenance burden. The rpc interface for ProcessNewBlock (submitblock) currently pre-checks if the block has a coinbase transaction and whether it has been processed before. While the current example binary for how to use the kernel library, bitcoin-chainstate, imitates these checks, the other interfaces do not.
2024-11-21rpc: Remove submitblock invalid-duplicate precheckTheCharlatan
ProcessNewBlock fails if an invalid duplicate block is passed in through its call to AcceptBlock and AcceptBlockHeader. The failure in AcceptBlockHeader makes AcceptBlock return early. This makes the pre-check in submitblock redundant. --- With the introduction of a mining ipc interface and the potential future introduction of a kernel library API it becomes increasingly important to offer common behaviour between them. An example of this is ProcessNewBlock, which is used by ipc, rpc, net_processing and (potentially) the kernel library. Having divergent behaviour on suggested pre-checks and checks for these functions is confusing to both developers and users and is a maintenance burden. The rpc interface for ProcessNewBlock (submitblock) currently pre-checks if the block has a coinbase transaction and whether it has been processed before. While the current example binary for how to use the kernel library, bitcoin-chainstate, imitates these checks, the other interfaces do not.
2024-11-21rpc: Remove submitblock coinbase pre-checkTheCharlatan
The coinbase check is repeated again early during ProcessNewBlock. Pre-checking it may also shadow more fundamental problems with a block. In most cases the block header is checked first, before validating the transactions. Checking the coinbase first therefore masks potential issues with the header. Fix this by removing the pre-check. The pre-check was likely introduced on top of ada0caa165905b50db351a56ec124518c922085a to fix UB in GetWitnessCommitmentIndex in case a block's transactions are empty. This code path could only be reached because of the call to UpdateUncommittedBlockStructures in submitblock, but cannot be reached through net_processing. Add some functional test cases to cover the previous conditions that lead to a "Block does not start with a coinbase" json rpc error being returned. --- With the introduction of a mining ipc interface and the potential future introduction of a kernel library API it becomes increasingly important to offer common behaviour between them. An example of this is ProcessNewBlock, which is used by ipc, rpc, net_processing and (potentially) the kernel library. Having divergent behaviour on suggested pre-checks and checks for these functions is confusing to both developers and users and is a maintenance burden. The rpc interface for ProcessNewBlock (submitblock) currently pre-checks if the block has a coinbase transaction and whether it has been processed before. While the current example binary for how to use the kernel library, bitcoin-chainstate, imitates these checks, the other interfaces do not.
2024-11-20RPC: only enforce dust rules on priority when standardness activeGreg Sanders
2024-11-20Move+rename GetDustIndexes -> GetDustGreg Sanders
Use to replace HasDust and where appropraite
2024-11-18rpc: move-only: move ScriptPubKeyDoc to utilsJames O'Beirne
2024-11-15Have HasDust and PreCheckValidEphemeralTx take CTransactionGreg Sanders
2024-11-14Merge bitcoin/bitcoin#30666: validation: fix m_best_header tracking and ↵Ava Chow
BLOCK_FAILED_CHILD assignment 0bd53d913c1c2ffd2d0779f01bc51c81537b6992 test: add test for getchaintips behavior with invalid chains (Martin Zumsande) ccd98ea4c88fc1aa959e41e0686d8dff00a44209 test: cleanup rpc_getchaintips.py (Martin Zumsande) f5149ddb9b7de3559943d7fda0f440e59413dfb5 validation: mark blocks building on an invalid block as BLOCK_FAILED_CHILD (Martin Zumsande) 783cb7337f72a3c7b2e74efd677a8ff0c375fe10 validation: call RecalculateBestHeader in InvalidChainFound (Martin Zumsande) 9275e9689a426964f5eaee65e356754a0548d926 rpc: call RecalculateBestHeader as part of reconsiderblock (Martin Zumsande) a51e91783aac0beefcb604be159eb1cb96a39051 validation: add RecalculateBestHeader() function (Martin Zumsande) Pull request description: `m_best_header` (the most-work header not known to be on an invalid chain) can be wrong in the context of invalidation / reconsideration of blocks. This can happen naturally (a valid header is received and stored in our block tree db; when the full block arrives, it is found to be invalid) or triggered by the user with the `invalidateblock` / `reconsiderblock` rpc. We don't currently use `m_best_header` for any critical things (see OP of #16974 for a list that still seems up-to-date), so it being wrong affects mostly rpcs. This PR proposes to recalculate it if necessary by looping over the block index and finding the best header. It also suggest to mark headers between an invalidatetd block and the previous `m_best_header` as invalid, so they won't be considered in the recalculation. It adds tests to `rpc_invalidateblock.py` and `rpc_getchaintips.py` that fail on master. One alternative to this suggested in the past would be to introduce a continuous tracking of header tips (#12138). While this might be more performant, it is also more complicated, and situations where we need this data are only be remotely triggerable by paying the cost of creating a valid PoW header for an invalid block. Therefore I think it isn't necessary to optimise for performance here, plus the solution in this PR doesn't perform any extra steps in the normal node operation where no invalidated blocks are encountered. Fixes #26245 ACKs for top commit: fjahr: reACK 0bd53d913c1c2ffd2d0779f01bc51c81537b6992 achow101: ACK 0bd53d913c1c2ffd2d0779f01bc51c81537b6992 TheCharlatan: Re-ACK 0bd53d913c1c2ffd2d0779f01bc51c81537b6992 Tree-SHA512: 23c2fc42d7c7bb4f9b4ba4949646b3d0031dd29ed15484e436afd66cd821ed48e0f16a1d02f45477b5d0d73a006f6e81a56b82d9721e0dee2e924219f528b445
2024-11-12rpc: disallow in-mempool prioritisation of dusty txGreg Sanders
2024-11-11Merge bitcoin/bitcoin#31163: scripted-diff: get rid of remaining "command" ↵merge-script
terminology in protocol.{h,cpp} 4120c7543ee32efed7396d7153411ecbbd588ad3 scripted-diff: get rid of remaining "command" terminology in protocol.{h,cpp} (Sebastian Falbesoner) Pull request description: The confusing "command" terminology for the 12-byte field in the (v1) p2p message header was replaced with the more proper term "message type" in other modules already years ago, see eg #18533, #18937, #24078, #24141. This PR does the same for the protocol.{h,cpp} module to complete the replacements. Note that "GetCommand" is a method name also used in the `ArgsManager` (there it makes much more sense), so the scripted-diff lists for this replacement the files explicitly, rather than using `$(git grep -l ...)`. ACKs for top commit: maflcko: review ACK 4120c7543ee32efed7396d7153411ecbbd588ad3 🛒 fjahr: Code review ACK 4120c7543ee32efed7396d7153411ecbbd588ad3 rkrux: tACK 4120c7543ee32efed7396d7153411ecbbd588ad3 Tree-SHA512: 7b4dd30136392a145da95d2f3ba181c18c155ba6f3158e49e622d76811c6a45ef9b5c7539a979a04d8404faf18bb27f11457aa436d4e2998ece3deb2c9e59748
2024-11-08Merge bitcoin/bitcoin#30592: Remove mempoolfullrbfAva Chow
c189eec848e3c31f438151d4d3422718a29df3a3 doc: release note for mempoolrullrbf removal (Greg Sanders) d47297c6aaba44672fdd19d817d9b11d2dc90bb7 rpc: Mark fullrbf and bip125-replaceable as deprecated (Greg Sanders) 04a5dcee8ab56f2089ab08192b97b67bc15bc3ba docs: remove requirement to signal bip125 (Greg Sanders) 111a23d9b3615094fbfdf6cc8c996adc3db2782c Remove -mempoolfullrbf option (Greg Sanders) Pull request description: Given https://github.com/bitcoin/bitcoin/pull/30493 and the related discussion on network uptake it's probably not helpful to have an option for a feature that will not be respected by the network in any meaningful way. Wallet changes can be done in another PR on its own cadence to account for possible fingerprinting, waiting for fullrbf logic to permeate the network, etc. ACKs for top commit: stickies-v: re-ACK c189eec848e3c31f438151d4d3422718a29df3a3 achow101: ACK c189eec848e3c31f438151d4d3422718a29df3a3 murchandamus: ACK c189eec848e3c31f438151d4d3422718a29df3a3 rkrux: reACK c189eec848e3c31f438151d4d3422718a29df3a3 Tree-SHA512: 9447f88f8f291c56c5bde70af0a91b0a4f5163aaaf173370fbfdaa3c3fd0b44120b14d3a1977f7ee10e27ffe9453f8a70dd38aad0ffb8c39cf145049d2550730
2024-10-31rpc: Mark fullrbf and bip125-replaceable as deprecatedGreg Sanders
2024-10-29Merge bitcoin/bitcoin#31043: rpc: getorphantxs follow-upAva Chow
0ea84bc362f395fd247623c22942eb5ca3d1b874 test: explicitly check boolean verbosity is disallowed (tdb3) 7a2e6b68cd928a32dd307273727a85890a74c7da doc: add rpc guidance for boolean verbosity avoidance (tdb3) 698f302df8b7cc6e4077c911d3c129960bdb5e07 rpc: disallow boolean verbosity in getorphantxs (tdb3) 63f5e6ec795f3d5ddfed03f3c51f79ad7a51db1e test: add entry and expiration time checks (tdb3) 808a708107e65e52f54373d2e26f807cf1e444e1 rpc: add entry time to getorphantxs (tdb3) 56bf3027144b4fa6ce9586d3d249b275acb7bcce refactor: rename rpc_getorphantxs to rpc_orphans (tdb3) 7824f6b07703463707bb4f10577ff6d34118e248 test: check that getorphantxs is hidden (tdb3) ac68fcca701e0b3b90c6bb81d66bfa38b57f39bf rpc: disallow undefined verbosity in getorphantxs (tdb3) Pull request description: Implements follow-up suggestions from #30793. - Now disallows undefined verbosity levels (below and above valid values) (https://github.com/bitcoin/bitcoin/pull/30793#discussion_r1786093549) - Disallows boolean verbosity (https://github.com/bitcoin/bitcoin/pull/30793#discussion_r1788273274) and adds guidance to developer-notes - Checks that `getorphantxs` is a hidden rpc (https://github.com/bitcoin/bitcoin/pull/30793#discussion_r1786107786) - Adds a test for `expiration` time - Adds `entry` time to the returned orphan objects (verbosity >=1) to relieve the user from having to calculate it from `expiration`. Also adds associated test. (https://github.com/bitcoin/bitcoin/pull/30793#discussion_r1743687732) - Minor cleanup (blank line removal and log message move) (https://github.com/bitcoin/bitcoin/pull/30793#discussion_r1786092641) Included a commit to rename the test to a more generic `get_orphans` to better accommodate future orphanage-related RPCs (e.g. `getorphanangeinfo`). Can drop the refactor commit from this PR if people feel strongly about it. ACKs for top commit: achow101: ACK 0ea84bc362f395fd247623c22942eb5ca3d1b874 glozow: utACK 0ea84bc362f395fd247623c22942eb5ca3d1b874 rkrux: tACK 0ea84bc362f395fd247623c22942eb5ca3d1b874 itornaza: tACK 0ea84bc362f395fd247623c22942eb5ca3d1b874 Tree-SHA512: e48a088f333ebde132923072da58e970461e74362d0acebbc799c3043d5727cdf5f28e82b43cb38bbed27c603df6710695dba91ff0695e623ad168e985dce08e
2024-10-28Remove -mempoolfullrbf optionGreg Sanders
2024-10-28scripted-diff: Rename `PACKAGE_*` variables to `CLIENT_*`Hennadii Stepanov
This change ensures consistent use of the `CLIENT_` namespace everywhere in the repository. -BEGIN VERIFY SCRIPT- ren() { sed -i "s/\<$1\>/$2/g" $( git grep -l "$1" ./cmake ./src :\(exclude\)./src/secp256k1 ./test ) ; } ren PACKAGE_NAME CLIENT_NAME ren PACKAGE_VERSION CLIENT_VERSION_STRING ren PACKAGE_URL CLIENT_URL ren PACKAGE_BUGREPORT CLIENT_BUGREPORT -END VERIFY SCRIPT-
2024-10-26scripted-diff: get rid of remaining "command" terminology in protocol.{h,cpp}Sebastian Falbesoner
-BEGIN VERIFY SCRIPT- sed -i s/COMMAND_SIZE/MESSAGE_TYPE_SIZE/g $(git grep -l COMMAND_SIZE) sed -i s/pszCommand/msg_type/g $(git grep -l pszCommand) sed -i s/pchCommand/m_msg_type/g $(git grep -l pchCommand) sed -i s/GetCommand/GetMessageType/g ./src/net.cpp ./src/protocol.cpp ./src/protocol.h ./src/test/fuzz/protocol.cpp sed -i s/IsCommandValid/IsMessageTypeValid/g $(git grep -l IsCommandValid) sed -i "s/command/message type/g" ./src/protocol.h ./src/protocol.cpp -END VERIFY SCRIPT-
2024-10-25rpc: disallow boolean verbosity in getorphantxstdb3
Updates ParseVerbosity() to support disallowing boolean verbosity. Removes boolean verbosity for getorphantxs to encourage integer verbosity usage
2024-10-25rpc: add entry time to getorphantxstdb3
2024-10-25rpc: disallow undefined verbosity in getorphantxstdb3
2024-10-24Merge bitcoin/bitcoin#30849: refactor: migrate `bool GetCoin` to return ↵Ava Chow
`optional<Coin>` 4feaa28728442b0fd29a677d2b170a05fdf967c0 refactor: Rely on returned value of GetCoin instead of parameter (Lőrinc) 46dfbf169b49466de06dd16f7c23c6668419ef01 refactor: Return optional of Coin in GetCoin (Lőrinc) e31bfb26c21f8b72f8c317e016d375862e27502e refactor: Remove unrealistic simulation state (Lőrinc) Pull request description: While reviewing [the removal of the unreachable combinations from the Coin cache logic](https://github.com/bitcoin/bitcoin/pull/30673#discussion_r1721727681), we've noticed that the related tests often [reflect impossible states](https://github.com/bitcoin/bitcoin/pull/30673/files#r1740154464). Browsing the Coin cache refactoring history revealed that migrating `bool GetCoin` to `optional<Coin> GetCoin` was [already proposed a few times before](https://github.com/bitcoin/bitcoin/pull/18746#issuecomment-842393167). This refactor makes certain invalid states impossible, reducing the possibility of errors and making the code easier to understand. This will let us remove test code that exercises the impossible states as well. The PR is done in multiple small steps, first swapping the new `optional` return value, slowly strangling out the usages of the return parameter, followed by the removal of the parameter. Most of the invalid test states were still kept, except for https://github.com/bitcoin/bitcoin/pull/30673/files#r1748087322, where the new design prohibits invalid usage and https://github.com/bitcoin/bitcoin/pull/30673/files#r1749350258 was just marked with a TODO, will be removed in a follow-up PR. ACKs for top commit: andrewtoth: re-ACK 4feaa28728442b0fd29a677d2b170a05fdf967c0 achow101: ACK 4feaa28728442b0fd29a677d2b170a05fdf967c0 laanwj: Code review ACK 4feaa28728442b0fd29a677d2b170a05fdf967c0 theStack: Code-review ACK 4feaa28728442b0fd29a677d2b170a05fdf967c0 Tree-SHA512: 818d60b2e97f58c489a61120fe761fb67a08dffbefe7a3fce712d362fc9eb8c2cced23074f1bec55fe71c616a3561b5a8737919ad6ffb2635467ec4711683df7
2024-10-22Merge bitcoin/bitcoin#30183: rpc: net: follow-ups for #30062merge-script
a16917fb5981d1465ffd4c036586f8729e683b73 rpc, net: improve `mapped_as` doc for getrawaddrman/getpeerinfo (brunoerg) bdad0243be80c4c72f8cefd1233fd7c057a1945b rpc, net: getrawaddrman "mapped_as" follow-ups (brunoerg) Pull request description: - Change `addrman` to reference to const since it isn't modified (https://github.com/bitcoin/bitcoin/pull/30062#discussion_r1612272793). - Improve documentation of `mapped_as`/`source_mapped_as` in `getrawaddrman` RPC by mentioning that both fields will be only available if asmap flag is set. It is the same message for `mapped_as` field in `getpeerinfo`. ACKs for top commit: fjahr: re-ACK a16917fb5981d1465ffd4c036586f8729e683b73 0xB10C: re-ACK a16917fb5981d1465ffd4c036586f8729e683b73 laanwj: re-ACK a16917fb5981d1465ffd4c036586f8729e683b73 Tree-SHA512: c66b2ee9d24da93d443be83f6ef3b2d39fd5bf3f73e2974574cad238ffb82035704cf4fbf1bac22a63734948e285e8e091c2884bb640202efdb473315e770233