Quote tokens
Every zk-pad coin is paired with one quote token (also called the paired token). Buyers pay in it, the price is quoted in it, and the beneficiary's fees accrue in it. Only allow-listed quote tokens can be used.
The token list, decimals and tick bounds below come from docs/research/quote-tokens.md
(snapshot of 2026-10-02). They were not read on-chain from the research sandbox, and each token
must pass the fork checks in that note before it is enabled on mainnet.
Tier 1: curated list
| Token | BSC mainnet address | Decimals | Notes |
|---|---|---|---|
| WBNB (default) | 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c | 18 | Native wrapped BNB, no admin powers. Pay with BNB directly in the UI. |
| USDT (BSC-USD) | 0x55d398326f99059fF775485246999027B3197955 | 18 | Binance-Peg. Not upgradeable, no blacklist, no transfer fee. The settlement asset. |
| USDC (Binance-Peg) | 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d | 18 | Upgradeable proxy. |
| USD1 | 0x8d0D000Ee44948FC98c9B98A4FA4921476f08B0d | 18 | Freeze-capable, upgradeable. |
| FDUSD | 0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409 | 18 | Freeze-capable, upgradeable. |
| BTCB | 0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c | 18 | Binance-Peg BTC. |
| ETH (Binance-Peg) | 0x2170Ed0880ac9A755fd29B2688956BD959F933F8 | 18 | |
| CAKE | 0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82 | 18 | |
| XAUt (Tether Gold, RWA) | 0x21cAef8A43163Eea865baeE23b9C2E327696A3bf | 6 | The first real-world-asset quote. Freeze-capable, upgradeable. |
Freeze-capable quotes (USD1, FDUSD, XAUt) can be paused or blacklisted by their issuers. If an
issuer freezes a coin's pool or the FeeVault, trading or claims in that asset stop, and the
locked liquidity cannot be migrated. The UI marks these quotes with a badge. See
risks.
Consolidation. Every Tier 1 quote has a route to USDT in the mainnet config
(contracts/config/56.json), so the beneficiary can always consolidate
it. A creator-triggered consolidation also needs a Chainlink price feed: WBNB, BTCB, ETH and
CAKE have one. USDC, USD1, FDUSD and XAUt do not (stablecoin feeds update less often than the
registry's 1-hour freshness bound, and XAUt has no feed), so only the beneficiary can consolidate
them. Every configured feed passed the BSC fork test on 2026-10-04; it is re-run before any new
broadcast.
Default starting values
Each quote token has a default starting market cap of roughly $7.5k FDV and an allowed starting-tick window of about $2k to $250k FDV (at 2026-10-02 prices). Ticks are in token0 orientation for a 1B-supply, 18-decimal coin with tick spacing 200.
| Quote | Default start FDV | Default tick | minStartingTick | maxStartingTick |
|---|---|---|---|---|
| WBNB | 10 WBNB | -184400 | -197800 | -149400 |
| USDT / USDC / USD1 / FDUSD | 7,500 | -118200 | -131400 | -82800 |
| BTCB | 0.09 BTCB | -231400 | -244600 | -196200 |
| ETH | 2.8 ETH | -197000 | -210400 | -161800 |
| CAKE | 3,000 CAKE | -127200 | -140800 | -92400 |
| XAUt | 1.8 XAUt | -477800 | -491000 | -442600 |
The formula is p_raw = (FDV_in_quote / 1e9) × 10^(quoteDecimals − 18), then
tick = floor(log_1.0001(p_raw) / 200) × 200. The on-chain bounds are a sanity rail against
fat-finger or griefing starts (for example a near-zero FDV that hands the supply to a sniper),
not a pricing engine. The SDK computes the default from a live USD price and clamps it into the
bounds.
Tier 2: admitted through the QuoteRegistry
Other tokens can be admitted through the QuoteRegistry (owner-controlled; on mainnet currently a single EOA with no timelock, see
trust assumptions). The
owner first approves the exact configuration (its hash). Anyone can then run the admission,
supplying the test tokens themselves. Admission checks:
- a registered settlement route to USDT (Infinity CL pools or PancakeSwap V3), used when fees are consolidated;
decimalsbetween 6 and 18;- a transfer round-trip with no fee on transfer;
- route depth: a small sale and a
maxSwapSizesale along the route may differ in rate by at mostmaxDeviationBps, and both must clear the oracle bound when a price feed is set.
Each registry entry stores {tier, enabled, minStartingTick, maxStartingTick, executor, route, priceFeed, maxDeviationBps, maxSwapSize}. The registry holds the factory's admin role and
mirrors {enabled, minStartingTick, maxStartingTick} into ZkPadFactory.setQuoteToken, which
is the allow-list launches actually check. A guardian can disable a quote for new launches at
once; existing pools keep trading. These checks are sanity rails. KYC-gated, rebasing or
upgradeable tokens cannot be detected on-chain, so the owner's review remains the real gate.
Details are in the consolidation reference.
bStocks: tokenized stocks and ETFs (Tier 2, RWA)
bStocks are Binance's tokenized US stocks and ETFs on BNB Smart Chain (NVDAB, TSLAB, SPYB, QQQB and others; CoinGecko category bStocks Ecosystem). Coins can pair against any bStock that has a PancakeSwap route to USDT with at least about $5k of depth. That was 35 of 82 on 2026-10-05. The launch form has a separate RWAs · Stocks tab listing every bStock with its live liquidity. Tokens that are not enabled show the reason (no PancakeSwap route, or thin liquidity).
- Why they qualify: no transfer fee, no rebasing, no allowlist. Splits and dividends are applied through an ERC-8056 UI multiplier that changes displayed amounts, never raw balances or pool prices.
- Freeze-capable (Tier 2): the issuer can blocklist addresses, sanctions-list addresses across all bStocks, pause one bStock or every bStock at once, and upgrade all of them through one beacon. A pause stops trading in every pool paired against the affected bStocks. Locked liquidity cannot be migrated.
- Consolidation: fees in a bStock consolidate to USDT through its PancakeSwap V3 route (bStock/USDT, or via WBNB). There is no Chainlink feed, so only the beneficiary can trigger it, with their own signed minimum. Creators cannot.
The full review, per-token routes and tick bounds are in docs/research/bstocks.md.
Always rejected
| Rejected | Why |
|---|---|
| Fee-on-transfer or taxed tokens | Pool accounting, FeeVault credits and Railgun shielding all depend on exact balance deltas. |
| Rebasing tokens (rUSDY, stETH-style) | Balances change without transfers, so the ledgers drift. |
| KYC-gated or allow-listed tokens (USYC, BUIDL, VBILL, iBENJI, USDY) | The pool, locker, vault, relayer, adapters and fresh stealth recipients are all arbitrary addresses that cannot be allow-listed. |
| Tokens with transfer hooks (ERC777 / ERC1363 callbacks) | Re-entrancy surface. |
| Tokenized securities whose corporate actions change balances (xStocks, Ondo GM tokens) | Dividends, splits and trading-hour pauses break a permanently locked pool. bStocks are the exception, see above. |
| Deprecated or illiquid tokens (BUSD, Binance-Peg PAXG) | No reliable route or price. |
Disabling a quote token
Disabling a quote token (enabled = false) only stops new launches. Existing pools, fee
collection and claims keep working.
Privacy note
All beneficiaries' fees are eventually consolidated into USDT before shielding, so the choice of quote token does not change the final anonymity set. Before consolidation, a balance in an unusual quote token is easier to tell apart than one in WBNB or USDT.