Agora Docs

Buying

A purchase is one transaction. The catalogue is off-chain, and a listing becomes an on-chain token only at the point of sale.

The operator signs an EIP-712 MintVoucher naming the buyer, price, metadata URI, a hash of the physical serial, and a deadline. AgoraVault.buy() then verifies the signature, pulls the price in USDG, and mints one token to the buyer. The voucher binds price and buyer: it cannot be replayed, used by another address, or used after its deadline, and the operator can cancel it before it is spent.

The catalogue is mutable. Items are added, repriced and withdrawn without touching the chain, and current placeholder listings are drafts. Nothing exists on-chain until a specific serial is sold to a specific buyer at a specific price.

Every write is simulated against current chain state before broadcast, so a transaction that would revert is caught rather than reaching the wallet.

Each token's tokenURI resolves to metadata including a 3D model of the item. The URI is set before minting, so a token is never live without metadata. Metadata can be updated; the serial hash cannot.