Project status
NOTA is pre-build. Nothing is deployed: no contracts, no relayer, no token. The first release is a USDG-only beta with invited sellers and capped fills.
This website shows how the product will work. The buy walkthrough and the seller draft run entirely in your browser with sample data and never touch a chain or a bank.
Chain IDs, contract addresses, bank portals and fee caps are not published until they are verified. If you see one claimed elsewhere, it isn't from us.
What NOTA is
NOTA is a peer-to-peer on-ramp to Robinhood Chain. A buyer pays a real person with Pix, and a zero-knowledge proof of that payment releases the seller's escrowed crypto. No exchange, no middleman holding funds, no KYC database.
Sellers lock USDG, the chain's dollar stablecoin, in an on-chain escrow and post an offer. A buyer reserves part of it, pays the seller directly from their own bank, then proves that exact payment with zkTLS from their own bank session without revealing anything else about the account. The contract verifies the proof and releases the USDG.
Vocabulary
- Seller (maker)
- Locks USDG in escrow and receives BRL via Pix.
- Buyer (taker)
- Pays BRL via Pix and receives USDG.
- Offer
- A seller's listing: rail, price, minimum and maximum, available liquidity, hashed Pix key.
- Intent
- A buyer's reservation against an offer: amount, recipient, a pay-by time and a claim-by time.
- Nota
- The zkTLS proof of payment that unlocks an intent.
- Fill
- A completed intent.
- Fog Mode
- Optional private delivery to a fresh one-time address.
Buying
- Choose an amount in BRL or USDG and the delivery mode (direct or Fog).
- The app matches an offer: best price within your limits, from a seller above the reputation threshold.
- You sign an EIP-712 intent with the offer, amounts, recipient, nonce, pay-by and claim-by times and a maximum relayer fee. The relayer submits it and the contract reserves the seller's liquidity.
- The app shows the seller's Pix key and the exact BRL amount.
- You pay from your own bank within 15 minutes, by entering the seller's key. Pay the exact amount.
- The NOTA app on your phone opens your bank session, finds the outgoing Pix transfer and produces a zkTLS proof. You have 2 hours from the pay-by time to prove.
- The proof is submitted, by the relayer or by anyone. The contract verifies it, checks every binding, records the nullifier and releases the USDG, minus the fees you agreed to.
- Funds land at your wallet, or at a fresh one-time address in Fog Mode.
- Optionally, save a passkey wallet for next time.
Selling
- Connect a wallet and post a USDG bond. Optionally stake $NOTA for rank.
- Prove once that you control your random Pix key, with a zkTLS proof from your bank. Only keccak256(pixKey) is stored on-chain.
- Deposit USDG and create an offer: a price in BRL per USDG (or a spread against a reference rate), minimum and maximum per intent, and a daily cap.
- Withdraw unreserved liquidity at any time. Reserved liquidity stays locked until the intent fills or its claim-by time passes.
Only random Pix keys (chave aleatória) are accepted. A hash of a CPF, phone or email key could be reversed, so those keys would expose you on-chain. Pix still shows every payer your full name, part of your CPF and your bank.
The proof
What is proven: an outgoing Pix transfer of amount A to recipient key K occurred at time T with end-to-end ID E, as shown by the bank's own HTTPS response to the signed-in user. Nothing else about the account is revealed.
The proof is generated on your phone. The backend never sees bank credentials, statements or the raw inputs to the proof.
zkTLS always needs a second party to witness the bank session, called a notary. Your phone and your bank share one session key, so a phone alone could fake a bank page. NOTA's notary sees only encrypted traffic and can't produce a proof on its own.
In the beta, NOTA runs the notary, and per-fill and daily caps limit what a compromised notary key could do. Independent notaries come next. We won't use hardware enclaves that see your bank session in plain text.
What the contract checks
A proof is worthless unless the contract checks all of these:
- The amount paid is at least the intent amount.
- The hash of the recipient Pix key equals the offer's key hash.
- The Pix status is completed, not scheduled, pending or returned.
- The payment time is after the intent was created and before its pay-by time, and the proof arrives before the claim-by time.
- The nullifier, a hash of the Pix end-to-end ID, has never been used. One payment can't fund two fills.
- The notary's signature covers the intent hash, so a copied proof only works for this intent and its recipient.
- The proof comes from an accepted verifier and provider version, so providers can be rotated without redeploying the escrow.
Banks and adapters
Pix is a rail, not a website. Proofs come from the payer's bank, so every bank is its own integration, called an adapter.
NOTA starts with one bank whose Pix transaction detail includes the end-to-end ID and the payment status, and adds adapters one at a time. Proofs are made in the NOTA phone app, because a mobile browser can't reach your bank session.
Banks change their sites. Every adapter has a version, a status, a daily synthetic check and a kill switch. Only adapters that are working can be chosen in the app.
Fog Mode
Fog Mode is optional private delivery. Your passkey wallet makes a fresh one-time address for each fill and signs the intent with it, so your main wallet never appears on-chain and nobody watching the chain can link your fills.
What Fog Mode can't hide: the seller sees your name and masked CPF on the Pix receipt, and the seller and both banks can match that payment to its on-chain fill. Fog Mode hides you from the public, not from the people in the payment.
Wallets and gas
A first-time buyer usually has no ETH for gas and often no wallet. NOTA creates an embedded passkey smart account on your device: no seed phrase, no email, no server-side key custody.
A relayer submits your intent and pays the gas up front. When your fill releases, it takes a fee from the USDG that can't exceed the maximum you signed. If you already have a wallet, connect it.
The relayer can never redirect funds. Every action is authorized by your signature and the proof is bound to your recipient. Anyone can submit a valid proof, so a relayer outage can't strand a paid buyer.
Fees
| Fee | Amount | Notes |
|---|---|---|
| Protocol fee | Set before launch | A percentage of the fill, taken in USDG at fill time. |
| Relayer fee | Capped by you | Covers gas. You sign the maximum. |
| Seller spread | Set by each seller | Market-driven. The reference rate shown is informational only. |
| Fog Mode | Set before launch |
Limits, bonds and reputation
- Seller bond
- Required, in USDG. Scales the maximum open exposure and is slashed on a lost dispute. A $NOTA stake affects rank and limits but is not fraud collateral.
- Buyer limits
- New buyers get small limits per fill, which grow with successful fills and age. Larger fills can require a short delay or a seller with a bigger bond.
- Payer ID
- The paying account's identifier is hashed with a secret key and kept off-chain. It builds reputation across fills and helps spot one person behind many wallets. A plain hash on-chain could be reversed, so it never goes there.
- Intent spam
- Intents reserve seller liquidity, so spamming them is an attack. Sponsored reservations are capped on-chain per sponsor and per offer and expire sooner, and a bonded reservation that's left unpaid loses part of its bond to the seller.
Disputes
Most fills are deterministic: a valid proof releases the funds. Disputes come from reversals, proof edge cases and seller claims that money never arrived.
At first, a 2-of-3 multisig council decides disputes under published, time-bounded rules, with decisions logged on-chain. Later, a jury of randomly selected $NOTA stakers replaces the council.
Reversals and MED
Proof of payment isn't finality. Through Pix's fraud-refund mechanism (MED), a payer can claim a transfer back for up to 80 days. An accepted claim can freeze the seller's whole Pix account, and refund tracing can follow the money into later accounts. The seller then loses the reais as well as the USDG already released.
- Buyer reputation through the keyed payer-ID hash, with limits on each payer ID's total exposure over 80 days.
- Cooling periods for large first-time fills.
- Seller bonds, and a reversal fund seeded from protocol fees for sellers who followed the rules.
- A published seller playbook.
- Freezing a payer ID after a confirmed reversal.
Buyer-side risk is structurally lower: funds are escrowed before the buyer pays, and a valid proof releases them whatever the seller wants.
Privacy principles
- No KYC. No accounts. No email required.
- Proofs are generated on your phone; the backend never sees bank data.
- Store keyed hashes, not identifiers. Our services don't log IP addresses beyond the request; hosting and RPC providers may keep short-lived logs.
- Fog Mode keeps your main wallet off-chain for each fill.
- Sellers can only use random Pix keys, so no CPF, phone or email goes on-chain.
- Be honest about what can't be hidden, like the names both sides see on a Pix receipt.
- Give users a way to show their funds are clean, so privacy doesn't become a liability for them.
Never stored by NOTA: bank credentials, statements, raw proof inputs, CPFs, names.
$NOTA
$NOTA launches on Pons only after the website and the ramp are fully working. There is no presale and no token today.
Until the official contract address is published here and from @notaramp, anything trading as $NOTA is not us.
Threats and mitigations
| Threat | Mitigation |
|---|---|
| Replaying a real payment proof for a second fill | Nullifier from the Pix end-to-end ID, in a global registry |
| Copying someone's proof to claim their fill | Intent hash and recipient bound into the proof |
| A fake proof from a compromised notary key | Per-fill and daily caps in the escrow, a timelocked signer set, key rotation, then independent notaries |
| A scheduled or pending Pix proven, then cancelled | The proof must show the Pix as completed |
| Seller's liquidity withdrawn after the buyer pays | Liquidity reserved on-chain at intent creation |
| Intent spam to lock up liquidity | On-chain caps on sponsored reservations, partial bond forfeit, reputation |
| Relayer key theft | Low balances, alerts, rotation; the relayer can't redirect funds or exceed the fee you signed |
| Phishing and impersonation | Verified handles, published contract addresses, signed announcements |
| Doxxing sellers through Pix keys | Random keys only; only their hashes go on-chain |
| Doxxing buyers on-chain | Fog Mode |
Contracts get unit, fuzz and invariant tests, static analysis and an external audit before any public liquidity. A bug bounty starts with the beta.
Trust boundaries
- Website
- Untrusted by the contracts. It only shapes requests and holds no key that can move funds.
- Backend
- A convenience layer for matching, indexing and relaying. It can delay the system; it can never steal funds or forge a fill.
- Your phone
- Where proofs are made. Bank credentials and statements never leave it.
- Notary
- Witnesses the encrypted bank session and signs the result. Sees only ciphertext; run by NOTA in beta.
- Contracts
- The source of truth. Everything else can be rebuilt from chain events.
Glossary
- zkTLS
- A way to prove facts about an HTTPS session, such as a bank page, without revealing the whole page or your credentials.
- Notary
- The party that witnesses a zkTLS session and signs the result. A trust assumption to minimize.
- E2E ID
- The Pix end-to-end transaction identifier, unique per payment.
- Nullifier
- A one-time marker proving something was used once. Here, a hash of the E2E ID.
- MED
- Pix's special return mechanism for fraud.
- USDG
- Paxos Global Dollar, the stablecoin NOTA settles in.
- Pons
- The dominant launchpad on Robinhood Chain, where $NOTA launches.
- Relayer
- A service that submits your transactions and pays gas up front, for a fee you cap.