You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The project exposes a useful Bitcoin Core-shaped interface:
synchronous HTTP JSON-RPC with Core method names;
a deliberately small REST gateway for remote validators;
ZMQ hash/raw topics and pubsequence block connect/disconnect notifications;
Core-style configuration and getzmqnotifications metadata.
The implementation has handler smoke tests, selected response-schema tests, REST edge-case tests, and ZMQ transport/wiring tests. Those are a solid foundation but do not define a complete supported API contract or establish drop-in compatibility with Bitcoin Core.
Current gaps include:
no machine-readable inventory of supported, partial, disabled, and unsupported methods;
selected JSON result-key tests rather than broad behavioral/error differential coverage;
no versioned Core reference target for API compatibility;
REST intentionally implements only chaininfo and headers endpoints;
some wallet methods are intentionally disabled because this node has no private keys;
documented gaps remain in reorg/mempool and index readiness semantics.
Goal
Publish and enforce a narrow, explicit, versioned Bitcoin Core compatibility contract for RPC, REST, and ZMQ. Every claimed supported surface must be verified against a pinned Bitcoin Core reference through deterministic fixtures and differential tests. Unsupported and intentionally partial surfaces must fail or report capability status predictably.
This issue does not require implementing every Core API method.
Scope
1. Freeze the compatibility target and surface manifest
Pin the Bitcoin Core major/minor release used for each compatibility claim.
Add a machine-readable manifest for every exposed RPC, REST route, and ZMQ topic:
supported;
supported with documented deviations;
disabled by product policy;
not implemented.
State parameter forms, prerequisites, required indexes, pruning behavior, auth policy, and readiness behavior.
Generate or validate human API reference material from the manifest.
2. JSON-RPC differential harness
For each supported method, compare bitcoin-rs and the pinned Core reference using deterministic regtest and fixture chains.
Cover:
success JSON shape, types, optional fields, ordering where wire-visible, and numeric semantics;
state transitions: initial sync, caught-up, reorg, index building/stale, pruning, and shutdown.
Do not normalize meaningful incompatibilities away. Record an explicit deviation only after it is reviewed.
3. REST contract and tests
Keep the REST surface intentionally small unless a concrete consumer needs expansion.
Differentially verify implemented chaininfo/header semantics, status codes, content types, binary/hex encoding, malformed values, side branches, header-only ranges, and disabled REST behavior.
Document that REST is unauthenticated and define safe listener/exposure guidance.
Add any enforcer-specific fixture necessary to prove the expected discovery and rescan behavior.
4. ZMQ contract and tests
Verify endpoint parsing, high-water mark behavior, multipart frame layout, topic names, byte order, and sequence counter behavior against Core fixtures for each supported topic.
Make connect/disconnect ordering part of the public pubsequence contract.
Problem
The project exposes a useful Bitcoin Core-shaped interface:
The implementation has handler smoke tests, selected response-schema tests, REST edge-case tests, and ZMQ transport/wiring tests. Those are a solid foundation but do not define a complete supported API contract or establish drop-in compatibility with Bitcoin Core.
Current gaps include:
Goal
Publish and enforce a narrow, explicit, versioned Bitcoin Core compatibility contract for RPC, REST, and ZMQ. Every claimed supported surface must be verified against a pinned Bitcoin Core reference through deterministic fixtures and differential tests. Unsupported and intentionally partial surfaces must fail or report capability status predictably.
This issue does not require implementing every Core API method.
Scope
1. Freeze the compatibility target and surface manifest
2. JSON-RPC differential harness
For each supported method, compare bitcoin-rs and the pinned Core reference using deterministic regtest and fixture chains.
Cover:
Do not normalize meaningful incompatibilities away. Record an explicit deviation only after it is reviewed.
3. REST contract and tests
4. ZMQ contract and tests
5. Capability/readiness reporting
Expose enough status for clients to distinguish:
Avoid pretending a partial index or partial node state is complete Core-equivalent data.
Acceptance criteria
Related issues
Non-goals