Disposable Physical Cash and Mobile Access

I’ll explain what each component gives you, show how they fit together into safe, usable flows (transfer, redeem, sweep), cover threat models and trade-offs, provide concrete implementation patterns (including an air-gapped PSBT workflow), and finish with a short checklist so you can try this safely (testnet first).
Disposable Physical Cash and Mobile Access

Use OpenDime as a bearer-style physical Bitcoin token (cold, transferable) and WalletConnect as the mobile bridge to accept or spend those funds from a mobile wallet — together they let you hand someone physical Bitcoin cash and later redeem it into a mobile wallet with minimal online exposure.


Components — what each part does (first principles)

  • Bitcoin (on-chain) — the settlement ledger. OpenDime stores a private key that controls on-chain UTXOs. Spending requires revealing/signing with that private key.
  • OpenDime — a USB hardware “bearer instrument.” You can create a stick, load it with BTC (send coins to its address), and transfer it physically. It’s intended to be a transferable offline bearer token. To spend, you must reveal (read) the private key (the device supports a secure reveal process).
  • WalletConnect — an open protocol allowing a mobile wallet to connect securely (via scanner/QR or deep link) to a web/dapp and receive signing/payment requests. It enables secure interaction between mobile wallets and web tooling without exposing private keys to the web app.

Important: OpenDime acts like cash — whoever holds it controls the coins. Once private key is revealed, the stick is no longer bearer-only and must be considered spent. Treat as you would cash.


Three practical patterns (how to combine them)

I’ll give three patterns you can choose from depending on threat model and UX needs.

Pattern A — Simple physical transfer (cold bearer; offline until redeemed)

Use when you want frictionless physical transfer and the redeemer will import or sweep the stick later.

  1. Create OpenDime and fund its on-chain address. Hand it to recipient.

  2. Recipient later redeems by revealing the private key (using a trusted host) and importing it into a wallet (mobile or desktop). Once key is revealed, funds must be swept immediately (they are now exposed).

  3. To import to a mobile wallet, you can:

    • Reveal the private key and manually type/import into a mobile wallet that supports importing WIF/privkey (not recommended on phone unless you trust it), or
    • Reveal on an air-gapped desktop, sweep to a mobile wallet address (described in Pattern B).

Pros: zero online dependency during transfer. Cons: revealing key is destructive (loses bearer property) and risky if done on untrusted device.


Pattern B — Safe sweep-to-mobile (recommended)

Use an air-gapped or trusted desktop as the bridge. WalletConnect is used so your mobile wallet can supply the redeem address / accept broadcast without the private key ever touching the mobile device.

High level:

  1. Recipient connects their mobile wallet to a simple web companion (dapp) via WalletConnect and requests a receiving on-chain address (or deploys a PSBT receive flow). WalletConnect authorizes the dapp to obtain an address from the mobile wallet (wallet never shares keys).
  2. On a trusted offline host, reveal OpenDime’s private key or let the host sign a PSBT (OpenDime can sign) and create a signed transaction that transfers the entire balance from the OpenDime address to the mobile wallet address obtained via WalletConnect. Alternatively, create a PSBT, transfer it to the OpenDime, sign, bring back the signed PSBT to an online broadcaster.
  3. Use the web companion (connected to the mobile wallet via WalletConnect) to broadcast the signed transaction (or the mobile wallet can broadcast it after receiving the signed PSBT if it supports that flow). The mobile wallet now controls the funds, without ever importing the raw private key into the phone.

Pros: private key signing still happens on the OpenDime or on an air-gapped host; mobile wallet receives funds without handling the OpenDime private key. Safer than importing the key into the phone. Cons: needs a trusted host or air-gapped device to reveal/sign PSBTs; slightly more complex UX.


Pattern C — Merchant / point-of-sale flow (OpenDime as payment instrument)

Use when accepting physical payment in a retail setting.

  1. Merchant shows a receive address (or generates an invoice). Buyer inserts their OpenDime into a payment kiosk or signs a PSBT that sends from the OpenDime to the merchant’s address.
  2. WalletConnect can let the merchant’s POS (a web app) provide a receive address or verify settlement by connecting to the merchant’s mobile wallet or node via WalletConnect.
  3. After the OpenDime signs and the transaction is broadcast, the merchant displays confirmation.

Pros: cash-like in stores. Cons: requires reliable broadcast path and merchant-side verification.


Concrete redeem workflow (Pattern B — air-gapped PSBT + WalletConnect)

  1. Prepare mobile wallet

    • On phone, open your WalletConnect-capable wallet (e.g., Zeus, BlueWallet, Phoenix if supporting address generation) and connect to the companion web app by scanning QR (WalletConnect session). Authorize the app to request a receiving address.
  2. Obtain receiving address

    • The companion web app requests and receives an on-chain receive address from your mobile wallet via WalletConnect. It displays the address (and optionally a memo). The web app does NOT get your private keys.
  3. Create unsigned transaction (PSBT)

    • On an offline/trusted host (could be the same machine used with OpenDime but off-network, or a dedicated air-gapped laptop), read the OpenDime public address to see UTXOs (you can query a block explorer or your own node). Create a PSBT that spends OpenDime UTXOs to the WalletConnect-provided receiving address, include fee estimation.

    Example (conceptual; testnet first):

    # create unsigned PSBT using bitcoin-cli connected to a node (example)
    bitcoin-cli createpsbt '[{"txid":"<utxo_txid>","vout":0}]' '[{"<receive_address>":0.0095}]' 0
    

    (Use proper fee calculation & include change if needed; many GUIs help create PSBT.)

  4. Sign PSBT with OpenDime

    • Transfer the PSBT to the machine with the OpenDime (USB) and let OpenDime sign the PSBT (OpenDime provides ways to sign or reveal key; follow device docs). Alternatively, if OpenDime can sign directly via USB on a trusted host, produce the signed PSBT.
  5. Bring signed PSBT online & broadcast

    • Move the signed PSBT to the online broadcaster (the web companion or your node). The web app (connected to WalletConnect) can broadcast the signed raw tx via a block explorer API or your own node. Alternatively, the mobile wallet might accept a signed PSBT and broadcast it itself (wallet support required).
  6. Confirm

    • Mobile wallet shows incoming transaction. After confirmations, funds are in mobile wallet control.

Important: When OpenDime signs (revealing the private key or using its signing interface), the device is no longer a pristine bearer; never reuse it as a bearer after revealing if you wish to maintain bearer semantics.


  • Inspect addresses: Always verify the receive address on the mobile wallet screen (WalletConnect confirmation) before creating PSBT.
  • Validate amounts & fees: On the signing device, verify the output addresses and fee amounts before signing. OpenDime will display transaction data — compare it.
  • Broadcast via trusted endpoint: Prefer broadcasting via your own node or a trusted public broadcaster. Avoid random web services if you care about privacy.
  • Use testnet first: practice redeem flows on testnet OpenDime (or using small amounts) to get comfortable.

  • Bearer risk: OpenDime = cash. If stolen, coins are gone. No recovery unless you track who you handed it to.
  • Reveal risk: Revealing the private key (to sign) destroys bearer property. Ensure you control the machine you reveal on and sweep immediately.
  • Host compromise: If you reveal key on a compromised host, attacker can copy private key and steal funds. Use air-gapped signing if possible.
  • Mobile wallet exposure: Importing private keys into a phone is higher risk than using PSBT/WC flows. Prefer PSBT sweep patterns over importing raw private keys into mobile wallets.
  • Privacy: On-chain transfers are public; physical transfer metadata (who handed it to whom) is off-chain. Use Tor/Onion services when querying block explorers or broadcasting for better privacy.

UX & product recommendations

  • Build a simple companion web app that:

    • Starts WalletConnect session to get a receive address,
    • Generates PSBT templates for UTXOs,
    • Helps with moving PSBT between devices (QR/USB/microSD),
    • Broadcasts signed tx via configured node.
  • Show step-by-step prompts: “1) connect mobile, 2) create PSBT, 3) sign with OpenDime, 4) broadcast.”

  • For merchants: integrate a POS web app that uses WalletConnect to show instant receive confirmation and prints a receipt.


Alternatives & enhancements

  • Coldcard or other signers: Coldcard offers stronger PSBT UX and display verifications; substitute OpenDime if you want a safer signing flow (but OpenDime is specifically a bearer device).
  • Multisig OpenDime variant: Use multiple physical tokens that require co-operation to spend (complex).
  • On-the-fly QR PSBTs: If OpenDime supports QR signing, move PSBT via QR between devices — removes USB risk.

Physical bearer instruments are like cash: legal status varies by jurisdiction. Using them is legitimate for privacy, gifting, or education — but always obey local laws. Do not use for illegal transactions.


Quick checklist (testnet first)

  • [ ] Buy OpenDime from official vendor; verify authenticity.
  • [ ] Install a WalletConnect-capable mobile wallet (Zeus, BlueWallet, etc.).
  • [ ] Set up a companion web app (or use an existing PSBT/WC tool) that supports WalletConnect address requests.
  • [ ] Practice flow on testnet: create OpenDime, fund with testnet BTC, practice PSBT sign/sweep via WalletConnect.
  • [ ] When confident, test with a small mainnet amount before larger transfers.
  • [ ] Never reveal private key on untrusted machines; prefer air-gapped signing.

Bitcoin + OpenDime + WalletConnect gives you a practical physical Bitcoin cash experience with secure mobile redemption: hand over a funded OpenDime like cash, and later redeem it into your phone using an air-gapped PSBT signing flow and WalletConnect to safely deliver the receive address and/or broadcast — preserving custody safety while enabling mobile access.

  • Bitcoin Core — the reference implementation of Bitcoin.
  • Knots (Bitcoin Knots) — a derivative of Bitcoin Core with additional features and patches.
  • Knobs on Bitcoin — an experimental project providing additional Bitcoin tooling.
  • OpenDime — a Bitcoin USB stick that acts like a bearer bond (“Bitcoin piggy bank”).

Bitcoin-only WalletConnect-Compatible Wallets


Write a comment
No comments yet.