ShainShain/docs
Product

FAQ

Questions traders actually ask before integrating. Keep scrolling; there is no fluff.

Is this a mixer?

No. Shain is a holder-gated session layer. Your balances never leave your wallet, and no commitment tree is ever produced. Shain adds a visibility window to the public ledger; it does not pool funds.

Does Shain make me anonymous?

No. Your wallet address is visible before, during and after a session. What Shain attenuates is the ability of mempool watchers to correlate your actions during the session. The signer pubkey remains the same.

Why exactly 24 hours?

24 hours is long enough to accommodate a trading day and short enough that the program never becomes a de-facto anonymity layer. The number is configurable on the ShainConfig PDA at deployment and can only be changed by redeploying — it is not a runtime switch.

Can I reopen a session immediately?

Yes, after expiry. Once the first session is expired, you can call close_session and then start_session in the same transaction. The fresh session pays the fee again and resets the action counter, but your lifetime total_sessions on the session PDA carries forward.

What if I run out of $SHAIN mid-session?

Your current session continues until expires_at. The minimum-balance check only runs at start_session time. You will not be able to open the next session until you top back up.

How heavy is integration?

For a TypeScript dapp: one instruction builder call plus a session-state read before each sensitive action. For an Anchor program that wants to gate its own instructions: one CPI into gated_action. See Integration / CPI from Anchor.

How does the session fee work?

The fee is paid in $SHAIN (not SOL). On start_session, the program CPIs into SPL Token to transfer session_fee from your ATA to the treasury ATA. The treasury is a PDA-owned ATA; disposition rules (buyback, burn, etc.) are published in the changelog.

When mainnet?

The program compiles and passes 9/9 litesvm tests. Mainnet deployment is gated on an independent audit. No mainnet contract address will be published in these docs until the program is live on mainnet-beta.

Can the team close my session?

No. There is no instruction in the program that lets the authority mutate or close a holder's session. The only paths to close are time-based expiry and post-expiry close_session, which always refunds rent to the owner.

Has Shain been audited?

Not yet. Status is tracked on Security.

Still didn't answer your question?

Open a discussion on GitHub Discussions or ping @shainfun.