TON tranzaksiyalar tarixi: lt, xesh va arxiv chuqurligi
TON tranzaksiyalar tarixi qanday ishlaydi: mantiqiy vaqt (lt), xesh va oxirgi tranzaksiya koʻrsatkichi. Tarixni MCP orqali oʻqish va arxiv chuqurligi.
Siz tunda ishlayapsiz va soat 3:47 da xabar uchib keladi: foydalanuvchi buyurtmani TONda toʻlagan, bot esa uni hisobga olmagan. Eksplorerni ochasiz — pul joyida, kiruvchi oʻtkazma koʻrinib turibdi. Demak, muammo blokcheynda emas, balki sizning servisingiz tranzaksiyalar tarixini qanday oʻqishida. Va shu yerda maʼlum boʻladiki, TONda bu tarix siz Ethereumdan oʻrganib qolgan koʻrinishga umuman oʻxshamaydi.
TONda toʻlovlar monitoringi aldamchi darajada oddiy koʻrinadi: balansni soʻrab turasiz va oʻzgarishga reaksiya qilasiz. Amalda esa hammasi buzilib ketadi. Bir daqiqada bir xil summadagi ikkita toʻlov — ular nechta edi, bittami yoki ikkitami? Foydalanuvchi USDT toʻladi, GRAM balansi esa qimir ham etmadi. Yarim yillik koʻchirma kerak, liteserver esa faqat oxirgi tranzaksiyalarni beradi va qolganlari haqida jim.
Agar siz AI agentni TONga ulayotgan boʻlsangiz yoki toʻlovlarni solishtiradigan bekend yozayotgan boʻlsangiz, ishning oʻziga oʻtamiz: TON tranzaksiyalar tarixi nima, lt + hash juftligi nega kerak, chuqurlik nega arxiv nodaga borib taqaladi va bularning hammasini agent bilan MCP orqali qanday oʻqish mumkin.
TONda tranzaksiyalar tarixi nima va u agentga nega kerak
TONda har bir hisobning — hamyonning, kontraktning, jetton-hamyonning — oʻz tranzaksiyalar zanjiri bor. Har bir tranzaksiya — bu kiruvchi xabarni qayta ishlash natijasi: GRAM qabul qilish, jetton oʻtkazish, kontrakt metodini chaqirish. Toʻlovlarni qabul qiladigan yoki hisob-kitoblarni solishtiradigan agent (Claude, Cursor, istalgan MCP-klient) uchun tarix — yagona ishonchli manba: balans «hozir qancha» deydi, tarix esa «aynan nima va qachon sodir boʻldi, kimdan va qancha summaga» deb aytadi.
Agentga tarix kerak boʻladigan amaliy vazifalar:
- toʻlov yetib kelganini tasdiqlash («shu manzilga oxirgi bir soatda oʻtkazma kelganini tekshir»);
- hamyon boʻyicha koʻchirma yigʻish;
- aniq bir tranzaksiyani uning identifikatori boʻyicha kuzatish;
- kiruvchi jettonlarni (masalan, USDT) kutilayotgan summa bilan solishtirish.
Muammo shundaki, TONda «menga №100–120 tranzaksiyalarni ber» degani ishlamaydi. Bu yerda bloklarning global, uzluksiz raqamlanishi yoʻq — shuning uchun «N-raqamli tranzaksiyani ber» deb ham boʻlmaydi. Tartib bu yerda boshqacha belgilanadi — mantiqiy vaqt orqali.
Mantiqiy vaqt (lt): nega TONda odatiy blok raqamlari yoʻq
Ethereumda hammasi oddiy: 19 000 000-blok bor, uning ichida tranzaksiyalar tartib boʻyicha. Bitta global hisoblagich, monoton oʻsadi, hamma bir xil raqamga qaraydi.
TON — koʻp oqimli tizim: mastercheyn, vorkcheynlar, yuk ostida boʻlinadigan va qoʻshiladigan shardlar. Tarmoqdagi barcha hodisalarni chiziqli tartibga solish mumkin boʻlgan yagona «blok raqami» bu yerda shunchaki yoʻq. Uning oʻrniga TON mantiqiy vaqtdan (lt, logical time) foydalanadi — bu tarmoq hodisalarni, xabarlarni va tranzaksiyalarni tartiblaydigan monoton oʻsuvchi hisoblagich. U shuni kafolatlaydi: agar A hodisasi B hodisasiga taʼsir qilgan boʻlsa, unda lt(A) < lt(B).
Bundan amaliy xulosa kelib chiqadi: tranzaksiyaning oʻrni blok raqami bilan emas, (lt, hash) juftligi bilan beriladi. lt tartibni belgilaydi (kim oldinroq), hash esa aniq bir tranzaksiyani bir maʼnoli koʻrsatadi. Alohida-alohida ulardan aniq bir tranzaksiyani soʻrashda foyda yoʻq: turli obyektlarda lt qiymatlari yaqin boʻlishi mumkin, faqat hashning oʻzi esa liteserverga qayerdan oʻqishni boshlashni aytmaydi.
Tranzaksiya xeshi va lt + hash juftligi: hisobning oxirgi tranzaksiya koʻrsatkichi
Tranzaksiya xeshi — bu uning kriptografik izi; TONda u base64 yoki hex koʻrinishida keladi. lt «tartib boʻyicha qachon» deydi, hash — «aynan qaysi biri», chunki bitta lt kesimida nazariy jihatdan noaniqlik yuzaga kelishi mumkin va xeshsiz liteserver tranzaksiyani bermaydi. Buni qatʼiy yodda tuting: (lt, hash) juftligi doim birga boʻlishi shart. Faqat lt yoki faqat hash — yetarli emas.
Boshlangʻich nuqtani qayerdan olish kerak? Hisob holati eng oxirgi tranzaksiyaga koʻrsatkichni saqlaydi — last_transaction_id, bu aynan oʻsha lt + hash juftligi (last_trans_lt / last_trans_hash maydonlari). Bu roʻyxatning «boshi», tarixni orqaga qarab aylanib chiqish shundan boshlanadi.
TONNodeʼning MCP-toolkitida buni get_account_state bajaradi — u hisob statusini, bayroqlarini va oxirgi tranzaksiyaga koʻrsatkichni qaytaradi.
get_transactions tarixni qanday varaqlaydi: lt + hash va prev_trans zanjiri
Endi eng muhim jihatga oʻtamiz — tarix umuman shu tufayli varaqlanadi. Har bir tranzaksiya oʻzining lt va hash qiymatlaridan tashqari yana ikkita maydonni oʻz ichiga oladi: prev_trans_lt va prev_trans_hash — xuddi shu hisobning oldingi tranzaksiyasiga havola. Yaʼni tranzaksiyalar vaqt boʻyicha orqaga ketadigan bir tomonlama bogʻlangan roʻyxat hosil qiladi; bosh esa — holatdan olingan last_transaction_id.
get_transactions quyidagilarni qabul qiladi:
account— hisob manzili;- boshlangʻich
ltvahash— qayerdan oʻqishni boshlash nuqtasi; count— bir soʻrovda qaytariladigan tranzaksiyalar soni.
U koʻrsatilgan nuqtadan orqaga yurib, tranzaksiyalar toʻplamini qaytaradi. Sahifalab aylanib chiqish mantigʻi:
get_account_statedanlast_trans_lt/last_trans_hashni olish — bu bosh.get_transactions(account, lt, hash, count)ni chaqirish — toʻplamni olish.- Toʻplamdagi oxirgi tranzaksiyadan
prev_trans_ltvaprev_trans_hashni olish. get_transactionsni endi shu juftlik bilan qayta chaqirish — bu keyingi sahifa.prev_trans_lt0 boʻlgunicha (hisob hayotining boshlanishi) yoki kerakli chuqurlikka yetgunicha takrorlash.
TONda paginatsiya ana shunday ishlaydi: «2-sahifa» emas, «shu (lt, hash) juftligidan davom et».
Yangi bloklar va chuqur tarix: arxiv noda nega kerak
Aynan shu yerda koʻpchilik qoqiladi. Oddiy liteserver hisobning yangi bloklarini va yaqin oʻtmishdagi tarixini beradi: u holatning cheklangan oynasini saqlaydi — soʻnggi maʼlum miqdordagi bloklarni, — va tarmoq oʻsishi bilan eski maʼlumotlar undan siqib chiqariladi. prev_trans zanjiri boʻylab yetarlicha chuqur yuring — va bir payt liteserver tranzaksiyalarni berishni shunchaki toʻxtatadi: ular jismonan uning oynasida yoʻq. Yangi toʻlovni koʻrasiz, yarim yil oldingi tranzaksiyani esa — yoʻq.
Bu bag emas, balki ataylab tanlangan dizayn: har bir hisobning genezisdan boshlab toʻliq yoʻlini saqlab turish qimmat. Chuqur tarixni arxiv noda saqlaydi — bu eski bloklarni tashlab yubormaydigan, tarmoqning butun tarixi boʻyicha toʻliq holatini ushlab turadigan tugun.
Amaliy xulosa:
- toʻlovni aniqlash, yangi koʻchirma, «oxirgi bir soatda keldimi» — oddiy liteserver yetarli;
- hamyonning eng birinchi kunidan boshlab toʻliq auditi — arxiv noda kerak.
Alohida bosh ogʻrigʻi — TONning global konfigidagi ommaviy liteserverlar. Ular umumiy va limitli: yuk ostida koʻpincha not ready deb javob beradi yoki ADNL-taymautga ketadi, chuqur tarix ham ularda yoʻq. Agar siz aynan not ready ga duch kelgan boʻlsangiz, bu haddan tashqari yuklangan umumiy liteserverning alomati — batafsil tahlil liteserver nega not ready deb javob beradi va buni qanday tuzatish kerak qaydida.
TONNode haqida halol gap: arxiv noda roadmapʼda va hozir sinxronlanmoqda — arxiv chuqurligini tayyor funksiya sifatida sizga vaʼda qilmayman. Bugungi kunda bu — yangi va yaqin oʻtmishdagi tarixni boshqariladigan endpoint orqali oʻqish, ommaviy liteserverlar bilan lotereya oʻynamasdan. Genezisdan boshlab toʻliq arxiv uchun alohida eʼlonni kuting.
TON tarixini AI agent bilan MCP orqali qanday oʻqish kerak
TONNode — bu TON uchun hosted MCP-server, roppa-rosa 16 ta tool, va get_transactions oʻqish blokiga kiradi. MCP (Model Context Protocol) — bu agent toollarni oʻzi chaqiradigan standart, siz ADNL-soʻrovlarni qoʻlda yigʻishingiz shart emas. SDK oʻrnatish, liteserver koʻtarish va TL-B ni parslash kerak emas — agent toolni toʻgʻridan-toʻgʻri tortadi.
Bepul lokal ulanish
Toʻliq oʻqish toʻplami, ommaviy konfig, @tonnode/mcp paketi — open source, MIT:
{
"mcpServers": {
"ton": {
"command": "npx",
"args": ["-y", "@tonnode/mcp"]
}
}
}
Paket TONning nativ ADNL-protokoli boʻyicha, HTTP-qatlamlarsiz ishlaydi.
Oʻz kalitingiz bilan hosted-endpoint
Kafolatlangan oʻtkazuvchanlik uchun oʻz kalitingiz bilan hosted-endpoint olinadi:
{
"mcpServers": {
"ton": {
"type": "http",
"url": "https://mcp.tonnode.io/mcp",
"headers": { "Authorization": "Bearer tn_live_…" }
}
}
}
Tarixni oʻqish uchun quyidagilar asqotadi:
get_account_state— aylanib chiqishning boshlangʻich nuqtasi (last_trans_lt/last_trans_hash), hisob statusi va bayroqlari;get_transactions— tranzaksiyalarning oʻzi, sahifalab,(lt, hash)juftligi boʻyicha;parse_address— manzillarniEQ/UQ/rawoʻrtasida oflayn konvertatsiya qilish;get_jetton_infovaget_jetton_balance— jettonlar boʻyicha tarix uchun.
Amaliyot: toʻlovni aniqlash va tarixni sahifalab aylanib chiqish
Tipik stsenariyni yigʻamiz — «toʻlov keldimi va qancha summaga».
Agentga prompt
tontooli orqaliEQC…myshopuchunget_account_stateni ol, keyin uninglast_trans_lt/last_trans_hashjuftligidanget_transactionsni chaqir, count 20. Oxirgi 10 daqiqada 5 GRAMlik kiruvchi oʻtkazmani top. Joʻnatuvchilar manzillarini solishtirishdan oldinparse_addressorqali EQ ga keltir. Agar chuqurroq tarix kerak boʻlsa — oxirgi tranzaksiyaningprev_trans_lt/prev_trans_hashjuftligini ol vaget_transactionsni takrorla.
Agent zanjir boshini oʻzi topadi, toʻplamni koʻrib chiqadi va summalarni solishtiradi.
Sahifalab aylanib chiqish psevdokodi
Xuddi shu aylanib chiqish psevdokodda (chaqiruvlar — bu agent tortadigan MCP-toollar):
state = get_account_state(account)
lt = state.last_trans_lt
hash = state.last_trans_hash
while lt != 0:
batch = get_transactions(account, lt, hash, count=20)
for tx in batch:
if matches_expected_payment(tx): # kerakli summa/komment bilan kiruvchi xabar
return tx
last = batch[-1]
lt = last.prev_trans_lt
hash = last.prev_trans_hash # hashsiz keyingi sahifa soʻralmaydi
Debugda soatlab vaqt tejaydigan tafsilotlar
- Tranzaksiya maydonlaridagi manzillar raw-shaklda keladi (
0:abcd…). Joʻnatuvchi yoki qabul qiluvchini odatdagiEQ…-manzil bilan solishtirishdan oldin ikkalasini hamparse_addressorqali bitta formatga keltiring — aks holda manzil bitta boʻlsa ham, satrlar bir-biriga mos kelmaydi. Formatlar haqida batafsil — TON manzillarida EQ, UQ va raw. - USDTdagi toʻlovlar GRAM hamyonining zanjirida koʻrinmaydi. Jettonlar alohida jetton-hamyonda yashaydi, uning manzili esa on-chain hisoblanadi (
get_jetton_balancebuni siz uchun bajaradi va joriy balansni beradi). Jettonlar boʻyicha tarix uchun asosiy hamyonning emas, jetton-hamyonning tranzaksiyalarini aylanib chiqing. - Raw-summalarni decimals orqali qayta hisoblang. Jetton summalari minimal birliklarda keladi:
5000000ni odam oʻqiydigan 5 USDTga aylantirish uchunget_jetton_infodandecimalsni oling — USDTda bu 6, koʻpchilik jettonlarda esa 9. Adashtirsangiz — 1000 barobar xato qilasiz. Toʻliq tahlil — TONda kiruvchi USDT toʻlovini qanday ushlash kerak. - Dedup summa boʻyicha emas,
(lt, hash)boʻyicha. Ikkita bir xil toʻlov faqat lt+hash juftligi bilan farq qiladi — idempotentlik kaliti aynan shu.
Agar agentga tarixdan tashqari kontraktning joriy holatini ham tortish kerak boʻlsa, buni run_get_method bajaradi — get-metodlarni SDKsiz qanday chaqirish kerakligi SDKsiz get-metod orqali TONni oʻqishda koʻrsatilgan.
Qisqacha
- TONda Ethereumdagi kabi blok raqamlari yoʻq — tranzaksiyaning oʻrni
(lt, hash)juftligi bilan beriladi: lt — tartib, hash — identifikatsiya, va ular doim birga boʻlishi shart. - Hisob tranzaksiyalari —
prev_trans_lt/prev_trans_hashorqali bogʻlangan roʻyxat;get_account_statedan olinganlast_transaction_iddan boshlab orqaga varaqlaysiz. - Oddiy liteserver yangi va yaqin oʻtmishdagi tarixni beradi; toʻliq chuqurlik — arxiv nodaning vazifasi.
- Jettonlar uchun
get_jetton_infodan olinadigan decimals ni (USDT = 6) vaparse_addressdan oʻtkazish kerak boʻlgan raw-manzillarni unutmang.
not ready deb javob beradigan ommaviy liteserverlar bilan ovora boʻlishni xohlamaysizmi? get_transactions bepul Hobby tarifida qutidan chiqqan holda mavjud — daqiqasiga 60 soʻrov, abadiy, kartasiz, kalit esa tizimga kirganingizdan soʻng darhol beriladi.
TON tarixini oʻqishni bir daqiqada ulang → tonnode.io/dashboard?plan=hobby
TONdagi agent tarixni oʻqishdan tashqari yana nimalarni uddalaydi? Barcha 16 ta tool — TONNode toollari sahifasida.
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.