Help & policy
Mainnet readiness
OHKO is built to run on Solana mainnet, but today it is a devnet deployment with tokens that have no value. Real-money staking needs the work below first. Each item is a decision or an action for a person, not a code change that is waiting to be written.
Checklist
Security
- Independent audit of the
ohko_escrowprogram, and fixes for every finding, before any mainnet deployment. The threat model and every on-chain check are documented inprograms/ohko_escrow/SECURITY.md; the application threat model is inSECURITY.mdat the root of the repository. - Verifiable build of the program, published with its source hash.
- Penetration test of the game server, the WebSocket protocol and the web app.
Legal
- Legal review in every target jurisdiction. Skill-based staking, tokens, fees and prizes are regulated differently around the world. Decide where OHKO may operate, and geofence everywhere else.
- Terms of Service, Privacy Policy and Responsible Play reviewed by counsel for those jurisdictions, including age verification requirements beyond the 18+ confirmation.
- Tax and reporting obligations for prizes and the token.
Keys and authorities
- Referee key in an HSM or KMS. The referee decides results, so its key must never sit in a
file on the server. Add alerting on unexpected settlements and a rotation runbook
(
update_configrotates it). - Keeper key in an HSM or KMS, with alerts on every buyback vault withdrawal.
- Multisig admin. Hand the program
Configadmin to a multisig (two-steptransfer_adminandaccept_admin). Treasury withdrawals, parameter changes, pausing and season payouts then need several signers. - Multisig or timelocked upgrade authority, so the program cannot be replaced by one key.
- Revoke the $OHKO mint authority right after the initial mint (the devnet script already does this) and publish the mint's metadata.
Token and buyback
- Enable the Jupiter adapter. Set the buyback adapter to Jupiter for mainnet (the devnet mock pools refuse to run there, and Jupiter refuses to run anywhere else). Review the slippage limit and the price impact cap against real liquidity.
- Seed real liquidity for $OHKO before buybacks start, and decide the initial distribution.
- Replace mock USDC with the real USDC mint in the program configuration (mints are fixed at initialization, so this is a fresh deployment).
- Remove the faucet: it exists for devnet only.
Operations
- Monitoring and alerting: settlement latency and failures, referee and keeper balances,
dead-letter jobs (
/api/health/jobs), RPC error rates, WebSocket disconnects, and the error tracking hook (SENTRY_DSN). - Dedicated RPC providers (at least two, for failover) instead of public endpoints.
- Database backups with tested restores; Redis persistence for queues and nonces.
- Horizontal scaling of live battles (sticky routing by battle id) if one game server is not enough.
- An incident runbook: pausing (
set_pausedblocks new matches but never refunds), rotating the referee, and communicating with players. - A real support mailbox for request-ID reports.
- A human-check provider with production keys (the devnet build uses Cloudflare's test keys when none are configured; mainnet refuses to start without real ones).
What already works in OHKO's favour
- Every match can be refunded by anyone after its deadline, even if OHKO's servers are gone.
- The program never mints $OHKO, caps the rake at 10% and validates every account.
- Every staked match is verifiable from public data (Provably fair).
- Holder discounts, referrals, the fee split and season payouts all run on-chain, so revenue and prizes are auditable.