Barcha maqolalar
6 daq oʻqish

TON token swap: AI agent uchun nokastodial yechim

AI agent TON tarmogʻida tokenlarni nokastodial swap qilishi: Omniston orqali get_swap_quote va build_swap_tx, server hech qachon kalitni saqlamaydi va imzolamaydi.

TONMCPtoken swapnokastodiallikOmnistonAI agentlar

Kalitni kim ushlab turadi — TONda agent orqali nokastodial token swapdagi bosh savol

Tasavvur qiling: siz AI agentga kursni kuzatib borishni va USDT tushganda uni GRAM evaziga sotib olishni topshirasiz. Agent bozorni baholaydi, kerakli lahzani topadi, bitimni tayyorlaydi — va aynan shu yerda odatda juda kech esga tushadigan savol qalqib chiqadi. Agent swapni haqiqatda amalga oshirishi uchun kimdir tranzaksiyani xususiy kalit bilan imzolashi kerak. Bu kalitni kim ushlab turadi?

Agar javob «agent ishlaydigan servis» boʻlsa — siz oʻz pulingizni tasarruf etish huquqini begona kodga topshirgan boʻlasiz. Bitta prompt injection, bitta log sizib chiqishi — va agent siz oʻylagan narsani emas, butunlay boshqa narsani imzolaydi. Gap «DEXni qanday chaqirish kerak»da ham emas: agentga bitimni yigʻishga ruxsat berib, imzoni qatʼiy ravishda odamning hamyonida qoldirish kerak. Quyida TON tokenlarini agent orqali nokastodial swap qilish qanday tashkil etilishini koʻrib chiqamiz.

Swapning ikki qismi: hisob-kitob xavfsiz, imzo esa xavfli

DEXdagi swapning tubdan farq qiladigan ikkita qismi bor. Birinchisi — hisoblash bilan bogʻliq va xavfsiz: kursni bilish, sirpanishni (slippage) hisoblash, tranzaksiya tanasini yigʻish. Ikkinchisi — qaytarib boʻlmaydigan va xavfli: shu tanani xususiy kalit bilan imzolash va tarmoqqa yuborish. Shundan ikki yoʻl kelib chiqadi:

  • Kastodial model. Agent (yoki uning ortidagi server) kalitni oʻzida saqlaydi va oʻzi imzolaydi. Qulay — agent avtonom harakat qiladi. Ammo imzo kaliti LLM yonida turib qoladi, LLM esa nodeterministik narsa boʻlib, uni ishonchsiz matn bilan koʻndirish mumkin (jetton tavsiflari, boshqa toollarning javoblari, foydalanuvchi xabarlari). Masalan, TON Foundationʼning rasmiy @ton/mcp paketi aynan shunday qurilgan: bu operator-kalitga ega agent-hamyon boʻlib, yuborish va swapni mustaqil imzolaydi (split-key sxemasi: operator-kalit agentda, owner-kalit foydalanuvchida). Model ishlaydi va uning kuchli tomonlari ham bor — avtonom sarflash, NFT va DNS bilan ishlash, rasmiy paket maqomi. Lekin bu — kalit egasiga boʻlgan ishonch.
  • Nokastodial model. Server tranzaksiyani faqat tayyorlaydi va uni imzolanmagan holda qaytaradi. Imzoni foydalanuvchining hamyoni TonConnect orqali qoʻyadi. Server xususiy kalitni hech qachon koʻrmaydi va saqlamaydi.

Sutkalab aylanib turadigan savdo agenti uchun ikkinchi model asosiy xavfni olib tashlaydi: infratuzilma buzib kirilgan taqdirda ham «buziladigan» eng koʻp narsa — imzolanmagan qoralama, uni siz baribir qoʻlda yoki oʻz hamyoningiz siyosati orqali tasdiqlaysiz. Bu ikki yoʻl TONNodeʼni rasmiy @ton/mcp bilan halol taqqoslash materialida batafsil yoritilgan.

TONNodeʼning nokastodial modeli: server imzolanmagan tranzaksiyani qaytaradi

TONNode — bu TON uchun hosted MCP-server. MCP (Model Context Protocol) — AI agentlar (Claude, Cursor, ChatGPT/Codex va istalgan MCP-klient) tashqi toollarni chaqiradigan standart. TONNode agentga TON bilan ishlash uchun 16 ta tool beradi va swap, cross-chain hamda hamyon generatsiyasi toollari qatʼiy nokastodialdir.

Asosiy invariant: server HECH QACHON imzolamaydi va mablagʻlar hamda xususiy kalitlarni saqlamaydi. Swap uchun bu shuni anglatadiki, yakuniy tool «bajarilgan bitim»ni emas, balki imzolanmagan TonConnect-xabarini — imzoga tayyor obyektni qaytaradi. Server imzodan keyin mablagʻ oluvchisini fizik jihatdan almashtira olmaydi, chunki imzo unda yoʻq.

TONNodeʼda swap — bu roppa-rosa ikkita tool:

  • get_swap_quote — qatʼiy kotirovka,
  • build_swap_tx — TonConnect uchun tayyor imzolanmagan tranzaksiya.

Ikkalasi ham Omniston protokoli orqali ishlaydi, u STON.fi va DeDust likvidligini bir vaqtning oʻzida agregatsiya qiladi — kotirovka ikkala DEX boʻyicha hisoblanadi va siz mavjudlaridan eng yaxshisini olasiz. Swap GRAM⇄jetton juftliklarida amalga oshiriladi. GRAM — bu nomi oʻzgartirilgan Toncoin (2026-yil iyunda qayta nomlangan); tarmoqning oʻzi esa hamon TON deb ataladi. Yaʼni kotirovkadagi «GRAM» — tarmoqning nativ tangasi.

get_swap_quote: Omniston orqali qatʼiy kotirovka (STON.fi + DeDust)

Birinchi qadam — aslida qancha olishingizni bilish. get_swap_quote qatʼiy kotirovkani qaytaradi: chiqishdagi kutilayotgan summa va kurs. Ichkarida Omniston STON.fi va DeDustni bir vaqtda soʻrab chiqadi, shuning uchun agent poollarni oʻzi aylanib chiqishi va qoʻlda solishtirishi shart emas — u allaqachon agregatsiyalangan natijani koʻradi.

100 USDT → GRAM swapi uchun kotirovka ol.
get_swap_quote dan foydalan. Kutilayotgan chiqish va kursni koʻrsat.

Kotirovkalar tez-tez notoʻgʻri hisoblanishiga sabab boʻladigan muhim jihat bor: kotirovka «insoniy» sonlar bilan emas, raw-birliklar (tokenning boʻlinmas eng kichik ulushlari) bilan ishlaydi. Shuning uchun jetton swapi summasini hisoblashdan avval uning decimals qiymatini bilish kerak.

get_jetton_info: swapdan oldin decimals nega kerak (USDT = 6)

Mana, swaplarni buzadigan tipik xato: agent «100 USDT»ni oladi va summa maydoniga 100 ni qoʻyadi. Ammo on-chain jettonda «100» degan tushuncha yoʻq — faqat raw-birliklar bor. Bitta tokenda nechta raw-birlik borligini decimals parametri belgilaydi, summa esa miqdor × 10^decimals sifatida hisoblanadi.

  • TONdagi USDT uchun decimals = 6 → 100 USDT bu 100 × 10^6 = 100 000 000 raw-birlik.
  • Koʻpchilik jettonlarda decimals = 9 → 100 token bu 100 000 000 000 raw-birlik.

Agar «100 USDT»ga soddadillik bilan toʻqqizta nol qoʻshib yuborsangiz (GRAMʼdagidek), moʻljallanganidan 1000 barobar katta summaga swap soʻragan boʻlasiz. Bu yerda uch tartibga — yaʼni ming barobarga — adashib ketish juda oson. Shu bois get_jetton_info — majburiy qadam: u jettonning nomi, belgisi, decimals va emissiyasini qaytaradi.

Swapdan oldin kiruvchi jettonning decimals qiymatini get_jetton_info orqali bil,
va faqat shundan keyin summani raw-birliklarda hisobla.

Bu mavzu AI agentlarni MCP orqali TONga ulash haqidagi maqolada chuqurroq yoritilgan.

Yordamchi toollar: parse_address va get_jetton_balance

Tranzaksiyani yigʻishdan oldin chaqirib olishga arziydigan yana ikkita yordamchi tool bor:

  • parse_address — manzilni oflayn tekshirish va konvertatsiya qilish (EQ/UQ/raw). Hali hech narsa yigʻilmasdan turib jetton yoki qabul qiluvchi manzilidagi xato terishni tutib qoladigan arzon sugʻurta.
  • get_jetton_balance — hamyonning asosiy manzili boʻyicha jetton balansi. Balans uchun jetton-hamyon manzili tool ichida on-chain hisoblanadi, shuning uchun jetton-hamyon manzilini emas, asosiy manzilni uzatish kerak. Tez uchraydigan xato — jetton-hamyon manzilini uzatib yuborish; unday qilish shart emas, asosiy manzilni bering.

build_swap_tx: TonConnect uchun imzolanmagan xabar

Kotirovka olingandan va summalar toʻgʻri raw-birliklarda hisoblangandan keyin build_swap_tx tranzaksiyaning oʻzini yigʻadi. Va mana shu yerda — nokastodiallikning mohiyati: tool IMZOLANMAGAN TonConnect-xabarini qaytaradi. Bu yuborilgan bitim emas, balki qoralama: kontrakt manzili, summa, payload. Server sizga «konvert» beradi, lekin uni yopishtirmaydi — muhrni (imzoni) sizning hamyoningiz bosadi.

Keyin xabar TonConnectʼni qoʻllab-quvvatlaydigan hamyonga (Tonkeeper va boshqalar) ketadi, foydalanuvchi aynan nimani imzolayotganini koʻradi va tasdiqlaydi. Xususiy kalit hech bir qadamda hamyondan chiqmaydi va TONNode serveriga tushmaydi.

Oxirgi kotirovka boʻyicha swap tranzaksiyasini build_swap_tx orqali yigʻ.
Imzolanmagan TonConnect-xabarini qaytar — men uni hamyonda imzolayman.

Toʻliq oqim: kotirovkadan hamyondagi imzogacha

Jetton swapi uchun tipik ketma-ketlik shunday koʻrinadi:

  1. parse_address — jetton va qabul qiluvchi manzilini tekshirish hamda normallashtirish (oflayn).
  2. get_jetton_infodecimals (USDT uchun — 6, koʻpincha 9), nom, belgini bilish.
  3. get_jetton_balance — mablagʻ yetarliligiga ishonch hosil qilish (asosiy manzil, jetton-hamyon emas).
  4. get_swap_quote — Omniston (STON.fi + DeDust) orqali qatʼiy kotirovka olish.
  5. build_swap_tx — imzolanmagan TonConnect-tranzaksiyasini yigʻish.
  6. Foydalanuvchi hamyoni TonConnect orqali imzolaydi — imzo foydalanuvchi tomonida.

Prompt darajasida agentga bu tabiiy eshitiladi:

50 GRAMni USDTga almashtirmoqchiman.
Avval USDT jettonining manzilini parse_address orqali tekshir,
uning decimals qiymatini get_jetton_info orqali bil,
balansni get_jetton_balance orqali tekshir,
get_swap_quote kotirovkasini ol va build_swap_tx bilan tranzaksiyani yigʻ.
Tranzaksiyani yuborma — menga TonConnect uchun imzolanmagan xabarni qaytar.

Agent buni oʻzi tool chaqiruvlariga ajratadi, chiqishda esa siz oʻz hamyoningizda imzolaydigan qoralamani olasiz. Eʼtibor bering: oxirgi qadam — TONNode tooli emas. Imzoni hamyon qoʻyadi va nokastodial chegara aynan shu yerdan oʻtadi. Toʻlaqonli savdo agenti qurayotgan boʻlsangiz, TONda savdo qilishdagi kechikish va latentlik tahlilini koʻring — u yerda bu oqim qaror qabul qilish siklining ichiga oʻrnatilgan. TONdan tashqaridagi bitimlar uchun esa TONNodeʼda atomar HTLC-eskrouga asoslangan beshta nokastodial cross-chain tool bor.

Swap toollarini Claude, Cursor yoki ChatGPTga qanday ulash kerak

Swap toollari barcha tariflarda, jumladan bepul Hobbyʼda ham (60 soʻrov/min) mavjud — Hobby ham hosted-kalit. Siz faqat oʻtkazuvchanlik uchun toʻlaysiz, 16 tooldan iborat toʻplam esa barcha kalitlarda bir xil.

Lokal va bepul — oʻqish uchun. @tonnode/mcp paketi — open source (MIT), HTTP-qatlamlarsiz TONning nativ ADNL-protokoli boʻyicha ishlaydi, bitta buyruq bilan ishga tushadi. Ochiq konfig oʻqish toollarining toʻliq toʻplamini beradi:

{
  "mcpServers": {
    "ton": {
      "command": "npx",
      "args": ["-y", "@tonnode/mcp"]
    }
  }
}

Hosted-endpoint — swap va qolgan hamma narsa uchun. Oʻz kalitingiz (bepul Hobby ham yetarli), kafolatlangan oʻtkazuvchanlik va barcha 16 tool, jumladan get_swap_quote va build_swap_tx:

{
  "mcpServers": {
    "ton": {
      "type": "http",
      "url": "https://mcp.tonnode.io/mcp",
      "headers": { "Authorization": "Bearer tn_live_…" }
    }
  }
}

Bu konfig klientingizning MCP sozlamalariga joylanadi — Claude Desktop, Cursor, ChatGPT/Codex yoki MCPʼga mos istalgan boshqa agent. Hosted-kalit ulangandan keyin get_swap_quote va build_swap_tx toollari agentda avtomatik paydo boʻladi. tn_live_… kaliti tizimga kirgandan soʻng darhol, kartasiz beriladi.

Asosiysi qisqacha

  • TONNodeʼda swap — bu ikkita tool: get_swap_quote (qatʼiy kotirovka) va build_swap_tx (TonConnect uchun imzolanmagan tranzaksiya).
  • Ikkalasi ham Omniston — STON.fi va DeDust likvidlik agregatori orqali ishlaydi.
  • Imzo doim foydalanuvchida. Server kalitlarni saqlamaydi va imzolamaydi — kastodial boʻlgan rasmiy @ton/mcp paketidan farqli oʻlaroq.
  • Jetton swapidan oldin get_jetton_info orqali decimals qiymatini bilib oling (USDT = 6, koʻpchiligi = 9), aks holda raw-birliklardagi summa notoʻgʻri hisoblanadi.
  • Swap toollari istalgan hosted-kalitda, jumladan bepul Hobbyʼda ishlaydi.

Agent uchun TONdagi nokastodial swap — bu rollarni ajratish intizomi: server hisoblaydi va yigʻadi, hamyon imzolaydi. TONNodeʼda bu — Omniston ustiga qurilgan roppa-rosa ikkita tool va toʻgʻri decimals uchun get_jetton_info; birorta xususiy kalit esa foydalanuvchidan chiqib ketmaydi.

Boshlashning eng oson yoʻli — bepul kalit. Kartasiz Hobby-kalit oling va swap toollarini bir necha daqiqada ulang: tonnode.io/dashboard?plan=hobby. Avval toollarning butun toʻplamini koʻrmoqchi boʻlsangiz — toollar sahifasiga kiring.

Agentingizga TONga yoʻl oching

16 ta MCP-vosita: oʻqish, nokastodial svoplar, krosscheyn va hamyonlar. Bepul tarif — 60 soʻrov/daq, karta kerak emas.