Endorsement System
Endorsements are the mechanism that converts a check-in into a validated signal. It's not a like or a vote — it's validation with stake behind it.
What an Endorsement Means
An endorsement is a positive attestation:
"I reviewed this check-in and I believe it satisfies the project's stated promise for this cycle."
Key points:
- Endorsing does not fund the project
- Endorsing does not change the project's bond
- Endorsing does move the check-in toward ACCEPTED
- Endorsing does make you eligible for rewards (if the check-in is accepted)
How It Works
- A project publishes a check-in with evidence
- An endorse window opens (default: 12 hours)
- Staked watchers review the evidence and endorse
- When total endorsement weight + endorser count meet thresholds → ACCEPTED
Weight Formula
Endorsement weight uses a square root function to prevent whale dominance:
weight = floor(sqrt(stake))
| Stake | Weight | Capital to double weight |
|---|---|---|
| 100 SHIP | 10 | 300 more |
| 400 SHIP | 20 | 1,200 more |
| 1,600 SHIP | 40 | 4,800 more |
| 10,000 SHIP | 100 | 30,000 more |
| 100,000 SHIP | 316 | 300,000 more |
A whale with 100x more tokens only gets ~10x more influence.
The Two-Factor Acceptance Gate
A check-in becomes ACCEPTED only if it passes both requirements:
totalWeight >= thresholdWeight (economic conviction)
AND endorserCount >= minEndorsers (diversity requirement)
AND now <= endorseWindowEndsAt (within time window)
Neither alone is sufficient:
- Weight alone isn't enough — a single whale could accept everything
- Count alone isn't enough — a sybil swarm with minimum stake could spam endorsements
Together they create a security gate that requires both capital and coordination.
Why 100 weight and 3 endorsers?
With minStakeSHIP = 100, minimum watcher weight = 10.
If thresholdWeight = 100 and minEndorsers = 3:
- Three minimum stakers give only 30 weight (not enough)
- You need either more endorsers, higher stakes, or both
This prevents trivial acceptance and forces real community engagement.
Check-in States
| State | Description |
|---|---|
PENDING | Endorse window is open — watchers can still endorse |
ACCEPTED | Both thresholds met within the window — check-in is valid |
REJECTED | Window closed without reaching thresholds |
Rules
- One endorse per wallet per check-in — No double-endorsing
- Top 25 endorsements count — Capped by weight to prevent spam
- Fixed endorse window — Cannot be extended or modified
- Minimum stake required — 100 SHIP to prevent bot spam
- One pending check-in at a time — Prevents window overlap and confusion
Why "No Endorse" is Rejection
In MVP, there is no explicit "reject" button. If you think a check-in is insufficient:
- Don't endorse — your non-participation is the signal
- The check-in fails to reach threshold → becomes REJECTED after the window
- If the project runs out of time → slash becomes available
This avoids complex "negative voting" games where attackers could grief projects with reject spam.
Watcher Incentives
Endorsements must be rational even for strangers. Three motivations:
1. Direct Economic Rewards
Watchers earn rewards for endorsing check-ins that end as ACCEPTED:
- If you endorsed an accepted check-in → you qualify for rewards
- If you endorsed a rejected check-in → you earn nothing
This aligns incentives: endorse only if you believe the check-in is legitimate and others will also endorse.
2. Reputation (Optional)
Even without on-chain reputation, the UI can display:
- Watcher endorsement counts
- Acceptance rate
- "Top validators" on the leaderboard
3. Self-Interest Alignment
Communities endorse projects they care about — builders they want to succeed, tools they use. ShipLock creates a clean "validation ritual" with clear deadlines.
Reward Distribution
Watcher rewards come from two sources:
- Protocol fees — 20% of all fees go to the watcher rewards pool
- Slash distributions — 20% of slashed bonds go to watchers
Rewards are distributed proportionally to stake weight among watchers who endorsed accepted check-ins.
Anti-Spam Knobs
To prevent "endorse everything" behavior:
- Only accepted check-ins earn rewards — failed endorsements earn nothing
- Timing incentives — earlier endorsements can receive slightly higher rewards
- Per-wallet caps — no wallet can earn more than 5% of epoch rewards
- Endorsement accuracy (post-MVP) — track validator acceptance rate