Provider path: register, stake, jobs, earnings — and the slash rules · content/guides/selling-compute.md
Selling Compute — turn your rig into a QALS earner
The provider path: register, stake, take jobs, get paid — with the trust mechanics (escrow, slash, reputation) doing the policing so you don't have to trust anyone.
✓ verified 2026-09-12 — the full provider lifecycle passed live: qmarket/test_market_v2.sh v2 SCENARIO PASS (register with stake → job under escrow → dispute → 50/50 slash → delist below rep 40 → second provider's reputation recovery on clean jobs). Marketplace :8824 green; live /providers shows real state (minirig-inference, rep 101, jobs_done 1, 4c earned).
What you need
- A machine with compute to sell (local GPU rig, or any remote box — RunPod-style included).
- A loopd identity with a stake — skin in the game, a bond you can lose for cheating.
- qmarket running:
python3 qmarket/qmarket.py(:8824), provider agent:python3 qmarket/provider.py run(:8850).
The model in four lines
- Register with name, job kind, price, and a stake (bond).
- A buyer's job payment sits in escrow (a ledger hold) while your machine works.
- Your output hash is attested and anchored; the metered amount settles against the hold at your price — 0% marketplace fee (founder policy, 2026-09-12; the token spread is the margin).
- Cheat (faked output), and a dispute triggers verification — recompute vs anchor — then a 50/50 slash of your stake, reputation −25, and delisting below rep 40. Honest jobs build reputation back.
Steps
1. Price your kind first (the bench oracle)
python3 qmarket/bench.py # measure, don't guess
# reference ladder: A100 272c/h · 4090 110c/h · L4 69c/h
2. Register with a stake
python3 qmarket/provider.py register --name my-rig --kind gpu-render \
--price 110 --stake 2000 --description "4090 box, night hours"
Your stake is a loopd agent you own — the market can slash it, nothing else. What success looks like: you appear in GET :8824/providers with your price, reputation 100, stake listed.
3. Take jobs
Start the provider agent; it polls the market and executes jobs it's registered for (local adapter, or remote automation — the RunPod/external-rig pattern maps onto the same provider loop, artifacts moving via object storage, output hash anchored at settle).
python3 qmarket/provider.py run # serves the adapter on :8850
Buyers post jobs; the flow on their side is hold → execute → settle → anchor. From the provider side you see the job, run it, return output; the escrowed money settles at metered × your price.
4. Watch earnings land
curl -s http://127.0.0.1:8824/earnings/<provider-id> # earnings accrue AU$1:1 in credit
Earnings are plain loopd credit — spendable in chat, redeemable for services, capless like any wallet balance.
What success looks like
- You in
/providers:{"name":"my-rig","reputation":100,"stake_cents":2000,…}. - A job: hold placed on the buyer (you can see it in their feed as a 115% pre-auth), your machine runs, settle receipt
r_…at metered cents, output hash anchored on Qalnet. - The proof suite's whole arc passing:
bash qmarket/test_market_v2.sh(30 assertions) — including the cheating provider getting slashed twice and delisted.
Pricing your reputation (the rules that protect buyers — and honest sellers)
| Event | Effect |
|---|---|
| Clean job | settle + anchor; reputation holds/climbs |
| Buyer disputes, verification agrees | stake slashed 50/50 (FloorVault/buyer), rep −25 |
| Rep < 40 | delisted — no more jobs |
| Recovery | clean jobs climb reputation back (proven in the v2 scenario) |
Troubleshooting
| Symptom | Fix |
|---|---|
register fails |
Market or loopd down: bash scripts/status.sh (:8824, :8823). |
| No jobs arriving | Price too high for the bench ladder, or kind mismatch with posted jobs — check /jobs. |
| Dispute filed against honest work | Verification recomputes the output hash — anchored evidence is your defence; the slash only lands when the anchor disagrees. |
| Provider agent :8850 down | python3 qmarket/provider.py run; health on GET :8850/health. |
| Stake gone after a dispute | That's the slashing rule working; 50% went to the FloorVault, 50% to the buyer, and rep took −25. Two more failed verifications = delist. |
Companions: sell-compute funnel (the dedicated seller page — pro and home-rig tracks + earnings math) · P2P compute market (the full design) · compute market v2 · competitors 2026 · how it works §5.