השקת טוקן Jetton ב-TON: מהרעיון ל-Mainnet

פיתוח Jetton token ב-TON דורש הבנה של ארכיטקטורה שונה מפתרונות מוכרים בבלוקצ'יינים אחרים. אנחנו בונים טוקנים לפי תקן TEP-74, מתכננים מערכת של חוזי Master ו-Wallet, ומספקים את הפרויקט במפתח מלא—מהרעיון ועד לפריסה. הצוות שלנו מבטיח אמינות ותמיכה מתמשכת כך שהטוקן שלך פועל ביציבות ומתרחב עם העסק שלך.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1335
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1031

הבנת הארכיטקטורה של Jetton Token ב-TON

עם ניסיון של למעלה מ-5 שנים בבלוקצ'יין TON ויותר מ-20 פרויקטים שהושקו, אנו מספקים פיתוח מקצועי של טוקני TON. כאשר מעבירים פרויקט מ-Ethereum ל-TON, רבים נתקלים בבעיה: טוקנים ב-TON לא עובדים, למרות שקוד ה-Solidity נראה ללא דופי. הבעיה אינה בשפה—ההבדל הוא ביסוד. TON משתמש ב-sharding, והטוקנים כאן בנויים אחרת: לא חוזה אחד עם מיפוי של יתרות, אלא מערכת של שני חוזים. טוקן Jetton הוא תקן TEP-74, המיועד לסקלביליות. במשך למעלה מ-5 שנות עבודה, השקנו יותר מ-20 פרויקטים כאלה ואנו מכירים את כל המלכודות. אנו נעריך את הפרויקט שלכם בחינם—פשוט כתבו לנו.

לדוגמה, פריסה בסיסית של טוקן Jetton עולה $2,000 וחוסכת עד 30% בעמלות גז בהשוואה לחוזים לא אופטימליים. Jetton הוא פי 10 יותר סקלבילי מ-ERC-20, מה שהופך אותו לאידיאלי עבור יישומים עם תפוקה גבוהה.

איך עובד טוקן Jetton מבחינה מכנית?

Jetton הוא תקן TEP-74, אנלוגי ל-ERC-20 אך עם ארכיטקטורה שונה מהותית—טוב פי 10 לסקלביליות בסביבות sharded. ב-TON, כל מחזיק טוקן מקבל חוזה ארנק משלו (Jetton Wallet), בעוד שהלוגיקה המשותפת (minting, מטא-דאטה) מאוחסנת בחוזה מרכזי (Jetton Master). זה מבטיח עסקאות מקומיות בתוך shards—העברה בין שני ארנקים אינה דורשת אינטראקציה בין-shards, מה שנותן שיפור ביצועים פי 10 בהשוואה ל-ERC-20 בעומס גבוה. כל פעולת העברה דורשת שליחת TON עבור גז: העלות האופיינית היא 0.05–0.1 TON, ולנמענים חדשים עד 0.15 TON כולל עמלות אחסון. הודות לאופטימיזציית גז, אנו משיגים חיסכון של עד 30% בהשוואה לחוזים לא אופטימליים.

ארכיטקטורה: Jetton Master ו-Jetton Wallet

Jetton Master — חוזה אחד לכל טוקן. הוא מאחסן מטא-דאטה (שם, סמל, decimals, totalSupply), לוגיקת minting, ורשימה של ארנקים רשומים. הוא אינו מאחסן יתרות—הוא לא יודע אותן.

Jetton Wallet — חוזה נפרד לכל כתובת. הוא נפרס אוטומטית כאשר טוקנים נשלחים לראשונה לכתובת. הוא מאחסן את היתרה של המשתמש ומעבד העברות.

תהליך עבודה:

Alice → (transfer) → Alice's Jetton Wallet
Alice's Jetton Wallet → (internal message) → Bob's Jetton Wallet
Bob's Jetton Wallet: принимает токены, увеличивает баланс

דוגמת חוזה ב-Tact

Tact היא שפה ברמה גבוהה עבור TON, המועדפת על פני FunC. להלן דוגמה מלאה ליישום של Jetton Master ו-Jetton Wallet בחוזה אחד:

import "@stdlib/jetton";

message(0x178d4519) TokenTransferInternal {
    queryId: Int as uint64;
    amount: Int as coins;
    from: Address;
    responseAddress: Address?;
    forwardTonAmount: Int as coins;
    forwardPayload: Slice as remaining;
}

contract JettonMaster with Jetton {
    totalSupply: Int as coins = 0;
    owner: Address;
    jettonContent: Cell;
    mintable: Bool;

    init(owner: Address, content: Cell) {
        self.owner = owner;
        self.jettonContent = content;
        self.mintable = true;
    }

    receive(msg: JettonMint) {
        require(sender() == self.owner, "Only owner can mint");
        require(self.mintable, "Minting disabled");
        self.totalSupply += msg.amount;
        let initData: StateInit = self.getJettonWalletInit(msg.receiver);
        let walletAddress: Address = contractAddress(initData);
        send(SendParameters{
            to: walletAddress,
            body: TokenTransferInternal{
                queryId: msg.queryId,
                amount: msg.amount,
                from: myAddress(),
                responseAddress: msg.responseAddress,
                forwardTonAmount: msg.forwardTonAmount,
                forwardPayload: emptySlice(),
            }.toCell(),
            value: msg.tonAmount,
            mode: SendIgnoreErrors,
            code: initData.code,
            data: initData.data,
        });
    }

    fun getJettonWalletInit(owner: Address): StateInit {
        return initOf JettonWallet(owner, myAddress());
    }
}

contract JettonWallet with JettonWallet {
    balance: Int as coins = 0;
    owner: Address;
    jettonMaster: Address;

    init(owner: Address, jettonMaster: Address) {
        self.owner = owner;
        self.jettonMaster = jettonMaster;
    }

    receive(msg: TokenTransfer) {
        require(sender() == self.owner, "Not owner");
        require(msg.amount > 0, "Zero amount");
        require(self.balance >= msg.amount, "Insufficient balance");
        self.balance -= msg.amount;
        let receiverWalletInit: StateInit = initOf JettonWallet(msg.destination, self.jettonMaster);
        let receiverWallet: Address = contractAddress(receiverWalletInit);
        send(SendParameters{
            to: receiverWallet,
            value: msg.forwardTonAmount + context().readForwardFee() * 2,
            mode: SendIgnoreErrors,
            body: TokenTransferInternal{
                queryId: msg.queryId,
                amount: msg.amount,
                from: self.owner,
                responseAddress: msg.responseAddress,
                forwardTonAmount: msg.forwardTonAmount,
                forwardPayload: msg.forwardPayload,
            }.toCell(),
            code: receiverWalletInit.code,
            data: receiverWalletInit.data,
        });
    }
}

השוואה: Jetton מול ERC-20

פרמטר Jetton (TON) ERC-20 (Ethereum)
ארכיטקטורה שתי שכבות: Master + Wallet חוזה יחיד עם מיפוי
סקלביליות Sharding, אופקית (טוב פי 10) חוט יחיד, מגבלת גז
עלות העברה 0.05–0.1 TON (~$0.05) ~$1-5 בעומס
אבטחה מנגנון Bounce הגנת Reentrancy
אופטימיזציית גז Bounce מובנה דורש טיפול מפורש

שלבי פיתוח טוקן Jetton

שלב משך תיאור
ניתוח ועיצוב יום אחד הגדרת פרמטרי טוקן, ארכיטקטורה
כתיבת חוזים ב-Tact 2-4 ימים Master, Wallet, בדיקות
ביקורת ואופטימיזציית גז 1-2 ימים Slither, Mythril, אימות פורמלי לחוזי TON
פריסה ואימות 0.5 יום Testnet → Mainnet, אימות ב-explorer; כולל פריסת טוקן מלאה
תמיכה 30 ימים תיקוני באגים, שדרוגים

פריסת טוקן Jetton

  1. הגדרת פרמטרי טוקן (שם, סמל, decimals, totalSupply, mintable).
  2. כתיבת חוזי Master ו-Wallet ב-Tact (או התאמת התבנית שלנו).
  3. בדיקה על ה-TON testnet באמצעות Tenderly או מקומית דרך TON Sandbox.
  4. ביצוע ביקורת אבטחה (אנו משתמשים ב-Slither ו-Mythril; אימות פורמלי אפשרי גם כן).
  5. פריסה ל-mainnet ואימות החוזה ב-explorer.

אופטימיזציית גז ואבטחה

הפחתת עלויות עסקאות

ב-TON, כל פעולה דורשת שליחת TON עבור גז. בעת העברה, יש לשלוח מספיק כדי לכסות: גז הארנק של השולח, גז הארנק של הנמען (כולל פריסה אם חדש), ו-forwardAmount אופציונלי עבור הודעה. עלות אופיינית: 0.05–0.1 TON לפעולה. לנמענים חדשים, עד 0.15 TON כולל עמלות אחסון. הודות לאופטימיזציית גז, אנו משיגים חיסכון של עד 30% בהשוואה לחוזים לא אופטימליים. אנו שמים דגש על אבטחת חוזים עם ביקורות קבועות ואימות פורמלי.

סיכונים בטיפול ב-Bounce

טיפול ב-Bounce הוא חובה. אם עסקה נכשלת (לדוגמה, גז לא מספיק), TON מחזיר את ההודעה לשולח. Jetton Wallet חייב לעבד את ההודעה המוחזרת ולשחזר את היתרה:

bounced(msg: bounced<TokenTransferInternal>) { self.balance += msg.amount; } 

ללא מטפל זה, היתרה של השולח אובדת לנצח. זו אחת הטעויות הנפוצות ביותר בסביבת ייצור.

מה כלול בחבילת הפיתוח

  • עיצוב ארכיטקטורה ומפרט טכני
  • קוד חוזה מלא ב-Tact עם בדיקות יחידה
  • אופטימיזציית גז (במטרה להפחית עלויות ב-30%)
  • אינטגרציה עם TON Connect 2.0 לתאימות ארנקים
  • פריסה על testnet ו-mainnet
  • תיעוד פריסה והדרכה לצוות
  • 30 ימים של תיקוני באגים ותמיכה בחינם

עלות פיתוח אופיינית נעה בין $2,000 ל-$5,000, תלוי במורכבות.

הבטחות ותמיכה

אנו מספקים הבטחה כתובה לאבטחה: אם החוזה נפרץ עקב שגיאת קוד, אנו נתקן אותו בחינם תוך 30 ימים. הפיתוח כולל: תיעוד ארכיטקטוני, קוד חוזה מלא עם בדיקות, אינטגרציה עם TON Connect 2.0, והוראות פריסה. תארו את הפרויקט שלכם—אנו נעריך זמנים ועלויות. הזמינו פיתוח טוקן Jetton מאנשי מקצוע.

תקן TEP-74