End-to-end interoperability tests for Bitcoin wallets, on regtest.
The question: if a wallet backup made in software A is restored in software B, does B find the same addresses and the same funds?
Results are factual — PASS / FAIL / NOT_IMPLEMENTED / UNKNOWN, always with exact versions and a reproducible script. No rankings, no scores, no "certified" badges.
| # | Finding | Status |
|---|---|---|
| 001 | bdk-cli 4.0.0: full_scan over RPC ignores --scan-stop-gap; a restored wallet silently misses funds at external index ≥ 25 |
Reported: bitcoindevkit/bdk-cli#340 |
Details: findings/001-bdk-cli-rpc-ignores-stop-gap.md
| Date | Report |
|---|---|
| 2026-09-28 | Restore compatibility: Bitcoin Core, bdk-cli (RPC, Esplora), Electrum |
| Script | What it tests | Self-contained |
|---|---|---|
scenarios/rpc-lookahead-boundary.sh |
Core → bdk-cli (RPC): funds at index 24, 25, 30 and 30 with --scan-stop-gap 100 |
Yes (starts its own regtest node) |
scenarios/rpc-vs-esplora-gap.sh |
Same wallets through RPC vs Esplora (Blockstream electrs), default vs --scan-stop-gap 40 |
Not yet: depends on a local lab node (labels in Portuguese) |
scenarios/electrum-restore.sh |
Core → Electrum 4.8.2: format checks (descriptor, Taproot) and the same wallets with default vs raised gap limit | Not yet: depends on a local lab node (labels in Portuguese) |
Requirements: Bitcoin Core, bdk-cli (--features rpc,esplora), Blockstream electrs (new-index) for Esplora scenarios, and for the Electrum scenario the Electrum app plus electrs built with --features electrum-discovery.
This project does not duplicate existing work:
- bitcoinfuzz: differential fuzzing between libraries.
- psbt-interop-lab: PSBT interoperability between libraries (explicitly out of scope there: chain scanning and recovery).
- walletsrecovery.org: what each wallet documents about recovery.
btc-interop measures what wallet software does when restoring — the gap none of the above covers.
Early. Tested so far: Bitcoin Core 31.1.0, bdk-cli 4.0.0 (RPC and Esplora backends), Electrum 4.8.2.
MIT