Skip to content

Payments ​

A private transfer sends value straight to someone who already has a shielded wallet. Claimable payments extend that to anyone: they let you pay an ordinary address — including someone who has never set up shielded keys — and have them claim the funds when they're ready. Think of it as a cheque: you write it, hand it over, and the recipient cashes it.

Planned capability

Claimable payments are specified but not yet implemented. The design below is what Armada intends to ship; today only the underlying pieces exist (the ephemeral-wallet mechanism and the in-pool transfer it builds on). The payment/claim layer in the SDK is not built yet. This page describes the concept, not a feature you can use right now.

The problem it solves ​

A direct shielded transfer requires the recipient to already be enrolled — to have shielded keys the sender can address. That's fine between existing users, but it can't pay someone who hasn't set up a wallet. Claimable payments remove that requirement: you can pay any address, and the recipient sets up their keys only at the moment they claim.

How a claimable payment works ​

The mechanism reuses the primitives Armada already has:

  • The cheque is a note owned by a throwaway wallet. The sender derives a fresh, single-use wallet, funds a shielded note owned by it, and delivers that wallet's secret to the recipient in an encrypted claim envelope — a link, QR code, or message passed off-chain. The envelope is the cheque; whoever holds it can spend the note.
  • Claiming is just an in-pool transfer. To claim, the recipient enrolls (a single signature) and the ephemeral wallet transfers the note to the recipient's own shielded keys. Because it's a normal private transfer, the recipient's public address never appears on-chain.
  • The sender can reclaim. If the payment is never claimed, the sender runs the same transfer in reverse and takes the funds back.
  • The pool settles any race. If a claim and a reclaim are attempted at once, the pool's nullifier rule decides it atomically: the first valid spend of the note wins, and the other fails. There is no ambiguity about who ended up with the money.

What it does not require ​

Claimable payments are entirely an application-layer construct built on shielding and transfers. There is no on-chain escrow contract, no server holding claim codes or mapping them to addresses, and no custody by the relayer — the relayer stays a dumb pipe that can't read the payment. Nothing about the design needs new contract, circuit, or relayer support; it is only the wallet/SDK software that has to be built.

When it ships, the concrete API for creating, claiming, reclaiming, and tracking payments will live in the SDK reference.