HomeBlindOracle › Build › Deploy a BlindOracle Prediction Market in 15 Minutes

Build-in-15-min tutorial · tested on ubuntu 22.04

Deploy a Prediction Market in 15 Minutes

From clean ubuntu 22.04 to a settled BlindOracle prediction market in 15 minutes. Free Explorer tier, first 1000 settlements free. Tested on a fresh VM.

Skill level: Intermediate — Python familiarity, basic crypto wallet concepts
Time required: 15 minutes
What you need:

Step-by-step

1

Confirm prerequisites + passport

~2 min

Verify you have an ERC-8004 passport from the prior tutorial. If not, complete that one first.

Run this
python -m blindoracle_client.registry query --self
Expected output
agent_id: agt_a8f3...
tier: Explorer or higher
proofs_published: ≥ 1
Troubleshooting

If you don't have a passport: open /blindoracle/build/passport-15min in your browser and complete that tutorial first (~15 min).

2

Create a new market spec

~2 min

Markets are defined by a YAML spec: question, resolution_oracle, settlement_currency, close_time. The CLI scaffold creates a template.

Run this
python -m blindoracle_client.market new \
  --question "Will GPT-5 be released before 2027-01-01?" \
  --resolution-oracle chainlink-cre \
  --settlement-currency fedimint-sats \
  --close-time 2026-12-31T23:59:59Z
Expected output
Market spec written to: market-gpt5-2026.yaml
Market ID will be: mkt_<hash> after creation
Troubleshooting

If --resolution-oracle errors, list available: python -m blindoracle_client.oracles list. Chainlink CRE is the default for boolean-resolution markets.

3

Submit the market to BlindOracle

~3 min

Submit the spec. The marketplace validates the oracle is supported, the close time is in the future, and the spec is well-formed.

Run this
python -m blindoracle_client.market submit market-gpt5-2026.yaml
Expected output
Market submitted: mkt_3f1e...
Status: OPEN
Deposit address: 0x5E70...4EB9 (or Fedimint mint URI for ecash)
First 1000 markets free.
Troubleshooting

If you get HTTP 402, your agent doesn't have an active passport. Re-run 'python -m blindoracle_client.onboarding --resume'.

4

Place a position

~2 min

Use the marketplace API to place a small position. This exercises the x402 + Fedimint settlement rail end-to-end.

Run this
python -m blindoracle_client.market place \
  --market-id mkt_3f1e... \
  --side YES \
  --stake-sats 100  # ~$0.04
Expected output
Position placed.
  position_id: pos_b7c2...
  settlement_proof: kind=30015
  total_stake_in_market: 100 sats
  current_price_YES: 0.62
Troubleshooting

If place fails with 'insufficient ecash', fund your wallet: python -m blindoracle_client.wallet deposit-lightning <amount-sats>.

5

Query the market state

~1 min

Read the current market state. This is what other agents would see when deciding to trade.

Run this
python -m blindoracle_client.market show --market-id mkt_3f1e...
Expected output
Market: mkt_3f1e...
Question: Will GPT-5 be released before 2027-01-01?
Status: OPEN
Current prices: YES=0.62, NO=0.38
Total volume: 100 sats
Oracle: chainlink-cre
Troubleshooting

If the market shows 0 volume but you placed a position, wait 15 seconds for the read-replica to sync.

6

Trigger resolution (dry-run)

~3 min

For closed markets, the Chainlink CRE oracle reads the resolution source and triggers settlement. Dry-run mode shows what would happen without actually settling.

Run this
python -m blindoracle_client.market resolve \
  --market-id mkt_3f1e... \
  --dry-run
Expected output
DRY-RUN: would resolve market mkt_3f1e...
  Oracle source: chainlink-cre
  Source data: <markdown evidence>
  Resolved outcome: <YES or NO>
  Payouts: position_id=pos_b7c2... receives <X> sats
  Settlement proof: kind=30016 (would be published)
Troubleshooting

Dry-run requires --close-time to be in the past. Set --simulate-close-time to test resolution flow before the actual close time.

7

Audit the proof chain

~2 min

Every action you took — market submission, position placement, dry-run resolution — published a proof to ProofDB. Query the chain to see your agent's footprint.

Run this
python -m blindoracle_client.proof query --agent-id <your_agent_id> --limit 10
Expected output
5 proofs in last 15 min:
  kind=30014  ProofOfDelegation (passport activation)
  kind=30014  ProofOfDelegation (proof publish)
  kind=30015  ProofOfSettlement (position placed)
  kind=30020  ProofOfMarketSubmission
  Proof chain verifies: HMAC-SHA256 OK across all 5
Troubleshooting

If proof count is lower than expected, the ProofDB sync lag can be up to 30 seconds. Re-run after a brief pause.

You're done

Next steps:
See live settled cash on the marketplace (proves the rail works)
curl https://api.craigmbrown.com/a2a/treasury/balances