11-oktabr kuni TON Connect 5.0.0 chiqdi, bu veb-saytlar va mini-ilovalar TON-hamyonlarni ulash uchun ishlatadigan kutubxonalar to'plami. Hamyon tanlash oynasida Telegramning o'rnatilgan hamyoni endi birinchi o'rinda turadi, alohida "Telegramni ulash" tugmasi bilan, sobiq @wallet esa Walt deb nomlangan. Kirish ton_proof imzosi asosida qurilgan dasturchilarga jamoa serverni hujjatlar bilan solishtirishni tavsiya qiladi: chunki ko'plab mini-ilovalar Telegram hamyonining imzosini tekshira olmaydi va foydalanuvchi u orqali kira olmaydi.

The post on Telegram — @toncore
TON Connect 5.0.0 e'loni

Dasturchi nima qilishi kerak

Paketlarni yangilash. @tonconnect/sdk, @tonconnect/ui va @tonconnect/ui-react 5.0.0 versiyasida nashr etildi, shu kunning oqshomida interfeys paketlari 5.0.1 versiyasini oldi. Asosiy raqamning o'zgarishi qayta yozilgan kodni anglatmaydi: o'zgarishlar jurnaliga ko'ra, 5.0.0 sdk 4.1.0 va ui 3.1.0 bilan bir xil kod, raqamlar esa birga o'rnatiladigan uchta paket bir xil versiyada bo'lishi uchun tekislangan. Agar sizda ui 3.0.x o'rnatilgan bo'lsa, 5.0 ga o'tish 3.1 ga o'tish bilan bir xil bo'ladi (barcha o'zgarishlari bilan, ular quyida keltirilgan).

ton_proof server qismini tekshirish. Bu hamyon ulanish paytida ilova serveriga manzil unga tegishli ekanligini isbotlaydigan imzo: server bir martalik qatorni beradi, hamyon uni kalit bilan imzolaydi, server hamyonning ochiq kalitini topadi va imzoni solishtiradi. Odatdagi amalga oshirish kalitni walletStateInitda, ya'ni hamyon manzil bilan birga yuboradigan kontraktning dastlabki holatida qidiradi: kod xeshi bo'yicha standart hamyonni (v3, v4, v5) aniqlaydi va kalitni uning ma'lumotlaridan o'qiydi. Telegram hamyonida bunday kalitni ajratish topilmaydi va tekshiruv rad etiladi.

Yangilangan hujjatlarga ko'ra, Telegram hamyoni uchun alohida tarmoq kerak:

  1. walletStateInitdagi kod xeshini WalletTg trampoline kontraktining xeshi bilan solishtirish.
  2. Tarmoqdan akkaunt holatini so'rash va uning faol ekanligiga hamda unda xuddi shu trampoline joylashtirilganligiga ishonch hosil qilish.
  3. Faqat shundan keyin kontraktda get_public_key get-metodini chaqirish va qaytarilgan kalit bilan imzoni tekshirish.

Hujjatlar faol bo'lmagan akkauntni, mos kelmaydigan kodni yoki muvaffaqiyatsiz chaqiruvni rad etishni buyuradi. Alohida ta'kidlanganidek, kontraktda get_public_key metodining mavjudligi o'z-o'zidan hech narsani isbotlamaydi: uni faqat tasdiqlangan amalga oshirishlar ro'yxati bilan solishtirilgan kodda chaqirish mumkin. Agar SDK account.publicKeyga kalitni uzatgan bo'lsa, u topilgan kalit bilan mos kelishi kerak; agar uzatmagan bo'lsa, bu tarmoqdan olingan kalit bilan tekshirilgan imzoni rad etish uchun sabab emas.

Faol bo'lmagan hamyonni hisobga olish. TONdagi akkaunt birinchi chiquvchi tranzaksiya bilan faol bo'ladi: undan oldin manzilda balans bo'lishi mumkin, ammo u yerda kontrakt yo'q. Foydalanuvchiga boshqa o'tkazma orqali ochilgan va hali hech narsa yuborilmagan Telegram hamyoni hujjatlar qoidalariga ko'ra ton_proof orqali kira olmaydi. Bu joydagi xato xabarini umumiy "imzo rad etildi" o'rniga tushunarli qilib yozish kerak.

Xatolarni qayta ishlash. sdk 4.1.0 da barcha kutubxona xatolarining error.name qiymati avvalgi "Error" o'rniga sinf nomi (UserRejectsError va boshqalar) bo'ldi va minifikatsiya bilan buzilmaydi. Xatolarni nom va matn bo'yicha guruhlaydigan xato trekerlari yangilanishdan keyin yangi guruhlar ochadi. 400 kodli hamyon javobi endi UnknownError o'rniga yangi MethodNotSupportedError sifatida keladi; o'rnatilgan hamyonning tushunarsiz javobi esa causedagi asl qiymati bilan WalletTransportError sifatida keladi.

Yangi yuklash manzilini hisobga olish. ui 5.0.1 da Telegram tugmasi ustida telefonda katta kristal paydo bo'ldi. Model taxminan 540 KB og'irlikda va paketdan emas, balki s.ton-connect.io dan yuklanadi; zaif qurilmada, agar animatsiya sekundiga 20 kadr ostiga tushsa, uning o'rniga statik rasm qoladi. Qattiq yuklash siyosatiga (CSP) ega ilovalar uchun bu manzilga ruxsat berish yoki rasm bilan kelishish kerak.

Hamyon tanlash oynasida nima o'zgardi

Kutubxona hamyonlar ro'yxatini o'zida saqlamaydi, balki har safar ochilganda uni umumiy config.ton.org/wallets-v2.json reyestridan yuklaydi; paketda faqat reyestr mavjud bo'lmagan holat uchun zaxira nusxasi mavjud. Shuning uchun hamyonlarning tartibi 11-oktabrda barcha ilovalar uchun bir vaqtning o'zida, reyestrga o'zgartirish kiritish orqali, kodni yangilamasdan o'zgardi. Yangi paketlar bunga tartibni qo'shdi: Telegram hamyoni va Gram Wallet umumiy hamyonlar qatori ustida alohida tugmalarga ajratilgan, boshqalar orasida plitka sifatida turmaydi.

Reyestrdagi o'rniRo'yxatdagi nomiBu nimaQayerga olib boradi
1Telegrammessenjerning o'ziga o'rnatilgan hamyont.me/sendgrams, tonbridge.telegram.org ko'prigi
2Gram Walletgramwallet.io saytidan iOS va Android uchun alohida ilovaconnect.gramwallet.io
3Walt (ex. Wallet)sobiq @wallet botit.me/walt
4Keepersobiq Tonkeeperapp.tonkeeper.com

11-oktabrgacha reyestrda @wallet boti birinchi o'rinda turgan edi, "Telegram" yozuvi esa 15-sentabrda ro'yxatning eng oxiriga qo'shilgan. ui ning eski versiyalari "Wallet in Telegram" deb qattiq kodlangan tugmani birinchi bo'lib chizgan, bu botga olib borgan. Yangi versiyalarda faqat ikkita tugmaning joylashuvi qat'iy belgilangan, nom, belgi, ko'prik va havola esa boshqa hamyonlar singari reyestrdan olinadi.

Nomlarni farqlash kerak. Maqolalar va suhbatlarda Telegramning o'rnatilgan hamyoni Gram Wallet deb ataladi va TON Connect e'lonida ham "Gram Wallet in Telegram" deb yozilgan. Ammo TON Connect reyestrida o'rnatilgan hamyon Telegram deb yozilgan, Gram Wallet nomi ostida esa o'z ko'prigi bilan alohida mobil ilova mavjud. "Telegramni ulash" tugmasi o'rnatilgan hamyonga, uning ostidagi shaffof tugma esa ilovaga olib boradi.

"Walt (ex. Wallet)" imzosi yangi nom o'zgartirish emas. TOP hamyonining boti Waltga 28-sentabrda o'zgargan edi, reyestr nomini 29-sentabrda o'zgartirdi. 11-oktabrda nomga "ex. Wallet" belgisi qo'shildi va havola t.me/walt ga o'tkazildi: xuddi shu bot @wallet orqali ham ochiladi. Yangi interfeys qavsdagi belgisini plitkaning ikkinchi qatoriga o'tkazadi, shuning uchun foydalanuvchi "Walt" va uning ostida "ex. Wallet" ni ko'radi.

Shu bilan birga, interfeys Telegram hamyonini ochadigan havola ham tuzatildi: t.me/sendgrams kabi mini-ilova nomi bo'lmagan manzil uchun eski versiyalar havolaga appname=undefined so'zma-so'z qatorini qo'shgan. Bu tuzatish ui 3.1.0 ga, ya'ni 5.0 ga ham kiritilgan.

Nima uchun Telegram hamyoni eski tekshiruvdan o'tmaydi

Telegram hamyoni WalletTg kontraktida ishlaydi va u standart hamyonlardan boshqacha tuzilgan. Har bir manzilda hamyonning o'zi emas, balki kichik, o'zgarmas trampoline mavjud: u boshqaruvni tarmoq konfiguratsiyasida -123 indeks ostida saqlanadigan va faqat validatorlarning ovozi bilan o'zgaradigan WalletTg kodiga o'tkazadi. Hamyonning yangi versiyasi har bir kontraktni yangilamasdan, barcha foydalanuvchilarga bir vaqtning o'zida yetib boradi.

Tekshiruvning buzilishi ham shundan kelib chiqadi. Telegram hamyonining walletStateInitida trampoline kodi joylashgan, tanish bo'lgan v4 yoki v5 hamyonining kodi emas, shuning uchun versiyalar jadvali kalitni topa olmaydi. Bundan tashqari, WalletTg imzo kalitini o'zgartirishga imkon beradi: kontrakt xotirasida kalit qayta yoziladi va joriy kalitning yagona manbai — jonli akkauntdagi get_public_key get-metodidir. TON Connect hujjatlari bu tarmoqni 12-oktabrda, paketlar chiqqanidan bir kun o'tib tasvirlagan.

Demo-ilovadagi SDK repozitoriyasidan ma'lumot serveri allaqachon shunday tuzilgan: avval walletStateInitni ajratishga harakat qiladi, agar versiya aniqlanmasa, kalitni tarmoqdan so'raydi. Serveri eski misollar bo'yicha faqat birinchi yarmi bilan yozilgan ilovalar Telegram hamyonining imzosini rad etadi. Aynan shu spetsifikatsiyaning buzilishi e'londa muvaffaqiyatsiz kirishlarning sababi deb ataladi.

O'rnatilgan hamyon ilova so'rovlarini qanday qabul qiladi

TON Connect ilova va hamyon o'rtasidagi so'rovlarni ko'prik — shifrlangan xabarlar o'tadigan server orqali uzatadi. Telegram hamyonining o'z ko'prigi, tonbridge.telegram.org, so'rovlar esa mijozga Telegramning o'z protokoli orqali yetib boradi. MTProto 230-qavat sxemasida hamyonda metodlarning to'liq to'plami wallet.tonConnect* mavjud: sessiya yaratish, kutayotgan so'rovlarni olish, bitta qurilmaga so'rovni qabul qilish, javob yuborish. Ilova so'rovi mijozga ilova nomi va mavzusi bilan xabar sifatida keladi, va TDLib uni messageTonConnectRequest deb tavsiflaydi. Xuddi shu sxemada wallet.getExistingWaltBalance ham mavjud: TDLib buning foydalanuvchida t.me/walt botida balans mavjudligini tekshirish ekanligini tushuntiradi.

Ulanish allaqachon ishlaydigan joylar

10-oktabrga qadar Telegram hamyonini ulashga urinishgan Getgems, DeDust, STON.fi, Tonstakers, Tonnel va TON DNS'da. «Telegram» yozuvi ro'yxatdan tanlash oynasiga keladi, shuning uchun eski versiyadagi kutubxonaga ega ilovada ham ro'yxatda paydo bo'ladi. Hamyonlar qatori ustidagi alohida tugma va tuzatilgan havola — faqat ui 3.1.0 va undan yangi versiyalarda mavjud, imzo bilan kirish amalga oshiriladimi yoki yo'qmi, buni ilova serveri hal qiladi.