₿ Monolith

Silent Payments (BIP352) · air-gapped · zero-tracker

Running self-audit… Storage: unknown

Monolith performs zero network I/O. All cryptography runs locally in your browser. Not a substitute for an audited hardware wallet — verify before use.

1. Wallet — Seed Phrase & Derivation

Generate a 24-word BIP39 mnemonic, optionally protect it with a passphrase, and derive the BIP352 scan and spend keys using the standard derivation paths: m/352'/0'/0'/1'/0 for the scan key and m/352'/0'/0'/0'/0 for the spend key. Write down your mnemonic. Anyone with the words can spend your funds.

BIP39 passphrase (optional, "25th word")

Leave this empty for a standard seed. If you set one, you must enter it every time you restore — BIP39 has no checksum on the passphrase, so a single wrong character silently produces a different, empty wallet.

Seed currently derived without a passphrase.

Scan key (b_scan)

—
—

Spend key (b_spend)

—
—

2. Silent Payment Address (reusable)

The address encodes B_scan ‖ B_spend with bech32m under the human-readable part sp, witness version 0 (so every valid address begins sp1q…). Post it anywhere — every payment lands at a fresh on-chain P2TR output that only your wallet can detect.

Checksum: — Version byte: —
—
—

QR rendered locally as inline SVG.

Labeled addresses (BIP352 labels)

Labels let you tell payment sources apart with one scan key: B_m = B_spend + hash(b_scan‖m)·G. Label 0 is reserved for change; do not give it out. Hand out m ≥ 1 only.

mB_m (33-byte key)Address
Generate a wallet first.

3. Sender Simulation

List each transaction input (txid, vout, script type, input private key). Per BIP352 only P2TR key-path, P2WPKH, P2SH-P2WPKH and P2PKH inputs are summed (taproot keys with odd Y are negated; NUMS-key inputs and other types are skipped). The app computes input_hash, the ECDH shared secret against your B_scan and derives one P2TR output per requested index (K ≤ 2323). An optional label m ≥ 1 targets a labeled address; m = 0 is reserved for change.

4. Receiver Detection

Paste the summed input public key A, the smallest outpoint (outpoint_L) and the candidate output x-only keys. The app runs the BIP352 scan loop (k increments after each match, stops at the first miss, K ≤ 2323), including labels.

5. Backup & App Compatibility

This wallet uses standard BIP39 mnemonic + BIP32 derivation. Any wallet that supports BIP352 silent payments and the derivation path below can restore your funds.

Backup type
24-word BIP39 mnemonic (+ optional passphrase)
Scan path
m/352'/coin_type'/account'/1'/0
Spend path
m/352'/coin_type'/account'/0'/0
Address format
bech32m, hrp "sp", version byte 0 (sp1q…)
Compatible wallets
Cake Wallet, BitBox02, Blue Wallet (SP builds), Silentium, Shroud

How to restore in another app

  1. Install a wallet that supports BIP352 silent payments (e.g. Cake Wallet).
  2. Choose "Restore from seed" and enter your 24 words.
  3. If you used a passphrase, enter it exactly.
  4. Select the account index (default 0) to match this derivation.
  5. The wallet will scan for payments to your sp1… address.

Important caveats

  • Silent payments require the receiving wallet to scan the chain. This takes time and battery.
  • Not all wallets support silent payments yet. Verify before relying on a backup.
  • Only version byte 0 (sp1q…) is interoperable with current wallets.

6. Derivation Trace

—

7. Conformance Tests

Vectors marked spec are taken from the BIP/RFC/NIST texts (several from the specs you attached). Vectors marked ref are expected values produced by an independent implementation (Python/OpenSSL) and are not official test vectors.

Not run yet.
#Test and vector sourceStatusDetail

8. Wallet Recovery Kit

Recover a Silent Payments wallet produced by this tool or by another BIP352-capable wallet (Cake, Sparrow, Silentium, BitBox02, …). Optionally match against a known sp1… address to confirm the correct derivation.

Target (optional)
Recovery method

Up to 1 missing word (brute-force is slow).

9. Paper Wallet — PDF Generator (offline, zero-tracker)

Renders a vector PDF paper wallet entirely in your browser. No fonts, images, or analytics are fetched — the PDF is generated byte-for-byte on this page and delivered as a Blob download. A4 and US Letter are supported; the public side carries your sp1q… address and B_scan / B_spend, the private side carries your 24-word mnemonic and derivation paths.

Options

Never print to a network printer. Never leave a printed paper wallet in view of a camera. Store the private side in a safe, offline place; the public side is safe to share.

Generate a wallet first.

Event Log

—

10. Power Tools

Offline helpers built on the same verified primitives. Nothing leaves the page.

1 · Payment receipt PDF
—
2 · BIP85 child mnemonic

Real BIP85 (HMAC "bip-entropy-from-k", SHAKE256 DRNG), path m/83696968'/39'/0'/words'/index'.

—
3 · codex32 share printer (BIP93)

Splits the BIP32 master seed into k-of-n codex32 shares.

—
4 · Change label (m = 0)

The reserved change label key and address (always scanned by this wallet).

—
5 · Input analysis (common-input ownership)
—
6 · Encrypted notes / contacts

scrypt (N=32768) + ChaCha20-Poly1305, authenticated header. Passphrase ≥ 8 characters.

—
7 · Missing-word recovery

One ? in a 12/15/18/21/24-word phrase; lists every checksum-valid word.

—
8 · Wallet fingerprint + QR

SHA-256 over the public address data, for verifying a restore.

—
9 · Fee and dust estimator
—
10 · Cross-check an output

Does this P2TR key belong to your wallet for that transaction? (k and labels 0–50 scanned.)

—

11. Toolbox: decoders, key tools, shares, backup

Raw transaction decoder
—
Block header verifier
—

Retarget calculator

—
Inspect any encoding

Segwit addresses (bech32/bech32m), silent payment addresses, Base58Check, WIF, xpub/xprv, or a scriptPubKey hex. Pasting private keys here is your choice; they stay in this page.

—
BIP32 path explorer (shows private keys)
—
SLIP-39 split / recombine
—
—
codex32 (BIP93) split / recover
—
—
Encrypted backup file (.mnlt)

scrypt N=32768, r=8, p=1 → ChaCha20-Poly1305; the header is authenticated. Wrong password and file tampering are indistinguishable by design.

—
Backup kit
—

About & Provenance

Monolith implements Silent Payments (BIP352) — a scheme where a sender derives a fresh P2TR output for a recipient without prior interaction. The recipient publishes one static sp1q… address and scans for outputs using their scan private key.

Inlined algorithms

  • SHA-256 / SHA-512 / HMAC / PBKDF2 — FIPS + RFC (original JS).
  • RIPEMD-160 — ISO/IEC 10118-3 (original JS).
  • secp256k1 — SEC 2 v2 §2.4.1, BigInt Jacobian (original JS).
  • bech32 / bech32m — BIP173 / BIP350 (original JS).
  • Base58Check — original JS (WIF + xprv/xpub).
  • BIP32 / BIP39 — derivation and mnemonics (original JS).
  • QR encoder — byte mode, EC level L, inline SVG (original JS).
  • PDF writer — uncompressed, vector-only, standard fonts (original JS).

Threat model

  • Review tool, not a signing device. No network access.
  • Seed, mnemonic and passphrase are held only in memory. JavaScript strings and BigInts cannot be reliably zeroed, so locking drops references and clears the page, but a memory-forensic attacker on a compromised machine is out of scope.
  • Reveal and copy actions require explicit user confirmation.
  • Session auto-lock zeroes secrets after inactivity (default 10 minutes).

Confirm

Are you sure?

Keyboard shortcuts

Ctrl+G
Generate new wallet
Ctrl+K
Focus the mnemonic import field
Ctrl+Enter
Run the active panel action
Ctrl+T
Toggle light / dark theme
Ctrl+L
Lock now (zero secrets)
?
Show this dialog
Esc
Close dialogs / tour