Telegram Desktop kodunda, cüzdanın bir web sitesine doğrudan Telegram giriş penceresi üzerinden bağlanması hazır hale getirildi. Telegram hesabınızla giriş yaptığınız site, aynı istekte yerleşik cüzdanınızın adresini isteyebilecek ve tek bir onay hem sizi siteye sokacak hem de TON Connect üzerinden cüzdanı siteye bağlayacak. Kod, 12-13 Ekim'den beri istemcinin geliştirme (dev) dalında bulunuyor; aynı veri türü 20 Ekim tarihli Telegram for macOS beta sürümünde de mevcut. Yayınlanmış sürümlerde ve API belgelerinde bu özellik henüz yer almıyor.
Nasıl Görünecek
Giriş onay penceresi şu anda hangi sitenin erişim istediğini, isteğin hangi cihazdan geldiğini ve sitenin botunun size mesaj göndermesine izin veren "Allow Messages" anahtarını gösteriyor. İstemci koduna göre, eğer site cüzdan talep ettiyse, bunun altında şunlar görünür:
- Telegram cüzdan adresinizin ikiye bölünmüş haliyle "Wallet" satırı (tıklama adresi kopyalar);
- Varsayılan olarak açık olan "Connect Wallet" anahtarı;
- Açıklama: "{bot} cüzdanınızı bu siteye bağlamanızı istiyor. Site, TON adresinizi, bakiyenizi ve işlemlerinizi görebilir ancak izniniz olmadan fon transferi yapamaz. Bağlantı, bir transferi değil, bir giriş imzasını imzalar."
Tüm altı yeni arayüz satırı, 12 Ekim'de "Grant site wallet access from the login confirmation" açıklamasıyla tek bir commit ile eklendi. Eğer anahtar açık bırakılırsa, giriş onayından sonra istemci cüzdanın kilidini açmanızı isteyecek ve ancak ondan sonra onayı sunucuya gönderecektir.
Cüzdan, yalnızca site sizi Telegram'da onaylamaya yönlendirdiğinde, bağlantı üzerinden girişlerde talep edilir. Sohbetlerdeki bot mesajlarının altındaki giriş düğmeleri bu isteği taşımaz: ilgili kod dalında cüzdan alanı boş gönderilir.
Site Ne Alır
Bağlantı, web sitelerinin ve mini uygulamaların TON cüzdanlarını bağlamak için kullandığı bir protokol olan TON Connect üzerinden gerçekleşir. Normal senaryoda, site bir cüzdan listesi gösterir, kullanıcı kendi cüzdanını seçer ve bağlantıyı cüzdan içinde onaylar. Burada bu adım giriş penceresine entegre edilmiştir: Telegram sunucusu, giriş isteğiyle birlikte istemciye TON Connect oturum numarasını ve sitedeki kimliğini iletir.
Girişi onaylarken, istemci cüzdan tarafında bir oturum oluşturur, ton_proof'u imzalar ve imzayı giriş onayıyla birlikte gönderir. ton_proof, cüzdanın adresi kendisine ait olduğunu siteye kanıtladığı bir imzadır; transferlere izin vermez. İmza metni üç değerden oluşur: sitenin bot kimliği, TON Connect'teki site kimliği ve oturum numarası, tc-login önekiyle. Böylece imza belirli bir girişe bağlıdır ve başka bir giriş için geçerli değildir.
API şemasında, giriş isteğine verilen yanıta üç alan (bir "cüzdan gerekli" bayrağı, oturum numarası, site kimliği) ve giriş onayına bir alan — cüzdan sahipliği imzasıyla birlikte tonconnect_session — eklenmiştir. Şema günlüğüne göre bu, 12 Ekim tarihli layer 231'dir. core.telegram.org üzerinde layer 225 açıklanmıştır ve orada cüzdan alanları bulunmamaktadır.
İstemci Kodundaki Çağrı Zinciri
- Sunucu,
urlAuthResultRequestgiriş isteğinerequest_walletbayrağı vetc_session_id,tc_client_idalanlarıyla yanıt verir. - "Giriş Yap" düğmesine basıldıktan sonra istemci, site kimliği ve manifest adresiyle
wallet.tonConnectCreateSessionçağrısını yapar. - Sunucunun manifesti okumasını bekler:
wallet.tonConnectGetPendingsorgusu 5 saniyede bir, en fazla 12 kez, yani bir dakikaya kadar yapılır. - Oturum anahtarını kaydeder (
wallet.tonConnectRegisterKey), çağrıyı alır ve yanıtıton_proofile birlikte imzalar. messages.acceptUrlAuth'ıtonconnect_sessionalanı ile gönderir — oturum numarası, çağrıya yanıt, gövde ve cüzdan sahipliği imzası.
Hangi Siteler Cüzdanı Alamaz
İstemci manifest adresini siteden almaz, kendisi oluşturur: https://<domain>/tonconnect-manifest.json. Manifest, TON Connect'in cüzdanda gösterdiği sitenin adı ve simgesini içeren küçük bir dosyadır. Eğer sunucu farklı bir hosttan manifest döndürürse, istemci geçersiz manifest hatasıyla reddeder. Böylece giriş yaptığınız site ile cüzdanı alan site her zaman aynı olur.
İki domaine cüzdan hiç verilmez ve pencere "Wallet access can't be granted to this site" yazar. Birincisi telegram.org'dur. İkincisini istemci sunucudan öğrenir: bu, Telegram'ın wallet.getProofChallenge yanıtında cüzdan sahipliğini doğrulamak için kullandığı bir domendir. Koda göre, cüzdanın Telegram'a sahipliğini onayladığı imza, başka bir site aracılığıyla elde edilemez.
Cüzdan Başka Bir Cihazda Oluşturulduysa
Telegram'ın yerleşik cüzdanı anahtarı cihazda tutar. Eğer bu bilgisayarda mevcut anahtar yoksa, giriş penceresi "This device doesn't hold the current key of this wallet" ve "Restore the key" bağlantısını gösterecektir: anahtarı giriş penceresini kapatmadan kurtarabilirsiniz. Anahtar olmadan anahtar pasif kalır ve siteye giriş her zamanki gibi, cüzdan olmadan gerçekleşir.
Bu Nerede Mevcut
| Nerede | Ne | Tarih |
|---|---|---|
| tdesktop, dev dalı | cüzdanlı giriş penceresi, altı arayüz satırı | 12 Ekim |
| tdesktop, dev dalı | pencere yarışları düzeltildi, cüzdan önceden yükleniyor | 13 Ekim |
| Telegram for macOS Beta 13.0.283345 | kodda inputTonConnectOauthSession türü, arayüz satırları yok | 20 Ekim |
| Son Telegram Desktop sürümü 7.3.1 | yok | 10 Ekim |
| TDLib | yok | — |
Cüzdan isteğinin sunucuda etkin olup olmadığı istemcilerden anlaşılamaz: pencere yalnızca site talep ettiğinde görünecek ve Telegram siteler için henüz talimat yayınlamadı. Şimdiye kadar, TON Connect üzerinden bağlantı kurarken Telegram'ın yerleşik cüzdanı tarafından sağlanan ton_proof imzasını birçok site doğrulayamıyordu — bunun için TON Connect 5.0 sürümünden itibaren ayrı bir doğrulama dalı gereklidir.




