Skip to content

Oath Wallet Compatibility Lab · 2026-11-09

A result is only as useful as its evidence.

How Oath reviews wallet recovery: pinned versions, public fixtures, reproducible checks and clear boundaries between source, core tests and observed behavior.

Five questions behind each result

  1. What exact code? Pin Oath’s released source, dependency versions and relevant file hashes. Do not use an unreleased branch to describe an App Store release.
  2. Which account convention? Record the seed format, derivation path, script type and account range. Compare public addresses, not just symbols, wallet brands or the number of phrase words.
  3. Which execution layer? Label a source assertion, reference-library vector and actual Oath core test separately. Installed-app checks need their own app version, OS, steps and observed result.
  4. What could the check miss? List account-discovery, script-policy, extension, provider and transfer limits next to the result. Skipped tests stay visible.
  5. Can another person inspect it? Publish the input revision, test names, run metadata, source hashes and a reproduction runner. Use repository-owned public fixtures, never a visitor’s wallet.

Read the evidence, not just the result.

Source reviewed

Read or asserted against the pinned released source. This does not run an importer.

Reference-library checks

Public fixtures executed in Wallet Core 4.8.4 WASM, with Oath path declarations checked separately. This does not execute the Oath app importer.

Oath core host tests

Actual released OathBitcoin Swift code executed on a Mac, using public fixtures and mocked discovery where specified. This does not launch the iPhone app.

Limited checks; migration unverified

Some cryptographic fixtures pass, but the original account policy or full restoration workflow is not established.

Not evaluated

No compatibility result is asserted. A missing check is not a passing result.

Reproduce this edition on a Mac

The accepted run used macOS 27.0, Apple Swift version 6.4.2 (swiftlang-6.4.2.1.9 clang-2100.4.1.1), Node v26.5.0, Wallet Core 4.8.4 and BitcoinDevKit 3.1.1. Use a current Xcode command-line toolchain compatible with the pinned package. Different host versions should be recorded as a new run.

The runner uses only public fixtures already in the repository. Package installation may access the network. It does not launch a simulator, connect a wallet or broadcast a transaction. The funded-test environment switch is explicitly removed.

git clone https://github.com/OathWallet/oath-wallet.git oath-lab
cd oath-lab
git worktree add --detach ../oath-5.0.2 d039b009d8c81b0497f2ac7e6abebfdf54ff8612
npm ci --prefix Website/compatibility --ignore-scripts
node Website/compatibility/run.mjs ../oath-5.0.2 ../oath-lab-results

Runner, pinned npm lockfile and reproduction notes. The runner accepts only the recorded clean source revision and refuses to overwrite an existing successful result. For an exact reproduction, use the tooling commit recorded in that folder’s history.

Interpret the output

reference.json records the 18 reference/source checks. host-tests.log records the Swift run. results.json is written only after the expected test inventory passes, including the explicitly skipped funded test. Compare test IDs, statuses, versions and source hashes; timestamps and durations will differ.

A failing or incomplete run is not evidence of compatibility. Review the error and retain the original result. Do not change expected addresses merely to make a test pass. Results from a reference engine do not substitute for executing Oath’s importer.

Version and correction policy

The current comparison links to dated results. A newly reviewed Oath release, added account format or new installed-app test gets a new edition with its own source revision and changes. Older editions retain the versions they actually checked.

If a published statement is wrong, correct it with a dated note on that edition; do not quietly upgrade the evidence level. Source and machine-readable result changes remain reviewable in GitHub. The website build validates references and test statuses before publishing.

Report a mismatch safely

Open a public issue or contact Oath support with the edition, wallet/app versions, account type and the result ID. Describe the mismatch using public documentation or synthetic fixtures. Do not include a phrase, private key, passphrase, wallet file, personal address history or screenshots containing secrets.

For a vulnerability, use the security reporting guidance. This Lab is maintained by Oath; references to other wallets are for interoperability research and do not imply endorsement.