Common Questions

Frequently Asked Questions

What's the current status?

RAIL20 is live on Base (chain 8453), Robinhood Chain (chain 4663), Arbitrum (chain 42161), and BNB Smart Chain (chain 56). Each chain has a native-asset pool plus stablecoin pool(s) open, with private send, same-chain swap, and cross-chain bridge available in the app.

Which tokens can I shield?

On Base: ETH and USDC (ETH pool 0x99205B045Fcf5ff2689ad6B038abF3dd35b79ddE, USDC pool 0x764FF96EabEeF2b197f845dD8D39441Ac68FDE11). On Robinhood Chain: ETH and USDG (Global Dollar) (ETH pool 0xBf6a26CEF8f6251B46Cc09D03A0f12Df5972d163, USDG pool 0x04F8d8E4C3f23fE2BfB80c6C46b7d7dfE6f853F0). On Arbitrum: ETH and USDC (native Circle USDC) (ETH pool 0xBf6a26CEF8f6251B46Cc09D03A0f12Df5972d163, USDC pool 0x04F8d8E4C3f23fE2BfB80c6C46b7d7dfE6f853F0). On BNB Smart Chain: BNB, USDC and USDT (Binance-Peg, 18 decimals) (BNB pool 0xBf6a26CEF8f6251B46Cc09D03A0f12Df5972d163, USDC pool 0x04F8d8E4C3f23fE2BfB80c6C46b7d7dfE6f853F0, USDT pool 0x8d484006882fDe2604968D5BE24D092DbAE2C04b). Each token has its own independent privacy pool - there is no shared vault; every token runs a separate ZK pool.

Any ERC-20-compatible token can get its own pool - adding one is a configuration change (token address, decimals, symbol), no contract, proof, or relayer changes. Rebasing tokens must run in non-rebase mode, since a shielded pool tracks fixed note amounts.

What if the contracts get sanctioned?

RAIL20 contracts are permissionless and non-custodial - no entity can freeze user funds or seize notes. Frontends (app.rail20.org) may be geo-blocked, but the contracts on Base cannot be taken down.

Why Base?

RAIL20 vs Mixer

FeatureMixerRAIL20
AmountsFixedArbitrary
WithdrawalWait for anonymity setInstant
After depositJust withdrawSend, swap, DeFi
Anonymity setSame denominationAll shielded users

Can I see my own balance?

Yes. Your balance is reconstructed in your browser: the app scans the pool's encrypted note outputs on-chain and decrypts the ones belonging to you with a key derived from your wallet signature, then sums the unspent notes. Nothing is sent to any server, and there is no account to register.

How private is it?

Privacy strength = anonymity set size. Every shielded note is a 32-byte commitment - indistinguishable on-chain. The bigger the set, the stronger the privacy.

What's hidden: transfer amounts, sender/recipient identities (when using a relayer). What's visible: shield deposit amounts (public transfer into the pool), commitment hashes (reveal nothing), nullifier hashes (prove spent but not which note).

Can I transact without ETH for gas?

Yes - a relayer pays gas on your behalf and charges you in the token you're transacting. You only need the token you're moving.

What are the protocol fees?

Is RAIL20 audited?

No formal audit yet. The ZK circuit uses standard, well-studied primitives (Poseidon hashing, zk-SNARK proving over BN254) and the contracts are open-source on GitHub. A formal audit is on the roadmap.

Treat RAIL20 as experimental. Start with small amounts. Funds are at your own risk until audit completes.

Is RAIL20 open source?

Yes. Public protocol docs and integration references are open-source at github.com/rail20dev/protocol. Contracts verified on Basescan.

What if I switch devices - do I lose my notes?

No. Your account keys are derived deterministically from a wallet signature, and every note is written as an encrypted output on-chain. On a new device you just connect the same wallet and sign once - the app rescans the pool and rebuilds your private balance. There is no seed phrase or note file to back up separately. The only way to lose access is to lose access to the wallet itself.