Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions builds/gnu/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ src_libbitcoin_server_la_SOURCES = \
${srcdir}/../../src/settings.cpp \
${srcdir}/../../src/parsers/admin_query.cpp \
${srcdir}/../../src/parsers/admin_target.cpp \
${srcdir}/../../src/parsers/bitcoind_script.cpp \
${srcdir}/../../src/parsers/bitcoind_target.cpp \
${srcdir}/../../src/parsers/btcd_filter.cpp \
${srcdir}/../../src/parsers/electrum_version.cpp \
Expand Down Expand Up @@ -145,6 +146,7 @@ include_bitcoin_server_parsersdir = \
include_bitcoin_server_parsers_HEADERS = \
${srcdir}/../../include/bitcoin/server/parsers/admin_query.hpp \
${srcdir}/../../include/bitcoin/server/parsers/admin_target.hpp \
${srcdir}/../../include/bitcoin/server/parsers/bitcoind_script.hpp \
${srcdir}/../../include/bitcoin/server/parsers/bitcoind_target.hpp \
${srcdir}/../../include/bitcoin/server/parsers/btcd_filter.hpp \
${srcdir}/../../include/bitcoin/server/parsers/electrum_version.hpp \
Expand Down Expand Up @@ -210,6 +212,7 @@ test_libbitcoin_server_test_SOURCES = \
${srcdir}/../../test/main.cpp \
${srcdir}/../../test/settings.cpp \
${srcdir}/../../test/test.cpp \
${srcdir}/../../test/interfaces/bitcoind_rpc.cpp \
${srcdir}/../../test/interfaces/btcd.cpp \
${srcdir}/../../test/mocks/blocks.cpp \
${srcdir}/../../test/parsers/admin_query.cpp \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@
<ItemGroup>
<ClCompile Include="..\..\..\..\test\configuration.cpp" />
<ClCompile Include="..\..\..\..\test\error.cpp" />
<ClCompile Include="..\..\..\..\test\interfaces\bitcoind_rpc.cpp">
<ObjectFileName>$(IntDir)test_interfaces_bitcoind_rpc.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\..\..\test\interfaces\btcd.cpp" />
<ClCompile Include="..\..\..\..\test\main.cpp" />
<ClCompile Include="..\..\..\..\test\mocks\blocks.cpp" />
Expand All @@ -135,7 +138,9 @@
<ClCompile Include="..\..\..\..\test\protocols\admin\admin_setup_fixture.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_json.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_rest.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_rpc.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_rpc.cpp">
<ObjectFileName>$(IntDir)test_protocols_bitcoind_bitcoind_rpc.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_setup_fixture.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\btcd\btcd_rpc.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\btcd\btcd_setup_fixture.cpp" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
<ClCompile Include="..\..\..\..\test\error.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\test\interfaces\bitcoind_rpc.cpp">
<Filter>src\interfaces</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\test\interfaces\btcd.cpp">
<Filter>src\interfaces</Filter>
</ClCompile>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
<ClCompile Include="..\..\..\..\src\parser.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\admin_query.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\admin_target.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\bitcoind_script.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\bitcoind_target.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\btcd_filter.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\electrum_version.cpp" />
Expand Down Expand Up @@ -188,6 +189,7 @@
<ClInclude Include="..\..\..\..\include\bitcoin\server\parser.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\admin_query.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\admin_target.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\bitcoind_script.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\bitcoind_target.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\btcd_filter.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\electrum_version.hpp" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@
<ClCompile Include="..\..\..\..\src\parsers\admin_target.cpp">
<Filter>src\parsers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\parsers\bitcoind_script.cpp">
<Filter>src\parsers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\parsers\bitcoind_target.cpp">
<Filter>src\parsers</Filter>
</ClCompile>
Expand Down Expand Up @@ -266,6 +269,9 @@
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\admin_target.hpp">
<Filter>include\bitcoin\server\parsers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\bitcoind_script.hpp">
<Filter>include\bitcoin\server\parsers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\bitcoind_target.hpp">
<Filter>include\bitcoin\server\parsers</Filter>
</ClInclude>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@
<ItemGroup>
<ClCompile Include="..\..\..\..\test\configuration.cpp" />
<ClCompile Include="..\..\..\..\test\error.cpp" />
<ClCompile Include="..\..\..\..\test\interfaces\bitcoind_rpc.cpp">
<ObjectFileName>$(IntDir)test_interfaces_bitcoind_rpc.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\..\..\test\interfaces\btcd.cpp" />
<ClCompile Include="..\..\..\..\test\main.cpp" />
<ClCompile Include="..\..\..\..\test\mocks\blocks.cpp" />
Expand All @@ -135,7 +138,9 @@
<ClCompile Include="..\..\..\..\test\protocols\admin\admin_setup_fixture.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_json.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_rest.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_rpc.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_rpc.cpp">
<ObjectFileName>$(IntDir)test_protocols_bitcoind_bitcoind_rpc.obj</ObjectFileName>
</ClCompile>
<ClCompile Include="..\..\..\..\test\protocols\bitcoind\bitcoind_setup_fixture.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\btcd\btcd_rpc.cpp" />
<ClCompile Include="..\..\..\..\test\protocols\btcd\btcd_setup_fixture.cpp" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
<ClCompile Include="..\..\..\..\test\error.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\test\interfaces\bitcoind_rpc.cpp">
<Filter>src\interfaces</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\test\interfaces\btcd.cpp">
<Filter>src\interfaces</Filter>
</ClCompile>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
<ClCompile Include="..\..\..\..\src\parser.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\admin_query.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\admin_target.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\bitcoind_script.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\bitcoind_target.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\btcd_filter.cpp" />
<ClCompile Include="..\..\..\..\src\parsers\electrum_version.cpp" />
Expand Down Expand Up @@ -188,6 +189,7 @@
<ClInclude Include="..\..\..\..\include\bitcoin\server\parser.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\admin_query.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\admin_target.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\bitcoind_script.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\bitcoind_target.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\btcd_filter.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\electrum_version.hpp" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@
<ClCompile Include="..\..\..\..\src\parsers\admin_target.cpp">
<Filter>src\parsers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\parsers\bitcoind_script.cpp">
<Filter>src\parsers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\parsers\bitcoind_target.cpp">
<Filter>src\parsers</Filter>
</ClCompile>
Expand Down Expand Up @@ -266,6 +269,9 @@
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\admin_target.hpp">
<Filter>include\bitcoin\server\parsers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\bitcoind_script.hpp">
<Filter>include\bitcoin\server\parsers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\parsers\bitcoind_target.hpp">
<Filter>include\bitcoin\server\parsers</Filter>
</ClInclude>
Expand Down
1 change: 1 addition & 0 deletions include/bitcoin/server.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
#include <bitcoin/server/interfaces/types.hpp>
#include <bitcoin/server/parsers/admin_query.hpp>
#include <bitcoin/server/parsers/admin_target.hpp>
#include <bitcoin/server/parsers/bitcoind_script.hpp>
#include <bitcoin/server/parsers/bitcoind_target.hpp>
#include <bitcoin/server/parsers/btcd_filter.hpp>
#include <bitcoin/server/parsers/electrum_version.hpp>
Expand Down
57 changes: 32 additions & 25 deletions include/bitcoin/server/interfaces/bitcoind_rpc.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,29 +38,29 @@ struct bitcoind_rpc_methods
method<"getblockfilter", string_t, optional<"basic"_t>>{ "blockhash", "filtertype" },
method<"getblockhash", number_t>{ "height" },
method<"getblockheader", string_t, optional<true>>{ "blockhash", "verbose" },
method<"getblockstats", value_t, optional<empty::array>>{ "hash_or_height", "stats" },
method<"getchaintxstats", optional<-1.0>, optional<""_t>>{ "nblocks", "blockhash" },
method<"getchainwork">{},
method<"getblockstats", value_t, optional<empty::array>>{ unimplemented, "hash_or_height", "stats" },
method<"getchaintxstats", optional<-1.0>, optional<""_t>>{ unimplemented, "nblocks", "blockhash" },
method<"getchainwork">{ unimplemented },
method<"gettxout", string_t, number_t, optional<true>>{ "txid", "n", "include_mempool" },
method<"gettxoutsetinfo">{},
method<"pruneblockchain", number_t>{ "height" },
method<"savemempool">{},
method<"scantxoutset", string_t, optional<empty::array>>{ "action", "scanobjects" },
method<"verifychain", optional<4.0>, optional<288.0>>{ "checklevel", "nblocks" },
method<"verifytxoutset", string_t>{ "input_verify_flag" },
method<"gettxoutsetinfo">{ unimplemented },
method<"pruneblockchain", number_t>{ unimplemented, "height" },
method<"savemempool">{ unimplemented },
method<"scantxoutset", string_t, optional<empty::array>>{ unimplemented, "action", "scanobjects" },
method<"verifychain", optional<4.0>, optional<288.0>>{ unimplemented, "checklevel", "nblocks" },
method<"verifytxoutset", string_t>{ unimplemented, "input_verify_flag" },

/////// Control methods.
////method<"getmemoryinfo", optional<"stats"_t>>{ "mode" },
////method<"getrpcinfo">{},
////method<"help", optional<""_t>>{ "command" },
method<"help", optional<""_t>>{ "command" },
////method<"logging", optional<"*"_t>>{ "include" },
////method<"stop">{},
////method<"uptime">{},

/////// Mining methods.
////method<"getblocktemplate", optional<empty::object>>{ "template_request" },
////method<"getmininginfo">{},
////method<"getnetworkhashps", optional<120_u32>, optional<-1_i32>>{ "nblocks", "height" },
method<"getnetworkhashps", optional<120_u32>, optional<-1_i32>>{ "nblocks", "height" },
////method<"prioritisetransaction", string_t, number_t, number_t>{ "txid", "dummy", "priority_delta" },
////method<"submitblock", string_t, optional<""_t>>{ "block", "parameters" },

Expand All @@ -73,8 +73,14 @@ struct bitcoind_rpc_methods
method<"getnetworkinfo">{},

/// Rawtransactions methods (implemented).
method<"createrawtransaction", array_t, object_t, optional<0_u32>, optional<false>>{ "inputs", "outputs", "locktime", "replaceable" },
method<"decoderawtransaction", string_t>{ "hexstring" },
method<"getrawtransaction", string_t, optional<0.0>, optional<""_t>>{ "txid", "verbosity", "blockhash" },
method<"sendrawtransaction", string_t, optional<0.0>>{ "hexstring", "maxfeerate" }
method<"sendrawtransaction", string_t, optional<0.0>>{ "hexstring", "maxfeerate" },

/// Util methods (implemented).
method<"decodescript", string_t>{ "hex" },
method<"validateaddress", string_t>{ "address" }
////method<"getpeerinfo">{},
////method<"listbanned">{},
////method<"ping">{},
Expand All @@ -83,8 +89,6 @@ struct bitcoind_rpc_methods

/////// Rawtransactions methods.
////method<"combinerawtransaction", array_t>{ "txs" },
////method<"createrawtransaction", array_t, object_t, optional<0_u32>, optional<false>>{ "inputs", "outputs", "locktime", "replaceable" },
////method<"decoderawtransaction", string_t>{ "hexstring" },
////method<"fundrawtransaction", string_t, optional<empty::object>>{ "rawtx", "options" },
////method<"getrawtransaction", string_t, optional<0_u32>, optional<""_t>>{ "txid", "verbose", "blockhash" },
////method<"sendrawtransaction", string_t, optional<0_u32>>{ "hexstring", "maxfeerate" },
Expand All @@ -95,10 +99,8 @@ struct bitcoind_rpc_methods
/////// Util methods (node-related).
////method<"createmultisig", number_t, array_t>{ "nrequired", "keys" },
////method<"decodepsbt", string_t>{ "psbt" },
////method<"decodescript", string_t>{ "hex" },
////method<"estimaterawfee", number_t, optional<"unset"_t>>{ "conf_target", "estimate_mode" },
////method<"getdescriptorinfo", string_t>{ "descriptor" },
////method<"validateaddress", string_t>{ "address" },

/////// Wallet methods (unsupported).
////method<"abandontransaction", string_t>{ "txid" },
Expand Down Expand Up @@ -153,6 +155,11 @@ struct bitcoind_rpc_methods
template <typename... Args>
using subscriber = network::unsubscriber<Args...>;

/// Method names as reported by help.
static constexpr auto name_data = method_names<methods>();
static constexpr std::string_view names{ name_data.data(),
name_data.size() };

template <size_t Index>
using at = method_at<methods, Index>;

Expand All @@ -177,31 +184,33 @@ struct bitcoind_rpc_methods

////using get_memory_info = at<17>;
////using get_rpc_info = at<18>;
////using help = at<19>;
////using logging = at<20>;
////using stop = at<21>;
////using uptime = at<22>;
////using get_block_template = at<23>;
////using get_mining_info = at<24>;
////using get_network_hash_ps = at<25>;
////using prioritise_transaction = at<26>;
////using submit_block = at<27>;
////using add_node = at<28>;
////using clear_banned = at<29>;
////using disconnect_node = at<30>;
////using get_added_node_info = at<31>;
////using get_connection_count = at<32>;
using get_network_info = at<17>;
using get_raw_transaction = at<18>;
using send_raw_transaction = at<19>;
using help = at<17>;
using get_network_hash_ps = at<18>;
using get_network_info = at<19>;
using create_raw_transaction = at<20>;
using decode_raw_transaction = at<21>;
using get_raw_transaction = at<22>;
using send_raw_transaction = at<23>;
using decode_script = at<24>;
using validate_address = at<25>;
////using get_peer_info = at<34>;
////using list_banned = at<35>;
////using ping = at<36>;
////using set_ban = at<37>;
////using set_network_active = at<38>;
////using combine_raw_transaction = at<39>;
////using create_raw_transaction = at<40>;
////using decode_raw_transaction = at<41>;
////using fund_raw_transaction = at<42>;
////using get_raw_transaction = at<43>;
////using send_raw_transaction = at<44>;
Expand All @@ -210,10 +219,8 @@ struct bitcoind_rpc_methods
////using test_raw_transaction = at<47>;
////using create_multisig = at<48>;
////using decode_psbt = at<49>;
////using decode_script = at<50>;
////using estimate_raw_fee = at<51>;
////using get_descriptor_info = at<52>;
////using validate_address = at<53>;
////using abandon_transaction = at<54>;
////using add_multisig_address = at<55>;
////using backup_wallet = at<56>;
Expand Down
59 changes: 22 additions & 37 deletions include/bitcoin/server/interfaces/btcd.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ struct btcd_methods
{
/// Administrative.
method<"authenticate", string_t, string_t>{ "username", "password" },
method<"help", optional<""_t>>{ "command" },
method<"session">{},
method<"stop">{ unimplemented },

Expand All @@ -43,13 +42,6 @@ struct btcd_methods
method<"getdifficulty">{},
method<"getinfo">{},
method<"getnettotals">{},
method<"getnetworkhashps", optional<120_u32>, optional<-1_i32>>{ "blocks", "height" },

/// Tools.
method<"createrawtransaction", array_t, object_t, optional<0_u32>>{ "inputs", "outputs", "locktime" },
method<"decoderawtransaction", string_t>{ "hexstring" },
method<"decodescript", string_t>{ "hex" },
method<"validateaddress", string_t>{ "address" },

/// Subscription.
method<"notifyblocks">{},
Expand Down Expand Up @@ -82,35 +74,28 @@ struct btcd_methods

// Derive this from above in c++26 using reflection.
using authenticate = at<0>;
using help = at<1>;
using session = at<2>;
using stop = at<3>;

using get_best_block = at<4>;
using get_current_net = at<5>;
using get_difficulty = at<6>;
using get_info = at<7>;
using get_net_totals = at<8>;
using get_network_hash_ps = at<9>;

using create_raw_transaction = at<10>;
using decode_raw_transaction = at<11>;
using decode_script = at<12>;
using validate_address = at<13>;

using notify_blocks = at<14>;
using stop_notify_blocks = at<15>;
using notify_new_transactions = at<16>;
using stop_notify_new_transactions = at<17>;

using load_tx_filter = at<18>;
using rescan_blocks = at<19>;

using notify_received = at<20>;
using stop_notify_received = at<21>;
using notify_spent = at<22>;
using stop_notify_spent = at<23>;
using rescan = at<24>;
using session = at<1>;
using stop = at<2>;

using get_best_block = at<3>;
using get_current_net = at<4>;
using get_difficulty = at<5>;
using get_info = at<6>;
using get_net_totals = at<7>;

using notify_blocks = at<8>;
using stop_notify_blocks = at<9>;
using notify_new_transactions = at<10>;
using stop_notify_new_transactions = at<11>;

using load_tx_filter = at<12>;
using rescan_blocks = at<13>;

using notify_received = at<14>;
using stop_notify_received = at<15>;
using notify_spent = at<16>;
using stop_notify_spent = at<17>;
using rescan = at<18>;
};

} // namespace interface
Expand Down
Loading
Loading