ניהול ארנקים אוטומטי לחקלאות איירפד
חקלאות איירפד דורשת ניהול של מאות ארנקים, ביצוע עסקאות אונצ'יין שיטתיות, ואינטראקציה עם עשרות פרוטוקולים בו-זמנית. ניהול ידני של מאות ארנקים לוקח מאות שעות בחודש ומוביל בהכרח לשגיאות: עסקאות שהוחמצו, גז לא אופטימלי, וקורלציה בדפוסים שמפעילה חסימות סייביל. לצוות שלנו יש ניסיון של למעלה מ-5 שנים באוטומציה של DeFi והוא השלים בהצלחה יותר מ-50 פרויקטים בתחום זה. מערכת אוטומציה היא כלי חובה לכל חקלאי רציני. צרו קשר כדי לדון במשימות שלכם ולקבל פרויקט אוטומציה מותאם אישית.
מה כוללת חקלאות איירפד מקצועית
ניתוח של קמפיינים מרכזיים של איירפד (Arbitrum, Optimism, ZkSync, LayerZero, EigenLayer) חושף את הדפוסים שתוגמלו: פעילות קבועה לאורך חודשים רבים, שימוש מגוון בפרוטוקולים, עסקאות נטיביות (לא רק ברידג'ינג), החזקת טוקנים, והשתתפות בממשל. המערכת חייבת לבצע אוטומציה של דפוסים אלה תוך שמירה על מראה פעילות אורגני.
ארכיטקטורת המערכת
היררכיית ארנקים
חקלאי מקצועי עובד עם מספר רמות מפתח:
- ארנק ראשי — ארנק קר (Ledger/Trezor או מכונה מנותקת). מחזיק את ההון העיקרי. לעולם לא נעשה בו שימוש ישיר בפרוטוקולים.
- ארנקי מימון (2-5) — ארנקי ביניים לחלוקת כספים. מקבלים ETH/USDC מהארנק הראשי ומחלקים לארנקי החקלאות.
- ארנקי חקלאות (50-500) — ארנקי עבודה שמתקשרים ישירות עם פרוטוקולים. כל אחד נוצר כנתיב HD נפרד מביטוי מזרע אחד או יותר.
Master Wallet ↓ (manual transfers)
Fund Wallets [1-5]
↓ (automated distribution)
Farming Wallets [50-500]
↓ (automated interactions)
DeFi Protocolsחשוב: לארנקי חקלאות אסור שיהיו קשרים אונצ'יין ישירים לארנק הראשי. השרשרת ארנק מימון → ארנק עבודה עם מרווחי זמן משתנים מפחיתה קורלציה.
יצירת מפתחות ואחסונם
כל ארנקי העבודה נוצרים דטרמיניסטית מביטויי מנמוניקה לפי 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}`,
};
});
}אחסון מפתחות: לעולם אל תאחסנו מפתחות פרטיים בטקסט פשוט. אפשרויות כוללות הצפנת AES-256-GCM עם סיסמה (KDF: Argon2id), אחסון ביטוי הזרע בלבד + גזירה לפי דרישה, או שימוש ב-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
); כיצד אנו מבצעים אוטומציה של אינטראקציות
מריץ משימות
מערכת ביצוע המשימות מחקה התנהגות אנושית: עיכובים אקראיים בין עסקאות, שעות שונות ביום, מחירי גז שונים.
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;
}
} מטפלי פרוטוקולים
לכל פרוטוקול יש מטפל משלו. דוגמה עבור 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();
}
}מטפלים דומים נוצרים עבור Curve, AAVE, GMX, Stargate, גשר Wormhole/LayerZero, Pendle, ופרוטוקולים אחרים.
כיצד אנו מגנים מפני זיהוי סייביל
מערכות איירפד מודרניות נלחמות באופן פעיל בהתקפות סייביל. אנו מתחשבים במספר גורמים:
- ייחודיות פעילות. דפוסים אינם מועתקים בין ארנקים: סכומים שונים, פרוטוקולים שונים, דפוסי תזמון שונים.
- רוטציית IP: כל ארנק פועל דרך פרוקסי/VPN נפרד. IP משותף הוא אות סייביל חזק.
- מקור הכספים: שרשרת המימון לא צריכה להיות ניתנת למעקב למקור יחיד. משיכות מ-CEX לארנקים שונים הן טובות; העברות ישירות הן רעות.
- גיל הארנק: ארנקים ותיקים יותר מוערכים יותר. המערכת יוצרת ארנקים מראש ונותנת להם היסטוריה לפני המועד היעד.
לפי ניתוחי Nansen, קורלציית כתובות IP היא אחד הגורמים המרכזיים בזיהוי סייביל בקמפיינים מרכזיים של איירפד.
ניטור ואנליטיקה
עבור כל ארנק, המערכת מציגה: פעילות אונצ'יין לפי פרוטוקול (עם תאריכים), גז שהושקע (בדולרים), פוזיציות נוכחיות, ציון המבוסס על מדדים ידועים (נפח, מספר עסקאות, פרוטוקולים ייחודיים, ימים פעילים), ויתרה נוכחית בין שרשראות. המערכת מחשבת אוטומטית ציון איירפד משוער עבור כל פרויקט במעקב ומספקת המלצות.
דוגמה לחישוב ציון איירפד
הציון עשוי לכלול מדדים משוקללים: נפח (35%), מספר עסקאות (25%), פרוטוקולים ייחודיים (20%), ימים פעילים (20%). המשקלים ניתנים להתאמה אישית לכל פרויקט.מדוע אופטימיזציית גז היא קריטית
עם 200 ארנקים המבצעים 3–5 עסקאות ביום כל אחד, אופטימיזציית גז היא חיונית. עסקאות ב-L2 (Arbitrum, Base, Optimism) זולות פי 10–50 מהרשת הראשית: עלות גז ממוצעת ב-L2 היא $0.02–0.05 לעסקה לעומת $2–5 ב-L1. אנו משתמשים באצירה במקומות שבהם נתמך multicall, מנטרים מחירי גז כדי לבחור תקופות נמוכות, ומחשבים אוטומטית את יתרת ה-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.
- עיצוב — ארכיטקטורה, סכימת מסד נתונים, בחירת מחסנית טכנולוגית.
- יישום — יצירת ארנקים, פיתוח מטפלים, מתזמן, לוח מחוונים.
- בדיקות — סימולציה על testnet, אימות מדדי אנטי-סייביל.
- פריסה והשקה — פריסה, הגדרת ניטור, תיעוד.
הצוות שלנו מביא ניסיון של 5+ שנים ב-DeFi ואוטומציה, לאחר שהשלים פרויקטים רבים. קבלו ייעוץ — אנו נעצב את הארכיטקטורה והמחסנית האופטימליים.
מה כלול
- מערך תיעוד מלא (ארכיטקטורה, מדריך תפעול).
- גישה לקוד המקור עם רישיון שימוש.
- הכשרת מפעילים.
- תמיכה בשלב ההשקה (עד שבועיים).
- הבטחה ללא דלתות אחוריות בקוד (ביקורת של חלקים מרכזיים).
מחסנית טכנולוגית
למהנדסים שלנו יש ניסיון של שנים ב-DeFi ואוטומציה. המערכת בנויה על מחסנית מוכנה לייצור עם סובלנות לתקלות וניטור.
| רכיב | טכנולוגיה |
|---|---|
| צד שרת | Node.js + TypeScript, Fastify |
| תור משימות | Bull + Redis |
| מסד נתונים | PostgreSQL + TimescaleDB |
| בלוקצ'יין | ethers.js v6, viem |
| RPC | Alchemy, Infura (עם גיבוי) |
| פרוקסי | רוטציית SOCKS5 (Bright Data, Oxylabs) |
| צד לקוח | React + TanStack Query |
| ניטור | Grafana + Prometheus |
אם אתם צריכים אוטומציה לחקלאות איירפד, צרו קשר לייעוץ והערכת פרויקט.







