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...", "..."]
# }
# }