Housing markets,
priced onchain.
BID is a USDG-collateralized prediction-market protocol for finite real-estate outcomes. It runs on Robinhood Chain and uses a fixed-product pool so every market can quote a price before a natural counterparty arrives.
The contracts and interface are functional prototypes with automated tests. The final token CA and Pons launch record are awaiting verification.
Market model
The first beta is a single five-city market: Miami, Tampa, New York, Dallas and Phoenix. Trading closes March 5, 2027 at 23:59:59 UTC. Initial funding is 25 USDG, with an immutable 1 USDG per-order cap. Other markets are coming soon. The final BID token address is not required to deploy this pool.
Settlement is not automatic: the designated oracle submits the payout after data publication. The exact housing series, observation dates, tie rules and missing-data treatment must be published before accepting public trades. A closing date is not a guaranteed payout date. Fee claiming and automatic reserve spending remain disabled for the initial deployment.
Each market has between two and eight mutually exclusive outcomes. Depositing one unit ofUSDG creates one complete set: one unit of every outcome. After resolution, a complete set is always worth one unit of collateral because the payout vector must sum to 1.
Binary questions with one winning side.
Two locations compete under one metric.
One winner across three to eight locations.
Fixed-product pricing
BID holds outcome inventory in a pool and preserves the product of those balances through every trade. The displayed spot price is the normalized inverse balance for each outcome. Buying an outcome lowers that outcome's pool balance and raises its implied probability.
k = b₁ × b₂ × … × bₙ
pᵢ = (1 / bᵢ) ÷ Σ(1 / bⱼ)
Σpᵢ = 1Quotes and execution use integer math. UI prices are rounded to basis points; the transaction applies a 0.5% minimum-output guard.
Liquidity
LPs supply USDG and receive BID-LP shares proportional to the pool. When the pool is imbalanced, the deposit also returns excess outcome inventory so existing odds do not move. Deposits include a minimum-share check.
The standard withdrawal path burns BID-LP, merges the balanced portion of withdrawn inventory directly back into USDG, and leaves only the imbalance as redeemable outcome positions. A minimum-collateral check protects the transaction from pool movement.
Genesis funding
| Initial seed | Order cap | Use |
|---|---|---|
| 25 USDG | 1 USDG | Capped one-market beta |
USDG uses six decimals. Set BID_INITIAL_LIQUIDITY=25000000, BID_MAX_TRADE_AMOUNT=1000000, and BID_GENESIS_MARKET_COUNT=1. Zero liquidity cannot produce a quote. The 25 USDG seed remains protocol-owned and every genesis BID-LP share is minted directly to the liquidity vault.
Orders
| Order | Execution | Custody |
|---|---|---|
| Market buy | Immediate against pool | USDG moves only on execution |
| Market sell | Immediate against pool | Outcome balance burns on execution |
| Limit buy | Immediate or keeper-fillable | USDG escrowed; owner can cancel |
| Limit sell | Immediate or keeper-fillable | Maximum outcome input escrowed |
Resting limits are permissionlessly fillable, but production needs an indexer and keeper to detect executable orders and submit fills.
Settlement
Every market locks its question, outcomes, close time, and oracle address at creation. After close, the oracle submits a payout vector totaling 1e18. Traders redeem their outcome balances against that vector.
Five-city beta rules
The beta compares each metro's September 2026 to March 2027 monthly, not seasonally adjusted S&P Cotality Case-Shiller index distributed by FRED. Series: MIXRNSA, TPXRNSA, NYXRNSA, DAXRNSA and PHXRNSA. The highest full-precision percentage change wins. Trading closes before March data publication; settlement follows the first release containing every required observation. Exact ties split the payout, and a documented invalid-market fallback applies if a series remains unavailable. The versioned rule document's SHA-256 is embedded in the onchain market question.
The BID flywheel
BID's creator-fee layer is 1.5%. Pons may charge separate protocol or base fees, so BID does not publish an all-in fee until the production Pons contracts are verified. Only realized, claimed fees are allocated under BID_FEE_POLICY_V1.
Allocation status
| Allocation | Status | Behavior |
|---|---|---|
| LP rewards | RESERVE ONLY | Accrues to the funded rewards distributor. No LP payout is published until time-weighted eligibility and anti-snapshot rules are approved. |
| Market liquidity | AUTOMATION READY | The keeper allocates by actual depth deficit across approved, open markets once explicitly enabled. |
| Buyback + burn | RESERVE ONLY | Accrues without blind buying. No buyback or burn executes until quoting, slippage, simulation, and burn controls are deployed. |
| Treasury | LIVE WITH CLAIMING | Routes directly to the configured secure treasury address in the same allocation transaction. |
| Market creator rewards | RESERVE ONLY | Accrues until community markets and anti-wash reward rules are active. |
Smallest-unit rounding always accrues to treasury so the five allocations equal 100% of every fee event. Genesis BID markets charge a 0% prediction-market fee for now; network gas still applies.
Creator markets
Community creation is implemented but disabled by default. When governance enables it, a creator must hold a configured $BID balance, burn a configured amount, and seed the new market with USDG. The creator royalty is capped at 3%.
Deployment status
Addresses
- USDG
0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168- Pons v2 factory
0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e- BID market factory
AWAITING PUBLICATION- Flywheel treasury
AWAITING PUBLICATION- Rewards distributor
AWAITING PUBLICATION- Liquidity vault
AWAITING PUBLICATION- Buyback + burn reserve
AWAITING PUBLICATION- Protocol treasury
AWAITING PUBLICATION- Creator rewards reserve
AWAITING PUBLICATION- Genesis markets
AWAITING PUBLICATION
Production operator map
| Role | Configuration | Purpose |
|---|---|---|
| Pons creator recipient | BID_FLYWHEEL_TREASURY | Contract that atomically claims and enforces 45/30/10/10/5 |
| LP rewards owner | BID_REWARDS_OWNER | Safe that may publish reviewed, funded LP reward epochs |
| LP operator | BID_LIQUIDITY_OPERATOR | Railway keeper that deploys the 30% allocation |
| LP owner | BID_LIQUIDITY_VAULT_OWNER | Multisig that approves markets and controls withdrawals |
| Deployment payer | BID_DEPLOYER | Supplies the initial USDG and pays deployment gas |
The Pons recipient is the treasury contract, not a personal wallet and has no private key. Updating reserve destinations uses the treasury owner's setDestinations call; replacing the treasury uses transferPonsCreatorFeeRecipient after existing escrow balances are claimed.
Launch costs
There are three separate cost buckets: the Pons token-launch fee, Robinhood Chain gas, and USDG supplied to the prediction-market pools. Pool funding is protocol-owned capital represented by BID-LP shares; it is not paid away as a launch fee.
| Cost | Amount | Where it goes |
|---|---|---|
| Pons launch | Read live from the factory | Pons v2 launch transaction |
| Deployment + keeper gas | Variable ETH | Robinhood Chain validators |
| Capped beta seed | 25 USDG | One protocol-owned pool |
| Keeper reserve | 0.01 ETH minimum configured | Keeper wallet; spent only on transactions |
npm run costs:productionThis read-only command verifies Robinhood Chain ID 4663, checks Pons factory bytecode, reads its current launch fee and the current gas price, and submits no transaction. Hosting, independent audit, legal review, RPC and monitoring plans are vendor costs outside the contracts.
Production operator flow
- Deploy the rewards distributor, treasury and liquidity vault with multisig owners and the Railway keeper's public operator address.
- Deploy the market factory and one capped genesis market before the token CA exists, supplying 25 USDG with a 1 USDG immutable order cap. The factory keeps community creation locked.
- Run
LaunchBidOnPons.s.solfrom an encrypted local Foundry keystore with a 150 bps creator fee, buyback disabled, USDG pair asset, and the treasury contract as creator recipient. - Run
BindBidPonsCurve.s.solfrom the deployer; it verifies the launch, binds the final token and curve once, and hands factory and treasury ownership to their final multisigs. - Put the public addresses in Vercel and Railway; put the keeper signer only in Railway's secret manager.
- Enable one keeper replica. It fills executable limits, atomically claims and allocates Pons fees, and deploys eligible liquidity funds into approved open markets.
How the market maker works
The deployment wallet pays the initial USDG, but the factory mints every genesis LP share directly to the protocol liquidity vault. The keeper can allocate the vault's 30% fee share only to owner-approved, open BID markets. It prioritizes markets below LP_TARGET_DEPTHby real outcome-pool depth deficit, leaves sub-minimum amounts reserved, and uses each market's minimum-share protection. The multisig owner controls approvals and withdrawals; the keeper never owns the LP shares.
Treasury claiming, exact allocation, immutable funded reward epochs and duplicate-safe wallet claims are implemented and tested. The 45% share remains a reserve until time-weighted LP scoring and anti-snapshot eligibility are implemented and approved.
Production requirements
- Independent smart-contract audit and remediation.
- Final $BID token address and verified 1.5% Pons v2 creator fee, recipient, quote asset, and escrow configuration.
- Documented housing index, edge-case policy, and production resolution oracle.
- Multisig ownership for the factory, oracle operations, and flywheel treasury.
- Funded single-replica keeper, indexer, production RPC, alerting, and transaction monitoring.
- Time-weighted LP reward scoring and anti-snapshot/anti-wash policy before the first 45% LP reward epoch.
- Sufficient USDG to seed every genesis pool and test real execution depth.
- Legal review for market availability, disclosures, and jurisdiction controls.