Decision
Nodes are ranked by a reputation score in[0.0, 1.0] derived from:
- 70% local observations — what this node has seen about its counterparty in direct interaction
- 30% gossip-propagated reports — weighted by the reporter’s effective settled value
Score semantics
Reputation enters the unified selection score as an inverse-square factor (network):0.1 floor prevents new or just-slashed nodes from being unreachable; they pay a 100× handicap but can still earn some traffic and rebuild reputation.
Reporter weighting
A report’s weight is a function of the reporter’s effective settled value:- Total settled value through the reporter’s channels (on-chain verifiable).
- Counterparty diversity — minimum 5 distinct counterparties for full credit. A node that only settles with itself and two Sybils gets a reduced weight.
- Time decay — half-life ~7 weeks. Historical settlement matters less than recent.
- Normalization across tokens — production normalizes multi-token settlement volumes to a common unit.
- 3× cap on any individual reporter’s weight — keeps manipulation expensive while allowing some incumbency advantage.
Clamping and cold-start
- Per-report clamp — a single report can move the target’s score by at most a bounded amount. Prevents flash-crashes from coordinated negatives.
- Decay toward neutral — in the absence of fresh data, scores drift toward a neutral value. A node that stops participating loses reputation eventually but not instantly.
- Cold-start bootstrap — new nodes get initial traffic via a small reputation bonus. One-time per operator Ethereum address to prevent re-staking abuse (drop stake, restake, get the bonus again).
What triggers reports
Interaction outcomes generate reports. Examples:| Event | Local score change | Gossip report? |
|---|---|---|
| Clean delivery, valid voucher accepted | Small positive | Optional |
| BLAKE3 mismatch mid-stream | Large negative | Yes |
Probe has_blob=true but stream failed | Negative | Yes (candidate for phantom-announcement slashing) |
| Rate advertised ≠ rate charged | Negative | Yes (candidate for rate-manipulation slashing) |
cdn/reputation/v1 gossip topic.