در کد منبع باز Telegram Web K — نسخه وب در آدرس web.telegram.org/k — در تاریخ ۳۰ اکتبر، کیف پول Gram به طور کامل اضافه شد، شامل موجودی، تاریخچه، ارسال و دریافت، عبارت بازیابی (secret phrase)، آیتم‌های کلکسیونی، انتقال‌ها در چت‌ها و TON Connect. در ۲ نوامبر، این قابلیت پنهان شد: ثابت WALLET_RELEASED روی false تنظیم شده است و تا زمانی که به صورت دستی تغییر نکند، هیچ آیتم منو، لینک یا دکمه‌ای به کیف پول هدایت نمی‌کند. در وب‌سایت web.telegram.org/k هنوز کیف پول موجود نیست، زیرا بیلد ۳۰ اکتبر، چهار و نیم ساعت قبل از کامیت کیف پول، کامپایل شده است. در نسخه وب دوم، Web A، کیف پول هم‌اکنون در بیلد فعال (live build) موجود است و توسط پرچم سرور wallet_available نمایش داده می‌شود، همان پرچمی که برای برنامه‌های iOS و Android استفاده می‌شود. این موضوع شامل کاربرانی می‌شود که از تلگرام در مرورگر استفاده می‌کنند.

محتویات کد Web K

کیف پول در تاریخ ۳۰ اکتبر ساعت ۱۹:۱۸ UTC با یک کامیت ادغام شد: شامل ۲۸۴ فایل، ۴۸,۴۸۳ خط اضافه و ۳۷۵ خط حذف شده است. توضیحات کامیت، کلاینت‌های iOS و Android را به عنوان الگو ذکر می‌کند. محتویات آن به شرح زیر است:

بخشقابلیت‌ها
موجودیمبلغ به Gram و ارز انتخابی
تاریخچهصفحات عملیات کش می‌شوند
ارسالبه مخاطب، با نام کاربری، به آدرس یا دامنه TON DNS، با کامنت
دریافتآدرس، کد QR، شارژ
عبارت بازیابیپشتیبان‌گیری، اکسپورت، بررسی کلمات
پشتیبان‌گیری کلیدفعال و غیرفعال کردن؛ با غیرفعال کردن می‌توان عبارت بازیابی را تغییر داد
کیف پول قدیمیکیف پول دوم روی دستگاه در کنار کیف پول اصلی قرار می‌گیرد
آیتم‌های کلکسیونیمشاهده و ارسال
انتقال‌ها در چت‌هاکارت جداگانه، در حین انتقال وضعیت «در حال ارسال» نمایش داده می‌شود
TON Connectاتصال برنامه‌ها و پاسخ به درخواست‌های آن‌ها؛ درخواست‌ها منتظر می‌مانند تا کیف پول بسته شود

تراکنش‌ها و کلیدها توسط خود کلاینت محاسبه نمی‌شوند، بلکه توسط موتور wallet-engine انجام می‌شوند — یک کیف پول کراس‌پلتفرم TON مبتنی بر Rust از توسعه‌دهنده TON Core. این موتور در npm موجود نیست: پکیج وب به صورت یک آرشیو از انتشار (release) در GitHub، که در حال حاضر نسخه 0.0.7 از ۳۰ سپتامبر است، دریافت می‌شود و یک اسکریپت جداگانه آرشیو را با چک‌سام منتشر شده مقایسه می‌کند. در همان انتشارات، بیلدهای موتور برای Android، Swift، macOS، Linux و Windows نیز موجود است.

بین ادغام و پنهان‌سازی، کیف پول سه بار اصلاح شد، و هر سه اصلاحیه مربوط به منوی آدرس TON است: دو کامیت از یک مشارکت‌کننده خارجی که با درخواست #750 ادغام شدند، و یک کامیت از توسعه‌دهنده اصلی Web K. اکنون، با کلیک بر روی یک آدرس، کلاینت مالک را در پروفایل‌های از قبل بارگذاری شده و در کارت‌های کیف پول نویسنده پیام، مخاطب و حساب کاربری خود جستجو می‌کند، سپس از سرور سوال می‌کند، و سایر پروفایل‌ها را تنها در صورتی بارگذاری می‌کند که سرور پاسخ دهد که کیف پول به هیچ کس متصل نیست. مالک به صورت یک خط با آواتار در ابعاد کلاینت Android نمایش داده می‌شود.

محتویات Web A

در نسخه وب دوم، telegram-tt، کیف پول Gram زودتر ظاهر شد — با کامیتی در ۱۲ اکتبر با عنوان «Wallet: Introduce Gram Wallet» که شامل ۲۶,۲۵۵ خط کد بود. در ۲۶ اکتبر، صفحه ارسال جدیدی با افکت‌های WebGPU به آن اضافه شد، و با کامیت‌های جداگانه، بررسی لینک‌های TON Connect و عملیاتی که در آن طرف دوم یک کانال یا هدیه تلگرام است، اضافه گردید.

بیلد در web.telegram.org/a — نسخه 12.0.48 از ۲۶ اکتبر — شامل کیف پول است: این ماژول به صورت جداگانه بارگذاری می‌شود، و کلاینت آن را نمایش می‌دهد اگر سرور در تنظیمات حساب کاربری wallet_available را ارسال کرده باشد. در همان تنظیمات، حداقل مبلغ انتقال (wallet_transfer_min_nanos) و تعداد انتقال‌های روزانه بدون کارمزد گس (wallet_gasless_daily_transfers) نیز تعیین می‌شود.

چه باید کرد

  • هم‌اکنون به کیف پول در مرورگر نیاز دارید — web.telegram.org/a را امتحان کنید: ممکن است در آنجا در دسترس باشد. نمایش آن توسط همان پرچم سرور که در برنامه‌های تلفن همراه استفاده می‌شود، تعیین می‌گردد، بنابراین کیف پول در مرورگر برای حسابی که سرور آن را فعال نکرده باشد، نمایش داده نخواهد شد.
  • از Web K استفاده می‌کنید — کیف پول در آنجا هنوز در منو، تنظیمات یا جستجوی تنظیمات موجود نخواهد بود. لینک t.me/sendgrams تا زمان انتشار به عنوان یک لینک نام کاربری معمولی باز می‌شود، و آدرس TON در پیام به صورت متن ساده نمایش داده می‌شود.
  • انتقالی در چت Web K دریافت کرده‌اید — کارت انتقال قابل مشاهده است، اما تا زمان انتشار باز نمی‌شود: جزئیات و کامنت رمزگذاری شده را در برنامه تلفن همراه خود مشاهده کنید.
  • قبل از خروج از حساب کاربری در مرورگر بررسی کنید که عبارت بازیابی (secret phrase) را یادداشت کرده‌اید یا پشتیبان‌گیری فعال است. نسخه وب کلیدهای کیف پول را روی دستگاه ذخیره می‌کند، و در کد Web K صفحه خروج به طور جداگانه در این مورد هشدار می‌دهد (بخش زیر). نحوه یافتن و ذخیره عبارت بازیابی در راهنما موجود است.

نحوه پنهان‌سازی کیف پول تا زمان انتشار

پنهان‌سازی در دو کامیت در ۲ نوامبر انجام شد. ابتدا در ساعت ۱۴:۳۱ UTC، آیتم «Send Money» از منوی چت، منوی انتقال Gram و منوی آدرس TON حذف شد، و بقیه موارد هنوز به سرور وابسته بودند. در ساعت ۱۵:۲۳ UTC، کامیت دوم همه چیز را بست: در فایل lib/wallet/release.ts ثابت WALLET_RELEASED = false ظاهر شد. طبق توضیحات آن، این یک تنظیمات نیست: در روز انتشار در کد تغییر خواهد کرد.

تا زمانی که این ثابت false باشد، آیتم «Wallet» در منوی اصلی و در تنظیمات (کلاینت حتی موجودی را برای این خط درخواست نمی‌کند)، نتیجه جستجو در تنظیمات، آیتم در منوی پیوست‌ها، تمام دکمه‌های «Send Money»، پنجره کیف پول، لینک‌های کیف پول و TON Connect، منوی آدرس TON و درخواست‌های TON Connect بسته هستند. کیف پول فقط در sandbox پاپ‌آپ‌ها باز می‌ماند — این sandbox در بیلدهای دیباگ و پیش‌نمایش موجود است و با داده‌های ساختگی (fixtures) کار می‌کند، بدون درخواست به سرور.

پس از انتشار، سرور تصمیم خواهد گرفت، اما با پیش‌فرض متفاوتی نسبت به Web A: Web K کیف پول را تنها در صورتی پنهان می‌کند که پرچم wallet_available با مقدار «خیر» ارسال شود، در حالی که Web A آن را تنها در صورتی نمایش می‌دهد که پرچم با مقدار «بله» ارسال شود.

کلیدها در مرورگر

کلید کیف پول تلگرام را می‌توان در یک پشتیبان‌گیری رمزگذاری شده نگهداری کرد. فعال و غیرفعال کردن پشتیبان‌گیری در Web K طبق کامنت در کد، کلاینت iOS را تکرار می‌کند، و خطوط آن را اینگونه توصیف می‌کنند: پشتیبان‌گیری به سه بخش تقسیم شده و در مراکز داده در سه قاره ذخیره می‌شود، و تنها بر روی دستگاه‌های مالک جمع‌آوری می‌گردد. اگر پشتیبان‌گیری غیرفعال شود، کیف پول تنها با عبارت بازیابی قابل بازیابی خواهد بود. هنگام غیرفعال کردن، کلاینت پیشنهاد می‌کند که عبارت بازیابی را نیز تغییر دهید: آدرس و موجودی ثابت می‌مانند، تغییر در شبکه ثبت می‌شود و هزینه کارمزد دارد، و با موجودی صفر نمی‌توان آن را انجام داد.

از این رو هشدارهایی هنگام خروج از حساب کاربری وجود دارد. Web K چهار هشدار دارد: کلیدهای کیف پول فقط روی این دستگاه هستند و تلگرام نسخه‌ای از آن‌ها را ندارد؛ کلیدهای یک کیف پول قدیمی دیگر روی دستگاه موجود است؛ تغییر کلید تأیید نشده است و کلید جدید فقط در اینجا موجود است؛ و حالت کلی — اگر کلیدها موجود باشند، خروج آن‌ها را از بین می‌برد. در سه مورد اول، کیف پول تنها با عبارت بازیابی قابل بازگردانی است، در مورد آخر — با پشتیبان‌گیری تلگرام یا عبارت بازیابی.

نحوه بررسی

  • کد Web K: کامیت کیف پول (۳۰.۱۰، ۱۹:۱۸ UTC، +۴۸,۴۸۳/−۳۷۵، ۲۸۴ فایل)، پنهان‌سازی Send Money و پنهان‌سازی کیف پول (۰۲.۱۱)، فایل با ثابت، خطوط کیف پول در src/lang.ts، وابستگی @ton/wallet-engine در package.json و اسکریپت به‌روزرسانی آن.
  • وب‌سایت web.telegram.org/k: صفحه با Last-Modified ۳۰ اکتبر ۱۴:۴۷ UTC ارائه شده است — این کامیت بیلد در ۱۴:۴۶ UTC است؛ انیمیشن‌های کیف پول از کامیت ۳۰ اکتبر در سایت موجود نیستند، آدرس‌های آن‌ها با تغییر مسیر پاسخ می‌دهند.
  • کد و وب‌سایت Web A: کامیت کیف پول (۱۲.۱۰)، صفحه ارسال (۲۶.۱۰)؛ در بیلد فعال 12.0.48 (Last-Modified ۲۶ اکتبر ۱۸:۰۹ UTC) — ماژول کیف پول، openWalletModal و فیلدهای تنظیمات wallet_available, wallet_transfer_min_nanos, wallet_gasless_daily_transfers.
  • موتور: انتشارات wallet-engine — 0.0.1 از ۱۹ اوت تا 0.0.7 از ۳۰ سپتامبر.