Розробка системи керування гаманцями для airdrop-фармінгу
Airdrop-фармінг — це професійна діяльність, яка потребує керування сотнями гаманців, систематичних on-chain транзакцій та одночасної роботи з десятками протоколів. Ручне керування сотнями гаманців вимагає сотень годин на місяць і неминуче веде до помилок: забуті транзакції, неоптимальний gas, кореляція патернів, яка призводить до sybil-банів. За статистикою, при ручному керуванні близько 30% фармерів стикаються з sybil-детектом хоча б раз. Автоматизація вирішує ці проблеми, дозволяючи зосередитися на стратегії, а не на кліках. Наш досвід у цій сфері дозволяє уникнути типових помилок, які ведуть до втрати airdrop-кваліфікації. Система автоматизації — обов'язковий інструмент для серйозного фармера. Зв'яжіться з нами, щоб обговорити ваші завдання та отримати індивідуальний проєкт автоматизації.
Що таке професійний airdrop-фармінг
Аналіз великих airdrop-кампаній (Arbitrum, Optimism, ZkSync, LayerZero, EigenLayer) показує патерни, які винагороджувались: регулярна активність протягом багатьох місяців, різноманітність протоколів, нативні транзакції (не тільки bridging), тримання токенів, участь у governance. Система має автоматизувати саме ці патерни, зберігаючи органічність активності.
Архітектура системи
Ієрархія гаманців
Професійний фармер працює з кількома рівнями ключів:
Master wallet — холодний гаманець (Ledger/Trezor або air-gapped machine). Зберігає основний капітал. Ніколи не використовується напряму в протоколах.
Fund wallets (2-5 штук) — проміжні гаманці для розподілу коштів. Отримують ETH/USDC від master, розподіляють по farming wallets.
Farming wallets (50-500 штук) — робочі гаманці, які безпосередньо взаємодіють з протоколами. Кожен генерується як окремий HD-шлях від однієї або кількох seed фраз.
Master Wallet
↓ (manual transfers)
Fund Wallets [1-5]
↓ (automated distribution)
Farming Wallets [50-500]
↓ (automated interactions)
DeFi Protocols
Важливо: farming wallets не повинні мати прямих on-chain зв'язків з master wallet. Ланцюжок fund wallet → farming wallet з різними часовими інтервалами знижує кореляцію.
Генерація та зберігання ключів
Усі farming wallets генеруються детерміновано з seed фраз за специфікацією BIP44:
import { HDNodeWallet, Mnemonic } from "ethers";
function generateFarmingWallets(
mnemonic: string,
count: number,
startIndex: number = 0
): WalletInfo[] {
const masterNode = HDNodeWallet.fromMnemonic(
Mnemonic.fromPhrase(mnemonic)
).derivePath("m/44'/60'/0'/0");
return Array.from({ length: count }, (_, i) => {
const wallet = masterNode.deriveChild(startIndex + i);
return {
index: startIndex + i,
address: wallet.address,
privateKey: wallet.privateKey,
derivationPath: `m/44'/60'/0'/0/${startIndex + i}`,
};
});
}
Зберігання ключів: ніколи не зберігаємо private keys у відкритому вигляді. Варіанти — шифрування через AES-256-GCM з паролем (KDF: Argon2id), зберігання тільки seed phrase + on-demand derivation або HashiCorp Vault для командного використання.
База даних гаманців та активності
CREATE TABLE wallets (
id SERIAL PRIMARY KEY,
address VARCHAR(42) UNIQUE NOT NULL,
derivation_path VARCHAR(64),
wallet_group VARCHAR(64),
created_at TIMESTAMPTZ DEFAULT NOW(),
last_active_at TIMESTAMPTZ,
total_gas_spent NUMERIC(30, 18) DEFAULT 0,
notes TEXT,
tags TEXT[]
);
CREATE TABLE protocol_interactions (
id BIGSERIAL PRIMARY KEY,
wallet_id INTEGER REFERENCES wallets(id),
protocol VARCHAR(128) NOT NULL,
chain_id INTEGER NOT NULL,
tx_hash VARCHAR(66),
action_type VARCHAR(64),
amount NUMERIC(30, 18),
gas_used NUMERIC(30, 18),
executed_at TIMESTAMPTZ DEFAULT NOW(),
status VARCHAR(16) DEFAULT 'pending',
metadata JSONB
);
CREATE TABLE farming_tasks (
id BIGSERIAL PRIMARY KEY,
wallet_id INTEGER REFERENCES wallets(id),
task_type VARCHAR(128) NOT NULL,
protocol VARCHAR(128) NOT NULL,
chain_id INTEGER NOT NULL,
parameters JSONB NOT NULL,
scheduled_at TIMESTAMPTZ,
executed_at TIMESTAMPTZ,
status VARCHAR(16) DEFAULT 'pending',
retry_count INTEGER DEFAULT 0,
error_message TEXT
);
Як ми автоматизуємо взаємодії?
Task Runner
Система виконання завдань імітує людську поведінку: випадкові затримки між транзакціями, варіативний час доби, різні gas prices.
class FarmingTaskRunner {
async executeTask(task: FarmingTask): Promise<TxReceipt> {
const wallet = await this.walletManager.getWallet(task.walletId);
const provider = this.getProvider(task.chainId);
// Випадкова затримка 30с - 5 хв перед транзакцією
const delay = randomBetween(30_000, 300_000);
await sleep(delay);
// Випадкова зміна gas price в межах ±10%
const gasPrice = await this.getGasWithVariance(provider, 0.1);
const handler = this.handlers.get(task.taskType);
if (!handler) throw new Error(`Unknown task type: ${task.taskType}`);
return handler.execute(wallet, task.parameters, { gasPrice });
}
private async getGasWithVariance(provider: Provider, variance: number) {
const feeData = await provider.getFeeData();
const base = feeData.maxFeePerGas!;
const multiplier = 1 + (Math.random() * 2 - 1) * variance;
return base * BigInt(Math.round(multiplier * 100)) / 100n;
}
}
Protocol Handlers
Для кожного протоколу — окремий handler. Приклад для Uniswap V3:
class UniswapV3SwapHandler implements ProtocolHandler {
async execute(
wallet: Wallet,
params: SwapParams,
options: ExecutionOptions
): Promise<TxReceipt> {
const router = new Contract(UNISWAP_V3_ROUTER, ROUTER_ABI, wallet);
const deadline = Math.floor(Date.now() / 1000) + 1800; // 30 хв
const tx = await router.exactInputSingle({
tokenIn: params.tokenIn,
tokenOut: params.tokenOut,
fee: params.fee,
recipient: wallet.address,
deadline,
amountIn: params.amountIn,
amountOutMinimum: params.minAmountOut,
sqrtPriceLimitX96: 0,
}, {
maxFeePerGas: options.gasPrice,
maxPriorityFeePerGas: options.maxPriorityFeePerGas,
});
return tx.wait();
}
}
Аналогічні handlers створюються для Curve, AAVE, GMX, Stargate, Wormhole/LayerZero bridge, Pendle та інших протоколів.
Як захиститися від sybil-детекту?
Сучасні airdrop-системи активно борються з sybil-атаками. Ми враховуємо кілька факторів:
- Унікальність активності. Не копіюємо патерни між гаманцями: різні суми, різні протоколи, різні часові патерни.
- IP rotation. Кожен гаманець працює через окремий proxy/VPN. Спільний IP — сильний sybil-сигнал.
- Source of funds. Ланцюжок фінансування не повинен простежуватися до одного джерела. CEX withdrawals на різні гаманці — добре, прямий переказ — погано.
- Age of wallet. Старі гаманці цінуються більше. Система створює гаманці заздалегідь і дає їм «історію» до цільового дедлайну.
Згідно з аналітикою Nansen, кореляція IP-адрес є одним з головних факторів sybil-детекту у великих airdrop-кампаніях.
Моніторинг та аналітика
Для кожного гаманця система показує: on-chain активність по протоколах (з датами), витрачений gas (в USD), поточні позиції, score за відомими метриками (об'єм, кількість транзакцій, унікальні протоколи, дні активності) та поточний баланс по ланцюгах. Система автоматично розраховує estimated airdrop score для кожного відстежуваного проекту і дає рекомендації.
Приклад розрахунку airdrop score
Score може включати зважені метрики: об'єм (35%), кількість транзакцій (25%), унікальні протоколи (20%), дні активності (20%). Ваги налаштовуються під конкретний проект.Чому газова оптимізація критична?
При роботі з 200 гаманцями, 3-5 транзакціями на день на гаманець важлива газова оптимізація. Транзакції на L2 (Arbitrum, Base, Optimism) в 10-50 разів дешевші за mainnet: середня вартість газу на L2 становить $0.02–0.05 за транзакцію проти $2–5 на L1. Ми використовуємо batching, де підтримується multicall, моніторинг gas price для вибору низьких періодів та автоматичний розрахунок мінімального балансу ETH на кожному гаманці.
| Параметр | Ethereum L1 | Arbitrum L2 | Optimism L2 | Base L2 |
|---|---|---|---|---|
| Середня вартість транзакції | $2–5 | $0.02–0.05 | $0.01–0.03 | $0.02–0.04 |
| Кількість транзакцій на 1 ETH | 200–500 | 10 000–25 000 | 15 000–30 000 | 12 000–20 000 |
Процес розробки
- Аналітика — розбираємо вимоги: кількість гаманців, протоколи, бюджети, RPC.
- Проектування — архітектура, схема бази даних, вибір стеку.
- Реалізація — генерація гаманців, розробка handlers, планувальника, дашборду.
- Тестування — симуляція на тестнеті, перевірка anti-sybil метрик.
- Деплой та запуск — розгортання, налаштування моніторингу, документування.
Отримайте консультацію по вашому проекту — ми підберемо оптимальну архітектуру та стек.
Що входить в роботу
- Повний набір документації (архітектура, інструкція по експлуатації).
- Доступ до вихідного коду з ліцензією на використання.
- Навчання операторів.
- Підтримка на етапі запуску (до 2 тижнів).
- Гарантія відсутності backdoors в коді (аудит ключових частин).
Стек
Наші інженери мають багаторічний досвід у DeFi та автоматизації. Система побудована на production-ready стеку з відмовостійкістю та моніторингом.
| Компонент | Технологія |
|---|---|
| Backend | Node.js + TypeScript, Fastify |
| Task queue | Bull + Redis |
| Database | PostgreSQL + TimescaleDB |
| Blockchain | ethers.js v6, viem |
| RPC | Alchemy, Infura (з failover) |
| Proxy | SOCKS5 rotation (Bright Data, Oxylabs) |
| Frontend | React + TanStack Query |
| Monitoring | Grafana + Prometheus |
Якщо вам потрібна автоматизація airdrop-фармінгу — зв'яжіться з нами для консультації та оцінки вашого проекту.







