Home › BlindOracle › 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.
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
See live settled cash on the marketplace (proves the rail works)
curl https://api.craigmbrown.com/a2a/treasury/balances