Telegram Desktop kodida hamyonni saytga toʻgʻridan-toʻgʻri Telegram orqali kirish oynasida ulash tayyor holatga keltirilgan. Telegram akkauntingiz orqali kirayotgan sayt, xuddi shu soʻrovda oʻrnatilgan hamyon manzilini soʻrashi mumkin, va bitta tasdiqlash bilan sizni saytga kiritadi hamda TON Connect orqali hamyonni unga ulaydi. Kod mijozning ishlab chiqish (dev) tarmogʻida 12–13-oktabrdan beri mavjud, xuddi shu maʼlumot turi 20-oktabrdagi macOS uchun Telegram beta versiyasida ham bor. Chiqarilgan versiyalarda va API hujjatlarida bu funksiya hozircha mavjud emas.

Bu qanday koʻrinishda boʻladi

Kirishni tasdiqlash oynasi hozirda qaysi sayt ruxsat soʻrayotganini, soʻrov qaysi qurilmadan kelganini va «Allow Messages» (sayt botiga sizga yozishga ruxsat berish) tugmasini koʻrsatadi. Mijoz kodi boʻyicha, agar sayt hamyonni soʻragan boʻlsa, quyidagilar paydo boʻladi:

  • Telegram hamyoningiz manzilini ikki qismga boʻlingan holda koʻrsatuvchi «Wallet» qatori (bosish manzilni nusxalaydi);
  • Sukut boʻyicha yoqilgan «Connect Wallet» tugmasi;
  • Izoh: «{bot} sizning hamyoningizni ushbu saytga ulashni soʻramoqda. Sayt sizning TON manzilingizni, balansingizni va operatsiyalaringizni koʻradi, lekin sizning ruxsatingizsiz mablagʻlarni oʻtkaza olmaydi. Ulanish kirish uchun imzoni imzolaydi, pul oʻtkazmasini emas».

Barcha oltita yangi interfeys qatori 12-oktabrda «Grant site wallet access from the login confirmation» tavsifi bilan bitta kommit orqali qoʻshilgan. Agar tugma yoqilgan holda qoldirilsa, kirish tasdiqlanganidan soʻng mijoz hamyonni blokdan chiqarishni soʻraydi va shundan keyingina serverga rozilikni yuboradi.

Hamyon faqat sayt sizni Telegramda tasdiqlashga yuborganida, havola orqali kirishda soʻraladi. Chatlardagi bot xabarlari ostidagi kirish tugmalari bu soʻrovni oʻz ichiga olmaydi: ularning kod tarmogʻida hamyon maydoni boʻsh yuboriladi.

Sayt nimalarni oladi

Ulanish TON Connect orqali amalga oshiriladi — bu saytlar va mini-ilovalar TON hamyonlarini ulash uchun ishlatadigan protokol. Oddiy ssenariyda sayt hamyonlar roʻyxatini koʻrsatadi, foydalanuvchi oʻzini tanlaydi va ulanishni hamyonda tasdiqlaydi. Bu yerda bu qadam kirish oynasiga oʻrnatilgan: kirish soʻrovi bilan birga Telegram serveri mijozga TON Connect sessiya raqamini va undagi sayt identifikatorini uzatadi.

Kirishni tasdiqlab, mijoz hamyon tomonida sessiya yaratadi, unga ton_proof imzosini qoʻyadi va imzoni kirishga rozilik bilan birga yuboradi. ton_proof — bu hamyonning manzil unga tegishli ekanligini saytga isbotlaydigan imzo; u pul oʻtkazmalariga ruxsat bermaydi. Imzo matni uchta qiymatdan yigʻiladi: sayt botining identifikatori, TON Connectdagi sayt identifikatori va sessiya raqami, tc-login prefiksi bilan. Shunday qilib, imzo bitta aniq kirishga bogʻlangan va boshqa kirish uchun yaramaydi.

API sxemasida bunga kirish soʻroviga javoban uchta maydon (hamyon kerakligi belgisi, sessiya raqami, sayt identifikatori) va kirishni tasdiqlashda bitta maydon — hamyon egaligi imzosi bilan tonconnect_session qoʻshilgan. Sxema jurnaliga koʻra, bu 12-oktabrdagi 231-qavat. core.telegram.org saytida 225-qavat tasvirlangan va u yerda hamyon maydonlari yoʻq.

Mijoz kodidagi chaqiruvlar zanjiri
  1. Server urlAuthResultRequest kirish soʻroviga request_wallet belgisi va tc_session_id, tc_client_id maydonlari bilan javob beradi.
  2. «Kirish» tugmasini bosgandan soʻng, mijoz sayt identifikatori va manifest manzili bilan wallet.tonConnectCreateSession ni chaqiradi.
  3. Server manifestni oʻqishini kutadi: wallet.tonConnectGetPending soʻrovi har 5 soniyada, koʻpi bilan 12 marta, yaʼni bir daqiqagacha.
  4. Sessiya kalitini roʻyxatdan oʻtkazadi (wallet.tonConnectRegisterKey), chaqiruvni oladi va javobni ton_proof bilan birga imzolaydi.
  5. messages.acceptUrlAuth ni tonconnect_session maydoni bilan yuboradi — sessiya raqami, chaqiruvga javob, tana va hamyon egaligi imzosi.

Qaysi saytlar hamyonni olmaydi

Mijoz manifest manzilini saytdan olmaydi, balki oʻzi tuzadi: https://<domain>/tonconnect-manifest.json. Manifest — bu TON Connect hamyonda koʻrsatadigan sayt nomi va ikonkasini oʻz ichiga olgan kichik fayl. Agar server boshqa xostdan manifest qaytarsa, mijoz notoʻgʻri manifest haqidagi xato bilan rad etadi. Shunday qilib, siz kirayotgan sayt va hamyonni oladigan sayt har doim bir xil boʻladi.

Ikki domenga hamyon umuman berilmaydi va oynada «Wallet access can't be granted to this site» yozuvi paydo boʻladi. Birinchisi — telegram.org. Ikkinchisini mijoz serverdan bilib oladi: bu Telegramning wallet.getProofChallenge javobida hamyon egaligini tekshirish uchun oʻzi foydalanadigan domendir. Kodga koʻra, hamyonning Telegramning oʻziga egaligini tasdiqlovchi imzoni boshqa sayt orqali olish mumkin emas.

Agar hamyon boshqa qurilmada yaratilgan boʻlsa

Telegramning oʻrnatilgan hamyoni kalitni qurilmada saqlaydi. Agar bu kompyuterda joriy kalit boʻlmasa, kirish oynasi «This device doesn't hold the current key of this wallet» va «Restore the key» havolasini koʻrsatadi: kalitni kirish oynasini yopmasdan tiklash mumkin. Kalitsiz tugma faol boʻlmaydi va saytga kirish odatdagidek, hamyonsiz amalga oshiriladi.

Bu qayerda allaqachon mavjud

QayerdaNimaSana
tdesktop, dev tarmogʻihamyonli kirish oynasi, oltita interfeys qatori12-oktabr
tdesktop, dev tarmogʻioyna poygalari tuzatildi, hamyon oldindan yuklanadi13-oktabr
macOS uchun Telegram beta 13.0.283345kodda inputTonConnectOauthSession turi, interfeys qatorlari yoʻq20-oktabr
Telegram Desktopning soʻnggi relizi 7.3.1yoʻq10-oktabr
TDLibyoʻq—

Hamyon soʻrovi serverda yoqilganmi, mijozlar orqali koʻrinmaydi: oyna faqat sayt uni soʻraganida paydo boʻladi, Telegram esa saytlar uchun koʻrsatmalar eʼlon qilmagan. Hozirgacha TON Connect orqali ulanishda Telegramning oʻrnatilgan hamyoni tomonidan berilgan ton_proof imzosini koʻplab saytlar tekshira olmas edi — buning uchun TON Connect 5.0 versiyasidan boshlab alohida tekshirish tarmogʻi kerak.