Telegram Desktop के कोड में, सीधे Telegram लॉगिन विंडो में वेबसाइट से वॉलेट को जोड़ने की सुविधा तैयार है। जिस वेबसाइट पर आप अपने Telegram अकाउंट से लॉगिन कर रहे हैं, वह उसी रिक्वेस्ट में बिल्ट-इन वॉलेट का पता मांग सकेगी, और एक ही पुष्टि आपको वेबसाइट में प्रवेश भी देगी और TON Connect के ज़रिए वॉलेट को उससे जोड़ भी देगी। यह कोड क्लाइंट की डेवलपमेंट ब्रांच (विकास शाखा) में 12-13 अक्टूबर से मौजूद है, और macOS के लिए Telegram के 20 अक्टूबर के बीटा बिल्ड में भी इसी तरह का डेटा टाइप है। जारी किए गए वर्ज़नों और API डॉक्यूमेंटेशन में यह फ़ंक्शन अभी तक उपलब्ध नहीं है।
यह कैसा दिखेगा
लॉगिन कन्फर्मेशन विंडो (लॉगिन पुष्टि विंडो) अब दिखाती है कि कौन सी वेबसाइट एक्सेस मांग रही है, किस डिवाइस से रिक्वेस्ट आई है, और एक टॉगल स्विच (टॉगल स्विच) "Allow Messages" — वेबसाइट के बॉट को आपको मैसेज भेजने की अनुमति दें। क्लाइंट कोड के अनुसार, यदि वेबसाइट ने वॉलेट का अनुरोध किया है, तो इसके नीचे ये दिखाई देंगे:
- "Wallet" पंक्ति, आपके Telegram वॉलेट के पते के साथ, जिसे दो हिस्सों में बांटा गया है (क्लिक करने पर पता कॉपी हो जाता है);
- "Connect Wallet" टॉगल स्विच, जो डिफ़ॉल्ट रूप से चालू रहता है;
- स्पष्टीकरण: "{bot} आपके वॉलेट को इस वेबसाइट से कनेक्ट करने का अनुरोध कर रहा है। वेबसाइट आपका TON पता, बैलेंस और लेन-देन देख पाएगी, लेकिन आपकी अनुमति के बिना फंड ट्रांसफर नहीं कर पाएगी। कनेक्शन लॉगिन के लिए एक हस्ताक्षर पर हस्ताक्षर करता है, न कि ट्रांसफर पर।"
सभी छह नई इंटरफ़ेस स्ट्रिंग 12 अक्टूबर को "Grant site wallet access from the login confirmation" विवरण के साथ एक ही कमिट में जोड़ी गई थीं। यदि टॉगल स्विच चालू रहता है, तो लॉगिन की पुष्टि के बाद क्लाइंट वॉलेट को अनलॉक करने के लिए कहेगा और उसके बाद ही सर्वर को सहमति भेजेगा।
वॉलेट का अनुरोध केवल लिंक के माध्यम से लॉगिन करते समय किया जाता है, जब वेबसाइट आपको Telegram में पुष्टि के लिए भेजती है। चैट में बॉट संदेशों के नीचे लॉगिन बटन इस अनुरोध को नहीं ले जाते हैं: उनके कोड ब्रांच में वॉलेट फ़ील्ड खाली भेजा जाता है।
वेबसाइट को क्या मिलता है
कनेक्शन TON Connect के माध्यम से होता है — एक प्रोटोकॉल जिसका उपयोग वेबसाइटें और मिनी-ऐप्स TON वॉलेट को कनेक्ट करने के लिए करते हैं। सामान्य परिदृश्य में, वेबसाइट वॉलेट की एक सूची दिखाती है, उपयोगकर्ता अपना वॉलेट चुनता है और वॉलेट में ही कनेक्शन की पुष्टि करता है। यहां यह चरण लॉगिन विंडो में एकीकृत है: लॉगिन अनुरोध के साथ, Telegram सर्वर क्लाइंट को TON Connect सेशन नंबर और उसमें वेबसाइट का पहचानकर्ता भेजता है।
लॉगिन की पुष्टि करते हुए, क्लाइंट वॉलेट की तरफ एक सेशन बनाता है, उस पर ton_proof पर हस्ताक्षर करता है और हस्ताक्षर को लॉगिन सहमति के साथ भेजता है। ton_proof एक हस्ताक्षर है जिसके द्वारा वॉलेट वेबसाइट को साबित करता है कि पता उसी का है; यह ट्रांसफर की अनुमति नहीं देता है। हस्ताक्षर का टेक्स्ट तीन मानों से बनता है: वेबसाइट बॉट का पहचानकर्ता, TON Connect में वेबसाइट का पहचानकर्ता और सेशन नंबर, tc-login उपसर्ग के साथ। इस प्रकार हस्ताक्षर एक विशिष्ट लॉगिन से जुड़ा होता है और दूसरे लॉगिन के लिए मान्य नहीं होता है।
API स्कीमा में, लॉगिन अनुरोध के जवाब में इसके लिए तीन फ़ील्ड (एक फ़्लैग "वॉलेट आवश्यक है", सेशन नंबर, वेबसाइट पहचानकर्ता) और लॉगिन पुष्टि में एक फ़ील्ड — tonconnect_session वॉलेट स्वामित्व प्रमाण (हस्ताक्षर) के साथ जोड़े गए हैं। स्कीमा लॉग के अनुसार, यह 12 अक्टूबर से लेयर 231 है। core.telegram.org पर लेयर 225 का वर्णन किया गया है, और वहां वॉलेट फ़ील्ड नहीं हैं।
क्लाइंट कोड में कॉल चेन
- सर्वर
urlAuthResultRequestलॉगिन अनुरोध का जवाबrequest_walletफ़्लैग औरtc_session_id,tc_client_idफ़ील्ड के साथ देता है। - "लॉगिन करें" पर क्लिक करने के बाद, क्लाइंट वेबसाइट पहचानकर्ता और मैनिफेस्ट पते के साथ
wallet.tonConnectCreateSessionको कॉल करता है। - सर्वर द्वारा मैनिफेस्ट पढ़ने का इंतजार करता है:
wallet.tonConnectGetPendingको हर 5 सेकंड में, 12 बार से अधिक नहीं, यानी एक मिनट तक पोल करता है। - सेशन कुंजी (
wallet.tonConnectRegisterKey) को रजिस्टर करता है, एक कॉल प्राप्त करता है औरton_proofके साथ जवाब पर हस्ताक्षर करता है। messages.acceptUrlAuthकोtonconnect_sessionफ़ील्ड के साथ भेजता है — सेशन नंबर, कॉल का जवाब, बॉडी और वॉलेट स्वामित्व प्रमाण।
किन वेबसाइटों को वॉलेट नहीं मिलेगा
क्लाइंट मैनिफेस्ट पता वेबसाइट से नहीं लेता है, बल्कि इसे स्वयं बनाता है: https://<domain>/tonconnect-manifest.json। मैनिफेस्ट वेबसाइट के नाम और आइकन वाली एक छोटी फ़ाइल होती है, जिसे TON Connect वॉलेट में दिखाता है। यदि सर्वर किसी अन्य होस्ट से मैनिफेस्ट लौटाता है, तो क्लाइंट गलत मैनिफेस्ट की त्रुटि के साथ मना कर देता है। इस प्रकार, जिस वेबसाइट पर आप लॉगिन कर रहे हैं और जिस वेबसाइट को वॉलेट मिल रहा है, वे हमेशा समान होती हैं।
दो डोमेन को वॉलेट बिल्कुल नहीं दिया जाता है, और विंडो "Wallet access can't be granted to this site" लिखती है। पहला telegram.org है। दूसरा क्लाइंट सर्वर से जानता है: यह वह डोमेन है जिसका उपयोग Telegram स्वयं wallet.getProofChallenge जवाब में वॉलेट स्वामित्व की जांच के लिए करता है। कोड के अनुसार, इस तरह, जिस हस्ताक्षर से वॉलेट Telegram को स्वामित्व की पुष्टि करता है, उसे किसी अन्य वेबसाइट के माध्यम से प्राप्त नहीं किया जा सकता है।
यदि वॉलेट किसी अन्य डिवाइस पर बनाया गया है
Telegram का बिल्ट-इन वॉलेट कुंजी को डिवाइस पर रखता है। यदि इस कंप्यूटर पर वर्तमान कुंजी नहीं है, तो लॉगिन विंडो "This device doesn't hold the current key of this wallet" और "Restore the key" लिंक दिखाएगी: कुंजी को लॉगिन विंडो बंद किए बिना पुनर्स्थापित किया जा सकता है। कुंजी के बिना टॉगल स्विच निष्क्रिय रहता है, और वेबसाइट पर लॉगिन सामान्य रूप से, वॉलेट के बिना होता है।
यह पहले से कहाँ है
| कहाँ | क्या | तारीख |
|---|---|---|
| tdesktop, dev ब्रांच | वॉलेट के साथ लॉगिन विंडो, छह इंटरफ़ेस स्ट्रिंग | 12 अक्टूबर |
| tdesktop, dev ब्रांच | विंडो रेस फिक्स की गई, वॉलेट पहले से लोड होता है | 13 अक्टूबर |
| macOS के लिए Telegram बीटा 13.0.283345 | कोड में inputTonConnectOauthSession टाइप, इंटरफ़ेस स्ट्रिंग नहीं | 20 अक्टूबर |
| Telegram Desktop 7.3.1 का नवीनतम रिलीज़ | नहीं | 10 अक्टूबर |
| TDLib | नहीं | — |
सर्वर पर वॉलेट अनुरोध सक्षम है या नहीं, यह क्लाइंट्स से नहीं दिखता है: विंडो तभी दिखाई देगी जब वेबसाइट इसका अनुरोध करेगी, और Telegram ने वेबसाइटों के लिए कोई निर्देश प्रकाशित नहीं किया है। अब तक, TON Connect के माध्यम से बिल्ट-इन Telegram वॉलेट द्वारा कनेक्ट करते समय ton_proof हस्ताक्षर को कई वेबसाइटें सत्यापित नहीं कर पाती थीं — इसके लिए TON Connect 5.0 संस्करण से एक अलग सत्यापन ब्रांच की आवश्यकता होती है।




