# qmarket — P2P compute marketplace (:8824)

**What:** people selling compute to people, paid in QALS-backed credit. Providers register (name/kind/price/**stake**); buyers POST /jobs → escrowed Hold (loopd) → provider executes (local adapter or remote `provider.py` :8850) → attested metrics → settle at metered×price (**fee 0% — founder policy 2026-09-12: no marketplace fees, the token spread is the margin**) → provider earnings accrue (AU$1:1) → output hash anchored on-chain (qalpipe). **v2:** disputes → verification (output-vs-anchor + recompute) → slash 50/50 FloorVault/buyer → reputation −25 → delist <40. `bench.py` = price-floor oracle.

**Run:** `python3 qmarket.py` (+ `python3 provider.py run` for remote providers) · **Prove:** `bash test_market_v2.sh` (30 assertions) · `bash test_qalid_gate.sh` (provider-choice ID gate, isolated :8878)
**Docs:** `../07_compute_marketplace/P2P_COMPUTE_MARKET.md` (+v2 section) + COMPUTE_MARKET_COMPETITORS_2026.md

**Identity gating is PROVIDER CHOICE (v2.1):** a provider may set `require_qalid: true` (at registration or `PATCH /providers/<id>`); the market then refuses any job for it without a valid `qalid_proof` (`{did: "did:qal:<handle>", challenge, sig}` — 403 before escrow, verified by relaying to qalid :8838, single-use nonce so replays fail). Certain compute requirements may require a QAL ID; people decide that for themselves. *Honest limit: the proof binds the buyer to a DID at purchase time — it is not per-job attestation of what the buyer does with the output.*
