← بلاگ
TON5 دقیقه مطالعهتوسط:

TON Blockchain برای توسعه‌دهندگان: Stars، USDT، TonConnect و پرداخت‌های Telegram

بررسی فنی یکپارچه‌سازی TON در Telegram Mini App از تجربه The Open Squad. معماری، TonConnect، دریافت Jettons (USDT)، Telegram Stars، قراردادهای امانی، امنیت.

TON Blockchain در سال 2026 «رمزارز طرفداران Telegram» نیست — این لایه زیرساختی کل پشته پرداخت داخل پیام‌رسان است. در The Open Squad، ما TON را در همه محصولات یکپارچه کردیم: پرداخت‌های USDT در The Open Earn، قراردادهای هوشمند امانی در The Open Guarantor. این راهنما درباره چیزهایی است که در مسیر یاد گرفتیم.

چرا TON برای پروژه‌های Telegram

جایگزین‌ها:

  • Stripe / PayPal — کند، کارمزدهای گران (3–5%)، برای کاربران 50+ کشوری که به آن‌ها خدمات می‌دهیم کار نمی‌کند
  • کیف‌پول‌های ارز دیجیتال چندشبکه‌ای — کابوس UX: کاربر باید شبکه‌ها، آدرس‌ها، گاز را بداند
  • Internal balance بدون برداشت — کاربران اعتماد نمی‌کنند

TON سه مشکل را همزمان حل می‌کند:

  1. کارمزد پایین — کسری از یک سنت برای هر تراکنش (در مقابل $0.30+ در Stripe)
  2. سرعت — نهایی‌سازی در 5 ثانیه
  3. UX — TonConnect به کاربران اجازه می‌دهد در دو ضربه کیف‌پول را متصل کنند، بدون کپی کردن آدرس‌ها

معماری TON در دو دقیقه

TON یک بلاکچین PoS شارد شده است. واحد بومی TON است. بر روی آن اجرا می‌شوند:

  • Jettons — استاندارد توکن (معادل ERC-20 در Ethereum). USDT روی TON یک Jetton صادر شده توسط Tether است
  • NFTs — استاندارد توکن منحصربه‌فرد
  • Workchains / Shardchains — شاردها برای مقیاس‌پذیری

برای توسعه‌دهنده این یعنی:

  • یک SDK (@ton/ton، @ton/core) هم با TON و هم با Jettons کار می‌کند
  • نیازی به مدیریت چندین شبکه نیست
  • یک تراکنش پیامی از یک قرارداد به قرارداد دیگر است (همه چیز قرارداد است، حتی کیف‌پول‌ها)

اتصال کیف‌پول از طریق TonConnect

TonConnect یک پروتکل متن‌باز است که dApp را به کیف‌پول کاربر متصل می‌کند. توسط همه کیف‌پول‌های اصلی TON پشتیبانی می‌شود: Tonkeeper، MyTonWallet، Tonhub.

در یک Mini App این‌گونه است:

import { TonConnectUI } from "@tonconnect/ui";

const tonConnectUI = new TonConnectUI({
  manifestUrl: "https://yourapp.com/tonconnect-manifest.json",
});

// باز کردن مودال انتخاب کیف‌پول
await tonConnectUI.openModal();

// پس از اتصال — اطلاعات کیف‌پول در دسترس است:
const wallet = tonConnectUI.wallet;
console.log(wallet?.account.address);

مانیفست (tonconnect-manifest.json) یک JSON ایستا با متادیتای اپلیکیشن شما است. کیف‌پول‌ها آن را می‌خوانند تا آیکون و نام شما را در صفحه رضایت نمایش دهند.

دریافت پرداخت‌ها: TON و USDT

سناریو 1: دریافت TON. برای هر کاربر یک آدرس واریز تولید کنید (از طریق زیرحساب HD-wallet). تراکنش‌های جدید را از طریق TON API گوش دهید:

from pytoniq import LiteClient

async def listen_deposits(address: str):
    async with LiteClient.from_mainnet_config() as client:
        txs = await client.get_transactions(address, count=10)
        for tx in txs:
            if tx.in_msg.value > 0:
                process_deposit(user_id, tx.in_msg.value)

سناریو 2: دریافت USDT (Jetton). USDT یک قرارداد Jetton است. هر گیرنده کیف‌پول Jetton مخصوص خود را دارد (آدرسی جدا از کیف‌پول TON اصلی). شما باید تراکنش‌های روی کیف‌پول Jetton را گوش دهید، نه کیف‌پول اصلی.

ساده‌ترین راه: استفاده از یک TON Index API میزبانی‌شده (Tonapi.io، TonCenter) با وب‌هوک‌ها برای انتقال‌های ورودی.

Telegram Stars: ارز دیجیتال Telegram

Stars ارز مجازی Telegram است (1 Star ≈ $0.013). برای خرید کالاهای دیجیتال استفاده می‌شود: اشتراک‌ها، شکلک‌های سفارشی، تم‌ها، ویژگی‌های پریمیوم ربات.

برخلاف TON، Stars را نمی‌توان آزادانه برداشت کرد — Telegram فقط برای سازندگان تأیید شده و با تأخیر، Stars را به TON تبدیل می‌کند.

زمان استفاده از Stars به جای TON:

  • محتوای پولی (مقالات، دوره‌ها، ویژگی‌های پریمیوم ربات)
  • خریدهای درون‌برنامه‌ای (استیکر، تم)
  • انعام و اهدا
  • انطباق با App Store / Play Store (Apple و Google برای خریدهای دیجیتال درون‌برنامه‌ای Stars را الزامی می‌کنند)

زمانی که TON مستقیم بهتر است:

  • پرداخت‌های B2B
  • امانی P2P
  • مبالغ بزرگتر
  • زمانی که کاربران به برداشت آزاد نیاز دارند

قراردادهای هوشمند: درس‌های امانی از The Open Guarantor

The Open Guarantor ربات ما برای معاملات امن P2P روی TON است. منطق ساده است:

  1. خریدار TON را به قرارداد امانی می‌فرستد
  2. قرارداد وجوه را تا تأیید نگه می‌دارد
  3. خریدار دریافت را تأیید می‌کند → قرارداد به فروشنده پرداخت می‌کند
  4. در صورت اختلاف، یک داور (ما) تصمیم می‌گیرد

قراردادها به FunC (زبان سطح پایین TON) یا Tact (سطح بالا) نوشته می‌شوند. ما از Tact استفاده می‌کنیم:

contract Escrow {
    buyer: Address;
    seller: Address;
    arbiter: Address;
    amount: Int;
    state: Int; // 0 = pending, 1 = released, 2 = refunded

    receive("release") {
        require(sender() == self.buyer, "only buyer");
        require(self.state == 0, "already settled");
        send(SendParameters{
            to: self.seller,
            value: self.amount,
            mode: SendPayGasSeparately
        });
        self.state = 1;
    }
    // ... refund, dispute logic
}

استقرار با blueprint (TON DevKit). ابتدا روی testnet آزمایش کنید، سپس mainnet.

چک‌لیست امنیت پرداخت

آنچه پس از اولین حادثه‌مان به کار گرفتیم:

  1. اعتبارسنجی هر مبلغ ورودی — هرگز به value از یک تراکنش بدون بررسی اعتماد نکنید
  2. محافظت در برابر reorg — قبل از اعتبار دادن، 6+ بلاک صبر کنید (≈30 ثانیه روی TON)
  3. تقسیم کیف‌پول گرم/سرد — فقط 24 ساعت پرداخت روی کیف‌پول گرم نگه دارید، بقیه در سرد
  4. کیف‌پول سخت‌افزاری برای cold — Ledger یا multisig
  5. محدودیت نرخ برداشت — N برداشت در دقیقه به ازای هر حساب
  6. رد ممیزی — هر حرکت وجوه در DB با تکرار به S3 / Postgres replica ثبت شود

هزینه‌های عملیات

برای اقتصاد واحد:

  • تراکنش TON — ~0.005 TON گاز (≈$0.025 با $5/TON)
  • تراکنش Jetton (USDT) — ~0.05 TON (≈$0.25)
  • استقرار قرارداد هوشمند — یک‌باره ~0.1 TON

اگر روزانه 1,000 برداشت USDT پردازش می‌کنید، این ~$250/روز در گاز است. برای کاهش:

  • دسته‌بندی برداشت‌ها (چندین گیرنده در یک تراکنش)
  • استفاده از TON مستقیم به جای USDT برای مبالغ کوچک

بعد چیست

TON عملی‌ترین بلاکچین برای محصولات بومی Telegram در سال 2026 است. اگر محصول شما با پول سروکار دارد، یکپارچه‌سازی TON 2–3 هفته طول می‌کشد و فوراً UX‌ای می‌دهد که درگاه‌های پرداخت کلاسیک نمی‌توانند با آن رقابت کنند.

اگر می‌خواهید این را در محیط تولید ببینید — The Open Earn (پرداخت‌های USDT) یا The Open Guarantor (قراردادهای امانی) را بررسی کنید.