Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

backport: trivial 2025 02 12 #6582

Merged

Conversation

PastaPastaPasta
Copy link
Member

Issue being fixed or feature implemented

Batch of trivial back ports

What was done?

How Has This Been Tested?

Built locally; haven't reviewed commits yet.

Breaking Changes

Checklist:

Go over all the following points, and put an x in all the boxes that apply.

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation
  • I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

fanquake and others added 9 commits February 16, 2025 21:54
… dbcache is too small

fe683f3 log: Log VerifyDB Progress over multiple lines (Martin Zumsande)
61431e3 validation: Skip VerifyDB checks of level >=3 if dbcache is too small (Martin Zumsande)

Pull request description:

  This is the first two commits from bitcoin#25574, leaving out all changes to `-verifychain` error-handling :

  - The Problem of [25563](bitcoin#25563) is that when we skip blocks at level 3 due to an insufficient dbcache (skipping some `DisconnectBlock()` calls), we would still attempt the level 4 checks, attempting to reconnect a block that was never disconnected, leading to an assert in `ConnectBlock()`.
  Fix this by not attempting level 4 checks in this case.
  - Logging of verification progress is now split over multiple lines. This is more verbose, but now each update has its own timestamp, and other threads logging concurrently will no longer lead to mangled output.

  This can be tested with a small `dbcache` value, for example:
  `bitcoind -signet -dbcache=10`
  `bitcoin-cli -signet verifychain 4 1000`

  Fixes bitcoin#25563

ACKs for top commit:
  MarcoFalke:
    review ACK fe683f3 🗄
  john-moffett:
    ACK fe683f3

Tree-SHA512: 3e2e0f8b73cbc518a0fa17912c1956da437787aab95001c110b01048472e0dfe4783c44df22bd903d198069dd2f6b02bfdf74e0b934c7a776f144c2e86cb818a
a984bee [ci] change lint to bookworm for git v2.38 (glozow)

Pull request description:

  Since 5497c14, verify-commits.py uses `git merge-tree` which requires git v2.38 or later. Fix the lint jobs on master (e.g. https://cirrus-ci.com/task/4971007513985024).

ACKs for top commit:
  achow101:
    ACK a984bee
  hebasto:
    re-ACK a984bee

Tree-SHA512: dd50598aefb6f9c86cf221dea27fcc521e335cb182f7a3abcb3215d3991794354085be3e07c133ab74ca8b957e3a6acc43722899165957b3d898867d6253ebdc
…ONDS env var

3fffff5 ci: Remove unused EXPECTED_TESTS_DURATION_IN_SECONDS env var (MarcoFalke)

Pull request description:

  Remove long unused travis leftover

ACKs for top commit:
  fanquake:
    ACK 3fffff5
  dergoegge:
    ACK 3fffff5

Tree-SHA512: 34b85a18c0d34f54bbc6ff5c2454307318e4747145e11f52f08baddefef9e1b80d8f6c85efcad97e575380162fd193f2aa837e99b156ed7e3e95370b635ddf4e
36e2d51 qt, test: Add missed header (Hennadii Stepanov)

Pull request description:

  Should fix MSVC link errors like [that](https://api.cirrus-ci.com/v1/task/4870882892447744/logs/build.log):
  ```
  addressbooktests.obj : error LNK2019: unresolved external symbol "void __cdecl ConfirmMessage(class QString *,class std::chrono::duration<__int64,struct std::ratio<1,1000> >)" (?ConfirmMessage@@YAXPEAVQString@@v?$duration@_JU?$ratio@$00$0DOI@@std@@@chrono@std@@@z) referenced in function "void __cdecl `anonymous namespace'::EditAddressAndSubmit(class EditAddressDialog *,class QString const &,class QString const &,class QString)" (?EditAddressAndSubmit@?A0x2e52698e@@YAXPEAVEditAddressDialog@@AEBVQString@@1v3@@z) [C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\build_msvc\test_bitcoin-qt\test_bitcoin-qt.vcxproj]
  wallettests.obj : error LNK2001: unresolved external symbol "void __cdecl ConfirmMessage(class QString *,class std::chrono::duration<__int64,struct std::ratio<1,1000> >)" (?ConfirmMessage@@YAXPEAVQString@@v?$duration@_JU?$ratio@$00$0DOI@@std@@@chrono@std@@@z) [C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\build_msvc\test_bitcoin-qt\test_bitcoin-qt.vcxproj]
  C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\build_msvc\x64\Release\test_bitcoin-qt.exe : fatal error LNK1120: 1 unresolved externals [C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\build_msvc\test_bitcoin-qt\test_bitcoin-qt.vcxproj]
  ```

ACKs for top commit:
  fanquake:
    ACK 36e2d51

Tree-SHA512: 84685598fbf8857c0284ff660d953b93da3c2f47ba4ac0d3591b5009a6bcdb76898031fd70f289c4256ce389e485bd259ca145f9f862f085795e374dfa88705d
ff9d961 wallet: Add tracing for sqlite statements (Ryan Ofsky)

Pull request description:

  I found sqlite tracing was useful for debugging a test in bitcoin#27790, and thought it might be helpful in other contexts too, so this PR adds an option to enable it. Tracing is still disabled by default and only shown with `-debug=walletdb -loglevel=walletdb:trace` options.

ACKs for top commit:
  achow101:
    ACK ff9d961
  kevkevinpal:
    ACK bitcoin@ff9d961
  theStack:
    ACK ff9d961

Tree-SHA512: 592fabfab3218cec36c2d00a21cd535fa840daa126ee8440c384952fbb3913180aa3796066c630087e933d6517f19089b867f158e0b737f25283a14799eefb05
641897a guix: remove cURL from build env (fanquake)

Pull request description:

  Remove cURL & osslsigncode option.

ACKs for top commit:
  hebasto:
    ACK 641897a
  TheCharlatan:
    ACK 641897a

Tree-SHA512: f917afe5aaffa8436009c63ace4a78ed3bc8a13fffeb12db2c12204f603fbd05f975f798c1bccaefa22b6131c91415477c115921dfe89f8fa064aab82bcd4a6f
… in "restore using dumped wallet"

c4929cf test: wallet_backup.py, fix intermittent failure in "restore using dumped wallet" (furszy)

Pull request description:

  Aiming to fix bitcoin#25652.

  The failure arises because the test expects `init_wallet()` (the test framework function) to create a wallet with no keys. However, the function also imports the deterministic private key used to receive the coinbase coins.

  This causes a race within the "restore using dumped wallet" case, where we intend to have a new wallet (with no existing keys) to test the 'importwallet()' RPC result.
  The reason why this failure is intermittent is that it depends on other peers delivering the chain right after node2 startup and prior to the test 'node2.getbalance()' call and also the synchronization of the validation queue.

ACKs for top commit:
  MarcoFalke:
    lgtm ACK c4929cf

Tree-SHA512: 80faa590439305576086a7d6e328f2550c97b218771fc5eba0567feff78732a2605d028a30a368d50944ae3d25fdbd6d321fb97321791a356416f2b790999613
f718a74 guix: remove python-macholib (fanquake)
d3cbff1 guix: update signapple (fanquake)

Pull request description:

  Update to the latest signapple, which includes achow101/signapple#13.
  Drop python-macholib and python-altgraph.

ACKs for top commit:
  Sjors:
    ACK f718a74

Tree-SHA512: 199b2108f2f063b6b0fb5354ac79a30b46e848c923ebe7d02f7d7d3f08749817a1f6b4c14d21658fd2f2d68f8be1698e1999edf7e2366b1cae3bf2709a665e30
a4980da guix: remove input labels (fanquake)

Pull request description:

  Migrate package definitions to use the newer format for propogated inputs. See https://guix.gnu.org/manual/en/html_node/package-Reference.html#index-inputs_002c-of-packages.

  This change remains compatible with Guix 1.2.0+.

  See also: https://guix.gnu.org/blog/2021/the-big-change/

  Guix Build (aarch64 & x86_64):
  ```bash
  4627c4eb83764f787f48b2aeab87b65bbaacb9ebfe33a5733d713165eec779af  guix-build-a4980da1ce5e/output/aarch64-linux-gnu/SHA256SUMS.part
  ecdd6db7fe0ee45fee1bd91ceaf23c0d8154ed5ad73586b74d86ee36964e18d4  guix-build-a4980da1ce5e/output/aarch64-linux-gnu/bitcoin-a4980da1ce5e-aarch64-linux-gnu-debug.tar.gz
  5f78980f95f3968248c27c4acd9993ec150ed3fa32802d89ccc6c6dc661a41bd  guix-build-a4980da1ce5e/output/aarch64-linux-gnu/bitcoin-a4980da1ce5e-aarch64-linux-gnu.tar.gz
  9af3dff2a8a4decf73048acea67d05f76d54ff84cecde833ea6860825bdaddc3  guix-build-a4980da1ce5e/output/arm-linux-gnueabihf/SHA256SUMS.part
  f53c6a5a229462a71f477db6f91112a2e9d31aafef294fca3c893916e904e2ed  guix-build-a4980da1ce5e/output/arm-linux-gnueabihf/bitcoin-a4980da1ce5e-arm-linux-gnueabihf-debug.tar.gz
  6ed01ecb71ed32098f70c8d667b1a48305b4b5b10f7bfc575eb8b5f787fe9534  guix-build-a4980da1ce5e/output/arm-linux-gnueabihf/bitcoin-a4980da1ce5e-arm-linux-gnueabihf.tar.gz
  6ceaaa7dc2959626f280b1e1de28ac9ff9223216e1a3fa333cdd55c416ff550d  guix-build-a4980da1ce5e/output/arm64-apple-darwin/SHA256SUMS.part
  633df184701a21746ee56a5de6e3705c229eac8712b9a1563a82f4de52130d05  guix-build-a4980da1ce5e/output/arm64-apple-darwin/bitcoin-a4980da1ce5e-arm64-apple-darwin-unsigned.tar.gz
  23b94cb4e870d71ae60bbb5a974362bbfabe901a73eeeb9d3bb5fbd70f5d649e  guix-build-a4980da1ce5e/output/arm64-apple-darwin/bitcoin-a4980da1ce5e-arm64-apple-darwin-unsigned.zip
  f60b802b3e92fb9cf3b45b835f6cfb8988221cfdd39146ee3a11dbab977733bc  guix-build-a4980da1ce5e/output/arm64-apple-darwin/bitcoin-a4980da1ce5e-arm64-apple-darwin.tar.gz
  9df0a08896a2bc42f97193b34beb29536783eab04d3ae5fe5642258188fc6e55  guix-build-a4980da1ce5e/output/dist-archive/bitcoin-a4980da1ce5e.tar.gz
  3fef561dd35dd4a4e9d0308591ebbdd5b1d26814ea48ff1f0c2732c62aef961b  guix-build-a4980da1ce5e/output/powerpc64-linux-gnu/SHA256SUMS.part
  187b8283f443bb29ed27546f983a5d098dfe49a059f52bc8ba0607242d37a5ae  guix-build-a4980da1ce5e/output/powerpc64-linux-gnu/bitcoin-a4980da1ce5e-powerpc64-linux-gnu-debug.tar.gz
  3f520b4bf1fbf955f9d25b5aa333f90989428cc9e417431998daa7c1041cb3bb  guix-build-a4980da1ce5e/output/powerpc64-linux-gnu/bitcoin-a4980da1ce5e-powerpc64-linux-gnu.tar.gz
  39abec9623d5086990a303c964a36e7f767bd6218e57261df95b616603eca0b8  guix-build-a4980da1ce5e/output/powerpc64le-linux-gnu/SHA256SUMS.part
  b71352ad4e8849937e42ad897d75f65866a529fd4d18059c5e6c39659a17f723  guix-build-a4980da1ce5e/output/powerpc64le-linux-gnu/bitcoin-a4980da1ce5e-powerpc64le-linux-gnu-debug.tar.gz
  4fb92753e1baa253780088649bfe6816525e0ada7b17c5acc57ec804d9ab32f8  guix-build-a4980da1ce5e/output/powerpc64le-linux-gnu/bitcoin-a4980da1ce5e-powerpc64le-linux-gnu.tar.gz
  ed422d4365354a16b98ba7d4184a118ce98473e1b70ac8ba62a617aa3af3c784  guix-build-a4980da1ce5e/output/riscv64-linux-gnu/SHA256SUMS.part
  9f002a8893748b0f6b581ab9d158a524e32140a3c271604b50cf1580b30b3000  guix-build-a4980da1ce5e/output/riscv64-linux-gnu/bitcoin-a4980da1ce5e-riscv64-linux-gnu-debug.tar.gz
  6844df378ad2f4c209d323ffa3e77c6aa28f7f087b8755b2baa2a0d1119c365b  guix-build-a4980da1ce5e/output/riscv64-linux-gnu/bitcoin-a4980da1ce5e-riscv64-linux-gnu.tar.gz
  ce0e27b6d831d5836ba3c5c8be377f08f4b92e9f390a7242aca5b68e67d1975e  guix-build-a4980da1ce5e/output/x86_64-apple-darwin/SHA256SUMS.part
  329c990fa71e694869bdcdd3e327a28eed2ad0b12f06d86e0957c6cb05e88910  guix-build-a4980da1ce5e/output/x86_64-apple-darwin/bitcoin-a4980da1ce5e-x86_64-apple-darwin-unsigned.tar.gz
  c44ec330e40285c1eba421f8d2e70a1538742fadbcc87f7f2f5a49bd83a72a7b  guix-build-a4980da1ce5e/output/x86_64-apple-darwin/bitcoin-a4980da1ce5e-x86_64-apple-darwin-unsigned.zip
  e3626284d9bd61b67b170433d7bdb226b0f7f63d20dad4dd0482e55d7418ef64  guix-build-a4980da1ce5e/output/x86_64-apple-darwin/bitcoin-a4980da1ce5e-x86_64-apple-darwin.tar.gz
  3e2a16e9dbb89d86e1e1884e0277160c3d1953c5ea5f88f29fe0a093a6f89599  guix-build-a4980da1ce5e/output/x86_64-linux-gnu/SHA256SUMS.part
  eb389467219c4af983f30e50e1f8d48601ed74690538bff76a55c0e585594a92  guix-build-a4980da1ce5e/output/x86_64-linux-gnu/bitcoin-a4980da1ce5e-x86_64-linux-gnu-debug.tar.gz
  d81fd209c03e74aebd7b28b42d3ea21f57957ede7fcb7baae721c8abb2885b6c  guix-build-a4980da1ce5e/output/x86_64-linux-gnu/bitcoin-a4980da1ce5e-x86_64-linux-gnu.tar.gz
  51de8a813459c1ce79bf9a2e39bf9f17b4771c6146ef55829f3ee0415d0ec9ec  guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/SHA256SUMS.part
  63dc5386467d0fc7f3c7b621273d019a822551fc9ac00be94c7d4ee446201836  guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/bitcoin-a4980da1ce5e-win64-debug.zip
  3a4f2ef53165031648b1c3badc05698891d7c6541de3f67e9df513395c5c88c3  guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/bitcoin-a4980da1ce5e-win64-setup-unsigned.exe
  92f0d67fbb8b37b6026287073df95431c961ad1820d7f8b9cd3b1ffcf58d4188  guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/bitcoin-a4980da1ce5e-win64-unsigned.tar.gz
  3414b6c99d0bbd9ad88c0f88aafa70561dc107d1180fd42c90ad85033871c160  guix-build-a4980da1ce5e/output/x86_64-w64-mingw32/bitcoin-a4980da1ce5e-win64.zip
  ```

ACKs for top commit:
  TheCharlatan:
    lgtm ACK a4980da

Tree-SHA512: cbb8ca9613125d4c443124b99a600b44533688f322c8535c9d82fb3bb8de66b46e63c6aafcf2917f169494181ece6efd02e2efaa32ef4f138a520731540d600c
@PastaPastaPasta PastaPastaPasta added this to the 23 milestone Feb 17, 2025
Copy link

coderabbitai bot commented Feb 17, 2025

Walkthrough

This pull request includes a range of updates across configuration, build scripts, tests, and core functionality. The continuous integration configuration has been modified to update container images and remove a default environment variable. Dependency and package management files have been refactored to change input definitions, remove certain packages, and adjust commit references. Several patches have been removed from both build and source code files to streamline processing and address compatibility issues with specific compilers and language versions. Changes in core modules involve updates to documentation, logging, and handling of network peer properties, as well as modifications to serialization and transaction operations. Testing frameworks have also been enhanced with additional assertions and revised wallet initialization processes, while new SQL tracing functionality was introduced to improve database logging.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9a93a65 and c34e7ab.

📒 Files selected for processing (6)
  • contrib/guix/manifest.scm (9 hunks)
  • contrib/macdeploy/gen-sdk (0 hunks)
  • depends/packages/qt.mk (0 hunks)
  • depends/patches/qt/fast_fixed_dtoa_no_optimize.patch (0 hunks)
  • src/leveldb/include/leveldb/status.h (2 hunks)
  • src/psbt.h (1 hunks)
💤 Files with no reviewable changes (3)
  • contrib/macdeploy/gen-sdk
  • depends/packages/qt.mk
  • depends/patches/qt/fast_fixed_dtoa_no_optimize.patch
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/leveldb/include/leveldb/status.h
  • src/psbt.h
  • contrib/guix/manifest.scm
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Build container / Build container

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (1)
src/net_processing.cpp (1)

6299-6317: 🛠️ Refactor suggestion

Add safety check for expiry timer overflow

The expiry timer calculation should be protected against potential overflow.

-            state.m_object_download.m_check_expiry_timer = current_time + GetObjectExpiryInterval(MSG_TX)/2 + GetRandMicros(GetObjectExpiryInterval(MSG_TX));
+            // Ensure we don't overflow when calculating next check time
+            const auto max_delay = std::chrono::microseconds::max() - current_time;
+            const auto expiry_interval = GetObjectExpiryInterval(MSG_TX);
+            const auto random_delay = GetRandMicros(expiry_interval);
+            const auto total_delay = std::min(expiry_interval/2 + random_delay, max_delay);
+            state.m_object_download.m_check_expiry_timer = current_time + total_delay;
🧹 Nitpick comments (13)
src/psbt.h (1)

253-253: Consider using const references for unknown map iteration.

For consistency with the partial_sigs change and to prevent accidental modifications, consider using const references when iterating over the unknown map in the serialization methods:

-    for (auto& entry : unknown) {
+    for (const auto& entry : unknown) {

This change would be applicable in three locations:

  1. Line 253 in PSBTInput::Serialize
  2. Line 507 in PSBTOutput::Serialize
  3. Line 665 in PartiallySignedTransaction::Serialize

Also applies to: 507-507, 665-665

test/functional/p2p_outbound_eviction.py (1)

87-87: Rename unused loop variable.

The loop control variable i is never used within the loop. For clarity and to comply with static analysis suggestions, rename it to _ or _i.

- for i in range(10):
+ for _ in range(10):
🧰 Tools
🪛 Ruff (0.8.2)

87-87: Loop control variable i not used within loop body

Rename unused i to _i

(B007)

src/net_processing.cpp (8)

549-552: Improve comment clarity for service flags handling

The comment explains the behavior of service flags handling during version handshake, but could be clearer about the distinction between inbound and non-inbound connections.

-            // Overwrites potentially existing services. In contrast to this,
-            // unvalidated services received via gossip relay in ADDR/ADDRV2
-            // messages are only ever added but cannot replace existing ones.
+            // For non-inbound connections, overwrites existing services in AddrMan.
+            // This differs from ADDR/ADDRV2 gossip messages where services can only
+            // be added but not replaced, to prevent service flag manipulation.

1428-1440: Improve comment clarity for chain work comparison

The comment could be clearer about the logic for resetting the timeout when a peer has sent a block with sufficient work.

-            // The outbound peer has sent us a block with at least as much work as our current tip, so reset the timeout if it was set
+            // Reset the timeout if:
+            // 1. A timeout was previously set (m_timeout != 0s)
+            // 2. The peer has sent us a block with work >= our current tip
+            // This ensures we don't disconnect peers that are actively helping us sync

1435-1440: Improve comment clarity for timeout setting conditions

The comment explaining when timeouts are set could be more precise.

-            // At this point we know that the outbound peer has either never sent us a block/header or they have, but its tip is behind ours
-            // AND
-            // we are noticing this for the first time (m_timeout is 0)
-            // OR we noticed this at some point within the last CHAIN_SYNC_TIMEOUT + HEADERS_RESPONSE_TIME seconds and set a timeout
-            // for them, they caught up to our tip at the time of setting the timer but not to our current one (we've also advanced).
-            // Either way, set a new timeout based on our current tip.
+            // Set a new timeout when:
+            // 1. First time seeing this peer (m_timeout is 0) OR
+            // 2. Previous timeout exists but peer's best known block:
+            //    - Has caught up to the work target we set previously
+            //    - But is still behind our current tip
+            // This ensures peers make consistent forward progress.

6207-6221: Improve stalling detection and timeout handling

The stalling detection logic could be made more robust by adding logging of the actual stall duration.

 if (state.m_stalling_since.count() && state.m_stalling_since < current_time - stalling_timeout) {
+    const auto stall_duration = current_time - state.m_stalling_since;
     LogPrintf("Peer=%d%s is stalling block download, disconnecting\n", pto->GetId(), 
-              fLogIPs ? strprintf(" peeraddr=%s", pto->addr.ToStringAddrPort()) : "");
+              fLogIPs ? strprintf(" peeraddr=%s", pto->addr.ToStringAddrPort()) : "",
+              " stall_duration=", count_seconds(stall_duration), "s");

6227-6235: Add timeout duration to disconnection message

The block download timeout message could include more diagnostic information.

-                LogPrintf("Timeout downloading block %s from peer=%d%s, disconnecting\n", queuedBlock.pindex->GetBlockHash().ToString(), pto->GetId(), fLogIPs ? strprintf(" peeraddr=%s", pto->addr.ToStringAddrPort()) : "");
+                const auto timeout = std::chrono::seconds{consensusParams.nPowTargetSpacing} * 
+                    (BLOCK_DOWNLOAD_TIMEOUT_BASE + BLOCK_DOWNLOAD_TIMEOUT_PER_PEER * nOtherPeersWithValidatedDownloads);
+                const auto elapsed = current_time - state.m_downloading_since;
+                LogPrintf("Timeout downloading block %s from peer=%d%s, elapsed=%ds timeout=%ds, disconnecting\n",
+                    queuedBlock.pindex->GetBlockHash().ToString(), pto->GetId(),
+                    fLogIPs ? strprintf(" peeraddr=%s", pto->addr.ToStringAddrPort()) : "",
+                    count_seconds(elapsed), count_seconds(timeout));

6319-6360: Improve object request handling and logging

The object request handling could benefit from more detailed logging and clearer error handling.

  1. Add more detailed logging:
-            LogPrint(BCLog::NET, "%s -- GETDATA skipping inv=(%s), peer=%d\n", __func__, inv.ToString(), pto->GetId());
+            LogPrint(BCLog::NET, "%s -- GETDATA skipping erased request inv=(%s), peer=%d\n", __func__, inv.ToString(), pto->GetId());
  1. Add error handling for invalid object types:
+            if (!inv.IsKnownType()) {
+                LogPrint(BCLog::NET, "%s -- GETDATA invalid type inv=(%s), peer=%d\n", __func__, inv.ToString(), pto->GetId());
+                state.m_object_download.m_object_announced.erase(inv);
+                continue;
+            }
  1. Add timing information to request logs:
-            LogPrint(BCLog::NET, "Requesting %s peer=%d\n", inv.ToString(), pto->GetId());
+            LogPrint(BCLog::NET, "Requesting %s peer=%d last_request=%ds ago\n",
+                inv.ToString(), pto->GetId(),
+                count_seconds(current_time - last_request_time));

1047-1050: Consider using std::unordered_map for better performance

The g_already_asked_for and g_erased_object_requests maps could potentially benefit from using unordered_map for better lookup performance.

However, this change would require careful benchmarking to verify the performance improvement, as the actual benefit depends on the hash function quality and collision rates.


81-84: Consider making constants configurable

The peer object limits are currently hardcoded. Consider making them configurable via command line or configuration file.

-static constexpr int32_t MAX_PEER_OBJECT_IN_FLIGHT = 100;
-static constexpr int32_t MAX_PEER_OBJECT_ANNOUNCEMENTS = 2 * MAX_INV_SZ;
+static constexpr int32_t DEFAULT_MAX_PEER_OBJECT_IN_FLIGHT = 100;
+static constexpr int32_t DEFAULT_MAX_PEER_OBJECT_ANNOUNCEMENTS = 2 * MAX_INV_SZ;
+static int32_t MAX_PEER_OBJECT_IN_FLIGHT = DEFAULT_MAX_PEER_OBJECT_IN_FLIGHT;
+static int32_t MAX_PEER_OBJECT_ANNOUNCEMENTS = DEFAULT_MAX_PEER_OBJECT_ANNOUNCEMENTS;

Then add command line options:

gArgs.AddArg("-maxpeerobjectinflight=<n>", strprintf("Maximum number of in-flight objects from a peer (default: %u)", DEFAULT_MAX_PEER_OBJECT_IN_FLIGHT), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
gArgs.AddArg("-maxpeerobjectannouncements=<n>", strprintf("Maximum number of announced objects from a peer (default: %u)", DEFAULT_MAX_PEER_OBJECT_ANNOUNCEMENTS), ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION);
src/validation.cpp (2)

460-461: Enhance cache size handling for level 3 verifications.

The code now properly handles cases where the database cache size is insufficient for level 3 verifications by:

  1. Checking cache size before attempting level 3 checks
  2. Skipping the checks if cache size is insufficient
  3. Setting a flag to track skipped verifications

This prevents potential memory issues while maintaining verification integrity.

Consider adding metrics to track how often L3 checks are skipped to help tune cache sizes appropriately.

Also applies to: 503-518


525-527: Consider adding more context to the cache size recommendation message.

The message could be more helpful by including the current cache size and recommended minimum size.

-        LogPrintf("Skipped verification of level >=3 (insufficient database cache size). Consider increasing -dbcache.\n");
+        LogPrintf("Skipped verification of level >=3 (current cache size: %zu bytes is insufficient). Consider increasing -dbcache to at least %zu bytes.\n", 
+                  curr_coins_usage, chainstate.m_coinstip_cache_size_bytes);
.cirrus.yml (1)

51-51: YAML Formatting: Reduce Extra Spaces in Merge Key

The static analysis tool flagged extra spaces before the colon on line 51. Consider tightening the syntax to improve readability and meet YAML linting expectations. For example:

-  << : *BASE_TEMPLATE
+  <<: *BASE_TEMPLATE
🧰 Tools
🪛 YAMLlint (1.35.1)

[warning] 51-51: too many spaces before colon

(colons)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3d29b6c and c85063f.

📒 Files selected for processing (23)
  • .cirrus.yml (1 hunks)
  • ci/test/00_setup_env.sh (0 hunks)
  • contrib/guix/libexec/build.sh (2 hunks)
  • contrib/guix/manifest.scm (9 hunks)
  • contrib/macdeploy/gen-sdk (0 hunks)
  • depends/hosts/darwin.mk (1 hunks)
  • depends/packages/qt.mk (2 hunks)
  • depends/patches/qt/darwin_no_libm.patch (1 hunks)
  • depends/patches/qt/fast_fixed_dtoa_no_optimize.patch (0 hunks)
  • src/addrman.h (1 hunks)
  • src/init/common.cpp (1 hunks)
  • src/leveldb/include/leveldb/status.h (2 hunks)
  • src/net_processing.cpp (2 hunks)
  • src/psbt.h (1 hunks)
  • src/qt/test/util.cpp (1 hunks)
  • src/qt/test/util.h (1 hunks)
  • src/test/addrman_tests.cpp (2 hunks)
  • src/validation.cpp (3 hunks)
  • src/wallet/scriptpubkeyman.cpp (0 hunks)
  • src/wallet/sqlite.cpp (2 hunks)
  • test/functional/p2p_outbound_eviction.py (1 hunks)
  • test/functional/test_runner.py (1 hunks)
  • test/functional/wallet_backup.py (1 hunks)
💤 Files with no reviewable changes (4)
  • ci/test/00_setup_env.sh
  • contrib/macdeploy/gen-sdk
  • depends/patches/qt/fast_fixed_dtoa_no_optimize.patch
  • src/wallet/scriptpubkeyman.cpp
✅ Files skipped from review due to trivial changes (2)
  • src/qt/test/util.h
  • src/qt/test/util.cpp
🧰 Additional context used
🪛 YAMLlint (1.35.1)
.cirrus.yml

[warning] 51-51: too many spaces before colon

(colons)

🪛 Ruff (0.8.2)
test/functional/p2p_outbound_eviction.py

87-87: Loop control variable i not used within loop body

Rename unused i to _i

(B007)

⏰ Context from checks skipped due to timeout of 90000ms (9)
  • GitHub Check: win64-build / Build source
  • GitHub Check: linux64_fuzz-build / Build source
  • GitHub Check: linux64_ubsan-build / Build source
  • GitHub Check: linux64-build / Build source
  • GitHub Check: linux64_sqlite-build / Build source
  • GitHub Check: linux64_multiprocess-build / Build source
  • GitHub Check: linux64_tsan-build / Build source
  • GitHub Check: arm-linux-build / Build source
  • GitHub Check: linux64_nowallet-build / Build source
🔇 Additional comments (31)
src/psbt.h (1)

195-195: LGTM! Good improvement in const-correctness.

The change to use const auto& instead of auto for iterating over partial_sigs is a good practice as it:

  1. Prevents accidental modifications to the map elements during iteration
  2. Makes the intent clearer that the iteration is for reading only
  3. Can potentially improve performance by avoiding unnecessary copying
test/functional/p2p_outbound_eviction.py (11)

1-5: Header and license check.

The shebang and MIT license header conform to typical project standards.


6-15: Comprehensive docstring appreciated.

The multi-line docstring provides a clear explanation of the test's purpose and covers the core functionality.


16-25: Imports align with project structure.

These imports from the test framework keep the code self-contained and leverage existing utilities.


26-29: Timeout constants seem appropriately named.

CHAIN_SYNC_TIMEOUT and HEADERS_RESPONSE_TIME are descriptive; maintaining them as top-level constants improves readability.


31-34: Straightforward test parameter setup.

num_nodes = 1 is consistent with a single-node environment for easier control over outbound connections.


35-122: Robust logic for outbound eviction test (unprotected peers).

  1. Mock time manipulations and sequential checks simulate realistic eviction conditions accurately.
  2. The step-by-step approach to induce timeouts and verify evictions ensures thorough coverage of edge cases.
  3. Return value checks after block generation verify the code properly handles chain synchronization.
🧰 Tools
🪛 Ruff (0.8.2)

87-87: Loop control variable i not used within loop body

Rename unused i to _i

(B007)


123-151: Solid coverage for protected peer eviction checks.

  1. The logic accurately verifies that peers sending a valid tip block remain protected.
  2. Timeouts test whether protected peers remain connected despite delayed chain updates.

152-214: Mixed scenario testing is well-structured.

  1. Splitting peers into protected/unprotected and honest/misbehaving categories provides comprehensive coverage.
  2. Logging distinguishes peer behaviors and confirms that only misbehaving unprotected peers are evicted.

215-242: Blocks-relay-only path tested thoroughly.

  1. Testing block-relay peers ensures they do not receive the same protection as full-relay peers.
  2. The final eviction check confirms correct handling of peer roles.

243-250: Sequence of test calls is logical.

run_test orchestrates the various scenarios in a consistent manner, ensuring coverage of all eviction paths before concluding.


252-253: Main entry point is straightforward.

This block properly integrates the test with the framework's runner.

src/net_processing.cpp (2)

6207-6221:

✅ Verification successful

Verify stalling detection edge cases

The stalling detection logic should be verified for potential edge cases.


🏁 Script executed:

#!/bin/bash
# Search for all stalling-related code to verify timeout handling
rg "m_stalling_since" -A 5 -B 5
rg "BLOCK_STALLING_TIMEOUT" -A 5 -B 5

Length of output: 7380


Stalling Detection Edge Cases Verified

The review request was to scrutinize the stalling detection logic for potential edge cases. After reviewing the code and searching for related logic (e.g., the use of m_stalling_since and BLOCK_STALLING_TIMEOUT), the verification confirms that:

  • The condition to detect a stalled peer triggers only when m_stalling_since has been set (i.e., non-zero) and the elapsed time exceeds the dynamic timeout.
  • The dynamic timeout adjustment (both increase on stalling and gradual decrease) is properly bounded by BLOCK_STALLING_TIMEOUT_MAX and defaults, respectively.
  • The atomic update using compare_exchange_strong ensures that the timeout is updated safely and only when a new appropriate value is computed.

No additional edge cases seem to be unaddressed, and the current implementation appears robust.


1428-1433:

✅ Verification successful

Verify chain work comparison logic

The chain work comparison logic for resetting timeouts needs careful verification to ensure it correctly handles edge cases.


🏁 Script executed:

#!/bin/bash
# Search for all chain work comparisons to verify consistency
rg "nChainWork" -A 5 -B 5

Length of output: 40041


Verified: Chain Work Comparison Logic Appears Correct

I’ve reviewed the chain work comparisons across the codebase—including those used in resetting the timeout logic in src/net_processing.cpp—and found them to be consistent with other parts of the code. In particular, the use of comparison operators (e.g., using >= when comparing the best-known block’s work with the active chain tip’s work) correctly handles edge cases without any discrepancies.

No changes are required.

depends/patches/qt/darwin_no_libm.patch (1)

1-18:

❓ Verification inconclusive

LGTM! Build configuration simplification looks good.

The removal of explicit -lm linking is correct since:

  1. GCC with libstdc++ automatically includes the math library
  2. This resolves macOS cross-build issues

Let's verify that the Qt build still works correctly after this change:


🏁 Script executed:

#!/bin/bash
# Description: Verify Qt build configuration and dependencies
# Check if libm is still available through automatic linking
nm $(find . -name "*.a" -o -name "*.so" -o -name "*.dylib") 2>/dev/null | grep -w sin

Length of output: 75


Build Verification: Manual Check Recommended

LGTM! The build configuration simplification looks good, and removal of the explicit -lm link is appropriate since GCC with libstdc++ automatically includes the math library, which also resolves the macOS cross-build issues.

However, the automated verification script intended to check for the presence of math symbols (e.g., sin) produced no output. This result is inconclusive. Please manually verify that the expected math symbols are available in the built libraries to ensure that the automatic linking of libm is functioning as intended.

depends/hosts/darwin.mk (1)

53-60: LGTM! Compiler configuration is well-structured and documented.

The compiler definitions are clear, maintain all necessary flags, and are properly documented with explanatory comments above.

src/leveldb/include/leveldb/status.h (1)

107-117: LGTM! Proper handling of self-assignment with clear suppression of linter warnings.

The implementation correctly:

  1. Handles self-assignment case
  2. Uses NOLINT directives appropriately
  3. Maintains exception safety
src/init/common.cpp (1)

66-66: LGTM! Improved clarity in logging configuration documentation.

The updated description better explains:

  1. Which log levels are always enabled (error, warning, info)
  2. How to configure category-specific levels
  3. The relationship with -debug option and logging RPC
src/addrman.h (1)

124-133: LGTM! Documentation improvements enhance clarity.

The updated documentation for the Add method now clearly explains:

  • The behavior for existing entries (may be updated with additional service flags)
  • The handling of addresses in the new table (may be added to more buckets)
  • The return value semantics (true for successful additions or bucket additions, unaffected by updates)
test/functional/wallet_backup.py (1)

228-231: LGTM! Test improvements enhance coverage.

The addition of empty wallet creation before testing importwallet() improves test coverage by:

  • Ensuring a clean state before wallet import
  • Testing the import functionality with empty wallets
  • Clearly documenting the test's intent
depends/packages/qt.mk (1)

28-28:

✅ Verification successful

Verify the new patch file and its purpose.

The addition of darwin_no_libm.patch suggests changes to the math library linking on Darwin systems.

Please confirm:

  1. The existence and contents of the patch file
  2. The specific build issues it addresses on Darwin systems

🏁 Script executed:

#!/bin/bash
# Description: Check the contents of the new patch file

# Verify patch file exists and show its contents
cat depends/patches/qt/darwin_no_libm.patch

Length of output: 581


Patch Verified: Darwin Build Issue Confirmed

The patch file at depends/patches/qt/darwin_no_libm.patch exists and its contents confirm that it removes the explicit -lm link from the Qt tools. This change addresses the build issues observed during the macOS cross build by relying on GCC's default linking behavior with libstdc++, thus eliminating the need for a manual -lm specification.

  • File verification: The patch file exists and includes a diff that removes the explicit -lm link from qtbase/src/corelib/tools/tools.pri.
  • Build issue addressed: Removing -lm resolves cross building issues on Darwin systems where this explicit link is unnecessary and can cause conflicts.
src/wallet/sqlite.cpp (2)

39-52: LGTM! Well-implemented SQL tracing with security considerations.

The TraceSqlCallback implementation:

  • Safely handles memory with proper cleanup of expanded SQL
  • Conservatively logs only read-only statements to prevent leaking sensitive data
  • Includes proper error handling

250-256: LGTM! Proper integration of SQL tracing.

The tracing setup:

  • Is correctly guarded by appropriate log category and level checks
  • Includes error handling for trace setup failures
  • Uses appropriate trace flags
contrib/guix/manifest.scm (1)

84-88: LGTM! Consistent list formatting.

The changes standardize the list format across package definitions, making the code more consistent and maintainable.

Also applies to: 151-154, 408-411

test/functional/test_runner.py (1)

278-278: LGTM! Added new P2P outbound eviction test.

The addition of p2p_outbound_eviction.py to the base test suite ensures that peer eviction functionality is tested by default, which is important for maintaining network health.

src/test/addrman_tests.cpp (2)

1051-1051: LGTM! Updated test description.

The comment now accurately reflects that the test also verifies service flag behavior during address updates via Add().


1079-1103: LGTM! Comprehensive service flag behavior tests.

The new test cases thoroughly verify service flag behavior in various scenarios:

  1. Gossip relay updates can only add services, not remove them
  2. Direct connections can overwrite service flags
  3. Service flags persist during tried table promotion
  4. Service flags can be updated for addresses in tried table

This ensures robust handling of service flags throughout the address manager's lifecycle.

src/validation.cpp (2)

459-460: LGTM! Good addition of tracking variable for skipped verifications.

The new skipped_l3_checks variable helps track when level 3 verifications are skipped due to insufficient cache size, improving observability.


551-552: LGTM! Improved logging format.

The modified logging format provides clearer progress indication by using a consistent format for all verification progress messages.

.cirrus.yml (1)

50-63: Update Lint Task Configuration

The new lint task now targets "lint [bookworm]" using the debian:bookworm image. This update appears correctly aligned with a move away from Ubuntu-based images. Please verify that downstream linting scripts are compatible with Debian as the base OS.

🧰 Tools
🪛 YAMLlint (1.35.1)

[warning] 51-51: too many spaces before colon

(colons)


[warning] 57-57: too many spaces before colon

(colons)

contrib/guix/libexec/build.sh (1)

183-190: Clean Environment for Darwin After Qt Build

The newly added case block for *darwin* correctly unsets the environment variables C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, and LIBRARY_PATH after building Qt. This helps prevent any unwanted side effects in subsequent build steps. The implementation is clear and follows best practices.

@PastaPastaPasta PastaPastaPasta marked this pull request as draft February 17, 2025 21:00
@PastaPastaPasta PastaPastaPasta force-pushed the develop-trivial-2025-02-12 branch from cc9330c to 0fc6cdd Compare February 19, 2025 17:35
@PastaPastaPasta PastaPastaPasta marked this pull request as ready for review February 20, 2025 17:18
@@ -255,7 +255,6 @@ define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \
patch -p1 -i $($(package)_patch_dir)/duplicate_lcqpafonts.patch && \
patch -p1 -i $($(package)_patch_dir)/utc_from_string_no_optimize.patch && \
patch -p1 -i $($(package)_patch_dir)/fast_fixed_dtoa_no_optimize.patch && \
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

29650: incomplete (failed to drop $(package)_patches += fast_fixed_dtoa_no_optimize.patch line)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's so weird... Wonder why it didn't "conflict" / require manual intervention

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

@kwvg kwvg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

74ebd4d doc, test: Test and explain service flag handling (Martin Zumsande)

Pull request description:

  Service flags received from the peer-to-peer network are handled differently, depending on how we receive them.
  If received directly from an outbound peer the flags belong to, they replace existing flags.
  If received via gossip relay (so that anyone could send them), new flags are added, but existing ones but cannot be overwritten.

  Document that and add test coverage for it.

ACKs for top commit:
  achow101:
    ACK 74ebd4d
  furszy:
    ACK 74ebd4d
  brunoerg:
    utACK 74ebd4d

Tree-SHA512: 604adc3304b8e3cb1a10dfd017025c10b029bebd3ef533f96bcb5856fee5d4396a9aed4949908b8e7ef267ad21320d1814dd80f88426330c5c9c2c529c497591
…instances in spkm's `FillPSBT` methods

e2ad343 wallet: remove unused `SignatureData` instances in spkm's `FillPSBT` methods (Sebastian Falbesoner)

Pull request description:

  These are filled with signature data from a PSBT input, but not used anywhere after, hence they can be removed. Note that the same code is in the `SignPSBTInput` function where the `sigdata` result is indeed used.

ACKs for top commit:
  achow101:
    ACK e2ad343
  brunoerg:
    crACK e2ad343

Tree-SHA512: f0cabcc000bcea6bc7d7ec9d3be2e2a8accbdbffbe35252250ea2305b65a5813fde2b8096fbdd2c7cccdf417ea285183dc325fc2d210d88bce62978ce642930e
@PastaPastaPasta PastaPastaPasta force-pushed the develop-trivial-2025-02-12 branch from 0fc6cdd to 9a93a65 Compare February 20, 2025 18:19
76d6537 depends: drop 1 qt determinism patch (fanquake)

Pull request description:

  No-longer required now that we are building with GCC 12.

  Guix Build (x86_64 && aarch64):
  ```bash
  e1c5b2c1c1a184e9d6985f26d26c61ca049e4541c699c6c9ce334beb832ed8da  guix-build-76d6537698e4/output/aarch64-linux-gnu/SHA256SUMS.part
  22f5d39fd9eac2d1fdbf2794fd6272ce05a1dfda2aeb2280a5dbafe76d0eec3d  guix-build-76d6537698e4/output/aarch64-linux-gnu/bitcoin-76d6537698e4-aarch64-linux-gnu-debug.tar.gz
  1cc798fb30b9e85e3b94049a671e2881b6b8694e52ae5e6468805c8ea6ea637f  guix-build-76d6537698e4/output/aarch64-linux-gnu/bitcoin-76d6537698e4-aarch64-linux-gnu.tar.gz
  a8c4ecc550aba01292885343ae9d53e31dfc0ef26f885fcf00493c754c5f9deb  guix-build-76d6537698e4/output/arm-linux-gnueabihf/SHA256SUMS.part
  d037b87949640d441b1ea000fd3fb27a508a699c5a6d69b6647611325cb9b7f5  guix-build-76d6537698e4/output/arm-linux-gnueabihf/bitcoin-76d6537698e4-arm-linux-gnueabihf-debug.tar.gz
  a858a0bce444a9eaf2b36d188198e54cdc14d85e344863d9e176dca94e458537  guix-build-76d6537698e4/output/arm-linux-gnueabihf/bitcoin-76d6537698e4-arm-linux-gnueabihf.tar.gz
  a802412eb9f2bbe2c573052581c21c44281e78c65d6ebc243105d5004768f0f9  guix-build-76d6537698e4/output/arm64-apple-darwin/SHA256SUMS.part
  20eeb2a28f096f53eeae61c64082c7eef0fb4d4e8dd7fb173a6cc19bf1960165  guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin-unsigned.tar.gz
  54fae4652f21772d4d861b1a9dd3dcb913f088e6b7049a566c748ccdf2acede3  guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin-unsigned.zip
  e986f3d8311df3ab26860c8747e9634687617609a317fdf242365d408235f417  guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin.tar.gz
  3efced764d3b62362c906f1fbbdecf347be1aab877afb2d6ce8f39d24b3d7437  guix-build-76d6537698e4/output/dist-archive/bitcoin-76d6537698e4.tar.gz
  6bd047bd080ae0d0a08a15e83a79dfd17bf29227599517d0bccae17a0224a741  guix-build-76d6537698e4/output/powerpc64-linux-gnu/SHA256SUMS.part
  102909ef544962e08577464b3293c0013237391b7577d7abc26f1244d3d0157d  guix-build-76d6537698e4/output/powerpc64-linux-gnu/bitcoin-76d6537698e4-powerpc64-linux-gnu-debug.tar.gz
  01cf35c37093f768c953697c8d0102316e1e719befd2853a74266bcc2105c52c  guix-build-76d6537698e4/output/powerpc64-linux-gnu/bitcoin-76d6537698e4-powerpc64-linux-gnu.tar.gz
  467f858d1aba32ee290e6ba00feee632fcb56907f77e5b48f4de969d8ce78457  guix-build-76d6537698e4/output/riscv64-linux-gnu/SHA256SUMS.part
  893cb65a79709c58ebafb003ce43b1cd51434d9c0a9175b7dfede6aa99fec3d2  guix-build-76d6537698e4/output/riscv64-linux-gnu/bitcoin-76d6537698e4-riscv64-linux-gnu-debug.tar.gz
  be3bd03cdef59928eb8a18bd59f48ad27ae38a6382bf94651774845adbd28308  guix-build-76d6537698e4/output/riscv64-linux-gnu/bitcoin-76d6537698e4-riscv64-linux-gnu.tar.gz
  1ff2b04cccd44c4c6526387307fb381f52fbc36b31a51730435d6b99e0fa4610  guix-build-76d6537698e4/output/x86_64-apple-darwin/SHA256SUMS.part
  9c84639c4b7e1e39c06da4c9430efe94993ce97fbc279b38502c1d4fc25ac801  guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin-unsigned.tar.gz
  e65c009c728aa42f24b6970018336058adc78fba09b85aa76310de98fdabb8ad  guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin-unsigned.zip
  1a85307eec81cc13e5d599db1bb7cddd3d4f6847f2bad7685e096c439b44489a  guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin.tar.gz
  10189926b6ccef3ab1feee3edce34a80a30e60ee67c00519e344fefd6c9880d0  guix-build-76d6537698e4/output/x86_64-linux-gnu/SHA256SUMS.part
  0094570197c0a91b7a903c1250bf899ea50d7452608da03f5dd825febd5e216b  guix-build-76d6537698e4/output/x86_64-linux-gnu/bitcoin-76d6537698e4-x86_64-linux-gnu-debug.tar.gz
  8375afd9ea4376b354548270323fa0f5f3244579b59dcdf9c26330337b5719ab  guix-build-76d6537698e4/output/x86_64-linux-gnu/bitcoin-76d6537698e4-x86_64-linux-gnu.tar.gz
  5a30053ee8db9eb2d083e8569a1a69b24acc84de1028f3f40d5e902a1174e49e  guix-build-76d6537698e4/output/x86_64-w64-mingw32/SHA256SUMS.part
  1d624077e027dd6f213c85d75fdbac12d61c45235946817c406132fbd222c939  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-debug.zip
  e75107ce5608d83708b4e9b5a64d50e0282560ee2d8d915a20993fd383d2d456  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-setup-unsigned.exe
  7fb1f412fd71e0e8302add6bcc5679ad6990d87c16688a396769844f72ae7c82  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-unsigned.tar.gz
  be24df85e0834823f0ad9611667100330972d3a18460099d7df5b4386fbd6403  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64.zip
  ```

ACKs for top commit:
  TheCharlatan:
    ACK 76d6537

Tree-SHA512: 69e698e9b0036ecb1f89db82427c25d0368d2178c3dc2bc751181c19a1139929bf0da160af6f3e021ca3da59ea66f7b7330aa6295f5e65c6ef0bbcf369fcbc94
fab01b5 refactor: performance-for-range-copy in psbt.h (MarcoFalke)

Pull request description:

  A copy of the partial signatures is not required before serializing them.

  For reference, this was found by switching the codebase to `std::span` (not sure why it wasn't found with `Span` though):

  ```
  ./psbt.h:240:23: error: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy,-warnings-as-errors]
    240 |             for (auto sig_pair : partial_sigs) {
        |                       ^
        |                  const  &

ACKs for top commit:
  tdb3:
    ACK fab01b5
  theStack:
    utACK fab01b5

Tree-SHA512: b55513d8191118499716684190ee568d171b50ae9171d246ca6e047f0cfd3ec14c9453d721e88af55e47bb41fa66cbafdbfb47bc5f9b8d82789e0a9b634b371b
a37778d Squashed 'src/leveldb/' changes from e2f10b4e47..688561cba8 (fanquake)

Pull request description:

  Includes bitcoin-core/leveldb-subtree#41 which is used in bitcoin#30234.

ACKs for top commit:
  theuni:
    utACK 95812d9

Tree-SHA512: 3d943695a3d33816cf5558b183f5629aa92a500a1544eecedf84952e93c8592a8cf0d554b88281fc0bad3c9e920ebcff1ed8edc12f8e73f36ed5335482beb829
… to be deterministic"

b03a45b Revert "contrib: macdeploy: monkey-patch gen-sdk to be deterministic" (fanquake)

Pull request description:

  This reverts commit ba30a54.

  We no-longer support Python 3.8, so remove the monkey patching.

ACKs for top commit:
  hebasto:
    ACK b03a45b, I have reviewed the code and it looks OK.

Tree-SHA512: 5bf68c2b332f18a620a8a6f77812ed93afa988016847bec1d3b7355670301dc957442ac47191a0cb7c3fe607d902914fb00c96345c8170f2a64429638c00b3c4
e6df348 guix: move bison from global scope, to Linux (fanquake)

Pull request description:

  This is only needed for the Qt build (libxkbcommon), on Linux, so does not need to be built/present for the macOS or Windows builds.

ACKs for top commit:
  hebasto:
    ACK e6df348.
  TheCharlatan:
    ACK e6df348

Tree-SHA512: b66111e398b4fce88f912adfd808d537e2d85e1f0078befd264bb700b201ca1bbe322810e80a212e0023657e9e3693a106761c43743d66aabd16e2afe7f599e6
@PastaPastaPasta PastaPastaPasta force-pushed the develop-trivial-2025-02-12 branch from 9a93a65 to c34e7ab Compare February 20, 2025 18:22
Copy link

@UdjinM6 UdjinM6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK c34e7ab

Copy link
Collaborator

@kwvg kwvg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK c34e7ab

@PastaPastaPasta PastaPastaPasta merged commit 456add2 into dashpay:develop Feb 21, 2025
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants