Surface contract of bitcoin-rs against Bitcoin Core 31.x.
- Supported - differentially verified against the pinned Bitcoin Core reference; requires
reference.differential_harnessincrates/rpc/core-compat.toml. - Deviation - shipped with a recorded difference from Core; notes cite the source file.
- Implemented (unverified) - shipped; not compared against the pinned reference.
- Extension - bitcoin-rs-specific surface with no Core counterpart.
- Disabled - reserved for parameter-level refusal with a stable error.
- Unimplemented - Core surface this node does not expose: JSON-RPC answers
method not found, REST answers 404.
since is the bitcoin-rs version whose surface a row describes; pending marks a row whose implementation lands in a later change. Rows naming a cargo feature exist only when that feature is compiled.
Unimplemented-set derivation: audited against the Bitcoin Core v31.0 source command tables (src/rpc/.cpp, src/wallet/rpc/.cpp, src/rest.cpp StartREST, src/zmq/zmqpublishnotifier.cpp) - the same registrations Core's help output prints. Hidden test/administration commands are intentionally absent.
| surface | since | notes |
|---|---|---|
getblockchaininfo |
0.4.0 | Unavailable optional fields are omitted. Pruning mode/target and signet challenge are not reported (automatic_pruning, prune_target_size, signet_challenge); pruneheight reflects the backing prune service (crates/rpc/src/handlers/chain.rs). |
getblock |
0.4.0 | Verbosity 2 fees and verbosity 3 prevouts use bounded certified undo. Older stale bodies whose receipt is no longer retained omit undo fields; transient history and explicit query budgets may refuse reads. Raw/txid shapes remain; stale block headers omit competing-branch successor links. See docs/contracts/external-api.md#retained-block-inputs. |
verifychain |
0.4.0 | Level 0 reads and decodes every requested non-genesis body and confirms it is the block the header chain names; level 1 also checks proof of work and the consensus-owned context-free body rules (stripped size, coinbase/transaction structure, money ranges, legacy sigops); level 2 also decodes the undo record; levels 3 and 4 run the level-2 checks and do not replay disconnect or reconnect. The answer is false for any damaged block or undo record and for windows this node does not hold (pruned, snapshot-only, unreadable or missing bodies) or skips on process shutdown mid-walk, matching Core's boolean failure for missing history rather than an incomplete-verification error for that case. Cancellation and recovery closure are -1 errors, not false: a triggered request latch answers -1 Block verification interrupted and a chainstate closed for recovery answers -1 Chainstate is unavailable for verification, including a closure that lands mid-walk or over an empty window. One owner serves RPC and startup; startup checks the last six blocks one level stronger, including witness commitments (crates/chainstate/src/verify.rs). See docs/contracts/external-api.md#block-database-verification. |
syncwithvalidationinterfacequeue |
0.14.0 | Barrier null: Core waits for its validation-interface queue; this node delivers the equivalent chain-transition effects (mempool update, block log, ZMQ publication, mining signal) synchronously inside the commit (crates/node/src/chain_effects.rs), so the call takes the chain-transition mutex and answers once any in-flight transition's followers finish. It is a blocking request under bounded admission; the wait honors the cancellation latch and answers -1 when interrupted. Not fully synchronous: ZMQ effects hand off to the zeromq context's own I/O thread (zmq.publish_sequence enqueues with DONTWAIT), so delivery to subscribers is queued, not awaited. Core's queue also carries mempool TransactionAddedToMempool events, which this node has no queued equivalent for. The background derived-index reconcile loop is not awaited (index reads have their own catch-up fallback). |
scantxoutset |
0.4.0 | Fixed addr/raw and public pkh/wpkh/sh(wpkh)/key-only tr descriptors, including wildcard/multipath expansion. Ranges are inclusive, defaulting to [0,1000] per wildcard path; fixed descriptors validate and ignore ranges. At most 1024 aggregate script expansions before deduplication; private keys, secret-dependent derivation and other forms remain unsupported. Cancellable traversal holds chain-transition exclusion; ancestry and response projection use the retained tip after release. Input, traversal, result and 60-second limits apply (docs/contracts/external-api.md, API-35). |
sendrawtransaction |
0.4.0 | Core 31.1 replacement, modified-fee, cluster and TRUC cases are process-verified in overhaul_process_harness::policy_cases. Exact optimal graph ordering does not emulate Core transient SFL work-budget states. Capacity accounting and generic consensus error details retain the differences in docs/policies/mempool-policy.md; scoped package submission is exposed separately by submitpackage. |
testmempoolaccept |
0.4.0 | Single preview shares committed admission verification. Core 31.1 package shape, dependency, fail-fast and replacement-disallowed cases are process-verified in overhaul_process_harness::policy_cases. Exact graph ordering, capacity behavior and generic error details retain the differences in docs/policies/mempool-policy.md. Scoped package submission is exposed separately by submitpackage. |
createrawtransaction |
0.4.0 | Accepts inputs, outputs, locktime and replaceable only. Version is fixed at 2 and replaceable defaults to false. Named version is rejected with -8; a fifth positional or args-prefix entry is rejected with -32602 after named binding. See docs/contracts/external-api.md#api-02-json-rpc-mechanics-and-the-wallet-free-surface. |
getmempoolinfo |
0.4.0 | Policy fields project the enforced MempoolPolicySnapshot: fullrbf is true and cluster bounds are enforced. optimal is always true for exact graph ordering rather than Core background SFL state. usage estimates local structures; maxmempool bounds virtual size rather than allocator usage. The rolling minimum fee follows Core eviction/trim bumps and post-block decay, measured against total virtual size. See docs/policies/mempool-policy.md. |
gettxspendingprevout |
0.11.0 | Mempool lookup and options follow Core 31.1 without txospenderindex. After named binding, missing outputs and excess positional arguments use local -32602 shape errors. Core uses -1 help for no arguments/excess arity but -3 for an outputs hole created by named options; explicit null matches Core -3. Name and collision errors retain Core precedence. See docs/contracts/external-api.md#api-32-gettxspendingprevout-mempool-snapshot. |
estimatesmartfee |
0.4.0 | See docs/contracts/external-api.md#api-26-estimatesmartfee-parameters-and-esplora-fee-estimates for conf_target and estimate_mode validation. The estimate comes from this node's mempool confirmation-history estimator with a 25-block horizon; estimate_mode is accepted and ignored (no ECONOMICAL/CONSERVATIVE split), and insufficient history returns an errors array (crates/rpc/src/handlers/util.rs). |
getrpcinfo |
0.4.0 | active_commands lists calls executing through Handler::dispatch (method and elapsed microseconds, oldest first, including this call); unknown or quota-refused methods never register. logpath reports the configured debug log path (crates/rpc/src/handlers/util.rs). |
getmemoryinfo |
0.4.0 | mode=mallocinfo is rejected with an invalid-parameter error instead of returning allocator XML (crates/rpc/src/handlers/util.rs). The figures are resident set size read from the OS, not Core's locked-pool allocator accounting. |
estimaterawfee |
0.4.0 | local_shape: the fee estimator does not expose Core decay/scale/pass/fail internals, so horizon objects carry feerate only and the no-estimate branch stays {} (crates/rpc/src/handlers/util.rs). All three horizons carry the same feerate where Core computes three independent estimates. |
validateaddress |
0.4.0 | local_shape (invalid branch): a malformed or wrong-network address is hand-built as Core's sparse {isvalid:false} object because corepc-types models the valid-only fields (address, scriptPubKey, isscript, iswitness) as required and cannot represent that wire shape; valid addresses round-trip the typed v31 contract (crates/rpc/src/handlers/util.rs). |
getpeerinfo |
0.4.0 | Pinned v31 shape; aggregate byte totals, negotiated transaction-relay preference, and received minimum_fee_filter are measured, while per-message byte breakdowns report empty maps and last_transaction/last_block/last_inv_sequence report Core's zero-value defaults; unmeasured telemetry (ping times, addr relay stats, starting_height, address_local, mapped_as) is null-omitted; id is the connection's stable process-unique node id, not an array position, serialized at its full unsigned 64-bit width where the pinned v31 type narrows it to u32; anonymous inbound sessions render their tor-inbound-N:0 connection handle as addr (crates/rpc/src/handlers/network.rs). |
ping |
0.4.0 | Answers immediately; Core schedules a P2P ping and reports the seen pong (crates/rpc/src/handlers/network.rs). |
addnode |
0.4.0 | Core's optional v2transport argument is advertised for named binding but carries no per-dial selection: an omitted or null value follows the node-wide v2_transport setting, an explicit value equal to it is accepted as a no-op confirmation (the dial's transport already matches the request), and a differing value is refused with -8 naming the conflict with this node's -v2transport setting rather than silently ignored — per-dial v1/v2 choice is not plumbed; manual dials follow the node-wide setting (v2 attempted with v1 fallback when enabled). |
disconnectnode |
0.4.0 | Targets handshake-complete sessions only; nodeid is the unsigned 64-bit getpeerinfo id, alone or with an empty address, and reaches anonymous inbound sessions; address alone also accepts the tor-inbound-N:0 handle; address with nodeid is accepted as a conjunction where Core rejects the pair; readiness and selection are atomic under the peer-table lock, so a same-address replacement is never disconnected in place of the named session (crates/rpc/src/handlers/network.rs). |
getmininginfo |
0.4.0 | Pinned v30 shape including bits/target and next-block facts. Unset currentblocktx, currentblockweight, and signet_challenge are omitted like Core. |
dumptxoutset |
0.14.0 | Writes an unmodified Core v2 snapshot of the applied tip's UTXO set. Only type latest is served: type is required to be "latest" as in Core 31.1, and rollback snapshots and the options object (rollback, in_memory) are not accepted. The encode holds chain-transition and stable-view exclusion for its whole duration, blocking block commits, and logs that time; it is cancellable through the request latch and node shutdown, answering -1 and publishing nothing. The output goes to a fsynced exclusive sibling temporary file and is renamed into place without replacement, then the directory is fsynced; an existing destination (including a named pipe), a destination under the assumeutxo recovery namespace, or a platform without atomic no-replace rename is refused. See API-33 in docs/contracts/external-api.md. |
getblockfilter |
0.14.0 | Optional basic BIP158 filters. Active-chain only; stale/pruned or missing history is unavailable. Disabled by default; enable --blockfilterindex on an unpruned node. See docs/contracts/indexing.md. |
getchainstates |
0.12.0 | Reports coherent active/historical lifecycle with transaction-based progress; omits Core cache/difficulty fields and unavailable progress. Returns -32603 instead of waiting when lifecycle work is busy; ordinary chain-transition reads may still wait. Historical role precedes active. See API-33, crates/node/src/snapshot.rs and crates/rpc/src/handlers/chain.rs. |
getdeploymentinfo |
0.12.0 | Reports actual native activation: CSV/Segwit use historical BIP9 on mainnet/testnet3; Taproot is height-based and testdummy is absent. Native regtest heights and historical script flags differ from Core 31.1; off-header-chain queries have a 2,000,000-ancestor budget. See docs/contracts/external-api.md#native-deployment-reporting. |
loadtxoutset |
0.12.0 | Imports bounded Core v2 files against compiled network pins through node-owned fenced activation; refuses a nonempty mempool or an invalid/off-best-chain base. Preserves fee prioritisation and queues bounded native orphan rechecks. Malformed input returns -22. See API-33 and the mempool owner docs/contracts/mempool-mutations.md#mpl-04-generation-validated-admission-and-chain-change-fencing. |
waitforblock |
0.13.0 | Durable active-tip waits. Timeout, cancellation, shutdown and recovery closure may return a durable in-progress reorg prefix. Arity errors retain Core -1 with concise usage rather than the full help body. Bounded admission returns -1 when full; wait responses close HTTP keep-alive. See docs/contracts/external-api.md#api-34-active-tip-waits. |
waitforblockheight |
0.13.0 | Durable active-tip waits. Timeout, cancellation, shutdown and recovery closure may return a durable in-progress reorg prefix. Arity errors retain Core -1 with concise usage rather than the full help body. Bounded admission returns -1 when full; wait responses close HTTP keep-alive. See docs/contracts/external-api.md#api-34-active-tip-waits. |
waitfornewblock |
0.13.0 | Durable active-tip waits. Timeout, cancellation, shutdown and recovery closure may return a durable in-progress reorg prefix. Arity errors retain Core -1 with concise usage rather than the full help body. Bounded admission returns -1 when full; wait responses close HTTP keep-alive. See docs/contracts/external-api.md#api-34-active-tip-waits. |
stop |
0.14.0 | Answers this node's own status string "bitcoin-rs stopping" and trips the node's single graceful-shutdown latch, the same chainstate latch SIGTERM/SIGINT use. The latch is tripped before the reply is written and delivery is best-effort: the detached rpc connection thread normally writes the reply as teardown lets it finish, but a guaranteed pre-teardown write is not part of the API (docs/contracts/external-api.md API-36). The status string deliberately differs from Core's ("Bitcoin Core stopping", src/rpc/server.cpp): the functional framework discards the stop reply (test_node.py), so no test ever required Core-string equality. Core's hidden numeric wait argument is not honored: any argument is refused with the local parameter-shape error (crates/rpc/src/handlers/util.rs). |
decodescript |
0.12.0 | Wallet-free Core script projection and wrapping. Invalid-curve keys inside complex Miniscript retain an address descriptor fallback instead of Core permissive wsh inference. Missing/extra arguments return compact usage rather than the full Core help body; direct calls enforce the existing 16 MiB RPC hex-input budget. Scoped Core process evidence covers script classes, descriptors, parameters, networks, and shared consumers (crates/rpc/src/handlers/util.rs and crates/rpc/src/tx_render.rs). |
submitpackage |
0.14.0 | Scoped singleton and 1-parent-1-child CPFP submission through the existing atomic gateway, with Core individual-first partial acceptance and resident fee exclusion. Wider packages, replacement and capacity eviction are explicitly unsupported. Generic rejection details retain native differences; see docs/policies/mempool-policy.md. |
| surface | since | notes |
|---|---|---|
getdifficulty |
0.4.0 | |
getchaintips |
0.4.0 | |
getchaintxstats |
0.4.0 | |
getblockcount |
0.4.0 | |
getblockhash |
0.4.0 | |
getbestblockhash |
0.4.0 | |
getblockheader |
0.4.0 | |
getblockstats |
0.4.0 | |
gettxoutsetinfo |
0.4.0 | |
getindexinfo |
0.4.0 | |
pruneblockchain |
0.4.0 | |
invalidateblock |
0.4.0 | |
getrawtransaction |
0.4.0 | |
gettxout |
0.4.0 | |
gettxoutproof |
0.4.0 | |
verifytxoutproof |
0.4.0 | |
decoderawtransaction |
0.4.0 | |
combinepsbt |
0.4.0 | |
finalizepsbt |
0.4.0 | |
getmempoolentry |
0.4.0 | |
getrawmempool |
0.4.0 | |
getmempoolancestors |
0.4.0 | |
getmempooldescendants |
0.4.0 | |
uptime |
0.4.0 | |
getzmqnotifications |
0.4.0 | Requires the zmq feature and --enablezmq* startup flags. |
getdescriptorinfo |
0.4.0 | |
deriveaddresses |
0.4.0 | |
getnetworkinfo |
0.4.0 | |
getconnectioncount |
0.4.0 | |
getnettotals |
0.4.0 | |
getaddednodeinfo |
0.4.0 | |
listbanned |
0.4.0 | Pinned v22 shape; the pre-v22 ban_reason field is replaced by ban_duration and time_remaining. |
setban |
0.4.0 | |
clearbanned |
0.4.0 | |
setnetworkactive |
0.4.0 | |
getnodeaddresses |
0.4.0 | |
getblocktemplate |
0.4.0 | BIP22/BIP23 template: client must advertise segwit (and signet on signet); signet_challenge on signet, capabilities proposal+longpoll, coinbaseaux.flags empty hex. |
submitblock |
0.4.0 | Decode failures are -22 (Block decode failed). Extra bytes after a complete block and BIP22's dummy second argument are ignored. A header already admitted by submitheader still accepts the body; a previously connected body (scripts-valid), including after a later reorg, is duplicate. |
submitheader |
0.4.0 | See API-13 in docs/contracts/external-api.md for submitheader behavior. |
prioritisetransaction |
0.4.0 | Dummy (params[1]) must be 0 or null; fee_delta is params[2]. Non-zero dummy is Core -8. Pooled dust outputs are -8 except on regtest. See API-23 in docs/contracts/external-api.md for dummy and fee_delta compatibility. |
generatetoaddress |
0.4.0 | Assembles, solves, and submits n blocks paying the given address through the mining coordinator; positional and named (nblocks, address, maxtries) parameter forms are both accepted. Invalid-output behavior is defined in docs/contracts/external-api.md#api-29-generate-invalid-output-text. |
generateblock |
0.4.0 | Assembles and solves one block paying an address or descriptor from the listed mempool txids or raw txs in that order. See the canonical contract: docs/contracts/external-api.md#api-31-generateblock-multipath-ranged-and-expand-errors. |
getnetworkhashps |
0.4.0 | Estimated hashes/s over a caller-chosen lookback ending at a caller-chosen height; default lookback 120, height the applied tip. |
getprioritisedtransactions |
0.4.0 | Projects the mempool's signed fee-delta overlay, including txids not currently pooled. See docs/contracts/external-api.md#api-28-getprioritisedtransactions-modified_fee-is-satoshis for modified_fee units. |
| surface | since | notes |
|---|---|---|
getblocktweaks |
0.14.0 | Experimental keyless BIP352 extension; requires --silent-payments. One applied-chain height or hash per call, certified retained inputs, final publication check, one in-flight projection, and shared block-render permits. Source read budgets can refuse valid blocks; use another complete source for those blocks. No draft HTTP/gRPC compatibility or wallet discovery claim. See docs/silent-payments.md. |
registerpoolaccount |
0.14.0 | Authenticated management-only payout-script registration: [account_u64, script_hex]. Changes future batches only and enables public credit-routing login '[.rig]'; miner password is unused. Knowing a login permits contributing credit, not withdrawals or payout-script changes. No mining credential authentication or wallet custody. Requires enabled pool service. |
preparepayoutbatch |
0.14.0 | Management-only: [idempotency_key_hex32, min_payout_sat, max_outputs]. Caller minimum must meet configured payout minimum; output count must not exceed configured ceiling. Durably reserves eligible balances in immutable batch; returns batch status and canonical BRPR request hex, or null when none qualify. Never signs or broadcasts. |
getpayoutrequest |
0.14.0 | Management-only: [batch_id_hex32]. Exports ledger BRPR v1 hex for external signing; terminal batches refuse export. |
recordpayoutreceipt |
0.14.0 | Management-only: [BRPT_hex]. Strict ledger BRPT v1 decoder and record_signed verify recomputed txid, exact payout outputs, allowed change and replacement conflicts. Records receipt only, never broadcasts; no signature-validity or chain-acceptance claim. |
getpayoutbatch |
0.14.0 | Management-only: [batch_id_hex32]. Returns real ledger batch state, recorded transaction ids and observed status; null for unknown batch. No signing, broadcasting or chain-success inference. |
cancelpayoutbatch |
0.14.0 | Management-only: [batch_id_hex32, never_handed_to_signer or signer_revoked]. Operator attests cancellation basis; ledger refuses cancellation after signing. No external signer revocation is performed. |
getpoolinfo |
0.14.0 | Management-only: []. PPLNS configuration, durable share count and last twenty audit records read in one bounded snapshot. Inspect individual batches with getpayoutbatch; no unbounded batch enumeration. Does not verify the full audit chain. Disabled pool returns MethodDisabled, not synthetic status. |
getpoolrounds |
0.14.0 | Management-only: [first_round_id, count=100]. Reads monotonic ledger rounds, up to 1000 per call. States reflect hash-keyed chain reconciliation, not submission acknowledgements. |
getpoolbalances |
0.14.0 | Management-only: [account_u64]. Reads one account's available, reserved, paid and deficit satoshis plus payout script. No wallet balance or custody. |
compressrawtransaction |
0.14.0 | Optional BIP337 compressed-transaction encoding; disabled unless the node starts with --compressed-transactions, which answers -32603 (crates/rpc/src/compressed_tx.rs). |
decompressrawtransaction |
0.14.0 | Optional BIP337 compressed-transaction decoding; disabled unless the node starts with --compressed-transactions, which answers -32603 (crates/rpc/src/compressed_tx.rs). |
getcapabilities |
0.4.0 | bitcoin-rs reporting of compiled/enabled concrete service capabilities and index lifecycle state (crates/rpc/src/handlers/chain.rs, crates/index/src/capabilities.rs). |
| surface | since | notes |
|---|---|---|
getblockfrompeer |
n/a | No on-demand block fetch from peers. |
getdescriptoractivity |
n/a | No wallet/scan index to serve it. |
getmempoolcluster |
n/a | Cluster mempool tracking not implemented. |
importmempool |
n/a | Mempool import not implemented. |
preciousblock |
n/a | No manual block-preference surface. |
reconsiderblock |
n/a | No manual reorg-control surface. |
savemempool |
n/a | Mempool dump/reload persistence not implemented. |
scanblocks |
n/a | Scanning is not implemented; optional basic filters are available through getblockfilter. |
help |
n/a | No per-method help text renderer. |
logging |
n/a | Log-category controls not exposed over RPC. |
getaddrmaninfo |
n/a | Addrman table stats not exposed. |
abortprivatebroadcast |
n/a | Private-broadcast store not implemented. |
analyzepsbt |
n/a | PSBT analysis not implemented (combine/finalize only). |
combinerawtransaction |
n/a | Raw-transaction combination not implemented. |
converttopsbt |
n/a | PSBT creation not implemented. |
createpsbt |
n/a | PSBT creation not implemented. |
decodepsbt |
n/a | PSBT analysis not implemented (combine/finalize only). |
descriptorprocesspsbt |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
fundrawtransaction |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getprivatebroadcastinfo |
n/a | Private-broadcast store not implemented. |
joinpsbts |
n/a | PSBT merge not implemented (combine/finalize only). |
signrawtransactionwithkey |
n/a | Signing requires key material this process never holds. |
utxoupdatepsbt |
n/a | PSBT update from the UTXO set not implemented. |
enumeratesigners |
n/a | No external signer support. |
createmultisig |
n/a | No key material (policy). |
signmessagewithprivkey |
n/a | Signing requires key material this process never holds. |
verifymessage |
n/a | Message-signature verification not implemented. |
abandontransaction |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
abortrescan |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
backupwallet |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
bumpfee |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
createwallet |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
createwalletdescriptor |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
encryptwallet |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getaddressesbylabel |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getaddressinfo |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getbalance |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getbalances |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
gethdkeys |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getnewaddress |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getrawchangeaddress |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getreceivedbyaddress |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getreceivedbylabel |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
gettransaction |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
getwalletinfo |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
importdescriptors |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
importprunedfunds |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
keypoolrefill |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listaddressgroupings |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listdescriptors |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listlabels |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listlockunspent |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listreceivedbyaddress |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listreceivedbylabel |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listsinceblock |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listtransactions |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listunspent |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listwalletdir |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
listwallets |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
loadwallet |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
lockunspent |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
migratewallet |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
psbtbumpfee |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
removeprunedfunds |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
rescanblockchain |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
restorewallet |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
send |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
sendall |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
sendmany |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
sendtoaddress |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
setlabel |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
setwalletflag |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
signmessage |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
signrawtransactionwithwallet |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
simulaterawtransaction |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
unloadwallet |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
walletcreatefundedpsbt |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
walletdisplayaddress |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
walletlock |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
walletpassphrase |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
walletpassphrasechange |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
walletprocesspsbt |
n/a | No wallet: this process holds no private-key material (crates/rpc/src/lib.rs). |
| surface | since | notes |
|---|---|---|
/rest/block/ |
0.4.0 | Full transaction projection omits undo fees and prevouts; the shared undo read capability is used by spenttxouts and getblock verbosity 2/3. |
/rest/headers/ |
0.4.0 | Unknown but well-formed block hashes answer an empty 200 rather than 404; query parameters other than count are ignored (crates/rpc/src/rest.rs). |
/rest/getutxos |
0.4.0 | GET and bounded canonical binary/hex POST share UTXO and mempool lookup. Intentionally corrects Core 31.1 POST string-length-prefix decoding; rejects mixed inputs, JSON bodies and trailing data. POST limit: 2048 bytes, 15 outpoints. |
/rest/deploymentinfo/ |
0.4.0 | Reports actual native activation: CSV/Segwit use historical BIP9 on mainnet/testnet3; Taproot is height-based and testdummy is absent. Native regtest heights and historical script flags differ from Core 31.1; off-header-chain queries have a 2,000,000-ancestor budget. See docs/contracts/external-api.md#native-deployment-reporting. |
/rest/deploymentinfo |
0.4.0 | Reports actual native activation: CSV/Segwit use historical BIP9 on mainnet/testnet3; Taproot is height-based and testdummy is absent. Native regtest heights and historical script flags differ from Core 31.1; off-header-chain queries have a 2,000,000-ancestor budget. See docs/contracts/external-api.md#native-deployment-reporting. |
/rest/spenttxouts/ |
0.4.0 | Serves retained certified undo in Core bin/hex/json formats. Older uncertified stale rows remain unavailable; transient retained-body absence and resource budgets return retry responses. See docs/contracts/external-api.md#retained-block-inputs. |
| surface | since | notes |
|---|---|---|
/rest/tx/ |
0.4.0 | |
/rest/block/notxdetails/ |
0.4.0 | |
/rest/blockpart/ |
0.4.0 | bin/hex only; JSON rejected, matching Core's /rest/blockpart (bitcoin-core/src/rest.cpp rest_block_part). |
/rest/chaininfo |
0.4.0 | |
/rest/mempool/ |
0.4.0 | |
/rest/blockhashbyheight/ |
0.4.0 |
| surface | since | notes |
|---|---|---|
esplora/* |
0.4.0 | Esplora-compatible indexer HTTP surface at /api on the JSON-RPC listener (crates/rpc/src/esplora.rs, docs/contracts/wallet-facing.md). |
| surface | since | notes |
|---|---|---|
hashblock |
0.4.0 | Requires the zmq feature and a --zmqpubhashblock endpoint. |
hashtx |
0.4.0 | Requires the zmq feature and a --zmqpubhashtx endpoint. |
rawblock |
0.4.0 | Requires the zmq feature and a --zmqpubrawblock endpoint. |
rawtx |
0.4.0 | Requires the zmq feature and a --zmqpubrawtx endpoint. |
sequence |
0.4.0 | Requires the zmq feature and a --zmqpubsequence endpoint. Publishes C/D block events and A/R mempool events; A/R carry reversed txid, the label byte, and the mempool sequence as u64 LE (crates/rpc/src/zmq.rs). |
Row counts: Supported 0, Deviation 37, Implemented (unverified) 55, Extension 14, Disabled 0, Unimplemented 82 - total 188.