פיתוח טוקנים של Solana: מהנפקה ועד Transfer Hook

המעבר לסולנה מביא עמו לא פעם את האתגר של הנפקת טוקן משלך, אך פתרונות סטנדרטיים לא תמיד מכסים את צורכי העסק. אנחנו יוצרים SPL-tokens המותאמים למשימות שלך – מהנפקה בסיסית ועד להגדרת Transfer Fee ו-Transfer Hook. הצוות שלנו מספק את הפרויקט במפתח מלא, תוך הבטחת תאימות למערכת האקולוגית ואבטחה בכל שלב.

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

שאלות נפוצות

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

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

פיתוח טוקנים של Solana: מהנפקה ועד Transfer Hook

מפתחי EVM שעוברים ל-Solana מצפים לעתים קרובות לאנלוג של ERC-20, אבל הארכיטקטורה שונה מהותית. ל-Solana אין חוזה נפרד לכל טוקן—כל הטוקנים מנוהלים על ידי תוכנית טוקנים אחידה (Token Program), עם פרמטרים המאוחסנים בחשבון Mint. התאמה אישית אפשרית באמצעות Token Extensions (Transfer Fee, Transfer Hook) או תוכניות Rust נפרדות. אנחנו צוות של מהנדסי Solana עם ניסיון ביותר מ-30 פרויקטים—אנחנו עוזרים ליצור טוקני SPL בכל רמת מורכבות: מהנפקה בסיסית ועד אינטגרציה של Transfer Hook וביקורת.

בעיות שאנחנו פותרים

  • גז וביצועים. Solana מעבדת אלפי TPS, אבל הגדרה לא נכונה של חשבון Mint מובילה לעלויות מיותרות. לדוגמה, שכר דירה עבור חשבון Mint ללא הרחבות הוא מינימלי; עם הרחבות, מעט גבוה יותר. אנחנו מייעלים את גודל החשבון למשימות שלך, וחוסכים עד 40% בעסקאות—זה יכול להסתכם ב-$200–$500 בשנה עבור פרויקט טיפוסי.
  • תאימות אקולוגית. תקן Token Program הישן אינו תומך ב-Transfer Fee וב-Transfer Hook. ה-Token Extensions החדש פותר בעיות אלה אך דורש הגדרה לתאימות עם ארנקים ו-DEX. למעלה מ-90% מהארנקים הפופולריים כבר תומכים בתקן החדש.
  • אבטחה. Transfer Hook הוא כלי חזק, אבל שגיאות בתוכנית מותאמת אישית עלולות להוביל לאובדן כספים. בכל פרויקט, אנחנו מבצעים fuzzing (Echidna) וסקירת קוד.

Token Program לעומת Token Extensions: מה לבחור?

תקן הרחבות תאימות מתי להשתמש
spl-token (קלאסי) בסיסי: mint, burn, freeze 100% מהארנקים וה-DEXים טוקנים פשוטים ללא עמלות או hooks
Token Extensions (Token-2022) TransferFee, TransferHook, ConfidentialTransfer וכו' >90% מהארנקים (גדל) טוקנים עם עמלות, לוגיקה מותאמת אישית, פרטיות

עבור רוב הפרויקטים החדשים, אנחנו ממליצים על Token Extensions—הוא מספק 60% יותר יכולות ויעיל ב-30% יותר בגז מאשר Token Program הקלאסי עבור טוקנים עם עמלות. התקן מתואר ב-תיעוד רשמי של Solana Token Extensions.

הגדרת Transfer Fee בחשבון Mint

  1. הגדר הרחבות. עבור עמלות, יש צורך ב-TransferFeeConfig. חשב את גודל החשבון עם getMintLen.
  2. צור את החשבון. השתמש ב-SystemProgram.createAccount עם הגודל הנדרש ו-lamports.
  3. הגדר הרחבות לפני אתחול Mint. עבור Transfer Fee, קרא ל-createInitializeTransferFeeConfigInstruction.
  4. אתחל את Mint. לאחר ההרחבות, קרא ל-createInitializeMintInstruction.
  5. שלח את העסקה. כלול את כל ההוראות בעסקה אחת.
דוגמת קוד TypeScript (לחץ להרחבה)
import { createMint, createAssociatedTokenAccount, mintTo, TOKEN_2022_PROGRAM_ID, ExtensionType, getMintLen, createInitializeMintInstruction, createInitializeTransferFeeConfigInstruction, } from "@solana/spl-token";
import { Connection, Keypair, SystemProgram, Transaction } from "@solana/web3.js";

async function createTokenWithTransferFee(
  connection: Connection,
  payer: Keypair,
  mintAuthority: PublicKey,
  decimals: number,
  feeBasisPoints: number, // 100 = 1%
  maxFee: bigint, // максимальная комиссия в lamports
) {
  const mintKeypair = Keypair.generate();

  // вычисляем размер аккаунта с нужными extensions
  const extensions = [ExtensionType.TransferFeeConfig];
  const mintLen = getMintLen(extensions);
  const lamports = await connection.getMinimumBalanceForRentExemption(mintLen);

  const transaction = new Transaction().add(
    SystemProgram.createAccount({
      fromPubkey: payer.publicKey,
      newAccountPubkey: mintKeypair.publicKey,
      space: mintLen,
      lamports,
      programId: TOKEN_2022_PROGRAM_ID,
    }),
    createInitializeTransferFeeConfigInstruction(
      mintKeypair.publicKey,
      payer.publicKey,
      payer.publicKey,
      feeBasisPoints,
      maxFee,
      TOKEN_2022_PROGRAM_ID,
    ),
    createInitializeMintInstruction(
      mintKeypair.publicKey,
      decimals,
      mintAuthority,
      null,
      TOKEN_2022_PROGRAM_ID,
    ),
  );

  await sendAndConfirmTransaction(connection, transaction, [payer, mintKeypair]);

  return mintKeypair.publicKey;
}

חשוב: הרחבות מאותחלות לפני InitializeMint. סדר זה מבלבל לעתים קרובות מפתחים הרגילים ל-EVM.

Transfer Hook: סקירה ושימוש

Transfer Hook הוא ההרחבה החזקה ביותר של Token Extensions. הוא קורא לתוכנית מותאמת אישית בכל העברת טוקן. תרחישים טיפוסיים: רשימת היתרים/חסימה של כתובות, צבירת תמלוגים, חסימת העברות בתקופת נעילה. התוכנית כתובה ב-Rust עם Anchor ונרשמת בהגדרת ה-Mint. ניתן להגדיר עמלה של עד 2% (200 נקודות בסיס).

// Фрагмент Transfer Hook программы (Anchor)
use anchor_lang::prelude::*;
use spl_transfer_hook_interface::instruction::ExecuteInstruction;

#[program]
pub mod transfer_hook {
    use super::*;

    pub fn transfer_hook(ctx: Context<TransferHook>, amount: u64) -> Result<()> {
        let sender = &ctx.accounts.source_token;
        let receiver = &ctx.accounts.destination_token;
        let config = &ctx.accounts.hook_config;

        require!(
            config.whitelist.contains(&receiver.owner),
            TransferError::ReceiverNotWhitelisted
        );

        emit!(TransferEvent {
            from: sender.owner,
            to: receiver.owner,
            amount,
            timestamp: Clock::get()?.unix_timestamp,
        });

        Ok(())
    }
}

Transfer Hook דורש שכל החשבונות הנוספים יועברו בעסקה. אנחנו הופכים זאת לאוטומטי עם import { createMint, createAssociatedTokenAccount, mintTo, TOKEN_2022_PROGRAM_ID, ExtensionType, getMintLen, createInitializeMintInstruction, createInitializeTransferFeeConfigInstruction, } from "@solana/spl-token"; import { Connection, Keypair, SystemProgram, Transaction } from "@solana/web3.js"; async function createTokenWithTransferFee( connection: Connection, payer: Keypair, mintAuthority: PublicKey, decimals: number, feeBasisPoints: number, // 100 = 1% maxFee: bigint, // максимальная комиссия в lamports ) { const mintKeypair = Keypair.generate(); // вычисляем размер аккаунта с нужными extensions const extensions = [ExtensionType.TransferFeeConfig]; const mintLen = getMintLen(extensions); const lamports = await connection.getMinimumBalanceForRentExemption(mintLen); const transaction = new Transaction().add( SystemProgram.createAccount({ fromPubkey: payer.publicKey, newAccountPubkey: mintKeypair.publicKey, space: mintLen, lamports, programId: TOKEN_2022_PROGRAM_ID, }), createInitializeTransferFeeConfigInstruction( mintKeypair.publicKey, payer.publicKey, payer.publicKey, feeBasisPoints, maxFee, TOKEN_2022_PROGRAM_ID, ), createInitializeMintInstruction( mintKeypair.publicKey, decimals, mintAuthority, null, TOKEN_2022_PROGRAM_ID, ), ); await sendAndConfirmTransaction(connection, transaction, [payer, mintKeypair]); return mintKeypair.publicKey; } , ומפשטים את אינטגרציית הלקוח. עוד על Transfer Hook: מאגר דוגמאות של Solana Transfer Hook.

אפשרויות מטא-דאטה: Metaplex לעומת Token Metadata Extension

מטא-דאטה (שם, סמל, אייקון) מאוחסן או דרך Metaplex (חשבון נפרד) או דרך הרחבת Token Extensions המובנית. עבור טוקנים פונגיביליים ב-DeFi, אנחנו ממליצים על Metaplex בשל התמיכה הרחבה שלו. עבור טוקנים דמויי NFT או soulbound, השתמש בהרחבת NonTransferable.

יתרונות של Token Extensions לפרויקט חדש

Token Extensions מספק עמלות מובנות, hooks והעברות פרטיות ללא תוכניות נוספות. העברנו 15+ פרויקטים מ-Token Program ל-Token Extensions—חיסכון ממוצע של 30% בגז הודות לאגרגציית הוראות. Transfer Hook מפחית את מורכבות יישום הלוגיקה המותאמת אישית פי 2 בהשוואה לכתיבת תוכנית נפרדת ללא ה-hook.

מה כלול בעבודה?

  • יצירת חשבון Mint עם ההרחבות הנבחרות (TransferFee, TransferHook, Metadata וכו')
  • כתיבה ובדיקה של תוכנית Transfer Hook מותאמת אישית (אם נדרש)
  • אינטגרציה עם ארנקים (Phantom, Solflare, Backpack) ו-DEXים (Raydium, Orca)
  • ביקורת קוד: ניתוח סטטי (Slither עבור Rust), fuzzing (Echidna), סקירת קוד
  • תיעוד: מפרט טכני, מדריך פריסה, הפניה ל-API
  • העברת הרשאות וגישות
  • שבועיים של תמיכה לאחר השחרור

לוחות זמנים ועלות משוערים

סוג פרויקט לוח זמנים מחיר התחלתי
טוקן SPL בסיסי עם Metaplex 5–7 ימים $2,000
Token Extensions עם TransferFee ו-TransferHook 10–15 ימים $5,000
dApp מלא עם staking וממשל מ-20 ימים $10,000+

העלות מחושבת באופן אישי. צור קשר—נעריך את הפרויקט שלך תוך יום אחד.

על הניסיון שלנו

אנחנו מפתחי Solana עם תיק של 30+ פרויקטים: טוקני DeFi, אוספי NFT, משחקי Web3. אנחנו מתמחים ב-Token Extensions, Transfer Hook ו-Anchor. אנו מספקים אחריות ל-3 חודשים על פונקציונליות החוזה החכם לאחר הפריסה. הזמינו פיתוח טוקן SPL—קבלו ייעוץ חינם.