mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-03 17:54:19 +02:00
ipc: Expose an RPC interface over the -ipcbind socket
This allows `bitcoin-cli` to connect to the node via IPC instead TCP to execute RPC methods in an upcoming commit.
This commit is contained in:
@@ -14,6 +14,7 @@ target_capnp_sources(bitcoin_ipc ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
capnp/echo.capnp
|
||||
capnp/init.capnp
|
||||
capnp/mining.capnp
|
||||
capnp/rpc.capnp
|
||||
)
|
||||
|
||||
target_link_libraries(bitcoin_ipc
|
||||
|
||||
@@ -7,5 +7,6 @@
|
||||
|
||||
#include <ipc/capnp/echo.capnp.proxy-types.h>
|
||||
#include <ipc/capnp/mining.capnp.proxy-types.h>
|
||||
#include <ipc/capnp/rpc.capnp.proxy-types.h>
|
||||
|
||||
#endif // BITCOIN_IPC_CAPNP_INIT_TYPES_H
|
||||
|
||||
@@ -15,11 +15,13 @@ $Proxy.includeTypes("ipc/capnp/init-types.h");
|
||||
|
||||
using Echo = import "echo.capnp";
|
||||
using Mining = import "mining.capnp";
|
||||
using Rpc = import "rpc.capnp";
|
||||
|
||||
interface Init $Proxy.wrap("interfaces::Init") {
|
||||
construct @0 (threadMap: Proxy.ThreadMap) -> (threadMap :Proxy.ThreadMap);
|
||||
makeEcho @1 (context :Proxy.Context) -> (result :Echo.Echo);
|
||||
makeMining @3 (context :Proxy.Context) -> (result :Mining.Mining);
|
||||
makeRpc @4 (context :Proxy.Context) -> (result :Rpc.Rpc);
|
||||
|
||||
# DEPRECATED: no longer supported; server returns an error.
|
||||
makeMiningOld2 @2 () -> ();
|
||||
|
||||
12
src/ipc/capnp/rpc-types.h
Normal file
12
src/ipc/capnp/rpc-types.h
Normal file
@@ -0,0 +1,12 @@
|
||||
// Copyright (c) 2025 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_IPC_CAPNP_RPC_TYPES_H
|
||||
#define BITCOIN_IPC_CAPNP_RPC_TYPES_H
|
||||
|
||||
#include <ipc/capnp/common.capnp.proxy-types.h>
|
||||
#include <ipc/capnp/common-types.h>
|
||||
#include <ipc/capnp/rpc.capnp.proxy.h>
|
||||
|
||||
#endif // BITCOIN_IPC_CAPNP_RPC_TYPES_H
|
||||
17
src/ipc/capnp/rpc.capnp
Normal file
17
src/ipc/capnp/rpc.capnp
Normal file
@@ -0,0 +1,17 @@
|
||||
# Copyright (c) 2025 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@0x9c3505dc45e146ac;
|
||||
|
||||
using Cxx = import "/capnp/c++.capnp";
|
||||
$Cxx.namespace("ipc::capnp::messages");
|
||||
|
||||
using Common = import "common.capnp";
|
||||
using Proxy = import "/mp/proxy.capnp";
|
||||
$Proxy.include("interfaces/rpc.h");
|
||||
$Proxy.includeTypes("ipc/capnp/rpc-types.h");
|
||||
|
||||
interface Rpc $Proxy.wrap("interfaces::Rpc") {
|
||||
executeRpc @0 (context :Proxy.Context, request :Text, uri :Text, user :Text) -> (result :Text);
|
||||
}
|
||||
Reference in New Issue
Block a user