Docs · Concepts

How it works.

The full lifecycle of a CLAIMA link — from key generation in the sender's browser to the recipient draining the vault on-chain.

Overview

CLAIMA is fully client-side. There is no API, no database, no background worker. The marketing site and the application are static assets served by Vercel. Everything else happens in two places: your browser and the Robinhood Chain network.

The unit of value transfer is the claim link: a URL whose fragment carries an encrypted blob, a temporary wallet address, an amount in base units (wei for ETH), an asset label, and a chain id. Anyone who has the URL and the password can claim the locked balance to any wallet they control.

Sender flow

  1. User opens /c/new and connects a wallet.
  2. User enters an amount, a password (min 8 chars), and an optional note.
  3. CLAIMA generates a fresh ECDSA (secp256k1) keypair (the "temp vault") using generatePrivateKey() from viem/accounts.
  4. CLAIMA bundles { sk, note } as JSON and encrypts it with the password using PBKDF2 (250,000 SHA-256 rounds) → AES-256-GCM.
  5. The user's wallet signs a single value transfer — a native ETH sendTransaction, or an ERC-20 transfer for USDG — sending the locked amount from the user's wallet to the temp vault.
  6. CLAIMA writes the full payload (address, amount, asset, chainId, salt, iv, ciphertext) to the URL fragment and surfaces the link, QR code, and share buttons.
  7. The sender shares the URL and the password through two different channels.

Receiver flow

  1. Recipient opens the URL. The browser sends a GET request to /c; the fragment after # is read locally and never transmitted.
  2. CLAIMA decodes the payload, fetches the temp vault's current balance, and shows a preview card.
  3. Recipient connects their own wallet.
  4. Recipient enters the password. CLAIMA re-derives the AES key from the password and the payload's salt, decrypts the blob, and reconstructs the temp keypair.
  5. CLAIMA builds a transfer of the vault's full balance minus a small gas reserve to the recipient's wallet. The temp keypair signs it locally; the recipient's wallet does not sign anything.
  6. The transaction is sent through the configured RPC and confirmed. CLAIMA re-polls the vault balance to confirm it's zero, then shows a success card.

Cryptographic primitives

All crypto is done with the browser's native WebCrypto API. No third-party crypto library is bundled.

  • Key derivation: PBKDF2 with SHA-256, 250,000 iterations, 16-byte random salt per link.
  • Symmetric encryption: AES-256-GCM, 12-byte random IV per link. GCM provides authentication — tampering or a wrong password fail the same way (auth tag mismatch).
  • Encoding: URL-safe base64 (base64url, no padding) for salt / iv / ciphertext. The full payload is a base64url-encoded JSON string in the URL fragment.

See URL payload format for the byte layout.

Fees & on-chain footprint

A complete sender→recipient round trip costs two Robinhood Chain transactions: one to fund the vault, one to drain it. Each is a single-signature sendTransaction paying the L2 gas fee in ETH.

Sender funding tx       : ~21_000 gas @ 1 gwei = 0.000021 ETH
Recipient drain tx      : ~21_000 gas @ 1 gwei = 0.000021 ETH
Total network fee       : ~42_000 gas         = 0.000042 ETH

CLAIMA itself charges no fee at this time. For ETH links the burner pays its own L2 gas out of the delivered balance, so the receiver pays nothing. For USDG links the burner signs an EIP-3009 authorization off-chain and the receiver submits it, paying a small L2 gas fee themselves — the burner never holds ETH, so nothing can get stuck. The temp vault is a regular externally owned account (EOA); once it's drained to zero it simply holds no balance.

What it doesn't do

  • Reclaim. If a recipient never claims, the funds sit in the temp vault forever unless someone can produce the password. The current design has no sender-side escape hatch — a future on-chain program could add one.
  • Arbitrary ERC-20s. Only native ETH and USDG (Global Dollar by Paxos) today. Other ERC-20 tokens require additional allowance and transfer handling that is on the backlog.
  • Anonymity. Amounts and vault addresses are visible on the public Robinhood Chain ledger like any other transaction. CLAIMA hides the recipient identity at the moment of send, not after.
© 2026 CLAIMA