How ZRC-20 works
ZRC-20 borrows its shape from BRC-20 on Bitcoin. The chain carries text and nothing else. Everyone replays the same operations in the same order and arrives at the same balance sheet. There is no contract, no gas, and no consensus change — Zcash itself never learns that a token exists.
deploy
one Zcash transactionClaims a ticker and fixes its supply forever. The first valid deploy wins.
{
"p": "zrc-20",
"op": "deploy",
"tick": "ZORD",
"max": "21000000",
"lim": "1000"
}- tick1–8 characters, case-insensitive
- maxtotal supply in whole units
- limmost that can be minted at once (defaults to max)
mint
one Zcash transactionIssues units against a deployed ticker until the supply runs out.
{
"p": "zrc-20",
"op": "mint",
"tick": "ZORD",
"amt": "1000"
}- amtabove zero and at or under the per-mint limit
- the last mint before the cap fills partially
transfer
one Zcash transactionMoves a balance in a single operation — no commit-and-reveal step.
{
"p": "zrc-20",
"op": "transfer",
"tick": "ZORD",
"amt": "500"
}- amtmust be covered in full by your balance
- the recipient is the address paid by the same transaction
How balances are counted
Operations are applied strictly in the order they land on-chain. A deploy for a ticker that already exists does nothing. A mint above the per-mint limit does nothing. A transfer larger than your balance does nothing. Operations that fail these checks are still shown here, but marked inert, so the history stays honest.
Where this differs from the draft
The published draft puts operations inside shielded memos that an indexer reads with a published viewing key. This app writes them transparently instead, because the wallet in your browser is a transparent one. Operations here are public and anyone can index them. Authorisation comes from the address that signs the transaction, exactly as BRC-20 works.
