Skip to content
ZECDock
ZECDock / Docs

The ZECDock field guide.

The network, the market, and the mechanics, written from the contracts rather than from marketing.

What is ZECDock?

ZECDock is a token launchpad on Robinhood Chain (an Arbitrum Orbit L2, chain ID 4663) where every market is quoted in wrapped ZEC instead of ETH or a stablecoin. You pay for tokens with zZEC, sell them back for zZEC, and when a curve sells out the token graduates into a Uniswap V3 token/zZEC pool whose liquidity is locked forever.

Typical launchpadZECDock
new token ↔ ETHnew token ↔ wrapped ZEC (zZEC)
gas in ETHgas still in ETH
pool on a DEXlocked Uniswap V3 pool

ZECDock does not run a bridge. It integrates an existing wrapped ZEC, zZEC v2 by ZEAL, after checking its contract, backing, redemption path and liquidity (see zZEC verification). No account is needed: connect an EVM wallet, switch to Robinhood Chain and sign transactions. The app never asks for a private key.

How launches work

  1. Create. The creator submits a name (≤ 32 bytes), ticker (≤ 12 bytes) and optional metadata: description, artwork URL and links (≤ 2 KB in total, stored on-chain in the token). The factory deploys a fixed-supply ERC-20 of 1,000,000,000 tokens and opens its curve in the same transaction.
  2. Optional first buy. The creator can buy in the launch transaction itself, before anyone else can trade. It pays the normal trade fee but not the anti-snipe surcharge. There is no free creator allocation: every token is either sold on the curve or seeds the pool.
  3. Trade on the curve. 800M tokens are sold on a bonding curve priced in zZEC. Anyone can buy or sell at any time while the curve is open.
  4. Graduate. When the last curve token is sold, the raised zZEC and the remaining 200M tokens seed a full-range Uniswap V3 pool (1% fee tier). The LP position NFT stays in the factory forever.

Launch terms (fees, graduation target, anti-snipe window) are copied into each curve at creation. Later admin changes never apply to a live market.

The bonding curve

Each curve is a constant-product market over virtual reserves: a virtual zZEC reserve X and a virtual token reserve Y with X · Y = k. Buying adds zZEC to X and removes tokens from Y; selling does the reverse. The spot price is X / Y zZEC per token.

A = 800,000,000   (curve supply)      L = 200,000,000   (LP reserve)
Y₀ = A² / (A − L) ≈ 1,066,666,667     X₀ = T · (Y₀ − A) / A = T / 3
tokens out = Y · net / (X + net)       zZEC out = X · tokens / (Y + tokens)

T is the graduation target: the zZEC raised when all A tokens are sold. These starting reserves are chosen so the curve's closing price equals T / L, exactly the price at which the pool opens with T zZEC and L tokens. There is no price jump at graduation. Over the curve the price rises 16× from the first to the last token, and the fully diluted market cap at graduation is 5 · T.

All rounding favours the curve, so it can never owe more zZEC than it holds. This is enforced by stateful fuzz tests (thousands of random buys, sells, claims and graduations against a fork of Robinhood Chain), which check that the factory's zZEC balance always covers every curve reserve plus unclaimed creator rewards.

Trading

  • Quotes come from the contract. The trade panel calls quoteBuy / quoteSell, which mirror execution exactly (including fees and sell-out refunds), then simulates the transaction before your wallet opens.
  • Slippage and deadlines. Every trade carries a minimum output (default 2% tolerance, adjustable) and a 20-minute deadline.
  • Approvals. zZEC and token approvals are exact-amount by default. You can opt into unlimited approvals per browser.
  • Buying out the curve. If a buy is larger than what is left, only the zZEC needed is charged and the rest is refunded in the same transaction, which then graduates the token.
  • After graduation the curve closes and the token trades on its Uniswap V3 pool. ZECDock routes those trades through Uniswap's canonical SwapRouter02 with QuoterV2 quotes, so you can keep trading from the same page.
  • Sells are never pausable. The admin can pause new launches and curve buys in an emergency; exits are always open.

Fees & rewards

Current parameters for new launches, read live from the factory:

Reading factory…

Uniswap V3 factory 0x1f7d7550B1b028f7571E69A784071F0205FD2EfA

  • Trade fee is taken in zZEC on every curve buy and sell. A share accrues to the creator, claimable any time (anyone can trigger the claim; funds always go to the creator). The rest goes to the treasury.
  • Anti-snipe surcharge. Right after launch an extra fee applies that decays linearly to zero over the window. It goes to the treasury, so creators gain nothing from bots trading their own launch. The creator's atomic first buy is exempt.
  • LP fees. After graduation, the locked position earns the Uniswap 1% pool fee. Anyone can call collectLpFees; the split between creator and treasury is fixed at launch.
  • Hard caps are written into the contract: trade fee ≤ 2%, graduation fee ≤ 5%, anti-snipe ≤ 50% for ≤ 10 minutes, launch fee ≤ 0.05 ETH.

Graduation

When a curve sells out, the factory creates (or reuses) the token/zZEC 1% Uniswap V3 pool, sets its price to the curve's closing price, and mints a full-range position with the raised zZEC and the 200M reserve. If a graduation fee is configured, the matching share of reserve tokens is burned so the opening price is unchanged.

Front-running protection

Anyone can create and initialize a Uniswap pool before graduation. To stop an attacker from seeding it at a hostile price, each token blocks transfers into its own pool address until the graduation transaction flips a one-way flag. Any liquidity an attacker adds beforehand can only be zZEC, so the factory can safely walk a pre-set price back to the curve's closing price before adding liquidity; the attacker only loses money. These scenarios, and one where hostile liquidity absorbs the whole reserve, are covered by fork tests.

Liveness

Graduation runs inside the buy that sells out the curve. The contract requires enough gas to be left for it, so wallet gas estimation includes it. If it still fails, the buy stands, trading pauses, and anyone can finish the job with graduate() (the token page shows a button).

zZEC verification

We read the verified source of Zeal Wrapped Zcash v2 (0x1955d3b7EE8291DFbc8188E73409a42654913A25) and its live state before integrating it. A website confirms what an issuer claims, not what its contract does.

Contract

  • Verified on Blockscout: Solidity 0.8.24, OpenZeppelin ERC20 + Ownable2Step + ReentrancyGuard. No proxy, so the logic cannot be upgraded.
  • Transfers are plain OpenZeppelin transfers: no fee-on-transfer, blacklist or transfer pause. The factory also checks that the zZEC it receives matches the amount requested, and reverts otherwise.
  • Decimals are 8 (zatoshi precision), not 18 as the issuer's website states. ZECDock reads decimals on-chain.

Backing & issuance

  • Reserve-backed, not trustless. An operator holds native ZEC at a published transparent address and posts attestations on-chain. Minting is capped by the attested reserve, and attestations expire if not refreshed.
  • Payouts made by the operator are debited from usable reserve until the next attestation (a fix from the issuer's September 2026 review).
  • Live coverage, supply, attestation age and pause flags are shown on the zZEC page.

Redemption

  • Holders escrow zZEC in the contract and a reporter/verifier pair confirms the native ZEC payout before escrow is burned. Open requests can be cancelled or reclaimed after a delay; disputed payouts go through a delayed resolution.
  • Current operational limits per the issuer: 0.01–0.5 ZEC per request and a rolling 0.5 ZEC daily cap.

Risks we want you to know

  • Owner, minter and guardian are single-key accounts (EOAs), not multisigs or timelocks.
  • The issuer lists an independent audit as a remaining gate. Total supply and DEX liquidity are small.
  • If zZEC lost its backing, every market quoted in it would be affected. ZECDock cannot change a market's quote asset after launch.

Security model

  • Immutable contracts. The factory and tokens are not upgradeable. Tokens have no owner, no mint function and no taxes.
  • What the admin can do: change parameters for future launches within hard caps, change the treasury address, pause new launches and curve buys, and sweep zZEC sent to the factory by mistake (never curve reserves or creator rewards, which the contract tracks).
  • What the admin cannot do: move curve funds, touch LP positions, change a live market's terms, pause sells, or renounce ownership (which would freeze fee routing). Ownership moves with a two-step transfer.
  • Testing. The contracts are tested against a fork of Robinhood Chain with the real zZEC and Uniswap V3 deployments: unit, fuzz and invariant suites, including hostile-pool and graduation-failure cases.
  • Audit status. The ZECDock contracts have not had an independent audit yet. Treat every launch as experimental.

Contracts

ZecLaunchFactory0x6769378CaC21A6801086cC1dbDB313026C1bA06a
zZEC v2 (quote asset)0x1955d3b7EE8291DFbc8188E73409a42654913A25
Uniswap V3 Factory0x1f7d7550B1b028f7571E69A784071F0205FD2EfA
Uniswap V3 NonfungiblePositionManager0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3
Uniswap SwapRouter020xCaf681a66D020601342297493863E78C959E5cb2
Uniswap QuoterV20x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7
WETH (Robinhood Chain)0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73

Uniswap pools use the 1% fee tier (tick spacing 200). Addresses verified against Uniswap's Robinhood Chain deployment list and on-chain reads.

Data & indexing

  • Balances, curve state, quotes and trading always come straight from Robinhood Chain.
  • Charts, trade history, holders and 24h statistics come from an open-source indexer (Ponder) that follows the factory from its deployment block, including post-graduation Uniswap swaps. If it lags or is down, market lists fall back to on-chain reads and trading keeps working.
  • USD values use a public ZEC/USD price and treat zZEC as 1:1 with ZEC. They are informational; settlement is always in zZEC.
  • Watchlists and settings live in your browser. ZECDock stores nothing about you.

FAQ

Do I need ETH?

Yes, a little ETH on Robinhood Chain for gas. Markets themselves only use zZEC.

Is a ZECDock token a Zcash token?

No. Tokens launched here are ordinary ERC-20s on Robinhood Chain priced in zZEC. They are not shielded and are not endorsed by Zcash, ZEAL or Robinhood.

Can the creator rug the liquidity?

No. There is no creator allocation, and the Uniswap position is held by the factory, which has no function to withdraw it.

Why did my buy show a refund?

Your buy was larger than what was left on the curve. You paid only for the remaining tokens.

Why is my transaction's gas limit higher when I buy the last tokens?

That buy also graduates the token, which creates and funds the Uniswap pool. The contract insists on enough gas so graduation cannot silently fail.

Where can I get zZEC?

See Get zZEC: wrap native ZEC through ZEAL or swap on ZEAL's Uniswap pool.