Your first proposal
Run the end-to-end example after reviewing the request and bond.
Submit your first signed proposal with the complete script and its environment template. You choose the outcome and fund the bond; the relayer submits the transaction and pays proposal gas. Read getting started for the MEV-protection goal and the permissions you retain.
The example uses the optional signing-data helper to construct the typed data. Your own integration can build and verify the Permit2 witness from current request data and trusted configuration, sign locally, and submit directly without a preparation API call.
1. Confirm what you are proposing
Derive the question ID from your indexed request. Read its full market rules and authorized clarifications, verify final evidence, and match the selected outcome to the returned label and price. An incorrect outcome can cost you your bond.
Check that wallet eligibility returns eligible: true; ask the operator to enable your address if needed. Your wallet must hold the required bond token and have sufficient Permit2 allowance. If allowance is missing, you must first send an on-chain approval and pay its gas. Review the two permissions and independently verify the expected chain and contract addresses before approving or signing. Use an operator-provided sandbox configuration for a trial.
2. Configure and run
Open the script page, fill in its .env template, and save the script, package.json, and yarn.lock beside it. Use Node.js 22+ and Yarn Classic 1.22.22.
yarn install --frozen-lockfile
node --env-file=.env propose.mjs --submitThe script validates the request and authorization, signs locally, saves the payload, submits it, and tracks the candidate until confirmation or an unsuccessful result. It does not decide whether your answer is factually correct. Omit --submit to sign and save without submitting.
3. Follow through to settlement
Keep the candidate ID and transaction hash. confirmed or indexed means the proposal is on-chain; continue following the oracle's liveness, dispute, and settlement events through your existing indexer.
If a run is interrupted, resume the saved candidate (or replay the exact payload if its acknowledgement was lost):
node --env-file=.env propose.mjs --resume --submitDo not replace an authorization while it may still execute. Status and retries explains recovery; the candidate API does not report final oracle settlement.