/* Sybilhunt — page sections. window-exported. */ const SH_TEAM = [ { name: 'crypt0zeke', role: 'Web3 researcher · Engineer', img: 'assets/team/crypt0zeke.png', bio: 'Took part in the Hop Protocol Sybil Bounty; wrote the methodology for tracing linked wallets via the Alchemy Transfers API.' }, { name: 'Igor Pertsiya', role: 'Founder · Hypra VC', img: 'assets/team/igor-pertsiya.png', bio: 'Founder of the Hypra venture fund; commented to CoinDesk on the scale of sybil farming across ENS, Sui and Aptos.' }, { name: 'Alex Momot', role: 'CEO · Peanut Trade', img: 'assets/team/alex-momot.png', bio: 'His team monitors sybil attacks on airdrops in real time.' }, { name: 'Peet Chan', role: 'CEO · Co-founder, Trusta Labs', img: 'assets/team/peet-chan.png', bio: 'Builds TrustScan / TrustGo for AI sybil-wallet detection; worked with Celestia, Starknet, Manta, Sonic and Plume.' }, { name: 'Simon Chen', role: 'CTO · Co-founder, Trusta Labs', img: 'assets/team/simon-chen.png', bio: 'Previously at Alipay’s AI / security lab.' }, { name: 'bitblondy', role: 'Sybil analyst', img: 'assets/team/bitblondy.png', bio: 'Ran sybil analysis for Optimism Retro Funding Round 4.' }, ]; const SH_DOCS = [ { tag: 'What Sybils are', t: 'One person, a hundred faces', d: 'A Sybil spins up dozens or hundreds of accounts and poses as a crowd of real users — to grab rewards meant for many people.' }, { tag: 'Why they’re dangerous', t: 'They take what isn’t theirs', d: 'Sybils drain airdrop pools, distort activity metrics and erode trust in the project. Real participants get less — or nothing.' }, { tag: 'Why projects pay', t: 'Cheaper to catch than to lose', d: 'Handing $5M to bots is a direct loss. It’s cheaper to give hunters a slice of the pool to filter Sybils out before distribution.' }, ]; function Header({ onHowItWorks, onStart, scrollTo }) { return (
scrollTo('top')} />
); } function NavLink({ onClick, children }) { return ( ); } function PolyCloudLogo() { const [rising, setRising] = React.useState(true); return (
setRising(false)}>
Polymarket
); } const SH_PUFFS = [ // top edge { left: '8%', top: -62, s: 150 }, { left: '29%', top: -84, s: 176 }, { left: '52%', top: -84, s: 176 }, { left: '74%', top: -62, s: 150 }, // left edge { left: -64, top: '20%', s: 146 }, { left: -56, top: '56%', s: 134 }, // right edge { right: -64, top: '20%', s: 146 }, { right: -56, top: '56%', s: 134 }, // bottom edge { left: '12%', bottom: -62, s: 150 }, { left: '37%', bottom: -82, s: 176 }, { left: '63%', bottom: -62, s: 150 }, // thought-bubble tail (bottom-left) { left: 6, bottom: -104, s: 54 }, { left: -42, bottom: -150, s: 34 }, { left: -78, bottom: -184, s: 20 }, ]; function CloudPuffs() { return ( <> {SH_PUFFS.map((p, i) => ( ))} ); } function CampaignHero({ onHowItWorks, onStart, deadline }) { return (
Hunt live Campaign · Polymarket

Help hunt a Sybil
on Polymarket

Polymarket put up a pool to clear out bots before rewards go out. Find clusters of accounts run by one actor — and take your share.

Campaign ends in
Polymarket Campaign backed by Polymarket · payouts in USDC
); } function DocsSection() { return (
Docs · What Sybilhunt is

An open sybil hunt where the community wins

Sybilhunt connects projects that hand out rewards with hunters who know how to find fraud. The project puts up a pool — hunters bring the evidence — bots get nothing.

{SH_DOCS.map((c) => ( {c.tag}
{c.t}

{c.d}

))}
); } function TeamSection({ scrollRef }) { return (
Our team

The people who started the hunt

Analysts, forensics specialists and engineers from crypto teams who spent years catching fraud — and teamed up to make it everyone’s game.

{SH_TEAM.map((m) => (
{m.name}
{m.name}
{m.role}

{m.bio}

))}
); } function PartnerModal({ partner, onClose, onStart }) { const deadline = React.useMemo(() => { if (!partner) return 0; const days = partner.live ? (partner.endDays || partner.startDays) : partner.startDays; return Date.now() + days * 86400000; }, [partner]); const live = partner && partner.live; return ( { onClose(); if (onStart) onStart(); }} rightIcon={}>Start hunting Sybils : null}> {partner && (
{partner.name}
{live ? Hunt live now : Upcoming} {partner.pool} pool

{partner.desc}

{live ? '🟢 Hunt is live — ends in' : 'Hunt starts in'}

{live ? `${partner.name} · hunt open now · ${partner.pool} pool · payouts in USDC` : `${partner.name} · ${partner.pool} reward pool · payouts in USDC`}

)}
); } function PartnersSection({ scrollRef, onStart }) { const [active, setActive] = React.useState(null); return (
Partners

Projects that trust the community's hunters

From active campaigns to past sybil hunts — these projects put up pools and let the community do the work.

Active Currently running hunts
{SH_PARTNERS_ACTIVE.map((p) => ( setActive(p)} /> ))}
Past Completed campaigns
{SH_PARTNERS_PAST.map((p) => ( ))}
setActive(null)} onStart={onStart} />
); } function CtaBanner({ onStart }) { return (
); } function Footer({ scrollTo }) { return ( ); } Object.assign(window, { Header, CampaignHero, DocsSection, PartnersSection, TeamSection, CtaBanner, Footer, SH_TEAM, SH_DOCS });