Two contracts. No owner, no upgrade, no hidden switch.
Everything OSCRA does on-chain lives in OscraRunbook and OscraKeel on Robinhood Chain (chain 4663). Settings are constructor values; nothing can change them after deployment.
OscraRunbook
0x1b9ac660b034e7ed285518a18443af12a854eb92
Needs no token. Fee 20 bps, holders 10 bps, zero until bound.
OscraKeel
not deployed yet
Deployed after $OSCRA launches (its address is a constructor value).
OscraRunbook functions.
- openPlan(terms) / tunePlan(id, terms)
- Write or change a plan: lane, order size, pace, budget, ceiling, slippage, guard, target, tip, start.
- holdPlan / resumePlan / closePlan(id)
- Owner-only state changes.
- runPlan(id)
- Anyone may call when due. Checks feed age, ceiling, guard and target, pulls one order, swaps, delivers to the owner.
- post(lane, sell, weightBps)
- Publish an idea as a desk; the feed price is stored with it.
- follow(desk, terms) / unfollow(desk)
- Start or change a follow with your limits; only later ideas count.
- skip(signalId)
- Veto one idea for your wallet.
- mirror(follower, signalId)
- Anyone may call inside the follower's copy window. Applies every follower limit, then buys or sells.
- bind(keel)
- One call, once, by the deploying wallet: links the staking contract and switches fees on.
Events: PlanOpened, PlanTuned, PlanStateChanged, Bought, Posted, Followed, Unfollowed, FollowStopped, Skipped, Mirrored, Bound. Limits: pace 1 h to 90 d, slippage 0.5% to 5%, review delay up to 48 h, copy window 6 h, tip up to 1/10 of an order.
OscraKeel functions.
- stake(amount) / unstake(amount)
- Stake $OSCRA; unstaking waits while a poll you voted in is open.
- pour() / claim()
- Count newly arrived USDG fees / pay out your share.
- openPoll(title, choices, duration)
- Needs 500,000 $OSCRA staked; 2 to 6 choices, 1 to 14 days.
- vote(id, choice)
- Weight = your stake; locks it until the poll ends.
Events: Staked, Unstaked, Poured, Claimed, PollOpened, Voted.
Lanes fixed at deployment.
Swaps go through Uniswap v3 SwapRouter02 0xCaf681a66D020601342297493863E78C959E5cb2 against USDG 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168. Each deployment can be checked against this build with npm run verify-deployment, which compares runtime code, every immutable, the stored lanes and the exact constructor input.