Skip to content

Airdrop — Genesis Allocation design (LOCKED 2026-06-21)

Companion to airdrop-points-system-design.md. That doc covers the ongoing 4-phase point system (Day 90 / 180 / 270 / 365) for users who show up after launch. This doc covers the Day-0 Genesis Allocation — the Uniswap-anchored one-time hook that brings in the first cohort.

Locked from the 2026-06-21 design session. Numbers (baseline range, multiplier scale, product list) are calibration knobs — operator team finalizes pre-launch based on the airdrop budget split between Genesis Allocation and the 4-phase Hyperliquid-style point system.

Snapshot rule (locked)

Ethereum cutoff for the Uniswap snapshot = last UTC midnight before mainnet genesis block. If mainnet launches at any time on June 22, all Uniswap activity through 2026-06-21 23:59:59 UTC counts; anything after the cutoff block doesn't. The indexer freezes its Ethereum view at the last Ethereum block ≤ cutoff timestamp.

Multiplier scope (locked)

The Uniswap tier multiplier is universal and wallet-level — it multiplies every point that wallet ever earns on sanect, across both the Genesis Allocation and all 4 ongoing phases. It's a quality signal attached to the wallet, set once at snapshot, fixed forever.

Multipliers stack multiplicatively:

points_earned = base_points
              × uniswap_tier_multiplier   (1.1× / 1.25× / 1.5× / 2×)
              × phase_spotlight_multiplier (1.5× when in scope, 1× otherwise)
              × diversity_multiplier       (per airdrop-points-system-design.md)

A T4 Uniswap user (2×) shielding during Phase 2 (1.5× privacy spotlight) with full diversity (1.5×) earns 4.5× on those points. Uncapped by design — those whales are exactly the cohort to overweight.

Goal

Bring in a large initial cohort (~target 1M+ wallets) by piggy-backing on Uniswap's 20M+ user base, while:

  1. Filtering sybil farmers economically (not algorithmically — they self-filter via day-1 negative cash flow).
  2. Converting "claim my tokens" intent into actual chain usage (fees + product diversity).
  3. Smoothing day-1 sell pressure so price discovery isn't a cliff.
  4. Producing a "X live wallets on sanect" number large enough to support tier-1/2 CEX listing conversations.

Mechanic

Three independent variables, one formula:

allocation_size = uniswap_baseline × uniswap_multiplier
liquid_at_claim = allocation_size × unlock_pct(sanect_products_used)
vested_180d     = allocation_size − liquid_at_claim

Two inputs (Uniswap history, on-sanect engagement), two outputs (allocation size, liquid-vs-vested split). Designed to be explainable to a Twitter audience in two sentences.

1. Uniswap baseline — eligibility + size

Snapshot taken from Uniswap v2 + v3 events on Ethereum mainnet, at a block height fixed and published before launch.

Lifetime Uniswap volumeWallet ageBaseline SNCT
< $100anyNOT ELIGIBLE
$100 – $1k≥ 6 months100
$1k – $10k≥ 6 months250
$10k – $100k≥ 12 months500
$100k – $1M≥ 12 months750
$1M+≥ 24 months1,000

Wallet age = block of first observed tx (any contract). Volume = sum of absolute USD value at time-of-tx across all swaps (excludes LP add/remove).

Hard caps prevent farms from gaming the curve by routing volume through a single address — a $50M farmer wallet gets the same 1,000 baseline as a $1M genuine whale.

2. Uniswap multiplier — quality scaling

Multiplier scales the baseline based on quality signals beyond raw volume:

TierCriteriaMultiplier
T1Eligibility baseline only1.1×
T2+ ≥ 50 distinct trading days OR holds ≥ $1k LP currently1.25×
T3+ active in last 90 days OR ≥ 5 distinct DEX-routers used1.5×
T4All of the above + wallet ≥ 4 years old + volume ≥ $100k

Tier is the highest the wallet qualifies for, not stacked. Anti-sybil because "50 distinct trading days" can't be fabricated cheaply — farmers optimize for volume, not breadth-over-time.

3. On-sanect product engagement — unlock %

% of allocation that's liquid at claim. The rest vests linearly over 180 days post-claim.

Distinct sanect products used% liquid at claim
0not claimable
15%
210%
315%
420%
525%
630%
735%
840%
945%
10+50% (cap)

Cap at 50% so vesting always has skin in the game — even max-engagement users have 90 days of "stay holding" exposure.

The product list (13 products, cap engagement at 10)

#ProductMinimum to count
1DEX swap≥ $5 notional
2DEX liquidity position≥ $25 notional, held ≥ 7 days
3MasterChef farm stake≥ $25 notional, held ≥ 7 days
4.snct registrationany (the reg fee is the floor)
5.snct auction bidany
6.snct marketplace tx (buy or sell)any
7Shielded deposit≥ 1 SNCT
8Shielded transfer≥ 1 SNCT
9Shielded withdrawal≥ 1 SNCT
10Bridge IN (Sepolia → sanect)≥ $5
11Bridge OUT (sanect → Sepolia)≥ $5
12Native delegation (stake to validator)≥ 10 SNCT, held ≥ 14 days
13Governance vote on an active proposalany

Capping at 10 means users don't need to do every product — natural for people who skip bridge ("don't trust it yet") or governance ("don't have opinions on parameters") without locking them out of max unlock.

4. Worked examples

PersonaUniswap profileBaselineMultAllocationProductsLiquidVested 180d
Casual UNI user$500 vol, 1y wallet1001.1×11021199
Active UNI user$10k vol, 2y wallet5001.5×7505187563
UNI whale$200k vol, 4y wallet, breadth10002,00088001,200
Pro farmer (5k addresses)$1k each, 1y each2501.1×275/addr1/addr13.75/addr261/addr

Pro farmer's economics at $0.02 SNCT:

  • Per address: $0.27 liquid, $5.22 vested
  • Cost per address to hit 1 product: ~$0.50 (gas + dust swap)
  • Day-1 cash flow per address: −$0.23
  • To rescue the position, vested has to hold value over 6 months — farmer becomes structurally long sanect, not a flipper.

Anti-sybil reasoning (without filters)

We don't need probabilistic sybil detection (which always has false positives → community backlash) because the economics filter for us:

Tier of farmer effortLiquid value per addrCost per addrDay-1 P/L
1 product, T1 baseline$0.27$0.50−$0.23
5 products, T1 baseline$1.37$20−$18.63
10 products, T1 baseline$2.75$50−$47.25

The deeper a farmer commits per address (= the more liquid they unlock), the bigger the per-address loss they take. Combined with vesting, every participation tier is loss-leading on day 1 — only redeemed if SNCT holds price for 6 months. Farmers who claim become structurally long.

Smoothing day-1 sell pressure

Liquid-at-claim caps at 50%, vested linearly over 180 days. Daily unlock per address: 0.5 × allocation / 180 ≈ 0.28% of vested portion per day.

Even if 100k addresses claimed max-unlock and then all dumped simultaneously:

  • Day 1 dump: 100k × max_liquid (say avg 200 SNCT) = 20M SNCT
  • Daily vest dumps (steady-state): 100k × 200 × 0.0028 ≈ 56k SNCT/day

LayerZero went −70% week one largely because ~100% of allocation was liquid at claim. Our worst case is 50% liquid + slow vest tail, with no single cliff event.

Combined with the 4-phase point system

This Genesis Allocation is the Phase 0 event — a one-time hook fired at mainnet Day 0. After Day 90 it's done.

The existing airdrop-points-system-design.md (4-phase ongoing system) continues to run for users who:

  • Don't qualify for Uniswap baseline (~70% of late entrants)
  • Want to keep earning beyond their Genesis Allocation
  • Joined after the Genesis snapshot

Both systems share the same product list (this doc, section 3) for consistency. A user who completes 10 products for Genesis unlock has also earned full diversity multiplier under the 4-phase system.

Budget split (suggested, operator finalizes): If genesis airdrop total is 300M SNCT, allocate ~30% (90M) to Genesis Allocation and ~70% (210M) to the 4 phases (split per existing doc's Option C).

What to build

  1. Snapshot indexer (Ethereum) — read Uniswap v2 + v3 Swap events for the snapshot block window, aggregate per-address volume + first-tx block + distinct days. One-off job, dumps to Postgres + S3.
  2. Multiplier qualifier — derive Tier 1-4 from the snapshot data plus published Uniswap router list. Outputs (addr, tier, baseline).
  3. Sanect engagement indexer — watch mainnet from Day 0 for the 13 product actions per address, store (addr, product_id, first_qualifying_tx_block).
  4. Merkle tree of (addr, allocation, tier) tuples. Standard OZ tree.
  5. Claim contract — Merkle proof verification, calls into each product contract to verify on-sanect engagement count, calculates liquid + vest schedule on-chain, transfers liquid, schedules vest via a linear vesting wrapper.
  6. Frontend — connect wallet → "you qualify for X SNCT, you've done N/10 products, unlock = M%, claim now or wait for more products."

Out of scope for Day 0

  • Sybil ML / clustering (the economics filter for us — extra detection layer = false-positive PR problem, not worth it)
  • Cross-chain extension (Solana volume, Aerodrome on Base, etc. — Phase 0 v2 if Uniswap funnel hits scale)
  • Anti-MEV protections on claim (if a sandwich on the claim tx ever becomes profitable, we revisit)

Open knobs operator picks before launch

  1. Snapshot block on Ethereum for Uniswap data.
  2. Genesis Allocation budget % of total airdrop bucket.
  3. Whether to publish baseline + multiplier formulas or hash-commit them — publishing maximizes "check if you qualify" virality but lets sybil farms pre-compute optimal address distribution. Hash-commit reveals numbers at snapshot time. Default: publish formulas, hide snapshot block until after the fact.
  4. Whether Tier 4 (2× multiplier) actually exists — designed for the "Uniswap OG" cohort which is small (<10k addresses) but the marketing optics of "if you're a true OG you get 2×" are strong.