Airdrop points system — locked design
Locked 2026-06-25 after team review. This doc supersedes the earlier 2026-06-17 draft. Pairs with
docs/airdrop-genesis-allocation.md(Day-0 Uniswap-anchored hook) anddocs/airdrop-mainnet-plan.md(operator runbook).
Phase structure
| Phase | Snapshot | Tokens | Vesting |
|---|---|---|---|
| Phase 1 | Day 180 | 75M | 180-day linear from claim |
| Phase 2 | Day 270 | 75M | 180-day linear from claim |
| Phase 3 | Day 360 | 75M | 180-day linear from claim |
| Phase 4 | Day 450 | 75M | 180-day linear from claim |
Total: 300M SNCT (30% of supply).
Unclaimed phase tokens after 365 days post-snapshot revert to Treasury.
No per-wallet cap. Real work = real points. A whale who provides $10M of shielded liquidity for 90 days earns 100× what a $100k user earns, because they put in 100× the capital. Same rate, no penalty either way.
Points reset per phase
Each phase is a fresh leaderboard. You can't grind Phase 1 and disappear — Phase 4 only counts Phase-4-window activity. This forces sustained engagement across all 450 days.
The 14-product matrix (updated 2026-07-15)
Every on-chain action falls into one of two anti-wash patterns: time-locked (paid by days held) or fee-locked (paid by fees spent). Nothing pays a flat per-action bonus on user-controllable $ amounts that could be looped.
| # | Product | Action | Points formula | Caps |
|---|---|---|---|---|
| 1 | DEX | Swap (AMM) | 0.5 × fee_paid_usd | — |
| 2 | DEX | Order book trade (CLOB) | 1 pt per $100 traded | — |
| 3 | DEX | LP held in pool | 0.1 pt/day × $ TVL | — |
| 4 | LP Farm | Chef-staking bonus | +0.05 pt/day × $ TVL (on top of #3 when chef-staked) | — |
| 5 | .snct | Register name | 20 pt × years registered | — |
| 6 | .snct | Win sealed-bid auction | 10 pt × $ bid paid | 3/day, 10 lifetime |
| 7 | .snct | Marketplace buy/sell | 2 pt × $ traded | 3/day, 10 lifetime |
| 8 | Shielded | Held in pool | 0.3 pt/day × $ shielded | — |
| 9 | Shielded | Internal send | 5 pt/send | 3/day |
| 10 | Bridge | $ bridged-in, held on sanect | 0.1 pt/day × $ held (per 24h since bridge-in) | — |
| 11 | Native | Delegated to validator | 0.05 pt/day × $ delegated | — |
| 12 | Governance | Vote on proposal | 50 pt/vote | — |
| 13 | .snct | Set reverse-record (primary name) | 100 pt | 1 lifetime |
| 14 | Bridge + DEX | LP pair contains ≥1 bridged asset | +25% bonus on #3 and #4 | — |
Why these specific rates — $1k × 90 days comparison
Anchored on bridge = 0.1 pt/day. All passive-held rates are within a 6× range of each other.
| Activity | Rate | $1k × 90d points |
|---|---|---|
| Shielded held | 0.3 pt/day/$ | 27,000 |
| LP chef-staked, bridged pair (+25%) | 0.1875 pt/day/$ | 16,875 |
| LP chef-staked, native pair | 0.15 pt/day/$ | 13,500 |
| LP plain, bridged pair (+25%) | 0.125 pt/day/$ | 11,250 |
| LP plain, native pair | 0.1 pt/day/$ | 9,000 |
| Bridge held | 0.1 pt/day/$ | 9,000 |
| Delegated | 0.05 pt/day/$ | 4,500 |
| Single $1k swap (0.3% fee = $3) | 0.5 × fee | 1.5 (one-time) |
| Single $1k order book trade | 1 pt/$100 | 10 (one-time) |
Why shielded is top: privacy is sanect's product. The gradient needs to be steep enough that "shield $1k" is more attractive than "leave $1k in LP." 3× plain LP is right.
Why chef-staked bonus is +0.05 (1.5× of plain LP): chef-staked is locked (you forfeit pending SNCT emissions if you withdraw early). Worth the bonus, not worth doubling.
Why bridge = LP plain: both are passive held. Bridge-held is the foundational TVL metric, LP-held is the foundational DEX-depth metric. Both 0.1.
Why delegated is lowest: native staking already pays SNCT inflation rewards continuously. Airdrop points are extra on top.
Anti-wash mechanics
The whole point of the rate structure above is that no item can be profitably looped:
| Attack | Why it fails |
|---|---|
| LP add → remove → add (100×) | Item #2 pays by day held. Same-day add+remove = 0 days = 0 pts. |
| Bridge in → out → in (loop) | Item #9 counts only full 24h held since bridge-in. Bridge in at 11:59pm + out at 12:01am = 2 minutes = 0 full days = 0 pts. |
| Shield in → unshield (loop) | Item #7 pays by day held. Same-day shield+unshield = 0 pts. |
| Swap wash trading | Item #1 pays 0.5 × fee. Wash-looping $1M earns $500 of points but burns $3,000 in DEX fees → economically negative. |
| Self-trade name on marketplace | Item #6 capped at 10 lifetime trades. Genuine name traders won't hit 10; flippers will. |
| Self-bid auction repeatedly | Item #5 capped at 10 lifetime auction wins. |
| Spam shielded sends | Item #8 capped at 3/day. Can't price private amounts, so cap is the only way. |
| Spam votes | Governance proposals are rate-limited at the protocol level; can't spawn 1000 to vote on. |
Bridge points start accruing on day 1, not day 30 — the 24h "full day held" rule is enough to kill loops without punishing users who genuinely only want to bridge for 5 days.
Phase 1 wallet-age multiplier (Genesis Allocation mechanic)
Applied only in Phase 1, on own earned points (product matrix
- off-chain) — NOT on referral earnings. Phases 2–4 do not use the multiplier.
| Wallet's earliest cross-chain activity | Multiplier |
|---|---|
| < 1 year before snapshot | 1.0× |
| 1+ years | 1.1× |
| 2+ years | 1.25× |
| 5+ years | 1.5× |
| 7+ years (pre-COVID era — real OG) | 2.0× |
Snapshot reference: Phase 1 snapshot block (Day 180). For the live eligibility checker, we use "as of now" since the final snapshot isn't taken yet — see airdrop-app/lib/genesisAllocation.ts.
Cross-chain coverage (Ethereum, Arbitrum, Optimism, Base, Polygon, Avalanche) means the multiplier rewards anyone with old crypto history, not just Ethereum mainnet veterans.
Phase 1 formula
phase1_total = (own_product_pts + own_offchain_pts) × wallet_age_multiplier
+ referral_earningsPhase 2–4 formula (no multiplier)
phaseN_total = own_product_pts + own_offchain_pts + referral_earningsWorked example
A user with 1.1× multiplier earns 5,000 product pts + 200 offchain pts in Phase 1, brings 10 successful referees averaging 5,000 pts each:
| Component | Value |
|---|---|
| (own product + offchain) × multiplier | 5,200 × 1.1 = 5,720 |
| + flat referral bonus (10 × 10) | +100 |
| + 10% referral commission (0.10 × 50,000) | +5,000 |
| Phase 1 total | 10,820 |
In Phases 2–4 the same user (assuming identical earnings) gets 5,200 + 100 + 5,000 = 10,300 pts.
The 1.1× multiplier on own work in Phase 1 = +520 pts bonus for being a 1+ yr wallet. Pre-COVID OGs (2× tier) get +5,200 — meaningful, but not so large that newer wallets are pushed out of the program.
Mouth marketing — the referral system
Refer friends. Earn 10 points per referee + 10% of their points.
Share your link. For every successful referral you get a flat 10 pts recruitment bonus AND 10% of that referee's phase points, every phase. One referrer per wallet, immutable. No cap on referrals.
Mechanics:
- Each wallet has one permanent referrer (immutable once set)
- Set via
?ref=0x...or?ref=alice.sncton first wallet connect - Referrer earns:
- 10 points flat per successful referral (one-time, on activation)
- + 10% of all referee phase points, every phase
- Referee earns their normal points — no separate bonus, no penalty
- Single-level only — no MLM cascades
What makes a referral "successful"
A referral only counts toward referrer's rewards once the referee meets ALL of:
- Activation: referee wallet has either
- bridged in ≥ $50 to sanect, OR
- used ≥ 3 distinct sanect products from the 14-product matrix
- Pre-existing wallet: referee wallet existed BEFORE the referral was claimed (catches wallet-spam)
- Single attribution: each wallet can only be referred ONCE — first valid referrer attribution wins, locked forever
- No same-source funding: if ≥50 referees were funded from the same source within 1 hour, attribution voided
These gates are why we can offer the flat 10 pts without spam loops: the bridge fee + gas to fake activation costs more than 10 pts is worth at any plausible SNCT price.
Why both flat + commission
- Flat 10 pts = predictable recruitment thank-you. Influencers know exactly what each referee is worth at minimum, regardless of how engaged the referee turns out to be.
- 10% commission = compound reward for bringing high-quality users. A KOL who brings 10k users averaging 5k pts each earns 5M commission pts on top of the 100k flat — a 50× multiplier over flat alone.
The flat keeps the floor honest; the commission keeps the ceiling uncapped.
No cap on referrals.
Influencer outreach is a core distribution channel. A 1M-follower crypto KOL who brings 10,000 referees should earn 10,000× a small referrer who brings 1. Same rate, no penalty. Real reach = real reward. This is consistent with the "no per-wallet cap" principle across the whole system.
Referral anti-sybil (referrer side)
Referrer needs ≥1,000 own points before referral credits unlock — forces the referrer to actually use sanect themselves before they can collect commission.
Off-chain points (flat, one-time per user)
These are flat per-action, intentionally — they can't be priced in USD and we don't want creators gaming volume metrics. All one-time-per-user — repeat actions don't compound.
| Channel | Action | Points |
|---|---|---|
| Twitter / X | Follow @sanectnetwork + 3 original posts tagging sanect | 100 |
| Telegram | Active member ≥ 30 days in @sanectnetwork | 50 |
| Discord | Verified rank above Member tier | 50 |
| Share a sanect post OR publish a Medium article | 75 | |
| YouTube | Tutorial / explainer video about sanect (≥ 100 views) | 200 |
Verification via Galxe campaign + manual moderation. Bots filtered at the Galxe verification step. Maximum off-chain points per wallet: 475 (if a user completes all five). Modest by design — off-chain is a credibility filter, on-chain product use is the main earnings path.
Points → SNCT conversion
Per phase, independent pools:
your_phase_SNCT = (your_phase_points / total_phase_points) × 75M- Points reset each phase
- No per-wallet cap on share
- 180-day linear vest from each claim
- Unclaimed > 365 days post-snapshot → Treasury
Distribution mechanism — registered claim
See docs/airdrop-distributor-spec.md for the full contract spec.
We use a registered claim model rather than Merkle proofs:
- Indexer computes final per-user
(liquid, vested)allocation off-chain - Operator publishes snapshot CSV publicly + on IPFS 7 days before claim opens
- Community appeal window — flags wrong addresses
- Operator batch-loads final allocations into
AirdropDistributor.solviasetAllocations()(~500 users/tx, ~10-20 txs total for 50k users) - Operator calls
lockPhase()— allocations now immutable, anyone can audit - Claim window opens → users connect wallet, sign verify message, call
claim(phase)— liquid arrives in wallet, vest schedule registered - Users call
claimVested(phase)periodically to pull linearly-released portion (orclaimAll()for one-tx convenience) - After 365 days, unclaimed reverts to Treasury via
revertUnclaimed(phase)
Why registered claim over Merkle:
- Single contract holds all 4 phases — simpler audit surface
- Users keep tax-timing control (vs forced push distribution)
- No off-chain proof generation in the claim UI — lighter frontend
- Lost-key users still lose, but Merkle has the same property
- Operator-trust is bounded:
lockPhase()makes allocations immutable
Staking and airdrop are independent reward streams
A delegator earning item #10 airdrop points is separate from native staking rewards. Both stack:
| Reward stream | Source | Cadence |
|---|---|---|
| Native staking rewards | Mint module inflation (7–20% annual) | Continuous, claim via 0x...0801 precompile |
| Item #10 airdrop points | Airdrop bucket (30% / 300M) | Phase snapshot, claim at Day 180/270/360/450 |
| Validator commission | Delegator rewards × commission rate | Continuous |
| LP farm emissions | TreasuryEmitter via MasterChef (10% / 100M) | Per-block, harvest from MasterChef |
| Item #2/#3 airdrop points | Airdrop bucket | Phase snapshot |
| Validator grants (genesis 50) | 5M one-time bucket | One-time at validator-set lock-in |
All additive. A $1k delegator for 90 days collects ~$7 of native inflation rewards plus 4,500 airdrop points redeemable at Phase 1.
Public commitments
These are locked publicly and won't change without DAO governance:
- 30% / 300M SNCT for airdrop
- 4 phases, equal 75M each, snapshots Day 180/270/360/450
- 180-day vest per claim
- No per-wallet cap, no per-referrer cap
- 14-product matrix and rates above
- Uniswap age multiplier tiers (1.1× / 1.25× / 1.5× / 2×)
Operator-side (not pre-disclosed)
- Exact Phase 1–4 snapshot block heights (revealed 7 days before each)
- Sybil cluster filtering rules (revealed at claim time)
- Galxe campaign moderation criteria
Anti-patterns avoided
- ❌ Per-wallet caps that punish genuine large users
- ❌ Per-referrer caps that disincentivize influencer reach
- ❌ Flat per-action points on USD-amount actions (loopable)
- ❌ MLM-style multi-level referrals (pyramid optics)
- ❌ Carry-forward points across phases (kills late-phase incentive)
- ❌ 100% liquid at claim (guaranteed dump)
- ❌ Hidden snapshot heights revealed early (snapshot gaming)