Building on #10102, this adds an -ipcconnect option to bitcoin-wallet and an -ipcbind option to bitcoin-node (both enabled by default in multiprocess builds) so bitcoin node will listen on a <datadir>/sockets/node.sock unix socket, and bitcoin-wallet will connect to it.
The idea is that bitcoin-wallet can be extended in the future to have some online functionality. For example, there could be a bitcoin-wallet sync command that will update balances and sync latest transactions to an unloaded wallet, or a bitcoin-wallet serve subcommand that loads a wallet and serves RPC requests, or a bitcoin-wallet shell subcommand that allows running RPC methods interactively like the GUI console, or just general support for bitcoin-wallet <rpc method> <rpc params> invocations suggested #13926 (comment).
This PR is small and doesn't do much. The only visible change is that bitcoin-wallet now checks whether a node socket exists on startup and prints "Connected to IPC address" if it can connect it it.
The default bitcoin-wallet connect option is -ipcconnect=auto, which connects if possible as described above, and proceeds offline if not possible. Other supported options are -noipcconnect to disable ipc, -ipcconnect to require a connection and fail if it can't be established, and -ipcconnect=unix:<socket> to require a connection and use a custom socket path.
These changes require multiprocess support and this PR has no effect unless bitcoin is configured with --enable-multiprocess as described in doc/multiprocess.md
See the guideline and AI policy for information on the review process.
A summary of reviews will appear here.
<!--174a7506f384e20aa4161008e828411d-->
Conflicts
Reviewers, this pull request conflicts with the following ones:
#36540 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36540.svg"></sub> (mempool: remove time-based transaction expiry by ismaelsadeeq)
#36482 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36482.svg"></sub> (wallet: Only broadcast resubmitted transactions that were added to the mempool by achow101)
#36398 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36398.svg"></sub> (wallet: only rebroadcast transactions originating from the wallet by mzumsande)
#36341 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36341.svg"></sub> (wallet: return error from bitcoin-wallet create by kriss39)
#36188 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36188.svg"></sub> (crypto: plug hardware optimized SHA256 into libsecp256k1's context by furszy)
#36167 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36167.svg"></sub> ([RFC] Enable -Wunused by fanquake)
#36097 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36097.svg"></sub> (mining: replace interrupt methods with cancellation arguments by xyzconstant)
#36011 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/36011.svg"></sub> (btcsignals: destroy callbacks on disconnect by ryanofsky)
#35932 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/35932.svg"></sub> (ipc: make ipc::disconnectIncoming wait for in-progress calls to complete by ryanofsky)
#35911 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/35911.svg"></sub> (Warn on and add missing [[noreturn]] by fanquake)
#35511 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/35511.svg"></sub> (RFC: consensus: Make CAmount a class by hodlinator)
#34603 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/34603.svg"></sub> (wallet: Fix detection of symlinks on Windows by achow101)
#34405 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/34405.svg"></sub> (wallet: skip APS when no partial spend exists by 8144225309)
#32387 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/32387.svg"></sub> (ipc: add windows support by ryanofsky)
#31672 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/31672.svg"></sub> (rpc: add cpu_load to getpeerinfo by vasild)
#31507 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/31507.svg"></sub> (build: Use clang-cl to build on Windows natively by hebasto)
#29409 <sub><img src="https://drahtbot.space/ack_count/bitcoin/bitcoin/29409.svg"></sub> (ipc: Expose Chain interface to IPC clients by ryanofsky)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
DrahtBot removed the label Needs rebase on Jul 14, 2020
DrahtBot added the label Needs rebase on Jul 30, 2020
ryanofsky force-pushed on Aug 12, 2020
DrahtBot removed the label Needs rebase on Aug 12, 2020
DrahtBot added the label Needs rebase on Aug 13, 2020
ryanofsky force-pushed on Aug 28, 2020
DrahtBot removed the label Needs rebase on Aug 28, 2020
DrahtBot added the label Needs rebase on Aug 31, 2020
ajtowns removed the label Docs on Sep 17, 2020
ajtowns removed the label GUI on Sep 17, 2020
ajtowns removed the label P2P on Sep 17, 2020
ajtowns removed the label RPC/REST/ZMQ on Sep 17, 2020
ajtowns removed the label Tests on Sep 17, 2020
ryanofsky force-pushed on Sep 28, 2020
DrahtBot removed the label Needs rebase on Sep 28, 2020
ryanofsky force-pushed on Oct 2, 2020
DrahtBot added the label Needs rebase on Oct 27, 2020
ryanofsky force-pushed on Nov 25, 2020
DrahtBot removed the label Needs rebase on Nov 25, 2020
DrahtBot added the label Needs rebase on Dec 2, 2020
ryanofsky force-pushed on Dec 11, 2020
DrahtBot removed the label Needs rebase on Dec 11, 2020
DrahtBot added the label Needs rebase on Dec 16, 2020
ryanofsky force-pushed on Dec 18, 2020
DrahtBot removed the label Needs rebase on Dec 18, 2020
jonasschnelli
commented at 8:02 AM on December 18, 2020:
contributor
Impressive change. Again!
Conceptual I'm not yet convinced.
My understanding is/was that bitcoin-wallet is an offline wallet exploring and manipulation tool without the requirement of a node or online connectivity.
Things that require a node, should IMO go into wallet RPC calls.
But my conceptual understanding might be old and rusty (happy to get convinced).
Things like bitcoin-wallet shell would be nice though. I guess we would just need to make sure the IPC/node option is completely optional and thus the offline functionality (for things that can work offline) is still guaranteed.
Or is this also an attempt to decouple the wallet from the node (in the long run)?
DrahtBot added the label Needs rebase on Dec 18, 2020
ryanofsky
commented at 11:34 AM on December 18, 2020:
contributor
My understanding is/was that bitcoin-wallet is an offline wallet exploring and manipulation tool without the requirement of a node or online connectivity.
To address any concern here, there's no thought of changing this. This PR gives bitcoin-wallet tool ability to do online things as well as offline things. It doesn't require a node or take away the ability to do offline things. Even if you require separate bitcoin-wallet-online-stuff and bitcoin-wallet-offline-only binaries, it only needs build changes not code changes (a new automake entry and src/init/bitcoin-wallet-offline-only.cpp stub)
Make sure to run all tests locally, according to the documentation.
The failure may happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being
incompatible with the current code in the target branch). If so, make sure to rebase on the latest
commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the
affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
</details>
DrahtBot added the label CI failed on Jul 26, 2024
knst referenced this in commit 3411577473 on Jul 27, 2024
knst referenced this in commit a7993de34b on Aug 3, 2024
knst referenced this in commit aa2d3b8164 on Aug 7, 2024
hebasto added the label Needs CMake port on Aug 16, 2024
DrahtBot added the label Needs rebase on Aug 28, 2024
maflcko removed the label Needs CMake port on Aug 29, 2024
achow101 referenced this in commit df3f63ccfa on Sep 9, 2024
ryanofsky force-pushed on Sep 19, 2024
DrahtBot removed the label Needs rebase on Sep 19, 2024
DrahtBot added the label Needs rebase on Sep 25, 2024
ryanofsky force-pushed on Sep 26, 2024
DrahtBot removed the label Needs rebase on Sep 26, 2024
DrahtBot added the label Needs rebase on Nov 21, 2024
ryanofsky force-pushed on Dec 6, 2024
DrahtBot removed the label Needs rebase on Dec 6, 2024
DrahtBot added the label Needs rebase on Jan 29, 2025
ryanofsky force-pushed on Mar 18, 2025
ryanofsky force-pushed on Mar 19, 2025
ryanofsky
commented at 8:26 PM on March 19, 2025:
contributor
Updated 240bc4798a3c4e991e153d6660509c78323fe937 -> ce32dc3958c9e3610bd7113551a8a43396d0019d (pr/ipc-connect.42 -> pr/ipc-connect.43, compare) to fix CI failure in tool_wallet.py https://cirrus-ci.com/task/4513424845045760 where bitcoin-wallet throws an exception because the temporary directory name is too long and it causes a "Unix address path "..." exceeded maximum socket path length" error
Rebased ce32dc3958c9e3610bd7113551a8a43396d0019d -> 511f5a9be75b2e07dd45f497206b6fa844ef58a8 (pr/ipc-connect.43 -> pr/ipc-connect.44, compare) on top of updated base pr/ipc.216
Try to run the tests locally, according to the documentation. However, a CI failure may still
happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being
incompatible with the current code in the target branch). If so, make sure to rebase on the latest
commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the
affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
</details>
DrahtBot added the label Needs rebase on Dec 4, 2025
ryanofsky force-pushed on Dec 12, 2025
DrahtBot removed the label Needs rebase on Dec 12, 2025
ryanofsky force-pushed on Dec 16, 2025
ryanofsky force-pushed on Jan 7, 2026
DrahtBot removed the label CI failed on Jan 7, 2026
DrahtBot added the label Needs rebase on Feb 4, 2026
ryanofsky force-pushed on Apr 1, 2026
DrahtBot removed the label Needs rebase on Apr 1, 2026
ajtowns
commented at 2:15 PM on April 27, 2026:
contributor
Why is this overloading daemon behaviour on an existing cli tool, instead of introducing a new binary like bitcoin-node or bitcoin-gui did? I can't see any discussion of this approach/conflict on irc or in #28978; though a [comment in #13926](/bitcoin-bitcoin/13926/#pullrequestreview-166662143) suggested bitcoind-wallet could be an option around the time that PR stole the name from multiprocess. bitcoin-walletd or bitcoin-ipc-wallet or bitcoin-wallet-ipc could also work afaics. Combining the two just seems like more work and a potential footgun for users to me.
Kino1994 referenced this in commit 31930f118b on Jun 28, 2026
BigcoinBGC referenced this in commit 76d7830689 on Jun 30, 2026
DrahtBot added the label Needs rebase on Jul 7, 2026
ab4cus referenced this in commit 5dcbdd80c0 on Jul 8, 2026
ryanofsky force-pushed on Jul 14, 2026
DrahtBot removed the label Needs rebase on Jul 14, 2026
DrahtBot added the label Needs rebase on Jul 29, 2026
ryanofsky force-pushed on Aug 18, 2026
DrahtBot removed the label Needs rebase on Aug 18, 2026
Kino1994 referenced this in commit 17443e59e2 on Aug 19, 2026
DrahtBot added the label Needs rebase on Aug 21, 2026
ryanofsky force-pushed on Sep 9, 2026
DrahtBot removed the label Needs rebase on Sep 9, 2026
DrahtBot added the label Needs rebase on Sep 22, 2026
ryanofsky force-pushed on Oct 1, 2026
DrahtBot removed the label Needs rebase on Oct 1, 2026
DrahtBot added the label Needs rebase on Oct 19, 2026
DCG-Claude referenced this in commit a7a0d23234 on Oct 21, 2026
DCG-Claude referenced this in commit 1f9f5756ad on Oct 24, 2026
DCG-Claude referenced this in commit e5fbfc72ec on Oct 24, 2026
ipc: Add capnp serialization code for bitcoin types
Add helper functions and type conversions needed by the Chain capnp
interface:
- Add ToBlob, ToArray, Serialize, and Unserialize helper functions
- Add util::Result and util::Expected serialization, using new common.capnp
Result, ResultVoid, and Expected structs
- Add UniValue::type_error exception serialization
- Add common.capnp BilingualStr and Pair structs
bedeeffa77
ipc: Add capnp wrapper for Handler interface378317e5bc
interfaces, refactor: Change Chain method signatures for IPC wrappers
Drop const from Chain::getFeeRateEstimate() and
Chain::maximumFeeEstimationTargetBlocks(), and pass the
Chain::updateRwSetting() update function by value, so libmultiprocess can
generate an IPC client class implementing them. Generated client methods are
never const, so they can't override const virtual methods, and the generated
server code can only pass a callback argument to the implementation by value.
be8d23e00d
ipc: Add capnp wrappers for stable Chain and UnstableChain interfaces
Add a stable Chain capnp interface for external clients, and an UnstableChain
interface extending it for Bitcoin Core's own clients, both backed by the C++
interfaces::Chain class. Stable Chain methods follow Cap'n Proto schema
evolution rules so existing clients keep working as methods are added.
UnstableChain methods can change in any way between releases, as discussed in
bitcoin/bitcoin#34981.
The stable interface starts out with only the block lookup methods that use
FoundBlockParam/FoundBlockResult (findBlock, findFirstBlockWithTimeAndHeight,
findAncestorByHeight, findAncestorByHash, findCommonAncestor). Other methods
can be moved to it from UnstableChain when they are ready for external use.
This change was written with Claude Opus 5.5 (1M context).
f5ba6faa61
ipc: Expose Chain interface
Add Init.makeChain and Init.makeUnstableChain methods returning the stable
Chain and UnstableChain interfaces to external processes spawning or
connecting to bitcoin-node, and test them in interface_ipc.py.
This change was written with Claude Opus 5.5 (1M context).
f770bb7f73
Merge branch 'pr/ipc-chain' into pr/ipc9f73c8cb61
test: Increase feature_block.py and feature_taproot.py timeouts
Needed because BlockConnected notifications are a lot slower with the wallet
running in separate process.
a62c9a7a9a
test: Fix multiprocess test for unclean shutdown on killd828e88f04
util: Add util::Result workaround to be compatible with libmultiprocess
Make default constructor more generic so it doesn't only work with void types.
Add tests pinning down when a callback object (and any state it owns)
is destroyed. Currently disconnect() only disables the callback: the
object stays alive until a later connect() call on the same signal
garbage collects it and every connection handle referencing it has been
released; with no connection handle held it lives until the signal
itself is destroyed.
This differs from boost::signals2, which btcsignals aims to be
api-compatible with: there, disconnecting destroys the slot's function
object as soon as no emission is using it.
No behavior change; these tests document the status quo so the next
commit changing the destruction timing has a clear before/after diff.
This change was written with Claude Fable 5.
762d6c0fb4
btcsignals: destroy callbacks eagerly on disconnect
Previously a disconnected callback and any state it owned could stay
alive indefinitely: destruction required both a later connect() call on
the same signal to garbage collect it and release of every connection
handle referencing it. That made destruction timing unpredictable for
callbacks that own resources whose release has side effects, and it
diverges from boost::signals2, which destroys a disconnected slot's
function object as soon as no emission is running it. (The concrete
fallout was in multiprocess bitcoin-gui, where node notification
callbacks own IPC proxy objects: their deferred destruction kept
bitcoin-node from exiting and hung interface_gui.py until timeout.)
Make disconnect() destroy the callback, deferring only while a
concurrent emission is mid-call into it, matching boost::signals2
semantics. The previous commit's characterization tests are updated;
their diff shows the ownership change.
This change was written with Claude Fable 5.
de0617691a
btcsignals: fall back to atomic_load/store without __cpp_lib_atomic_shared_ptr
std::atomic<shared_ptr<T>> is a C++20 library feature, but library
implementations are not required to ship all C++20 features at once;
__cpp_lib_atomic_shared_ptr is the feature-test macro that indicates its
presence. Without it, the generic std::atomic<T> requires trivially copyable
T — shared_ptr is not, causing build failures on macOS (Xcode 16.2),
FreeBSD 15.1, and the MSan/TSan custom libc++ builds in CI.
Fall back to the C++11 atomic_load/atomic_store free functions, which are
specifically overloaded for shared_ptr, through a small atomic_shared_ptr
wrapper with the same load() and store() members. The fallback is intended
to be temporary: those functions are deprecated in C++20 and will eventually
be removed, so this commit can be reverted once all CI platforms carry the
C++20 specialization.
This change was written with Claude Sonnet 4.6.
e323de0997
multiprocess: Add capnp serialization code for bitcoin typesc166a6f53f
interfaces, refactor: Change WalletLoader::restoreWallet parameter order
Libmultiprocess requires output parameters to be ordered after input parameter,
so move warnings parameter last. Problematic order was introduced in
4ec2d18a0734f44c0a74f05b59ad1269d323dfdb from
https://github.com/bitcoin-core/gui/pull/877
55d07fbc34
multiprocess: Add capnp wrapper for Wallet interfacecaedab9a28
multiprocess: Add capnp wrapper for Node interface9f15480c00
multiprocess: Make bitcoin-gui spawn a bitcoin-node process
Spawn node subprocess instead of running node code internally
94931f6edd
multiprocess: Make bitcoin-node spawn a bitcoin-wallet process
Spawn wallet subprocess instead of running wallet code internally
345ce3c34c
multiprocess: Add debug.log .wallet/.gui suffixes
Add .wallet/.gui suffixes to log files created by bitcoin-gui and
bitcoin-wallet processes so they don't clash with bitcoin-node log file.
ec02346d6c
Squashed 'src/ipc/libmultiprocess/' changes from e8de5c7b68e..67cfd8a0f89
67cfd8a0f89 type: Accept any comparator, hash, and allocator in container fields
08f72b0a2b2 mpgen: Key ProxyMethod and method traits by interface type
2e7812a5a1e Merge bitcoin-core/libmultiprocess#370: Fix Bitcoin Core build errors from libmultiprocess headers
686bccf766f Merge bitcoin-core/libmultiprocess#371: cmake: Fix silent include-what-you-use failures
f0a14754ef4 cmake: Show include-what-you-use diagnostics when it fails
92127a984a4 cmake: Pass -w to include-what-you-use
3577d23f616 ci: Enable -Wundef in default and llvm jobs
debd42955ea proxy-types: Avoid -Wundef error when KJ_NO_EXCEPTIONS is not defined
6fd2a9c90e1 Merge bitcoin-core/libmultiprocess#367: mpgen: Change Cap'n Proto link order to fix undefined references in static builds
a8c64c7faa5 ci: Enable -Wunused-const-variable in GCC jobs
701449c1657 util: Make SocketError inline constexpr
f1042b1a60e Merge bitcoin-core/libmultiprocess#366: ci: Compile with minimum supported g++-10 in olddeps
a6ecdc113ff Merge bitcoin-core/libmultiprocess#364: util: Error out at compile time if KJ_NO_EXCEPTIONS is set
56cfdaa884e Change CapnProto library linkage for mpgen
fa5633467af ci: Compile with minimum supported g++-10 in olddeps
4a1f400f8b7 util: Error out at compile time if KJ_NO_EXCEPTIONS is set
2dba130478a Merge bitcoin-core/libmultiprocess#363: ci: use LLVM 23 in Bitcoin Core CI
161197a5c7b Merge bitcoin-core/libmultiprocess#352: ci: add cmake debug output
fb4ac7eb8c8 ci: use LLVM 23 in Bitcoin Core CI
7bac69de1fc Merge bitcoin-core/libmultiprocess#360: pull latest .clang-tidy from downstream
79ddc44eb32 Merge bitcoin-core/libmultiprocess#359: ci: bump cmake version to 4.3.4 in newdeps job
bf229bf82ae Merge bitcoin-core/libmultiprocess#351: ci: do not ignore NIXPKGS_CHANNEL in local ci runs
073ac4f1972 Merge bitcoin-core/libmultiprocess#347: refactor: Replace EventLoop::post() with sync() taking kj::FunctionParam
fa1db7a9e3e pull latest .clang-tidy from downstream
5c49666a1d8 refactor: rename EventLoop::m_post_fn to m_sync_fn
2330fbe81e2 refactor: replace EventLoop::post() with sync() taking kj::FunctionParam
4d454a81da6 Merge bitcoin-core/libmultiprocess#358: refactor: Enable readability-container-contains
dba99582b32 Merge bitcoin-core/libmultiprocess#357: doc: Update Cap'n Proto version to match minimum
00923922ac3 Merge bitcoin-core/libmultiprocess#356: ci: Remove hard-coded -j4 from sanitize config
766867fb326 ci: clarify CAPNP_CHECKOUT=master is the v1.x release branch
cc3675280bf ci: bump cmake version to 4.3.4 in newdeps job
fa101113b50 refactor: Enable readability-container-contains
81f824b025f doc: Update Cap'n Proto version to match minimum
fa30e2093c7 ci: Remove hard-coded -j4 from sanitize config
a7ff9d5da22 ci: add cmake debug output
f2e8df82ede Merge bitcoin-core/libmultiprocess#350: cmake: add type-unordered-set.h and version.h to public headers
0e146c0468d Merge bitcoin-core/libmultiprocess#349: type-context: fix async disconnect race condition found by antithesis
49f95e26326 Merge bitcoin-core/libmultiprocess#212: ci: add newdeps job testing newer versions of cmake and capnproto
7c73cceda9b ci: rename CI-internal variables to use CI_ prefix
fe1b8339f00 ci: do not ignore NIXPKGS_CHANNEL in local ci runs
914dc839f27 proxy: fix data race between server request threads and disconnect handling
275c8eefdfb Merge bitcoin-core/libmultiprocess#345: Remove trailing whitespace and Add -Wtrailing-whitespace to default ci config
cd7162fb832 Merge bitcoin-core/libmultiprocess#304: proxy: fix BuildList to use non-const iteration for interface types
9b136782af1 ci: Add -Wtrailing-whitespace to default config
2f4be9ec6ea refactor: Remove trailing whitespace
2448d282ccd cmake: add type-unordered-set.h and version.h to public headers
b3fc922ee4a ci: add newdeps job testing newest versions of cmake and capnproto
390b5f901f1 Merge bitcoin-core/libmultiprocess#344: test: listen_tests and connect_tests follow-ups
d6f8588d1ab proxy: fix BuildList to use non-const iteration for interface types
e18ca520f45 Merge bitcoin-core/libmultiprocess#343: test: fix race in connect_tests disconnect-deferred-failure test
c39c7850c66 doc: note construct() call in valid init interface test
b9c36c61751 test: close sockets unconditionally and check errors with KJ_SYSCALL
7eb741e6359 test: drop unnecessary KJ_EXPECT(true)
113f1d4d287 test: join server thread unconditionally in connect tests
44bc4630bc1 test: drop mp:: prefixes in connect tests
038d33eb31e test: share DefaultLogHandler between test files
b54a1633085 test: drop TestSetup socket members in connect tests
70467c5a727 test: add m_ prefix to TestSetup members in connect tests
cc260f2526f test: replace capnp fix link with upstream PR
137a6e4e039 test: fix race in connect_tests disconnect-deferred-failure test
8dab0d4bdeb Merge bitcoin-core/libmultiprocess#341: ci: add -Wextra-semi to llvm config
b3b134eed8b ci: add -Wextra-semi to llvm config
bdd0cd69418 Merge bitcoin-core/libmultiprocess#339: refactor: add `[[noreturn]]` attributes
a779a09764c ci: add -Wmissing-noreturn
636aaff576b refactor: add missing [[noreturn]] attributes
cc11c2b1b41 Merge bitcoin-core/libmultiprocess#338: test: check ReadList return value
2d6e863c77a Merge bitcoin-core/libmultiprocess#334: ci: Set CMAKE_BUILD_PARALLEL_LEVEL to enable parallelism by default
d4d10ff98ab Merge bitcoin-core/libmultiprocess#332: ci: add -Wextra-semi to default config
b540e70f25f Merge bitcoin-core/libmultiprocess#324: proxy: Name threads spawned by the event loop
e5e367e785c Merge bitcoin-core/libmultiprocess#312: util: report back child errors to parent and throw
2220df68c91 Merge bitcoin-core/libmultiprocess#298: Fix error handling when creating clients (`mp::ConnectStream`)
51defb79ef7 Merge bitcoin-core/libmultiprocess#340: ci: Update `capnproto` prerequisites on NetBSD
7e94790b08a ci: Update `capnproto` prerequisites on NetBSD
9f25ffca5b0 test: Cover OS thread names for worker, pool, and async threads
648a18589c4 proxy: Name threads spawned by the event loop
49834b2609e ci: add -Wextra-semi to default config
fae9a637e35 example: Remove unused kj/async.h include
bb473690c97 Fix error handling when creating clients
44d191420c6 Add test coverage for ConnectStream
231361ae5af Correct stale UnixListener doc comment
060c1a50d03 Extract `UnixListener` class to a dedicated file
62f25af06c3 test: check ReadList return value
ce51d737255 ci: Set CMAKE_BUILD_PARALLEL_LEVEL to enable parallism in build jobs by default
67302cd132a Merge bitcoin-core/libmultiprocess#331: Remove code for Cap'n Proto versions before 0.9
f13c64ab54e Merge bitcoin-core/libmultiprocess#330: ci: Compile with minimum supported g++ in olddeps
8e026f66252 Merge bitcoin-core/libmultiprocess#327: build: avoid unnecessary capnp-rpc dependency for mpgen
e5206e9eb5b Merge bitcoin-core/libmultiprocess#325: cmake: Remove `QUIET` option from `find_package(CapnProto ...)`
879efea2bc7 Merge bitcoin-core/libmultiprocess#321: ci: Roll NetBSD releases to 11.0, drop 9.4
abf127a3141 Merge bitcoin-core/libmultiprocess#317: ipc: Fix mpgen capnp tool path for vcpkg/Windows builds
c437d7f107e Merge bitcoin-core/libmultiprocess#310: test: cover immediate client disconnects for `ListenConnections`
31bff8a673f Merge bitcoin-core/libmultiprocess#307: refactor: memcpy -> std::ranges::copy
f355108b0a0 Merge bitcoin-core/libmultiprocess#303: type-chrono: Add CustomBuildField/CustomReadField overloads for std::chrono::time_point
2d678177c14 Merge bitcoin-core/libmultiprocess#296: ci: Bump channel to nixos-26.05
3f05b11624c util: kill and reap child on SpawnProcess error
4a56c1837a7 util: report back child error to parent and throw
a9e70dbe775 ci: Add NetBSD release 11.0
2d33b14fb0e ci: Switch to default compiler on NetBSD 9.4
36f74002775 ci: Drop NetBSD release 9.4
bd508311b56 refactor: Drop stray semicolons after function definitions
788f17a8509 Remove code for Cap'n Proto versions before 0.9
7402affd0ce ci: Pin oldeps config to older nixpkgs channel to compile older cmake with older gcc
edf63435624 ci: Compile with minimum supported g++-11 in olddeps
fa47449afe1 cmake: avoid unnecessary capnp-rpc dependency for mpgen
a494b764de5 cmake: Remove `QUIET` option from `find_package(CapnProto ...)`
26452e02d75 refactor: memcpy -> std::ranges::copy
e1dcc6eb182 Merge bitcoin-core/libmultiprocess#316: cmake: Fix stale codegen when mpgen binary changes
7a72df02e2d type-chrono: Add CustomBuildField/CustomReadField overloads for std::chrono::time_point
45b685c3f58 type-number, type-chrono: Fix static assert signed/unsigned comparisons
45f6255975d type-number: exclude bool from the integral overload
8d6d4649482 Merge bitcoin-core/libmultiprocess#315: Fix startup race in example
a6fc80d2547 Merge bitcoin-core/libmultiprocess#311: bugfix: clear FD_CLOEXEC in child instead of parent before fork
496fb84e69f test: cover immediate client disconnects for `ListenConnections`
36c6c63520e doc: Document reference-counted EventLoop lifetime
3a997e113cf Fix startup race in mpexample
f5c15ce33ff Merge bitcoin-core/libmultiprocess#323: refactor: access ThreadContext through CurrentThread(), ci: switch Bitcoin Core to master
66298c737f4 ci: Switch back to Bitcoin Core's master branch
86b48105018 refactor: access ThreadContext through CurrentThread()
eea9c64f6e1 cmake: Fix stale codegen when mpgen binary changes
a26a08496b8 cmake: Fix mpgen capnp tool path for vcpkg/Windows builds
140d9ba6ff7 test: allow custom log handler in `ListenSetup`
1e0c7ff9a51 util: Clear FD_CLOEXEC in child instead of parent before fork
8550ee6a317 util, refactor: Add ChildFail helper for post-fork child errors
17eab90b526 test: Fix typo in listen_tests.cpp
ce865a9ba86 refactor: Directly use value in CustomBuildField
3f221b5bfd7 Merge bitcoin-core/libmultiprocess#274: Add nonunix platform support
1b0f6056062 doc: Remove trailing whitespace
d8f8ca3119f ipc: Wrap mpgen main() in try-catch to print errors
fbe5a14ad46 ci: Check out bitcoin/bitcoin PR #35084 instead of master
39d3690d83d types: Replace SFINAE with requires clauses to avoid MSVC C2039 error
ba68520203c proxy, refactor: Fix C4305 truncation warning in Accessor on MSVC
1d81d47811e util, refactor: Fix PtrOrValue constructor for move-only types on MSVC
b883fe1e527 proxy: Fix shutdownWrite() exception handling on macOS with dynamic libraries
0012411ccc6 proxy: Call shutdownWrite() in Connection destructor
38312ad1912 proxy, refactor: Change ConnectStream and ServeStream to accept stream objects
e96d5d742ab proxy, refactor: Replace EventLoop wakeup fd integers with KJ stream objects
db4f9a3d739 cmake: Bump minimum required Cap'n Proto version to 0.9
652934fb793 util, refactor: Add SocketPair() and use it in SpawnProcess
1c6ef7a26c0 util, refactor: Do not fork() and exec() separately
1389cf3132f util, refactor: Add SpawnConnectInfo type alias and use it
c7ca1f00b62 util, refactor: Add SocketId type alias and use it
be46a35203c util, refactor: Add ProcessId type alias and use it
91a78db7808 doc: Bump version 13 > 14
fa2c56ec27f ci: Bump channel to nixos-26.05
git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 67cfd8a0f8985ca9c4d1df31df6a20bbc34ebf31
f4a6cf5b6c
doc: Multiprocess misc doc and comment updates92efd636b0
Merge commit 'f4a6cf5b6cda2ae1c5aad9930fac63c4d7384e9e' into subtree-base1dfc53f784
build: suppress -Wc++23-lambda-attributes in warn_interface
Lambda [[noreturn]] attributes before the parameter list are a C++23
extension intentionally used in C++20 builds (needed for compatibility
with -Wmissing-noreturn). Suppress the extension warning rather than
removing the attributes or working around them.
Uses the existing IF_CHECK_PASSED idiom so GCC, which silently ignores
unknown -Wno-* flags, is unaffected.
This change was written with Claude Sonnet 4.6.
c317641658
Merge branch 'pr/ipc' into pr/ipc-connect15c926cf32
Add `-ipcconnect` option to `bitcoin-wallet` to allow connecting to a bitcoin
node process over IPC. The `bitcoin-wallet` tool doesn't really do anything with its
connection to the node yet, but it could potentially run or serve RPCs that
require being online.
Example usage:
src/bitcoin-node -regtest -debug -ipcbind=unix
src/bitcoin-wallet -regtest -ipcconnect=unix info
37e143e39c
ryanofsky force-pushed on Oct 30, 2026
DrahtBot removed the label Needs rebase on Oct 30, 2026
PastaPastaPasta referenced this in commit 95c477c371 on Oct 31, 2026
DrahtBot added the label Needs rebase on Nov 1, 2026
DrahtBot
commented at 5:45 AM on November 1, 2026:
contributor
<!--cf906140f33d8803c4a75a2196329ecb-->
🐙 This pull request conflicts with the target branch and needs rebase.
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-11-10 20:54 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me