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 ≥ $100k2×

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×2,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.