How points work.
Every slot scores from its team's real-world match. Components add up, the captain slot doubles, formation decides the role mix, and active-token exposure can boost the squad. Total × 100 = fans on the weekly board.
Scoring is reproducible: same inputs always yield the same output. The 24-hour finalize window catches any post-match data corrections (VAR, statistician revisions). On-chain settlement only happens after stability.
Four components.
Base outcome of the team's fixture. Win = +10. Draw = +4. Loss = 0.
Goals scored BY the team's match. 0-1 = +4 · 2-3 = +6 · 4-5 = +8 · 6+ = +10.
Team didn't allow any goal. Binary.
If the team's first non-OG goal arrives by minute 15. Binary.
Sum of four components is the slot's subtotal. Captain's subtotal then doubles. Formation controls which role each slot plays; active-token exposure is snapshotted when the challenge locks.
Strategy layers.
Shape your 5 slots.
Balanced spine with one core pick, two creators, a shield, and a wildcard.
Two attacking slots up top, two control picks behind, and one wildcard swing.
One anchor, two control lanes, and two lower-risk defensive bets.
The retired squad-level tactic picker is kept only for backward compatibility in stored data. New squad building uses formation presets and per-slot prediction modes.
Every slot has a job.
Result + goals + clean sheet + first-goal timing.
Goal bands: 0-1=+4, 2-3=+6, 4-5=+8, 6+=+10.
Win = +10, Draw = +4, Loss = 0.
+6 clean sheet, +3 for ≤1 conceded.
Bonus scales with the rating gap when this team wins.
A captain slot, end-to-end.
Argentina win 2-0 with their first goal in minute 8.
- Match result · win+10
- Goals scored · 2 (band 2-3)+6
- Clean sheet · conceded 0+6
- Early opener · goal at 8′+5
- Slot subtotal27
- Captain ×254
Add the other 4 slots, apply any active-token exposure snapshotted at lock, then deterministic variance. The final challenge score decides the head-to-head and converts to fans for the weekly board.
Why it's reproducible.
- Inputs are hashed. Every settlement records a SHA-256 of (squad, fixtures, config). Two independent re-scores produce the same hash — or we pause and investigate.
- Variance is seeded. The ±2 noise is deterministic from
keccak(challengeId, globalSeed). Same challenge, same noise, every time. NoMath.random()ever. - Token snapshot at lock. Active-token count is captured when you lock and never changes. Deactivating mid-week doesn't retroactively remove the bonus.
- 24h finalize window. VAR overturns and statistician revisions stabilize before on-chain settlement. Tentative results show immediately; on-chain commits only happen 24h after match end.
- Every fan delta is auditable. Your fans count is the sum of an append-only ledger (FanLedgerEntry) — every line tagged with a reason and an idempotency key. Disputes resolved in your favour appear as
DISPUTE_REVERSALentries.
What happens if…
- …a fixture is postponed? The team's slot scores 0 for that week. Documented in our terms.
- …you have more than 10 challenges in a week? Best 10 by fans count toward the weekly leaderboard. The rest still earn fans (counted in lifetime total) but don't affect promotion.
- …match data shows scoreline ≠ goal events? Our sanity check pauses that fixture before scoring runs. Manual review by ops.
- …you think your score is wrong? Open a dispute. We respond within 24h. If we agree, an adjustment is posted to your ledger with an on-chain audit trail.
Squad Rivals · Scoring v1 · Last updated 2026-05-25