TON лайтсервері неге «not ready» дейді және оны қалай жоямыз
TON лайтсервері «not ready» немесе ADNL-таймаут қайтара ма? Себебін жария конфигтен табамыз және қатені ретрайлармен әрі TONNode hosted-кілтімен жоямыз.
Лайтсервер not ready: қарапайым сұрау жібердіңіз — жауабына «not ready» түсті
Сіз әмиянның балансын тексеретін немесе контрактінің get-әдісін шақыратын агент жазып отырсыз. Код дұрыс, мекенжай дұрыс, лайтсервер конфигі ресми global-config.json-нан алынған. Бірақ жауаптың орнына жүйелі түрде не not ready, не мүлдем ештеңе келмейді — қосылым жай ғана ілініп тұрып, ADNL-таймаут бойынша үзіледі. Оның үстіне бұл әрқашан қайталана бермейді: таңертең жұмыс істейді, жүктеме көбейгенде — жоқ. Таныс па? Бұл сіздің кодыңыздағы баг та емес, «TON құлап қалғаны» да емес. Бұл — жаһандық конфигтегі жария лайтсерверлердің болжамды мінез-құлқы. TON liteserver not ready неге пайда болатынын, клиент жағында не шынымен көмектесіп, ненің көмектеспейтінін талдап көрейік.
TON лайтсервердегі «not ready» мен ADNL-таймаут нені білдіреді
not ready — бұл лайтсервердің тікелей жауабы: «мен әлі синхрондалмадым, саған жауап бере алмаймын». TON-да блокчейннің екі деңгейі бар: мастерчейн (masterchain) және шардчейндерге/шардтарға (shardchains) бөлінетін basechain (воркчейн 0). Мастерчейн — кітаптың мазмұны іспетті, ал шардтар — транзакциялар мен аккаунт күйі жататын тараулардың өзі. Нода мастерчейн басын (head) көбіне тиісті shard-блоктарды қуып жетуден бұрын алады. Дәл сол сәтте мастерчейн basechain-нен озып кетеді, ал аккаунт күйі соңғы shard-блокта тұрады — оны әзірге тексеру мүмкін емес. Нода сізге ескірген немесе толық емес деректер бергенше, адал түрде not ready деп жауап береді.
ADNL-таймаут — сол дерттің көрші симптомы. ADNL — лайтсервер клиентпен сөйлесетін TON-ның нативті транспорт протоколы (ол жерде ешқандай HTTP жоқ). Нода шамадан тыс жүктелгенде, ол ADNL-сұрауға бөлінген терезеде жай ғана жауап бермейді, сонда клиент бизнес-логикаға да жетпей, таймаут бойынша үзіледі.
Мұнда қабаттарды шатастырмау маңызды. not ready мен ADNL-таймаут лайтсервердің нативті ADNL-протоколы деңгейінде тұрады. Бұл — toncenter пен tonapi.io тәрізді HTTP-шлюздер лимит асқанда қайтаратын HTTP 429 Too Many Requests-пен бірдей емес. Басқа қабаттар, басқа кодтар, басқа себептер. Егер сіз дәл 429-бен күресіп жатсаңыз — бұл бөлек әңгіме: toncenter-дегі 429-ды түзету туралы талдау. Ал TON-чаттардағы «228 қатесі» туралы мем — қауымдастықтың әзілі, нақты код емес; лайтсервер олай жауап бермейді.
Жаһандық конфигтегі жария лайтсерверлер жүктеме кезінде неге істен шығады
Мәселенің тамыры қарапайым. ton.org/global-config.json ішіндегі лайтсерверлер — ортақ әрі лимиттелген. Бұл — бүкіл әлемдегі мыңдаған әзірлеуші, бот, индексатор мен агент бір мезгілде соғып тұратын жария ресурс. Мұндай ресурстың үш жүйелі шектеуі бар:
- Ортақ жүктеме. Пулды бүкіл экожүйемен бөлісесіз. Пик кезінде нода не желі басын қуып жетіп үлгермейді (
not readyсодан шығады), не жай ғана уақытында жауап бермейді (ADNL-таймаут). - Терең тарих жоқ. Жария нодалар терең мұрағат сақтамайды. Егер сізге
lt/hashжұбы бойынша ескі транзакция керек болса, ол онда әлдеқашан жоқ болуы мүмкін — тарихпен жұмыс туралы бөлек lt пен hash жайлы материал бар. - Ешқандай кепілдік жоқ. Бұл — «қалай бар, солай» ресурсы. Сізде басымдық жоқ, өткізу қабілетін ешкім уәде етпейді: бүгін сәті түсті, ертең — жоқ.
Яғни not ready — «күте тұрып өткізуге» болатын кездейсоқтық емес, жүктеме астындағы ортақ ресурстың заңды мінез-құлқы. Ал сіздің ешқандай кодыңыз бөтеннің шамадан тыс жүктелген нодасын жылдамырақ синхрондауға мәжбүрлей алмайды.
Клиенттік фикстер: ретрайлар, эндпоинттерді ротациялау және таймауттар
Инфрақұрылымды өзгертпес бұрын клиенттен барын сығып алыңыз. Бұл тәсілдер шынымен жұмыс істейді, бірақ олардың шегі бар — нодалар бәрібір ортақ болып қала береді.
1. Экспоненциалды бэкоффпен ретрайлар
not ready көбіне өткінші: 200–800 мс өткенде сол лайтсервердің өзі керекті shard-блокты қолданып та үлгереді. Өсіп отыратын кідіріспен жасалған қарапайым қайталау қателердің байқарлықтай үлесін алып тастайды.
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' мен ADNL-таймауттарды ретраймыз, бірақ бизнес-қателерді емес
await new Promise((r) => setTimeout(r, 200 * 2 ** i));
}
}
throw lastErr;
}
2. Эндпоинттерді ротациялау
Пулда конфигтен алынған бірнеше лайтсервер ұстаңыз да, ағымдағысы not ready берсе немесе таймаутқа кетсе, келесісіне ауысыңыз. Бір нода артта қалса — көршісі басын қуып жеткен болуы мүмкін.
3. Ұлғайтылған таймаут
Әдепкі ADNL-таймаут шамадан тыс жүктелген жария нода үшін кейде тым қатал. Аздаған қосымша уақыт (бірнеше секунд) жалған үзілістерді азайтады. Бірақ таймаутты шексіздікке дейін созсаңыз — жай ғана ілініп қалған сұрауларды жинайсыз; бұл ем емес, анестезия.
Тағы бір пайдалы тәсіл — нақты сұрауға дейінгі жеңіл healthcheck. Бұған get_masterchain_info (мастерчейн басы) тамаша келеді: нода желі басын қуып жеткенде дәл осы операция бірінші болып жаңа seqno береді, ал not ready-ді тек нода мастерчейн басының өзін әлі қуып жетпегенде ғана қайтарады. Жаңа seqno берді ме — нода жұмыс істеп тұр, енді get_account_state, get_balance, run_get_method жасауға болады.
Адал қорытынды: ретрайлар + ротация + таймауттар қателер жиілігін төмендетеді, бірақ себебін жоймайды. Жария нодалар by design шамадан тыс жүктелген — сіз жай ғана есікті сыпайырақ қағасыз, ал оның артында сол баяғы кезек тұр. TON-ға қатынаудың басқа тәсілдері 2026 жылға арналған toncenter баламаларының шолуында жинақталған.
Өз нодасыз шешім: біздің лайтсервердегі TONNode hosted-кілті
not ready-ді түбегейлі жоюдың бір ғана жолы бар — ортақ нодаларға баруды тоқтату. TON-ның өз нодасын көтеру мен оған қызмет көрсету қымбатқа түседі әрі әуресі көп: синхрондау, диск, жаңарту, мониторинг. Аралық нұсқа — ортақ пулға бармай, кілт арқылы кепілдендірілген өткізу қабілеті мен басым қатынау алу.
TONNode — бұл TON үшін hosted MCP-сервер. MCP (Model Context Protocol) — ЖИ-агенттер (Claude, Cursor, ChatGPT/Codex, кез келген MCP-клиент) құралдарды шақыратын стандарт. Кодыңыз жаһандық конфигті парсылап, not ready төңірегінде әуре болғанның орнына, агент дайын құралды шақырады, ал оның артында — сіздің Bearer-кілтіңізбен жұмыс істейтін https://mcp.tonnode.io/mcp hosted-эндпоинті. Бұл — ортақ кезектің орнына кепілдендірілген өткізу қабілеті.
@tonnode/mcp пакеті — open source (MIT, npm-де және GitHub-та tonnode/mcp бар) — TON-ның нативті ADNL-протоколы бойынша, HTTP-қабаттарсыз жұмыс істейді. Яғни сіз транспортты баяу HTTP-шлюзге ауыстырмайсыз, сол баяғы адал ADNL-де қаласыз — бірақ өз кілтіңіз бойынша басым қатынаумен.
Диагностика мен күнделікті оқу үшін мыналар пайдаға асады:
get_masterchain_info— мастерчейн басы, табиғи healthcheck.get_account_state— аккаунттың күйі, жалаушалары және соңғы транзакциясы.get_balance— GRAM-мен баланс.run_get_method— контрактінің кез келген read-only get-әдісі.
Егер сіз TON-дағы MCP-ді енді ғана бастап жүрсеңіз, TON үшін MCP гайды бойынша танысып шығыңыз.
Қалай қосуға болады: жергілікті npx немесе кілтпен hosted-эндпоинт
Тегін әрі жергілікті
Дерек оқитын құралдардың толық жинағы ешқандай баптаусыз, жария конфиг бойынша, банк картасынсыз және кілтсіз жергілікті жұмыс істейді:
{
"mcpServers": {
"ton": {
"command": "npx",
"args": ["-y", "@tonnode/mcp"]
}
}
}
Бұл — әзірлеу мен жергілікті эксперименттер үшін тамаша. Бірақ есте сақтаңыз: жергілікті npx капот астында бәрібір сол ортақ лайтсерверлерге барады, сондықтан жүктеме астындағы not ready-ден құтқармайды — ол тәуелділіктермен әурелеуден құтқарады және құралдардың бірыңғай интерфейсін береді.
Кілтпен hosted
Ортақ нодалардан кету үшін транспортты өз Bearer-кілтіңізбен HTTP-MCP-ге ауыстырыңыз (құралдарды шақырудың өзі біздің нодаға ADNL бойынша кетеді):
{
"mcpServers": {
"ton": {
"type": "http",
"url": "https://mcp.tonnode.io/mcp",
"headers": { "Authorization": "Bearer tn_live_…" }
}
}
}
Агентпен жұмыста бұл қалай көрінеді
Қосылғаннан кейін агентке әдеттегі промпттың өзі жетеді — құралдарды өзі таңдайды:
Алдымен healthcheck үшін
get_masterchain_info. Содан кейінEQC…үшінget_account_state— күйі мен соңғы транзакциясын көрсет. Одан соң сол мекенжай бойыншаget_balance.
Капот астында бұл — тізбек: get_masterchain_info (нода тірі және басын қуып жетті) → get_account_state (күйі, жалаушалары, соңғы транзакциясы) → get_balance (GRAM балансы). Бөтеннің кезегі төңірегінде ешқандай ретрай жоқ — сұрау кепілдендірілген өткізу қабілетіне кетеді. Айтпақшы, GRAM — бұл атауы өзгертілген Toncoin (өзгерту 2026 жылдың маусымында өтті); желі бұрынғысынша TON деп аталады.
Тегін Hobby кілті (60 сұрау/мин) жүйеге кірген бойда, банк картасынсыз беріледі. Әрі қарай өсу шамасына қарай: Pro — $29/ай, 300 сұрау/мин; Scale — $199/ай, 1200 сұрау/мин. Маңызды бір жайт: TONNode-тың 16 құралының бәрі барлық тарифте қолжетімді — сіз функционал үшін емес, тек өткізу қабілеті үшін төлейсіз.
Өз арнайы лайтсерверіңіз — сұрау бойынша, self-serve емес
Кейде hosted-тариф аздық етеді де, арнайы бөлінген (single-tenant) лайтсервер керек болады — тек сіздің трафигіңізге арналған, көршілері мүлдем жоқ. Мұндай нұсқа бар, бірақ адалын айтайық: бұл — өзіне-өзі қызмет көрсету емес. Дашбордта «single-tenant қосу» түймесі жоқ — бұл қолмен рәсімделеді: бізге жазыңыз, жүктеме мен конфигурацияны талқылаймыз.
Тарих тереңдігі туралы тағы бір адал ескертпе. TONNode-тың мұрағаттық нодасы қазір синхрондалып жатыр және әзірге сұрауларға қызмет көрсетпейді. «Мұрағаттық тереңдік» — роадмаптың тармағы, дайын функция емес. Егер сізге дәл бүгін бүкіл уақыттағы терең тарих аса маңызды болса, мұны бөлек жоспарлаңыз. Қазір не дайын, ал не жоспарда екені — роадмапта.
Қысқаша
not ready= нода синхрондалмаған: мастерчейн шардтан озып кеткен, соңғы shard-блоктағы аккаунт күйін әзірге тексеру мүмкін емес.- Жаһандық конфигтегі жария лайтсерверлер — ортақ әрі лимиттелген:
not ready, ADNL-таймауттар, терең тарих жоқ. Мұны toncenter/tonapi-дегі HTTP 429-бен шатастыруға болмайды — басқа қабат. - Клиенттік фикстер (бэкоффпен ретрайлар, эндпоинттерді ротациялау, таймауттар) қателер жиілігін азайтады, бірақ себебін жоймайды.
get_masterchain_info— сіздің healthcheck-іңіз: ол тек нода мастерчейн басын мүлдем қуып жетпегенде ғанаnot readyдеп қызарады.- Нағыз ем — ортақ ресурстан кепілдендірілген өткізу қабілетіне көшу.
Тегін Hobby hosted-кілтін алыңыз да, ортақ нодаларда «not ready» аулауды доғарыңыз → tonnode.io/dashboard?plan=hobby
Агентіңізге TON-ға қолжетімділік беріңіз
16 MCP-құрал: оқу, кастодиалды емес сваптар, кроссчейн және әмияндар. Тегін тариф — 60 сұрау/мин, карта керек емес.