How it works
Shieldz is a thin routing + notification layer over two existing systems:
Zcash's shielded pool and MAYAChain's cross-chain swap protocol.
The on-chain mechanic
When a customer pays an invoice, their Zcash wallet broadcasts a shielded transaction with two things:
- A transparent output sending ZEC to MAYAChain's inbound vault (the same
t1… for every Shieldz invoice).
- A zero-value Sapling note carrying an encrypted memo addressed to MAYAChain's unified address. The memo encodes:
=:<to_asset>:<to_address>:<limit>:leo:75
Where to_asset is the merchant's chosen USDC contract, to_address is their settlement address, limit is the slippage-protected minimum output, and 75 is the affiliate bps (Shieldz's take).
MAYAChain's observers see the ZEC arrive, decrypt the memo via their unified address's incoming-viewing key, and execute the swap. USDC is delivered directly to the merchant's address. The buyer's identity stays inside the shielded pool.
What Shieldz adds
- Invoicing: a Stripe-shaped API that pre-computes the right quote (ZEC amount, USDC output, memo) for a given USD invoice amount.
- Hosted checkout: a public URL the customer can pay from — collects their refund address, shows the deposit details, generates a QR code, deep-links into the Shieldz Telegram wallet.
- Observer: polls MAYAChain's status endpoint and updates invoice state in real time.
- Webhooks: signed HTTP callbacks to the merchant's server with HMAC-SHA256 + replay protection.
- Merchant dashboard: Telegram Mini App for onboarding, API keys, webhook config, invoice history.
What Shieldz is NOT
- Not a custodian. Zero shielded value pools anywhere on our infrastructure. Every payment is an atomic flow buyer → MAYAChain → merchant.
- Not a market maker. The swap is executed by MAYAChain's pool. We don't quote against our own inventory.
- Not a wallet. The Shieldz wallet (the Telegram mini-app) is a buyer-side convenience. Any shielded Zcash wallet can pay a Shieldz invoice via the ZIP-321 URI.
Failure modes
When the swap can't be completed (slippage trips, MAYAChain pool is halted, no liquidity at this size), MAYAChain refunds the ZEC to the buyer's original t-address — which is why we require it at checkout time. The buyer is whole; the merchant gets nothing; the invoice transitions to failed and a webhook fires.
Stack
Buyer walletAny shielded Zcash wallet (the Shieldz wallet integrates deep-links; Zashi/Nighthawk work via ZIP-321 QR)
Hosted checkoutServer-rendered HTML on shieldz.cash, no JS framework
AggregatorLeoKit (open-source cross-chain swap aggregator)
Swap protocolMAYAChain (continuous liquidity pools, shielded-memo decoder)
Merchant dashboardTelegram Mini App at merchant.shieldz.cash