כאשר מנסים להעביר בוט של Ethereum ל-TON, מפתחים נתקלים בהבדל מהותי: מודל הביצוע האסינכרוני. במקום טרנזקציה אטומית אחת ב-Ethereum, TON מבצע שרשראות של הודעות פנימיות, כאשר כל שלב יכול להיות מוקפץ (bounced). ללא ארכיטקטורה מתאימה, הבוט מאבד כספים או נתקע במצב לא מוגדר. הגישה שלנו: לבנות את הבוט מאפס באמצעות מכונת מצבים (state machine) כדי לעקוב אחר כל טרנזקציית החלפה תלויה ועומדת, תוך התחשבות בהודעות מוקפצות וזמני פסק זמן. קבלו ייעוץ על ארכיטקטורת בוט ה-DEX שלכם ב-TON — צרו קשר להערכת פרויקט.
"ב-TON, כל שרשרת הודעות יכולה להיקטע על ידי הודעה מוקפצת — זה מתועד בארכיטקטורת TVM" (תיעוד TON, ראו ויקיפדיה: TON).
אסינכרוניות ב-TON: למה דפוסים נפוצים נכשלים
טרנזקציות TON שונות מהותית מ-EVM
ב-Ethereum, החלפה היא קריאה אחת, קבלה אחת, סטטוס אחד: הצלחה או ביטול. ב-TON, בקשה אחת של משתמש יוצרת שרשרת של הודעות פנימיות בין חוזים. החלפה ב-StonFi v2:
- ארנק משתמש → ארנק Jetton: העברה עם payload קדימה
- ארנק Jetton → ראוטר: transfer_notification
- ראוטר → פול: swap
- פול → ארנק Jetton (טוקן פלט): internal_transfer
- ארנק Jetton → ארנק משתמש: transfer_notification
כל שלב הוא טרנזקציה נפרדת עם hash משלה. הצלחת הטרנזקציה הראשונה אינה מבטיחה שכל השרשרת תצליח. אם שלב 3 או 4 נכשל, הודעה מוקפצת מגיעה לשלבים 5-6 והטוקנים המקוריים מוחזרים.
הבוט חייב: לשלוח שלב 1, לזכור את ה-hash של ההודעה היוצאת, לעקוב אחר עץ הטרנזקציות דרך in_msg_hash, ולהמתין או לשלב 5 מוצלח או להודעה מוקפצת עם החזרה.
TON API לניטור טרנזקציות
TON Center API v2: GET /v2/transactions?address={}&limit=20<_={}&hash={} — שליפת טרנזקציות עבור כתובת. השתמשו ב-lt (זמן לוגי) וב-hash עבור פגינציה כדי לעקוב אחר שרשרת ספציפית.
אפשרות נוחה יותר לבוטים: TON API getBlockTransactions + WebSocket דרך TON Access. בכל קבלת בלוק, בדקו טרנזקציות עבור הכתובת שלכם. זמן השהיה של 1-3 שניות לאחר סיום הבלוק (TON מסיים תוך 5-6 שניות).
ספריות: @ton/ton (TypeScript, רשמי) או tonutils-go (Go). עבור Python, pytoniq-core.
איך הבוט מתקשר עם StonFi ו-DeDust?
StonFi v2: ראוטר ו-Message Payload
StonFi v2 swap payload עבור jetton → jetton:
import { StonApiClient } from '@ston-fi/api';
import { DEX } from '@ston-fi/sdk';
const client = new StonApiClient();
const dex = client.openDex(DEX.v2);
const txParams = await dex.getSwapJettonToJettonTxParams({
userWalletAddress: walletAddress,
offerJettonAddress: USDT_ADDRESS,
askJettonAddress: STON_ADDRESS,
offerAmount: toNano('100'),
minAskAmount: toNano('95'),
});
await wallet.sendTransaction(txParams);
minAskAmount הוא הגנה מפני החלקה (slippage) על השרשרת. אם הפול לא יכול לספק את הסכום המינימלי, הטרנזקציה מוקפצת והטוקנים חוזרים. הבוט חייב לחשב minAskAmount על סמך מחיר הפול הנוכחי פחות החלקה מקובלת.
DeDust: ארכיטקטורה מבוססת Vault
DeDust שונה ארכיטקטונית: במקום לשלוח ישירות לפול, זה עובר דרך vault. לכל טוקן יש חוזה vault משלו. ההחלפה מתחילה בהפקדה ל-vault עם פרמטרי החלפה מצורפים ב-payload:
import { Asset, Factory, MAINNET_FACTORY_ADDR, Pool, VaultJetton } from '@dedust/sdk';
const factory = client.open(Factory.createFromAddress(MAINNET_FACTORY_ADDR));
const tonVault = client.open(await factory.getNativeVault());
await tonVault.sendSwap(wallet.getSender(), {
poolAddress: pool.address,
amount: toNano('1'),
gasAmount: toNano('0.25'),
});DeDust תומך גם בסגנון Uniswap v2 (פולים תנודתיים) וגם בסגנון Curve (פולים יציבים). עבור זוגות של stablecoin, פולים יציבים מציעים החלקה נמוכה יותר.
קבלת מחיר נוכחי ללא החלפה
עבור StonFi: GET https://api.ston.fi/v1/pools/{poolAddress} מחזיר token0_address, token1_address, reserve0, reserve1. מחיר = reserve1 / reserve0 מותאם לעשרונים.
עבור DeDust: קראו ל-Pool.getEstimatedSwapOut — פונקציית view שמחזירה amountOut עבור amountIn נתון. זה מדויק יותר מחישובי רזרבות, במיוחד עבור פולים יציבים.
| פרמטר | StonFi v2 | DeDust |
|---|---|---|
| ארכיטקטורה | מבוסס ראוטר (ארנק Jetton → ראוטר → פול) | מבוסס Vault (Vault → פול) |
| הגנה מפני החלקה | minAskAmount ב-payload | minAskAmount ב-vault |
| מחיר דרך רזרבות | GET /pools/ | Pool.getEstimatedSwapOut |
| עמלה (פול + ראוטר) | 0.4% | 0.3–0.5% |
החלפות StonFi v2 זולות יותר בכ-0.1% עבור סכומים גדולים בשל היעדר vault כפול, אבל DeDust מספק חישובים מדויקים יותר עבור פולים יציבים.
טיפול בהודעות מוקפצות בבוט
שימו לב: כאשר בוט TON שולח החלפה, הוא זוכר את ה-hash של ההודעה היוצאת ומתחיל טיימר. אם לאחר 10-15 שניות (3-4 בלוקים) לא התקבלה טרנזקציה סופית מוצלחת או הודעה מוקפצת, הבוט עובר למצב שגיאה. בקבלת הודעה מוקפצת, הוא בודק את קוד השגיאה: אם זה ביטול עקב הפול (מחיר גבוה מדי), הבוט שולח מחדש את העסקה עם minAskAmount חדש. כל הטרנזקציות המוקפצות מתועדות לניתוח עתידי.
מה כלול בפיתוח
- ארכיטקטורת בוט המתחשבת באסינכרוניות של TON: מכונת מצבים להחלפות תלויות ועומדות.
- אינטגרציה עם APIs של StonFi ו/או DeDust: שליפת מחירים, בניית טרנזקציות.
- טיפול בהודעות מוקפצות וזמני פסק זמן: ניסיון חוזר או תיעוד.
- יישום האסטרטגיה שבחרתם (ארביטראז', גריד, DCA).
- ניטור והתראות (Telegram, Prometheus metrics).
- תיעוד וקוד מוכן לפריסה.
אילו אסטרטגיות מסחר אפשריות ב-TON DEX?
ארביטראז' StonFi ↔ DeDust. אותו זוג jetton/TON נסחר בשני ה-DEXים. פער מחירים >0.5% (מעל עמלות + גז) מהווה הזדמנות ארביטראז'. אין אטומיות (אין flash loans באותו מובן), אז ארביטראז' הוא דו-שלבי: החלפה ב-DEX1, ואז החלפה ב-DEX2. סיכון: במהלך ההחלפה הראשונה, הפול השני עשוי לשנות מחיר.
מסחר בגריד. קניית jetton כשהמחיר יורד מתחת לרמת גריד, מכירה כשעולה. אסטרטגיה פשוטה, עובדת בשווקים צדדיים. מעשית עבור זוגות TON עם נזילות מספקת ($500K+ TVL).
DCA (ממוצע עלות בדולרים). קנייה אוטומטית של נפח קבוע של TON→Jetton בלוח זמנים. מיושם דרך cron job + TON wallet SDK. מורכבות נמוכה, הקדמה טובה לפיתוח בוטים ב-TON.
תשתית
ארנק. הבוט צריך ארנק חם — TON wallet v4 או v5. ביטוי זרע מאוחסן מוצפן (AES-256), לעולם לא בטקסט פשוט. רק כספים תפעוליים על הארנק החם; כספים עיקריים נשמרים בנפרד.
Node או RPC. TON Center הציבורי חינמי אך מוגבל בקצב (1 בקשה/שנייה). למסחר פעיל, השתמשו ב-TON Center Pro ($49/חודש, 25 בקשות/שנייה) או בצומת lite-server פרטי.
ניטור. בוט Telegram להתראות מסחר. Prometheus metrics: trades_per_hour, profit_per_day, error_rate.
תהליך
שלב 1: ניתוח ואב-טיפוס (3-5 ימים). התחברות ל-TON, קריאת מחירים מ-APIs של StonFi/DeDust, סימולציית אסטרטגיה על נתונים היסטוריים.
שלב 2: פיתוח בוט (1-2 שבועות). בונה טרנזקציות, מכונת מצבים למעקב אחר החלפות תלויות ועומדות, טיפול בשגיאות עבור הודעות מוקפצות.
שלב 3: בדיקות על TON testnet (3-5 ימים). ל-TON יש testnet מלא עם פריסת StonFi ל-testnet. שלב 4: פריסה לייצור. VPS + ניטור. התחילו עם הון קטן, הגדילו בהדרגה.
הערכות זמן ועלויות
| סוג בוט | זמן (שבועות) | עלות (USD) |
|---|---|---|
| בוט DCA / גריד (זוג בודד) | 1–1.5 | $3,000–$5,000 |
| בוט ארביטראז' (ניטור רב-זוגי) | 2–3 | $7,000–$12,000 |
העלות מחושבת באופן אישי לפי מורכבות האסטרטגיה ומספר האינטגרציות. הניסיון שלנו: 7+ שנים בפיתוח בלוקצ'יין, 15+ פרויקטי קריפטו. אם אתם צריכים ייעוץ ארכיטקטוני, צרו קשר לדיון מפורט במשימה שלכם. הזמינו פיתוח בוט — קבלו פתרון מוכן לאסטרטגיה שלכם.
טעויות נפוצות בפיתוח בוטים ל-TON:
- אי התחשבות בהודעות מוקפצות — הלקוח מאבד טוקנים.
- שימוש בארנק יחיד לכל האסטרטגיות — ערבוב כספים מגביר סיכון.
- התעלמות ממגבלות קצב RPC — הבוט נתקע על בקשות תכופות.
מתעניינים בבוט TON? צרו קשר להערכת פרויקט. ננתח את האסטרטגיה שלכם, נבחר את המחסנית הטכנולוגית, ונציע לוחות זמנים.
פיתוח בוט ה-DEX שלנו ל-TON מהיר פי 2 מגישות עשה-זאת-בעצמך בזכות מכונות מצבים מובנות מראש, והיישום שלנו ב-TypeScript יעיל פי 3 מ-Python למסחר בתדירות גבוהה. עם הארכיטקטורה שלנו, טיפול בהודעות מוקפצות מפחית אובדן טוקנים בעד 90% בהשוואה ליישומים נאיביים.







