TON liteserver «not ready» xatosi: sababi va yechimi
TON liteserver «not ready» qaytarmoqdami yoki ADNL taymautiga ketmoqdami? Sababni ommaviy config misolida koʻramiz, retray va TONNode hosted kaliti bilan yechamiz.
Liteserver not ready: oddiy soʻrov yubordingiz — javobda esa «not ready»
Siz hamyon balansini tekshirishi yoki kontraktning get-metodini chaqirishi kerak boʻlgan agent yozyapsiz. Kod toʻgʻri, manzil toʻgʻri, liteserver configi rasmiy global-config.json dan olingan. Lekin javob oʻrniga siz muntazam ravishda goh not ready ni, goh umuman hech narsani olasiz — ulanish shunchaki osilib qoladi va ADNL taymauti bilan uziladi. Ustiga-ustak, bu doim ham takrorlanavermaydi: ertalab ishlaydi, yuk ostida — yoʻq. Tanishmi? Bu sizning kodingizdagi bag ham, «TON yotibdi» ham emas. Bu — global configdagi ommaviy liteserverlarning bashorat qilinadigan xulqi. Keling, TON liteserver not ready nega yuzaga kelishini, klient tomonida nima chinakam yordam berishini va nima bermasligini koʻrib chiqamiz.
TON liteserverda «not ready» va ADNL taymauti nimani anglatadi
not ready — bu liteserverning toʻgʻridan-toʻgʻri javobi: «men hali sinxronlanmaganman, senga javob bera olmayman». TONda blokcheynning ikki darajasi bor: masterchain va basechain (0-vorkcheyn), u esa shardcheynlarga/shardlarga (shardchains) boʻlinadi. Masterchain — kitobning mundarijasi kabi, shardlar esa — tranzaksiyalar va akkauntlar holati bilan toʻldirilgan boblarning oʻzi. Noda koʻpincha masterchain boshini oladi-yu, tegishli shard-bloklarni hali quvib yetgan boʻlmaydi. Aynan shu paytda masterchain basechaindan oldinda boʻladi, akkaunt holati esa oxirgi shard-blokda yashaydi — va uni hozircha tekshirib boʻlmaydi. Noda sizga eskirgan yoki toʻliqsiz maʼlumot berish oʻrniga halol tarzda not ready deb javob beradi.
ADNL taymauti — aynan oʻsha kasallikning qoʻshni simptomi. ADNL — bu TONning nativ transport protokoli boʻlib, liteserver klient bilan aynan shu protokol orqali muloqot qiladi (u yerda hech qanday HTTP yoʻq). Noda haddan tashqari yuklanganda, u ADNL-soʻrovga ajratilgan oyna ichida shunchaki javob bermaydi va klient biznes-mantiqqa yetib bormasdanoq taymaut boʻyicha uziladi.
Bu yerda qatlamlarni chalkashtirmaslik muhim. not ready va ADNL taymauti liteserverning nativ ADNL-protokoli darajasida yashaydi. Bu toncenter va tonapi.io kabi HTTP-shlyuzlar limit oshib ketganda qaytaradigan HTTP 429 Too Many Requests bilan bir xil narsa emas. Boshqa qatlamlar, boshqa kodlar, boshqa sabablar. Agar siz aynan 429 bilan kurashayotgan boʻlsangiz — bu alohida mavzu: toncenterda 429 ni tuzatish boʻyicha tahlil. TON-chatlaridagi «228-xato» haqidagi mem esa — hamjamiyatning hazili, real kod emas; liteserver bunday javob qaytarmaydi.
Global configdagi ommaviy liteserverlar yuk ostida nega uziladi
Muammoning ildizi juda oddiy. ton.org/global-config.json dagi liteserverlar — umumiy va limitlangan. Bu — butun dunyodan minglab dasturchilar, botlar, indekserlar va agentlar bir vaqtning oʻzida murojaat qiladigan ommaviy resurs. Bunday resursning uchta tizimli cheklovi bor:
- Umumiy yuk. Siz umumiy poolni butun ekotizim bilan boʻlishasiz. Pik paytida noda yo tarmoqning boshini quvib yetishga ulgurmaydi (
not readyshundan), yo shunchaki oʻz vaqtida javob bermaydi (ADNL taymauti). - Chuqur tarix yoʻq. Ommaviy nodalar chuqur arxivni saqlamaydi. Sizga
lt/hashjuftligi boʻyicha eski tranzaksiya kerak boʻlsa, u yerda allaqachon boʻlmasligi mumkin — tarix bilan ishlash haqida alohida lt va hash haqidagi material bor. - Hech qanday kafolat yoʻq. Bu — «qanday boʻlsa, shundayligicha» beriladigan resurs. Sizda prioritet yoʻq, oʻtkazuvchanlikni sizga hech kim vaʼda qilmaydi: bugun omadingiz keldi, ertaga — yoʻq.
Yaʼni not ready — «kutib turib oʻtkazib yuborsa boʻladigan» tasodif emas, balki yuk ostidagi umumiy resursning qonuniy xulqi. Va sizning hech qanday kodingiz begona, haddan tashqari yuklangan nodani tezroq sinxronlanishga majbur qila olmaydi.
Klient tomonidagi fikslar: retraylar, endpointlar rotatsiyasi va taymautlar
Infratuzilmani oʻzgartirishdan oldin klientdan maksimal foydani siqib oling. Bu usullar chinakam ishlaydi, lekin ularning shifti bor — nodalar baribir umumiy boʻlib qolaveradi.
1. Eksponensial bekoff bilan retraylar
not ready koʻpincha vaqtinchalik: 200–800 ms dan soʻng oʻsha liteserverning oʻzi kerakli shard-blokni allaqachon qoʻllagan boʻladi. Ortib boruvchi kechikish bilan oddiy takrorlash xatolarning sezilarli qismini olib tashlaydi.
async function withRetry<T>(fn: () => Promise<T>, tries = 4): Promise<T> {
let lastErr: unknown;
for (let i = 0; i < tries; i++) {
try {
return await fn();
} catch (e) {
lastErr = e;
// 'not ready' va ADNL taymautlarini retray qilamiz, biznes-xatolarni emas
await new Promise((r) => setTimeout(r, 200 * 2 ** i));
}
}
throw lastErr;
}
2. Endpointlar rotatsiyasi
Configdan olingan bir nechta liteserverni poolda saqlang va joriysi not ready qaytarsa yoki taymautga ketsa, keyingisiga oʻting. Bitta noda orqada qolgan boʻlsa — qoʻshnisi allaqachon quvib yetgan boʻlishi mumkin.
3. Koʻtarilgan taymaut
Default ADNL taymauti haddan tashqari yuklangan ommaviy noda uchun baʼzan juda qatʼiy. Kichik zaxira (bir necha sekund) soxta uzilishlarni kamaytiradi. Lekin taymautni cheksizlikkacha choʻzsangiz — shunchaki osilib qolgan soʻrovlarni yigʻasiz; bu davolash emas, ogʻriqsizlantirish.
Alohida foydali usul — real soʻrovdan oldin yengil healthcheck. Buning uchun get_masterchain_info (masterchainning boshi) ideal mos keladi: noda tarmoq boshini quvib yetganda aynan shu operatsiya birinchi boʻlib yangi seqno beradi va faqat noda masterchainning oʻz boshini hali quvib yetmagandagina not ready qaytaradi. Yangi seqno berdimi — noda ishga tayyor, endi get_account_state, get_balance, run_get_method ni bajarsa boʻladi.
Halol xulosa: retraylar + rotatsiya + taymautlar xatolar chastotasini pastga suradi, lekin sababni yoʻqotmaydi. Ommaviy nodalar by design haddan tashqari yuklangan — siz shunchaki ortida oʻsha navbatning oʻzi turgan eshikni ehtiyotkorroq taqillatasiz. TONga kirishning boshqa yondashuvlari 2026-yil uchun toncenter alternativalari sharhida jamlangan.
Oʻz nodangizsiz yechim: bizning liteserverimizda TONNode hosted kaliti
not ready ni tubdan bartaraf etishning bitta yoʻli bor — umumiy nodalarga borishni toʻxtatish. Oʻz TON nodangizni koʻtarish va unga xizmat koʻrsatish qimmat hamda ovora qiladigan ish: sinxronizatsiya, disk, yangilanishlar, monitoring. Oraliq variant — umumiy poolga bormasdan, kalit orqali kafolatlangan oʻtkazuvchanlik va prioritetli kirish olish.
TONNode — bu TON uchun hosted MCP-server. MCP (Model Context Protocol) — AI agentlar (Claude, Cursor, ChatGPT/Codex, istalgan MCP-klient) toollarni chaqiradigan standart. Sizning kodingiz global configni parslab, not ready atrofida gir aylanishi oʻrniga, agent tayyor toolni chaqiradi, uning ortida esa — sizning Bearer-kalitingiz bilan ishlaydigan hosted-endpoint https://mcp.tonnode.io/mcp. Bu — umumiy navbat oʻrniga kafolatlangan oʻtkazuvchanlik.
@tonnode/mcp paketi — open source (MIT, npm va GitHubʼda tonnode/mcp) — TONning nativ ADNL-protokoli boʻyicha, HTTP-qatlamlarsiz ishlaydi. Yaʼni siz transportni sekin HTTP-shlyuzga almashtirmaysiz, balki oʻsha halol ADNLning oʻzida qolasiz — lekin oʻz kalitingiz ostidagi prioritetli kirish bilan.
Diagnostika va kundalik oʻqish uchun quyidagilar asqotadi:
get_masterchain_info— masterchainning boshi, tabiiy healthcheck.get_account_state— akkauntning statusi, bayroqlari va oxirgi tranzaksiyasi.get_balance— GRAMdagi balans.run_get_method— kontraktning istalgan read-only get-metodi.
Agar siz TONda MCP bilan endigina boshlayotgan boʻlsangiz, TON uchun MCP qoʻllanmasi boʻyicha oʻrganib chiqing.
Qanday ulash: lokal npx yoki kalit bilan hosted-endpoint
Bepul, lokal
Oʻqish toollarining toʻliq toʻplami lokal tarzda, hech qanday sozlashsiz — ommaviy config boʻyicha, kartasiz va kalitsiz ishlaydi:
{
"mcpServers": {
"ton": {
"command": "npx",
"args": ["-y", "@tonnode/mcp"]
}
}
}
Bu ishlab chiqish va lokal eksperimentlar uchun juda yaxshi. Lekin yodda tuting: lokal npx kapot ostida baribir oʻsha umumiy liteserverlarga boradi, shuning uchun u yuk ostidagi not ready dan qutqarmaydi — u bogʻliqliklar bilan ovora boʻlishdan qutqaradi va toollarning yagona interfeysini beradi.
Kalit bilan hosted
Umumiy nodalardan ketish uchun transportni oʻz Bearer-kalitingiz bilan HTTP-MCPga oʻtkazing (toollarning chaqiruvi esa bizning nodamizga ADNL orqali ketadi):
{
"mcpServers": {
"ton": {
"type": "http",
"url": "https://mcp.tonnode.io/mcp",
"headers": { "Authorization": "Bearer tn_live_…" }
}
}
}
Agent bilan ishlashda bu qanday koʻrinadi
Ulangandan soʻng agentga oddiy prompt yetarli — toollarni u oʻzi tanlaydi:
Avval healthcheck uchun
get_masterchain_info. KeyinEQC…uchunget_account_state— statusni va oxirgi tranzaksiyani koʻrsat. Soʻng oʻsha manzil boʻyichaget_balance.
Kapot ostida bu zanjir: get_masterchain_info (noda tirik va boshni quvib yetgan) → get_account_state (status, bayroqlar, oxirgi tranzaksiya) → get_balance (GRAM balansi). Begona navbat atrofida hech qanday retray yoʻq — soʻrov kafolatlangan oʻtkazuvchanlikka ketadi. Aytgancha, GRAM — bu qayta nomlangan Toncoin (qayta nomlash 2026-yil iyunda boʻlib oʻtdi); tarmoq esa avvalgidek TON deb ataladi.
Bepul Hobby kaliti (60 soʻrov/min) tizimga kirgandan soʻng darhol, kartasiz beriladi. Keyin yuk oʻsishiga qarab: Pro — $29/oy, 300 soʻrov/min; Scale — $199/oy, 1200 soʻrov/min. Muhim tafsilot: barcha tariflarda TONNodeʼning 16 ta toolining hammasi mavjud — siz faqat oʻtkazuvchanlik uchun toʻlaysiz, funksionallik uchun emas.
Oʻz ajratilgan liteserveringiz — soʻrov boʻyicha, self-serve emas
Baʼzan hosted-tarif yetarli boʻlmaydi va ajratilgan (single-tenant) liteserver kerak boʻladi — faqat sizning trafigingiz uchun, umuman qoʻshnilarsiz. Bunday variant bor, lekin halol aytamiz: bu oʻz-oʻziga xizmat koʻrsatish emas. Dashboardda «single-tenant ni yoqish» tugmasi yoʻq — bu qoʻlda rasmiylashtiriladi: bizga yozing, yukni va konfiguratsiyani muhokama qilamiz.
Va tarix chuqurligi haqida yana bitta halol izoh. TONNodeʼning arxiv nodasi hozir sinxronlanmoqda va hozircha soʻrovlarga xizmat koʻrsatmaydi. «Arxiv chuqurligi» — bu roadmap bandi, tayyor funksiya emas. Agar sizga butun davr uchun chuqur tarix aynan bugun kritik boʻlsa, buni alohida rejalashtiring. Nima allaqachon tayyor va nima rejada ekanini — roadmapda koʻring.
Qisqacha
not ready= noda sinxronlanmagan: masterchain sharddan oldinda, akkaunt holatini oxirgi shard-blokda hali tekshirib boʻlmaydi.- Global configdagi ommaviy liteserverlar — umumiy va limitlangan:
not ready, ADNL taymautlari, chuqur tarix yoʻq. Buni toncenter/tonapiʼdagi HTTP 429 bilan chalkashtirmang — bu boshqa qatlam. - Klient tomonidagi fikslar (bekoff bilan retraylar, endpointlar rotatsiyasi, taymautlar) xatolar chastotasini kamaytiradi, lekin sababni yoʻqotmaydi.
get_masterchain_info— sizning healthcheckingiz: u faqat noda masterchain boshini umuman quvib yetmagandaginanot readyqaytaradi.- Haqiqiy davo — umumiy resursdan kafolatlangan oʻtkazuvchanlikka oʻtish.
Bepul Hobby hosted-kalitini oling va umumiy nodalarda «not ready» tutishni bas qiling → tonnode.io/dashboard?plan=hobby
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.