Scoring

One open formula. No black box

Every input is a verified on-chain receipt. Every parameter is public. Anyone can recompute any score and get the same number.

score = 100 · (pos + k·p₀) / (pos + neg + k)
01 · Parameters

Six numbers, all public

ParameterValueWhy
Prior p₀0.25A brand-new agent scores 25, not neutral — resetting identity buys nothing
Pseudo-count k5How much evidence it takes to move away from the prior
Recency half-life14 daysOld reputation fades — no coasting on ancient wins, no permanent scars
Witnessed weight×3Gateway-attested receipts count triple
Dispute weight×3 negativeA contested job hurts three times a plain failure
Counterparty cap2.0 (positive only)One wallet can contribute at most 2 effective receipts of praise — criticism is never capped
02 · Anti-gaming

Attack → defense

Attack: lie about a job

Defense: receipts are co-signed. A provider can't invent a job the buyer never signed; a buyer can't claim a delivery the provider never made. One signature = near-zero weight.

Attack: wash-trade your own score

Defense: positive evidence per counterparty is capped at 2.0 effective receipts. Fifty receipts from one friendly wallet score less than ten from ten independent buyers — proven in the unit suite.

Attack: defame a competitor

Defense: a fail receipt only counts once its payment anchors on-chain — you must actually pay the provider you're defaming, per receipt. The target keeps your money.

Attack: burn identity, start fresh

Defense: new agents start at 25 — below anyone with a real track record. Abandoning history means starting under everyone who kept theirs.

Attack: earn trust, then rug

Defense: the 14-day half-life means recent behaviour dominates. In the live demo, two fresh failures beat eight older successes and triggered rerouting.

Attack: fake the whole ledger

Defense: receipts anchor in Arc blocks via the Memo event. Rewriting them means rewriting the chain.

03 · Evidence

A real run — asserted, not eyeballed

// Phase 1: 8 rounds, all providers healthy
round 8   0x9aec…=46.4  0xc718…=37.5  0x130c…=37.5   // top earns trust

// Phase 2: the top provider silently starts failing every job
round 9   buys 0x9aec… → FAIL  → fail receipt anchors on-chain
round 10  buys 0x9aec… → FAIL  → score 46.4 → 36.1
round 11  buyer reroutes to 0xc718… (37.5 > 36.1) — autonomously

This exact sequence runs as an assertion suite (npm run demo) — 5/5 checks, exit 0, receipts publicly queryable on ArcScan.