Ми знаємо на практиці: простий airdrop за snapshot-ом балансу давно не працює — боти збирають до 90% токенів, реальні користувачі отримують крихти, а команда витрачає газ на адреси, які продадуть активи в першу ж годину. Наша компанія з багаторічним досвідом у блокчейн-розробці пропонує систему автоматизації airdrop-фармінгу з мульти-критеріальним розподіленням. Це архітектура, де підсумкова алокація кожної адреси обчислюється через кілька незалежних фільтрів та вагових коефіцієнтів. Завдання: винагородити тих, хто реально взаємодіяв із протоколом, і виключити Sybil-акаунти.
Класичний приклад — ENS airdrop та Uniswap. Обидва дали токени всім адресам з певною історією. Складніший підхід у Arbitrum STIP та Optimism RPGF: там використовувались ретроспективні метрики активності за тривалий період з кількома ваговими групами. Наш підхід дозволяє економити до 70% на Sybil-фільтрації порівняно з ручною модерацією.
Чому anti-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-фармінгу вже сьогодні! Отримайте консультацію за вашими критеріями розподілення — напишіть нам.







