noircashdocs

Supported wallets

Which wallets can use noircash - any wallet that signs deterministically with an ordinary key - and which cannot.

noircash works with wallets that sign with an externally owned account (EOA): an ordinary secp256k1 private key. Your wallet signs two things:

  • the activation message, once per session, from which the app derives your privacy keys;
  • an EIP-712 Spend message for every private send, sale and unshield. The zero-knowledge circuit checks that signature against the wallet key bound to your registered owner key.

Supported

WalletWhy it works
Browser wallets with an ordinary key, such as MetaMaskThey sign with an EOA key
Hardware wallets that sign EIP-712 typed dataEach Spend is a standard typed-data signature, confirmed on the device
EIP-7702 accountsAn EOA with a delegation still signs with its own key, so it can own notes like any EOA
MPC multisig wallets (Fireblocks, Copper, Lit and similar)Several parties approve, and the result is one ordinary ECDSA signature

The app connects to the wallet injected in the browser. On a phone, open the app in your wallet's own browser.

Not supported

WalletWhy not
Contract-based multisig walletsThe circuit checks one EOA signature, and the vault accepts a single verifier. A contract wallet has no key that can produce it.
Smart-contract accounts (ERC-4337 wallets and similar)Same reason. At activation the app checks that the signature comes from the connected address, and refuses it otherwise.

The vault is immutable, with one verifier, so this cannot be added later to the same contract.

Any wallet, including a contract wallet, can still hold, send and trade public NOIR, since NOIR is an ordinary ERC-20. That balance is public and does not earn from harvests.

Deterministic signatures

Your privacy keys are derived from the activation signature, so the wallet must give the same signature for the same message every time. Wallets that follow RFC 6979, as most do, sign deterministically.

  • The first time, the app asks for the signature twice and compares the two. If they differ, it refuses the wallet: "This wallet does not sign deterministically: your keys could not be recovered later. Use another wallet." Nothing is registered.
  • On later visits, the app checks that the signature gives the key already registered for your address. If it does not, it stops with an error instead of showing a wrong, empty balance.

There is no other way to derive the keys, such as a passkey or a separate seed phrase.

Your notes depend on your wallet's key. If you move to a new wallet app, import the same key or seed phrase: a different key gives different privacy keys, and your notes stay with the old one. To move funds to a new key, send them privately to an address registered with the new wallet.

Changing devices

Nothing needs to be backed up or exported. Install your wallet on the new device with the same seed phrase, connect, and sign the activation message. The same key gives the same signature and the same privacy keys, and the app finds your notes on the chain.

On this page