Skip to content

Latest commit

 

History

History
255 lines (230 loc) · 33.1 KB

rpc-reference.md

File metadata and controls

255 lines (230 loc) · 33.1 KB

External API Compatibility Reference

Surface contract of bitcoin-rs against Bitcoin Core 31.x.

  • Supported - differentially verified against the pinned Bitcoin Core reference; requires reference.differential_harness in crates/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.

JSON-RPC methods

Deviation

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.

Implemented (unverified)

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.

Extension

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).

Unimplemented

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).

REST endpoints

Deviation

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.

Implemented (unverified)

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

Extension

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).

ZMQ topics

Implemented (unverified)

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.