noircashdocs

Glossary

Short definitions of the terms used across the noircash documentation, with links to where each is explained.

Bonding curve

The Pons contract NOIR trades on from launch until graduation. It sells NOIR for ETH and buys it back, at a price set by its reserves. → The pool

Commitment

The hash stored in the tree for a note: cm = H(1, stub, shares). It reveals neither the owner nor the amount. → Notes

Creator fee

The part of every Pons trade fee paid to NOIR's creator fee recipient, the fee harvester: the standard fee minus Pons' 30% share, plus the creator tax if there is one (NOIR has none). Paid in ETH. → Fees

Creator tax

An optional fee a Pons launch can add to every trade on top of the standard fee, set at launch and frozen. NOIR launches with none (0%), so a trade pays only Pons' 1%. → Fees

CRS

The common reference string: public parameters the prover loads before proving. The app serves its own copy so that proving contacts no third party. → The circuit

Dummy note

A zero-value input or output that fills an unused slot, since every transaction has exactly two inputs and two outputs. It looks like any other note on-chain. → The circuit

EIP-712

The Ethereum standard for signing typed data. The wallet signs Spend(bytes32 transaction) under the vault's EIP-712 domain for every private transaction, and the circuit checks that signature. → Keys

EntryPoint

The ERC-4337 contract (v0.8) that bundlers call. It asks the vault to validate a private transaction, pays the gas from the vault's deposit, then runs the execution step. → Gas

ERC-4337

The account abstraction standard. The vault is itself an ERC-4337 account, so a private transaction travels as a UserOperation sent by a bundler, and the user's address never signs or pays for it. → Gas

ExtData

The public part of a private transaction that the proof does not compute but is bound to: recipient, allowed caller, gas fee, caller data and the two note ciphertexts. Its hash is a public input, so nobody can change it after the wallet signs. → Contracts

Fee harvester

FeeHarvester, NOIR's Pons creator fee recipient: it receives NOIR's creator fees in ETH. Its harvest function keeps the vault's gas deposit funded and spends the rest on NOIR, which it donates to the vault. → Contracts

Gas fee

The network fee of a private transaction, paid in shares out of the spent notes (ext.gasFee). It must cover the operation's maximum gas cost plus 20%, valued at the price average. → Fees

Gas reserve

The NOIR collected from gas fees, held by the vault until the harvester sells it for ETH (when the gas deposit is short) or donates it to holders. → Gas

Graduation

The moment NOIR moves from its bonding curve to its Uniswap v4 pool, once the curve has collected 4.2 ETH. It takes two permissionless calls on the Pons factory, graduate and createGraduatedPool. → The pool

Harvest

A call to FeeHarvester.harvest(), open to anyone for a 0.5% tip: it claims the creator fees, tops up the gas deposit, and buys NOIR for the vault within 3% of the price average. → The vault

Indexer

An optional service that stores every vault event and serves it to all wallets alike. Wallets check its data against the on-chain root and fall back to the chain. → The note tree

Note

A private piece of value: a number of vault shares owned by one key. On-chain it is only a commitment and an encrypted payload that only the owner can read. → Notes

Nullifier

The value published when a note is spent: nf = H(2, nk, cm, index). Only the owner can compute it, it cannot be linked back to the note, and the contract refuses the same nullifier twice. → Notes

Nullifier key

nk, the secret derived from the activation signature that proves ownership of a note inside the proof and derives its nullifier. → Keys

Owner key

opk = H(nk, wallet key), the public key registered on-chain. Notes are made out to it, and spending needs both nk and a signature from the wallet key it binds. → Keys

Placeholder proof

Random bytes of a real proof's size, used to estimate a UserOperation's gas. The vault reports it as a failed signature, which bundlers accept while estimating, so the wallet signs and proves only once. → Gas

Pons

Pons V2, the launchpad on Robinhood Chain that created NOIR. It runs NOIR's bonding curve and graduated pool and collects the trade fees. → Trust model

Price average

The vault's moving average of NOIR's market price (tokensPerEthEma), read from the curve or the Pons pool and used to value gas fees and bound harvester trades. Each block's price (the last one poked in it) enters clamped to ±10% of the average with weight 1/8, so the average moves at most 1.25% per L1 block. → Gas

Privacy set

The notes a spend hides among. A proof shows that the spent notes are somewhere in the note tree without saying which, so the more notes the tree holds, the better every user is protected. → Key concepts

Public NOIR

NOIR held at an address like any ERC-20 balance: visible to everyone and not earning the holder yield. NOIR bought anywhere but through the router, and NOIR taken out of the vault, is public until shielded. → Public balances

Registration

Publishing your owner key and viewing key on the vault (register). After it, others can send you private notes. It does not change NOIR held publicly at your address. → Get started

Root history

The last 64 roots of the note tree, all accepted by the contract, so a proof made against a slightly older root still works. Final roots of full trees stay valid forever. → The Merkle tree

Sale escrow

Where the NOIR of an ERC-4337 sale waits between validation and execution (pendingSales). Execution sells it for ETH through the router; if that fails, the NOIR goes to the ETH recipient. → Sell

Seed shares

The shares of the NOIR the deployer bought with 0.001 ETH at deployment and locked in a note nobody can spend. They keep the first holders from being diluted by the vault's virtual shares or by fees donated before them. → NOIR on Pons

Share

The unit a note holds. One share is worth NOIR in the vault / total shares, and donated fees raise that value without adding shares. → The vault

Shield

Moving public NOIR into the vault as a private note (approve the vault, then shield). A purchase through the router is shielded in the same transaction. → Public balances

SIWE

Sign-In with Ethereum (EIP-4361). The message your wallet signs to activate privacy is in this form and names the app's domain, so wallets warn if another site asks for it. → Keys

Stub

H(opk, rho, r): a note without its amount. A buyer picks the stub, and the contract completes it with the share amount known only on-chain. → Notes

Unshield

Moving NOIR out of the vault to an address as public NOIR. The amount becomes visible and stops earning. → Unshield

UserOperation

An ERC-4337 transaction request. A private transaction's UserOperation carries the transaction and its proof as its signature, and the vault as its sender. → Gas

Vault

PrivateVault, the contract that holds the NOIR behind all notes (totalBacking) with the total number of shares (totalShares). Harvested fees are donated to it. → The vault

Viewing key

The X25519 key pair that encrypts and finds your notes. Anyone with the private part can see your notes but cannot spend them. → Keys

Wallet key

The secp256k1 public key of the wallet that activated privacy, bound into the owner key. Every spend needs a signature by it. → Keys

On this page