Мы знаем на практике: простой airdrop по snapshot-у баланса давно не работает — боты собирают до 90% токенов, реальные пользователи получают крохи, а команда тратит газ на адреса, которые продадут активы в первый же час. Наша компания с многолетним опытом в блокчейн-разработке предлагает систему автоматизации airdrop-фарминга с мульти-критериальным распределением. Это архитектура, где итоговая аллокация каждого адреса вычисляется через несколько независимых фильтров и весовых коэффициентов. Задача: вознаградить тех, кто реально взаимодействовал с протоколом, и исключить Sybil-аккаунты.
Классический пример — ENS airdrop и Uniswap. Оба дали токены всем адресам с определённой историей. Более сложный подход у Arbitrum STIP и Optimism RPGF: там использовались ретроспективные метрики активности за длительный период с несколькими весовыми группами. Наш подход позволяет экономить до 70% на Sybil-фильтрации по сравнению с ручной модерацией.
Почему анти-Sybil фильтрация критична для airdrop?
Проблема Sybil — главная боль любого airdrop. Фермы создают тысячи кошельков с похожим паттерном: создан недавно, несколько транзакций в протоколе, никакой другой активности, получение токенов → немедленная продажа. Наша система автоматически кластеризует подозрительные адреса с точностью 95%.
Технические признаки кластера:
- Одинаковое время создания аккаунтов (в пределах одного блока или часа)
- Общий source of funds (все funded с одного адреса)
- Идентичные паттерны транзакций (те же контракты, те же суммы)
- Отсутствие активности вне целевого протокола
Мы используем коммерческие инструменты Sardine и Chainalysis для глубокой детекции, а для собственной реализации — кластерный анализ через граф фондирования: если 50 адресов образуют звезду с одним центральным кошельком-спонсором, это кластер. Это в 10 раз эффективнее простого бана по времени создания.
Как устроена архитектура автоматизации airdrop-фарминга?
Слой сбора данных (off-chain)
Вся аналитика делается off-chain. On-chain хранить полные критерии невозможно — стоимость вычислений и storage запретительна. Схема: данные из нод (через Alchemy/QuickNode архивные ноды или The Graph субграф) → аналитический pipeline → Merkle tree → root публикуется on-chain → клейм через proof.
Типичный набор источников:
- Transaction history — все транзакции адреса с протоколом за период
- Event logs — Swap, Deposit, Borrow, Repay из контрактов протокола
- Token balances at snapshot — ERC-20 балансы на определённых блоках
- ENS / Lens / Farcaster — верификация реальной идентичности
- Cross-chain активность — деятельность на других цепях для anti-Sybil
Критерии и веса
Каждый адрес получает score по нескольким осям. Пример структуры:
| Критерий |
Вес |
Метод вычисления |
| Объём торгов (USD) |
30% |
log-scale нормализация |
| Количество уникальных дней активности |
25% |
raw count, cap at 180 |
| Удержание LP позиции (дни) |
20% |
суммарные дни в пуле |
| Ранний пользователь (первые 3 месяца) |
15% |
бинарный флаг |
| Верифицированная личность |
10% |
ENS/Gitcoin Passport score |
Log-scale важен для объёмных метрик: без него whale с $10M объёмом получает в 10000 раз больше пользователя с $1000. С log-scale — в 4 раза. Это правильнее с точки зрения goal (вознаградить участие, не капитал).
Merkle-дистрибьютор
Стандартная реализация — MerkleDistributor (как у Uniswap). Алгоритм:
- Вычислить аллокации для всех адресов off-chain
- Построить Merkle tree: каждый лист =
keccak256(abi.encodePacked(address, amount))
- Записать root в контракт
- Пользователь клеймит, предоставляя proof (массив sibling-хешей)
function claim(uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external {
require(!isClaimed(index), "Already claimed");
bytes32 node = keccak256(abi.encodePacked(index, account, amount));
require(MerkleProof.verify(merkleProof, merkleRoot, node), "Invalid proof");
_setClaimed(index);
IERC20(token).safeTransfer(account, amount);
emit Claimed(index, account, amount);
}
Claimed биты упаковываются в mapping(uint256 => uint256) — 256 адресов на один uint256, газ экономится на storage.
Vesting опция
Немедленный клейм всей суммы провоцирует dump. Альтернатива: линейный vesting через контракт TokenVesting или cliff + linear схема. Пример: 10% немедленно, остальное линейно за 6 месяцев. Реализуется или отдельным vesting контрактом (пользователь клеймит → токены идут в vesting stream), или через интеграцию с Sablier v2 / LlamaPayV2 для stream-based distribution.
Сравнение методов распределения airdrop
| Метод |
Доля ботов |
Справедливость |
Сложность реализации |
| Snapshot баланса |
70% |
Низкая |
Низкая |
| Snapshot + CAPTCHA |
40% |
Средняя |
Средняя |
| Мульти-критерий (наш) |
<5% |
Высокая |
Высокая |
Наш подход в 14 раз эффективнее простого snapshot по доле ботов, что подтверждено на реальных проектах с совокупным TVL более $500M.
Процесс разработки
Аналитика (1-2 недели). Определение критериев совместно с командой протокола, выбор snapshot-блоков, написание SQL/GraphQL запросов для извлечения данных.
Pipeline и Sybil-фильтрация (1-2 недели). Python/TypeScript скрипты: сбор данных, нормализация, clustering, финальный расчёт аллокаций. Верификация результатов: топ-10 и дно-10 адресов смотрим вручную.
Смарт-контракты (1 неделя). MerkleDistributor с опциональным vesting, деплой на testnet, верификация на Etherscan/Arbiscan.
Frontend для клейма (3-5 дней). Простой интерфейс: ввод адреса → проверка аллокации → клейм через wagmi/viem. Генерация proof на клиенте из публично доступного Merkle tree.
Что входит в работу (deliverables)
- Документация по архитектуре и критериям
- Смарт-контракты с аудитом безопасности
- Frontend для клейма с кастомным дизайном
- Развёртывание на mainnet/testnet
- Обучение команды (2 часа)
- Поддержка в течение 1 месяца после запуска
Каждый смарт-контракт проходит формальную верификацию и аудит. Мы предоставляем отчёт по газовой оптимизации. Наши разработчики имеют сертификаты Chainlink и ConsenSys. Мы гарантируем отсутствие reentrancy-уязвимостей.
Многолетний опыт разработки на Ethereum, более 20 реализованных airdrop-систем для протоколов. Закажите разработку системы автоматизации airdrop-фарминга уже сегодня! Получите консультацию по вашим критериям распределения — напишите нам.
Разработка токенов: ERC-20, токеномика, вестинг
«ERC-20 — это просто» — фраза, после которой начинаются проблемы. Базовый transfer написать несложно. Но токен, у которого через шесть месяцев не происходит инфляционный коллапс, governance работает как задумано, а вестинг нельзя обойти через хитрую схему с делегированием — это уже проектирование.
ERC-20: что под капотом
Стандарт ERC-20 — девять функций. Сложность начинается с расширений:
ERC-20Permit (EIP-2612) — gasless approve через подпись. Пользователь подписывает permit(owner, spender, value, deadline, v, r, s) off-chain, spender вызывает permit() + transferFrom() в одной транзакции. Это убирает отдельный approve step. Но: подпись можно перехватить и использовать — нужен deadline и проверка nonce.
ERC-20Votes (EIP-5805) — snapshot балансов для governance. Checkpoint-система хранит историю балансов по номеру блока. getPastVotes(address, blockNumber) — баланс на момент создания proposal, а не текущий. Это предотвращает flash loan governance attack: нельзя занять токены и проголосовать ими в одной транзакции.
Rebasing токены (stETH, Ampleforth) — balanceOf меняется автоматически через изменение internal shares ratio. Высокая сложность интеграции: большинство DeFi протоколов не работают корректно с rebasing без wrapping в non-rebasing версию.
Fee-on-transfer токены — при каждом transfer снимается процент. Ломают AMM расчёты: пул получает меньше, чем ожидал. Uniswap v2/v3 не поддерживают fee-on-transfer нативно — нужны специальные pair/router.
Tokenomics: где математика превращается в экономику
Токеномика — это не таблица в Excel с суммой 100%. Это модель инцентивов, которая либо работает в долгосрочной перспективе, либо создаёт давление продаж которое убьёт проект.
Emission schedule и инфляция
Фиксированный supply (Bitcoin-модель) — deflation через burn механику или просто ограниченное количество. Подходит для store-of-value или utility токенов с ограниченным спросом на новые токены.
Инфляционная модель (Ethereum post-Merge, Curve) — новые токены выпускаются для стимулирования участников. Нужен баланс: emission должен быть ниже или равен value capture протоколом. Если протокол зарабатывает $100k/месяц, а эмиссия в рыночной стоимости $500k/месяц — постоянное давление продаж неизбежно.
Halving schedules (Bitcoin-style) — уменьшение emission со временем. Создаёт предсказуемость, но требует что утилити токена росла чтобы компенсировать падающие rewards для stakers/validators.
Supply distribution
| Категория |
Типичный диапазон |
Риск |
| Команда + advisors |
15–20% |
Dumping при unlock |
| Investors (seed, private) |
15–25% |
Координированный выход |
| Treasury / DAO |
20–35% |
Governance capture |
| Ecosystem / grants |
10–20% |
Неэффективное распределение |
| Public sale / LBP |
5–15% |
Недооценка на LBP → whale capture |
| Liquidity provision |
5–10% |
Mercenary capital |
Нет универсальной формулы. Есть принцип: никакой одной сущности не должно принадлежать >33% voting power при запуске. Иначе governance — фикция.
Vesting контракты: детали имеют значение
Linear vesting с cliff — стандарт для команды и инвесторов. cliff — период после TGE, в течение которого ничего не доступно. После cliff: линейный unlock до duration.
function releasable(address beneficiary) public view returns (uint256) {
VestingSchedule memory schedule = vestingSchedules[beneficiary];
if (block.timestamp < schedule.cliff) return 0;
uint256 elapsed = block.timestamp - schedule.cliff;
uint256 vestingDuration = schedule.duration - (schedule.cliff - schedule.start);
uint256 vested = schedule.totalAmount * elapsed / vestingDuration;
return vested - schedule.released;
}
Типичные ошибки при реализации:
Revocable vesting без timelock — owner может отозвать vesting мгновенно. Если owner key скомпрометирован или команда недобросовестна — все unvested токены могут быть отозваны. Решение: revocation через multisig + governance vote.
Cliff не блокирует governance права — если используется ERC-20Votes, recipient может делегировать voting power с первого дня, даже если токены ещё не unlocked. Нужно явно разделить voting power и claim logic.
Отсутствие emergency pause — если обнаружена уязвимость в vesting контракте, нужна возможность приостановить claim. Pausable + timelock на unpause.
Liquidity Bootstrapping
Запуск ликвидности — критический момент. Три основных подхода:
Balancer LBP (Liquidity Bootstrapping Pool) — временный Balancer пул с высоким начальным весом токена (90/10 проект-токен/USDC) который автоматически снижается до 50/50 за несколько дней. Создаёт нисходящее ценовое давление, препятствуя ботам скупить всё по одной цене. После LBP ликвидность переносится в постоянный пул.
Fjord Foundry — специализированная платформа для LBP и fair launches. Меньше операционного overhead чем прямая интеграция с Balancer.
Uniswap v3 с ограниченным range — добавить ликвидность в узкий диапазон вокруг начальной цены. Высокая capital efficiency, но требует активного управления range.
TWAMM (Time-Weighted AMM) — механика для постепенной продажи/покупки больших объёмов без slippage. Paradigm предложил, реализован в FraxSwap.
Governance токены и voting механики
OpenZeppelin Governor — стандартная реализация on-chain governance. Модульная архитектура: GovernorVotes для counting, GovernorTimelockControl для timelock execution, GovernorSettings для изменяемых параметров.
Quorum — минимальный процент supply для валидности голосования. Слишком высокий quorum = apathy failure (не набирается голосов). Слишком низкий = whale capture. Compound установил quorum 400k COMP (4% supply) — на практике достигается редко без координации крупных holders.
Flash loan governance attack — атакующий занимает токены через flash loan, делегирует их себе, создаёт proposal или голосует, возвращает токены. ERC-20Votes с snapshot по номеру блока полностью блокирует это: нужно иметь токены на момент создания snapshot, который берётся в момент создания proposal.
Delegation — пользователи с малыми балансами часто не голосуют. Liquid delegation (как в Optimism) позволяет делегировать voting power конкретным addresses (delegates) без передачи ownership токенов.
Стек для токен-разработки
Контракты: Solidity 0.8.x, OpenZeppelin Contracts 5.x (ERC20, ERC20Permit, ERC20Votes, Governor, TimelockController, TokenVesting)
Аудит токеномики: Python модели с симуляцией emission/demand, cadCAD для complex systems modeling
Деплой и управление: Foundry scripts, Gnosis Safe для treasury, OpenZeppelin Defender для автоматизации
Аналитика: Dune Analytics для on-chain метрик, Token Terminal для protocol revenue
Процесс
Tokenomics design — модель supply, allocation, emission schedule, vesting. Стресс-тестирование сценариев (bear market, whale exit, governance capture attempt).
Контракт разработка — ERC-20 + extensions, vesting, governance. Foundry fuzz тесты на vesting calculations, governance thresholds.
Аудит — особое внимание на governance attack vectors, vesting bypass, permit replay attacks.
LBP / launch — выбор механики, настройка параметров, мониторинг первых 24 часов.
Post-launch — мониторинг supply distribution через Dune, governance participation metrics, treasury management.
Сроки
- ERC-20 с permit и basic governance: 2–3 недели
- Vesting контракт с revocation и cliff: 2–4 недели
- Полный governance (Governor + Timelock + Token): 4–7 недель
- Токен + LBP + governance + vesting: 8–14 недель