Notice

Docs Update

Trigger functionality is not available yet. Please stay tuned.

Developer Docs

Trigger Script

Use this script when pool state is SnapshotLocked.

// Ohwoo Prize Trigger Script (Node.js)
import { Connection, PublicKey } from '@solana/web3.js'
import { AnchorProvider, Program } from '@coral-xyz/anchor'
import {
  ASSOCIATED_TOKEN_PROGRAM_ID,
  TOKEN_2022_PROGRAM_ID,
  TOKEN_PROGRAM_ID,
  createAssociatedTokenAccountInstruction,
  getAssociatedTokenAddressSync,
} from '@solana/spl-token'
import idl from './idl/ohwoo_pool.json'

const RPC_URL = process.env.RPC_URL
const POOL_PRIZE = "Bk64WKgykL883JLGX1p3EN3tPNyuQvAkTJapfRr9FCZi"
const OHWOO_POOL_PROGRAM = "oho63UvjRqStVqSZjMYZYfXSUubTAacHFkYdeEKNY3L"
const OHWOO_MINT = "oHo3ssTsm9bxtegyRMpYsvASVGQAF2SYqeX1JjJWXRA"
const TREASURY_OHWOO_VAULT = "BS7K1WdwGPAi95D9SuADx387vi1hFodpB7wUpeXtcc64"

const connection = new Connection(RPC_URL, 'confirmed')
const wallet = /* load your wallet */
const provider = new AnchorProvider(connection, wallet, { preflightCommitment: 'confirmed' })
const program = new Program(idl, OHWOO_POOL_PROGRAM, provider)

const mintInfo = await connection.getAccountInfo(new PublicKey(OHWOO_MINT))
if (!mintInfo) throw new Error('OHO mint not found')
const tokenProgramId = mintInfo.owner.equals(TOKEN_2022_PROGRAM_ID)
  ? TOKEN_2022_PROGRAM_ID
  : TOKEN_PROGRAM_ID

const triggererOhwooAccount = getAssociatedTokenAddressSync(
  new PublicKey(OHWOO_MINT),
  wallet.publicKey,
  false,
  tokenProgramId,
  ASSOCIATED_TOKEN_PROGRAM_ID
)

const preInstructions = []
const ataInfo = await connection.getAccountInfo(triggererOhwooAccount)
if (!ataInfo) {
  preInstructions.push(
    createAssociatedTokenAccountInstruction(
      wallet.publicKey,
      triggererOhwooAccount,
      wallet.publicKey,
      new PublicKey(OHWOO_MINT),
      tokenProgramId,
      ASSOCIATED_TOKEN_PROGRAM_ID
    )
  )
}

await program.methods
  .drawWinner()
  .accounts({
    pool: new PublicKey(POOL_PRIZE),
    triggerer: wallet.publicKey,
    triggererOhwooAccount,
    treasuryOhwooVault: new PublicKey(TREASURY_OHWOO_VAULT),
    ohwooMintAccount: new PublicKey(OHWOO_MINT),
    ohwooTokenProgram: tokenProgramId,
  })
  .preInstructions(preInstructions)
  .rpc()

Claim Proof API

Frontend claim flow requires proof data from keeper API.

# Fetch claim proof from keeper API
curl "https://api.ohwoo.fun/api/claim?pool=prize&winner=<YOUR_WALLET>"

# Response shape:
# {
#   "data": {
#     "winnerLeafAmount": "...",
#     "cumulativeWeightUntil": "...",
#     "proof": ["0x...", "..."]
#   }
# }