toncenter 429 «Too Many Requests» xatosini qanday yoʻqotish
toncenter 429 «Too Many Requests» xatosi: nega AI agentlarga qattiq uradi, backoff bilan tez fix va haqiqiy yechim — kafolatlangan throughputli oʻz kalitingiz.
TONdagi token-agent eng noqulay paytda ishdan chiqadi: foydalanuvchi «balansimni va oxirgi bitimlarimni koʻrsat» deb soʻraydi, agent esa vijdonan toncenterʼga soʻrov yuboradi — javob sifatida maʼlumotlar solingan JSON emas, quruq HTTP 429 Too Many Requests qaytadi. Agent bitta tikda hamyon balansini, hisob holatini, tranzaksiyalar tarixini yigʻishga va bir-ikkita get-metodni chaqirishga urindi — ommaviy toncenter esa ikkinchi soʻrovdayoq eshikni yopdi. Foydalanuvchi «nimadir xato ketdi» degan yozuvni koʻradi, siz esa — bitta va oʻsha status takrorlangan qizil loglar devorini. Bu sizning kodingizdagi bag emas. Bu — toncenterʼning ommaviy rate limiti: sekundiga bitta soʻrovdan faolroq ishlay boshlagan har qanday agent oʻshanga borib uriladi.
Keling, toncenter 429 qayerdan kelib chiqishini, nega aynan AI agentlar TONʼda Too Many Requestsni hammadan koʻp ilib olishini, xatolar chastotasini backoff bilan qanday tezda tushirishni — va kafolatlangan oʻtkazuvchanlikka ega oʻz kalitingizga oʻtib, shiftni umuman olib tashlashni koʻrib chiqamiz.
toncenterʼdagi 429 «Too Many Requests» nimani anglatadi
429 kodi — bu «juda koʻp soʻrov» degan standart HTTP-javob. Server buzilgani ham, maʼlumotlaringizni rad etgani ham yoʻq: u shunchaki siz ruxsat etilgan murojaat chastotasidan oshib ketganingizni va sizni sekinlashtirayotganini aytadi (rate limiting). toncenterʼda (v2) javob tanasi esa taxminan quyidagicha koʻrinadi:
{ "ok": false, "error": "Rate limit exceeded", "code": 429 }
Eng muhimi: "ok": false va "code": 429 — bu tanada takrorlangan HTTP-status, kontraktning ichki xato kodi emas. Va eʼtibor bering: hisob maʼlumotlari bilan result maydoni bu yerda umuman yoʻq — limit matni error maydonida boʻladi. Shu sababli kodingiz maʼlumotni resultdan olishga moʻljallangan boʻlsa, u undefined oladi va katta ehtimol bilan stekda ancha keyinroq tushunarsiz parsing xatosi bilan qulaydi — haqiqiy sabab esa errorda yotgan boʻladi. Qoida oddiy: ok: false boʻlganda avval codeni tekshiring va errorni oʻqing, mavjud boʻlmagan resultni parslamang.
Alohida — folklor haqida: TON-hamjamiyatda «228 xatosi» degan gap yuradi. Bu API kodi emas, bu — mem; hech bir server sizga 228 qaytarmaydi. Limitning haqiqiy kodi aynan 429, va hujjatlardan aynan uni qidirish kerak. 429 — vaqtinchalik xato: aynan oʻsha chaqiruvning oʻzi sekinroq qilinsa yoki yaroqli kalit bilan yuborilsa, oʻtib ketadi.
Nega kalitsiz toncenter ~1 soʻrov/s beradi
API-kalitsiz ommaviy toncenter sizni taxminan sekundiga bitta soʻrov bilan cheklaydi. Bu bag ham, xasislik ham emas — bu bir vaqtning oʻzida minglab odam foydalanadigan umumiy bepul resursni himoya qilish. Hatto tajribali dasturchilar ham qoqiladigan bir necha nuans bor:
- Umumiy limit — bu anonim trafik haqida. Kalitsiz siz taxminan 1 rpsʼlik yagona ommaviy limitni butun dunyodan keladigan barcha nomsiz soʻrovlar bilan boʻlishasiz. Eng gavjum soatlarda sizga real tegadigan chastota bundan ham past boʻlib chiqishi mumkin.
- Pullik kalit shiftni koʻtaradi — lekin faqat u soʻrovda haqiqatan uzatilgan boʻlsa. Klassik tuzoq: kalit bor, biroq
X-API-Keysarlavhasi HTTP-klientni refaktoring qilishda yoʻqolib qolgan, siz esa yana ommaviy limitda oʻtiribsiz va soatlab pullik tarif nega «ishlamayotganini» tushunolmaysiz.
Sekundiga bitta soʻrov — brauzerda qoʻlda debag qilish yoki daqiqasiga bir marta balansni tekshiradigan skript uchun normal. Istalgan avtomatlashtirish uchun, ayniqsa agent uchun esa bu — halokatli darajada kam.
Nega 429ni koʻproq AI agentlar ilib oladi: berst-pattern
Gap ana shunda. Oddiy ilova soʻrovlarni taxminan bir maromda yuboradi. AI agent boshqacha ishlaydi — berstlar bilan (burst — keskin toʻlqin). U tiklar bilan ishlaydi: mulohazaning bitta qadamida unga kontekst yigʻish kerak boʻladi va u oʻnlab chaqiruvni ketma-ket, deyarli bir vaqtning oʻzida amalga oshiradi.
Bitta qadamni tasavvur qiling: «foydalanuvchi toʻlov kelgan-kelmaganini tekshirishni soʻraydi». Javob berish uchun agent soniyaning ulushida ketma-ket quyidagilarni chaqiradi:
get_masterchain_info— blokcheynning joriy boshini bilish;get_balance— hamyon balansi;get_account_state— hisob statusi va flaglari;get_transactions— oxirgi tranzaksiyalar;run_get_method— kontraktning get-metodini oʻqish;get_jetton_balance— va shu bilan birga USDT balansi.
Bitta tikda oltita chaqiruv. Limit — sekundiga bitta. Birinchisi oʻtadi, qolganlari esa 429 qaytaradi, agent yo qotib qoladi, yo chala maʼlumotlar asosida gallyutsinatsiya qila boshlaydi. Bunda gap «yomon yozilgan agent»da emas — bu avtonom mulohazaning normal arxitekturasi: avval kontekstni yigʻ, keyin oʻyla. Bundan ham yomoni: xatolarni ilib olgach, agent koʻpincha ularni takroriy chaqiruvlar bilan «tuzatishga» urinadi — va allaqachon tugagan kvotani butunlay tugatadi. Ommaviy limit shunchaki bunday yuk profiliga moʻljallanmagan.
TONʼning global configidagi ommaviy laytserverlar bilan ham shunga oʻxshash hikoya — yuk ostida ular not ready deb javob beradi yoki ADNL-taymaut bilan uzilib qoladi. Bu haqda alohida: nega laytserver «not ready» deb javob beradi va nima qilish kerak. tonapi.ioʼda ham xuddi shu 429 dardi bor — tahlil bu yerda.
Tez fix: eksponensial backoffli retraylar va Retry-After
Hoziroq qilish kerak boʻlgan birinchi ish — devorga toʻliq tezlikda urishni toʻxtatish. Agar 429 baribir uchib kelsa, serverni darhol qaytadan urmang: bu faqat banni uzaytiradi. Bu — vaqtinchalik chora: u 429 chastotasini pasaytiradi, lekin shiftni koʻtarmaydi. Toʻgʻri vaqtinchalik chora toʻrtta qismdan iborat.
1. Jitterli eksponensial backoff. Har keyingi urinishni oldingisidan uzoqroq kuting, ustiga tasodifiy qoʻshimcha qoʻshing — shunda parallel vorkerlar sinxronlashib, bitta soniyaga birdan urilmaydi.
async function fetchWithBackoff(url, opts = {}, maxRetries = 5) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const res = await fetch(url, opts);
if (res.status !== 429) return res;
// Ustuvorlik — serverdan kelgan Retry-After, aks holda jitterli eksponenta
const retryAfter = res.headers.get("Retry-After");
const baseMs = retryAfter
? Number(retryAfter) * 1000
: Math.min(1000 * 2 ** attempt, 16000);
const jitter = Math.random() * 300;
await new Promise((r) => setTimeout(r, baseMs + jitter));
}
throw new Error("toncenter: retraylardan keyin ham 429 qoʻyib yubormadi");
}
2. Retry-After sarlavhasi kelgan boʻlsa, uni hurmat qiling. toncenter 429ʼda odatda uni yubormaydi, shuning uchun asosan oʻz backoff formulangizga tayaning. Lekin server qancha kutish kerakligini baribir koʻrsatgan boʻlsa — taxmin qilmasdan roppa-rosa shuncha kuting (yuqoridagi kodda buni if (retryAfter) shoxobchasi bajaradi).
3. Konkurentlikni cheklang. toncenter oldiga navbat yoki semafor qoʻying — u sekundiga ~1 soʻrovdan koʻpini oʻtkazmasin. Shunda agentning bersti vaqt boʻyicha choʻziladi: oʻsha oltita chaqiruvdan iborat roʻyxat ketma-ket, ~6 soniyada bajariladi, lekin bitta ham 429siz.
4. Takrorlanuvchi oʻqishlarni keshlang. get_masterchain_infoni bitta qadam doirasida bir marta soʻrab, qayta ishlatish mumkin. Jetton metamaʼlumotlari (decimals, ramz) oʻzgarmaydi — ularni bir marta oʻqing. 300 ms oldin oʻqigan balansingiz esa oʻzgargan boʻlishi dargumon.
Bu ishlaydi va agentni xushmuomalaroq qiladi, lekin halol tan olaylik: backoff shiftni koʻtarmaydi. Siz hamon 1 rps ichida qamalib qolgansiz, faqat endi qulash oʻrniga xushmuomalalik bilan navbatda turibsiz. Foydalanuvchi millisekund kutishi mumkin boʻlgan joyda sekundlab kutadi. Javob tezligi kerak boʻlgan agent uchun bu — kasallikni emas, simptomni davolash. Ommaviy APIʼlarning boshqa aylanma yoʻllari — 2026-yil uchun toncenter alternativalari toʻplamida.
Haqiqiy yechim: oʻz kalitingiz va MCP orqali TON
Muammoning ildizi shundaki, siz tor ommaviy kanalni minglab anonim soʻrovlar bilan boʻlishasiz. 429ni chin maʼnoda yoʻqotishning yagona yoʻli — umumiy kvota oʻrniga oʻzingizning kafolatlangan oʻtkazuvchanligingizni olish. Shunda agentning oltita chaqiruvdan iborat bersti beshinchisida devorga urilmasdan toʻliq oʻtib ketadi, agent esa kontekstni toʻliq tezlikda yigʻa oladi. Backoffli retraylar tarmoq uzilishlaridan sugʻurta sifatida qoladi, biroq omon qolishning asosiy mexanizmi boʻlishdan toʻxtaydi.
Va HTTP-statuslar bilan ovoragarchilikni umuman yoʻqqa chiqaradigan yana bir yoʻl bor. Agar TONʼdan olinadigan maʼlumot aynan AI agentga kerak boʻlsa, uni parslash va 429ga ishlov berish talab qilinadigan xom REST-javob koʻrinishida emas, MCP orqali tayyor vositalar sifatida berish mantiqiyroq.
MCP (Model Context Protocol) — AI agentlar (Claude, Cursor, ChatGPT/Codex, istalgan MCP-klient) tashqi vositalarni chaqiradigan standart. Agentni toncenterʼga HTTP-soʻrovni toʻgʻri shakllantirishga, 429ni ilib olishga, Retry-Afterni oʻqishga va JSONni parslashga oʻrgatish oʻrniga, siz unga tipi aniq belgilangan vositalar berasiz, tarmoq bilan bogʻliq butun qora ishni esa server oʻz zimmasiga oladi.
TONNode — TON uchun hosted MCP-server, roppa-rosa 16 ta vosita. Agent odatda toncenter limitini aynan shu oltita oʻqish bilan teshib yuboradi — bu yerda ular tayyor chaqiruvlar sifatida mavjud:
get_masterchain_info— masterchain boshi;get_balance— GRAM balansi;get_account_state— status, flaglar, oxirgi tranzaksiya;get_transactions— tranzaksiyalar tarixi;run_get_method— kontraktning istalgan read-only get-metodi;get_jetton_balance— jetton yoki USDT balansi (jetton-hamyon manzili on-chain hisoblanadi).
(Aytgancha, GRAM — bu 2026-yil iyunida nomi oʻzgartirilgan Toncoin. Tarmoq hamon TON deb ataladi, faqat tanganing nomi oʻzgardi.)
Ichki tomondan @tonnode/mcp paketi TONʼning nativ protokoli boʻyicha ishlaydi — ADNL, HTTP-qatlamlarsiz. Yaʼni siz shunchaki bitta REST-endpointni boshqasiga almashtirmayapsiz: agent tarmoq bilan toʻgʻridan-toʻgʻri muloqot qiladi, siz esa limitlarning HTTP-semantikasini qoʻlda titishdan qutulasiz. Paket open source (MIT), npm va GitHubʼda (tonnode/mcp) mavjud.
Amaliyotdagi farq: agentga endi 429, Retry-After yoki ADNL-taymaut nima ekanini bilish shart emas. U «shu manzilning balansini va oxirgi tranzaksiyalarini ber» deydi — va tuzilmalashtirilgan javob oladi. Oʻsha oltita chaqiruvdan iborat berst umumiy ommaviy limitga emas, sizning kalitingiz ostida oʻtkazuvchanlikka ega serverga ketadi.
Qanday ulash va bepul nimadan boshlash mumkin
Ikki yoʻl bor, ustiga-ustak boshlash uchun roʻyxatdan oʻtish ham shart emas.
Bepul va lokal
Ommaviy config orqali oʻqish vositalarining toʻliq toʻplami — shunchaki MCP-klientingiz sozlamalariga qoʻshing:
{
"mcpServers": {
"ton": {
"command": "npx",
"args": ["-y", "@tonnode/mcp"]
}
}
}
Hech qanday kalit kerak emas, npx paketni oʻzi yuklab oladi. Sinab koʻrish va agent TONni bitta ham 429siz oʻqiyotganiga ishonch hosil qilish uchun shuning oʻzi yetarli. Batafsil tahlil — TON uchun bepul MCP qoʻllanmasida.
Oʻz kalitingiz bilan hosted-endpoint
Real yuk uchun kafolatlangan oʻtkazuvchanlik kerak boʻlganda, oʻz kalitingiz bilan hosted-endpointni ulaysiz:
{
"mcpServers": {
"ton": {
"type": "http",
"url": "https://mcp.tonnode.io/mcp",
"headers": { "Authorization": "Bearer tn_live_…" }
}
}
}
Keyin agent bilan shunchaki odam tilida gaplashasiz — u kerakli vositani oʻzi tanlaydi:
«
EQC…manzilini tekshir: balansniget_balanceorqali, hisob statusiniget_account_stateorqali va oxirgi 10 ta tranzaksiyaniget_transactionsorqali ol. Keyinget_jetton_balanceorqali USDT balansini koʻr.»
Agent kerakli vositalarni kerakli tartibda chaqiradi — koʻr-koʻrona rate limitga urilib turmaydi.
Tariflar
Barcha tariflarda 16 ta vositaning hammasi mavjud — siz faqat oʻtkazuvchanlik uchun toʻlaysiz:
| Tarif | Narx | Oʻtkazuvchanlik |
|---|---|---|
| Hobby | abadiy bepul | daqiqasiga 60 soʻrov |
| Pro | $29/oy | daqiqasiga 300 soʻrov |
| Scale | $199/oy | daqiqasiga 1200 soʻrov |
Hatto daqiqasiga 60 soʻrovli bepul Hobby ham ~1 rpsʼli ommaviy toncenterʼdan mutlaqo boshqa rejim: oʻsha ~60 soʻrov daqiqasiga, lekin endi anonimlar olomoni bilan umumiy emas, kafolatlangan holda sizniki. Agentning oʻnlab chaqiruvdan iborat bersti bitta ham 429siz toʻliq oʻtadi. Hobby kaliti tizimga kirganingizdan soʻng darhol, kartasiz beriladi.
Pullik tariflarni TON tarmogʻidagi GRAM yoki USDT bilan TonConnect orqali, yoxud Telegramdagi xRocket hisobi orqali BTC/ETH/SOL va boshqalarda toʻlash mumkin.
Kutilmalar oshib ketmasligi uchun bir necha halol izoh: TONNode hozir oʻqish va tranzaksiyalarni qurish vazifalarini yopadi, lekin tayyor mahsulot sifatida pay-per-request, REST-API v2, vebhuklar, SSE-strimlar yoki aptaym foizlari koʻrsatilgan yozma SLAʼni taklif qilmaydi. Chuqur tarixli arxiv noda hali sinxronlanmoqda — bu roadmap bandi, bugungi kafolat emas. Yuqorida tavsiflangan hamma narsa esa allaqachon ishlaydi.
Amaliy oʻtish rejasi
- Bepul Hobby kalitini oling (daqiqasiga 60 soʻrov, kartasiz): tonnode.io/dashboard?plan=hobby.
- Yuqoridagi hosted-configni oʻz MCP-klientingizga yozib qoʻying.
- toncenterʼga qoʻlda yozilgan chaqiruvlarni
get_balance,get_account_state,get_transactions,run_get_method,get_jetton_balancevositalari bilan almashtiring. - Agent yuk ostida daqiqasiga 60 soʻrovga tiqilishi bilanoq — oyiga $29ʼlik Proʼga oʻting (daqiqasiga 300 soʻrov): tonnode.io/pricing.
Xulosa
- toncenterʼdagi
429 «Too Many Requests»— bu sizning kodingiz buzilgani emas, ~1 rpsʼli ommaviy limitga tiqilib qolish. (Va bu aniq «228» emas — bunday kod mavjud emas.) - AI agentlar uni hammadan koʻp ilib oladi, sababi berst-pattern: mulohazaning bitta tikida oʻnlab chaqiruv.
- Eksponensial backoffli retraylar,
Retry-After, semafor va kesh 429 chastotasini pasaytiradi, lekin shiftni surmaydi — buning narxi esa tezlik. - Haqiqiy chiqish yoʻli — kafolatlangan oʻtkazuvchanlikka ega oʻz kalitingiz. Maʼlumot aynan agentga kerak boʻlsa esa, TONNode oʻsha TON oʻqishlarini MCP-vositalar sifatida beradi, va «429ni qanday qayta ishlash kerak» degan savol kodingizdan shunchaki yoʻqoladi.
Bepul boshlang: Hobby kalitini olish — daqiqasiga 60 soʻrov, kartasiz. Agentda real yuk boʻlsa va berstlar zich boʻlsa — darhol oyiga $29ʼlik Proʼni oling, daqiqasiga 300 soʻrov.
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.