Pada 11 Oktober, TON Connect 5.0.0 dirilis, sebuah set library yang digunakan situs web dan mini-aplikasi untuk menghubungkan dompet TON. Di jendela pemilihan dompet, dompet Telegram yang terintegrasi kini berada di posisi pertama, dengan tombol terpisah "Connect Telegram", dan @wallet yang sebelumnya kini diberi nama Walt. Bagi developer yang sistem loginnya dibangun di atas tanda tangan ton_proof, tim merekomendasikan untuk memeriksa server mereka dengan dokumentasi: banyak mini-aplikasi tidak dapat memverifikasi tanda tangan dompet Telegram, sehingga pengguna tidak dapat login dengannya.
Apa yang Harus Dilakukan Developer
Perbarui Paket. @tonconnect/sdk, @tonconnect/ui dan @tonconnect/ui-react telah diterbitkan dalam versi 5.0.0, menjelang malam di hari yang sama, paket-paket antarmuka menerima 5.0.1. Perubahan pada nomor versi mayor tidak berarti kode ditulis ulang: menurut catatan perubahan, 5.0.0 adalah kode yang sama dengan sdk 4.1.0 dan ui 3.1.0, dan nomor-nomornya hanya diselaraskan agar ketiga paket yang diinstal bersama memiliki versi yang sama. Jika Anda menggunakan ui 3.0.x, transisi ke 5.0 sama dengan transisi ke 3.1 dengan semua perubahannya (yang akan dijelaskan di bawah).
Periksa Bagian Server ton_proof. Ini adalah tanda tangan yang digunakan dompet untuk membuktikan kepada server aplikasi saat terhubung bahwa alamat tersebut miliknya: server mengeluarkan string sekali pakai, dompet menandatanganinya dengan kunci, server menemukan kunci publik dompet dan memverifikasi tanda tangan. Implementasi tipikal mencari kunci di walletStateInit, status awal kontrak yang dikirimkan dompet bersama dengan alamat: ia mengenali dompet standar (v3, v4, v5) berdasarkan hash kodenya dan membaca kunci dari datanya. Untuk dompet Telegram, analisis kunci semacam itu tidak berhasil, dan verifikasi gagal.
Menurut dokumentasi yang diperbarui, untuk dompet Telegram diperlukan cabang terpisah:
- Bandingkan hash kode di
walletStateInitdengan hash kontrak trampoline WalletTg. - Minta status akun dari jaringan dan pastikan akun tersebut aktif dan trampoline yang sama telah di-deploy di dalamnya.
- Hanya setelah itu panggil get method
get_public_keydari kontrak dan verifikasi tanda tangan dengan kunci yang dikembalikan.
Dokumentasi menyatakan bahwa akun yang tidak aktif, kode yang tidak cocok, atau panggilan yang gagal harus ditolak. Secara khusus ditekankan bahwa keberadaan metode get_public_key pada kontrak itu sendiri tidak membuktikan apa pun: metode tersebut hanya dapat dipanggil pada kode yang telah diverifikasi dengan daftar implementasi yang terverifikasi. Jika SDK meneruskan kunci di account.publicKey, kunci tersebut harus cocok dengan yang ditemukan; jika tidak, itu bukan alasan untuk menolak tanda tangan yang diverifikasi dengan kunci dari jaringan.
Antisipasi Dompet Tidak Aktif. Akun di TON menjadi aktif dengan transaksi keluar pertama: sebelum itu, saldo mungkin ada di alamat tersebut, tetapi tidak ada kontrak di sana. Dompet Telegram, yang menerima transfer dari pihak lain dan belum pernah mengirim apa pun, tidak akan dapat login melalui ton_proof sesuai aturan dokumentasi. Pesan kesalahan di bagian ini harus ditulis dengan jelas, bukan hanya "tanda tangan ditolak" secara umum.
Susun Ulang Penanganan Kesalahan. Di sdk 4.1.0, error.name dari semua kesalahan library menjadi nama kelas (UserRejectsError, dll.) alih-alih "Error" sebelumnya dan tidak terdistorsi oleh minifikasi. Pelacak kesalahan yang mengelompokkan berdasarkan nama dan teks akan membuat grup baru setelah pembaruan. Respons dompet dengan kode 400 kini datang sebagai MethodNotSupportedError baru, bukan UnknownError; respons yang tidak jelas dari dompet terintegrasi — sebagai WalletTransportError dengan nilai asli di cause.
Pertimbangkan Alamat Pemuatan Baru. Di ui 5.0.1, di atas tombol Telegram di ponsel, muncul kristal 3D yang besar. Model ini berukuran sekitar 540 KB dan dimuat bukan dari paket, melainkan dari s.ton-connect.io; pada perangkat yang lemah, jika animasi turun di bawah 20 frame per detik, gambar statis akan tetap ada sebagai gantinya. Aplikasi dengan kebijakan pemuatan yang ketat (CSP) perlu mengizinkan alamat ini atau menerima gambar statis tersebut.
Apa yang Berubah di Jendela Pemilihan Dompet
Library tidak menyimpan daftar dompet di dalamnya, tetapi memuatnya dari registri umum config.ton.org/wallets-v2.json setiap kali dibuka; hanya ada salinan cadangan dalam paket jika registri tidak tersedia. Oleh karena itu, urutan dompet berubah pada 11 Oktober untuk semua aplikasi sekaligus, melalui perubahan registri, tanpa pembaruan kode. Paket-paket baru menambahkan tata letak ini: dompet Telegram dan Gram Wallet dipindahkan ke tombol terpisah di atas barisan dompet umum, dan tidak lagi muncul sebagai ubin di antara yang lain.
| Posisi di Registri | Nama dalam Daftar | Apa Ini | Mengarah ke Mana |
|---|---|---|---|
| 1 | Telegram | dompet yang terintegrasi ke dalam messenger itu sendiri | t.me/sendgrams, bridge tonbridge.telegram.org |
| 2 | Gram Wallet | aplikasi terpisah untuk iOS dan Android dari situs gramwallet.io | connect.gramwallet.io |
| 3 | Walt (ex. Wallet) | bot dari @wallet sebelumnya | t.me/walt |
| 4 | Keeper | Tonkeeper sebelumnya | app.tonkeeper.com |
Sebelum 11 Oktober, bot @wallet berada di posisi pertama dalam registri, dan entri "Telegram" ditambahkan pada 15 September di akhir daftar. Versi ui lama menampilkan tombol "Wallet in Telegram" yang di-hardcode sebagai yang pertama, yang mengarah ke bot. Dalam versi baru, hanya posisi dua tombol yang tetap, sedangkan nama, ikon, bridge, dan tautan diambil dari registri, seperti dompet lainnya.
Nama-nama tersebut harus dibedakan. Dalam artikel dan percakapan, dompet Telegram yang terintegrasi disebut Gram Wallet, dan pengumuman TON Connect juga menulis "Gram Wallet in Telegram". Namun, dalam registri TON Connect, dompet terintegrasi dicatat sebagai Telegram, dan di bawah nama Gram Wallet ada aplikasi seluler terpisah dengan bridge-nya sendiri. Tombol "Connect Telegram" mengarah ke dompet terintegrasi, tombol transparan di bawahnya — ke aplikasi.
Label "Walt (ex. Wallet)" bukanlah perubahan nama baru. Bot dompet TOP menjadi Walt sejak 28 September, registri mengubah namanya pada 29 September. Pada 11 Oktober, catatan "ex. Wallet" ditambahkan ke nama, dan tautan dialihkan ke t.me/walt: bot yang sama juga terbuka melalui @wallet. Antarmuka baru memindahkan catatan dalam kurung ke baris kedua ubin, sehingga pengguna melihat "Walt" dan di bawahnya "ex. Wallet".
Secara bersamaan, tautan yang digunakan antarmuka untuk membuka dompet Telegram telah diperbaiki: untuk alamat tanpa nama mini-aplikasi, seperti t.me/sendgrams, versi lama menyisipkan string literal appname=undefined ke dalam tautan. Perbaikan ini termasuk dalam ui 3.1.0, yaitu juga di 5.0.
Mengapa Dompet Telegram Tidak Lolos Verifikasi Lama
Dompet Telegram beroperasi pada kontrak WalletTg, dan strukturnya berbeda dari dompet standar. Di setiap alamat tidak terdapat dompet itu sendiri, melainkan kontrak trampoline kecil yang tidak dapat diubah: ia meneruskan kontrol ke kode WalletTg, yang disimpan dalam konfigurasi jaringan di bawah indeks −123 dan hanya dapat diubah melalui pemungutan suara validator. Versi baru dompet dengan demikian tersedia untuk semua pengguna sekaligus, tanpa memperbarui setiap kontrak.
Dari sinilah kerusakan verifikasi berasal. Di walletStateInit dompet Telegram terdapat kode trampoline, bukan kode dompet v4 atau v5 yang dikenal oleh parser, sehingga tabel versi tidak menemukan kunci. Selain itu, WalletTg memungkinkan perubahan kunci tanda tangan: di penyimpanan kontrak, kunci ditimpa, dan satu-satunya sumber kunci saat ini adalah get method get_public_key pada akun yang aktif. Dokumentasi TON Connect menjelaskan cabang ini pada 12 Oktober, sehari setelah paket dirilis.
Server referensi dari repositori SDK dalam aplikasi demo sudah dirancang sedemikian rupa: pertama mencoba mengurai walletStateInit, dan jika versi tidak dikenali, ia meminta kunci dari jaringan. Aplikasi yang servernya ditulis berdasarkan contoh lama hanya dengan bagian pertama, akan menolak tanda tangan dompet Telegram. Pelanggaran spesifikasi inilah yang disebut pengumuman sebagai penyebab kegagalan login.
Bagaimana dompet bawaan menerima permintaan aplikasi
TON Connect mengirimkan permintaan antara aplikasi dan dompet melalui jembatan — sebuah server tempat pesan terenkripsi dikirimkan. Dompet Telegram memiliki jembatannya sendiri, tonbridge.telegram.org, dan permintaan mencapai klien melalui protokol Telegram itu sendiri. Dalam skema MTProto layer 230, dompet memiliki serangkaian metode lengkap wallet.tonConnect*: membuat sesi, mendapatkan permintaan yang tertunda, mengambil permintaan untuk satu perangkat, mengirimkan respons. Permintaan aplikasi tiba di klien sebagai pesan dengan nama dan topik aplikasi, dan TDLib menggambarkannya sebagai messageTonConnectRequest. Dalam skema yang sama, terdapat wallet.getExistingWaltBalance: TDLib menjelaskan bahwa ini adalah pemeriksaan apakah pengguna memiliki saldo di bot t.me/walt.
Di Mana Koneksi Sudah Berfungsi
Hingga 10 Oktober, upaya untuk menghubungkan dompet Telegram telah dilakukan di Getgems, DeDust, STON.fi, Tonstakers, Tonnel, dan TON DNS. Entri "Telegram" muncul di jendela pemilihan dari registri, sehingga juga muncul dalam daftar untuk aplikasi yang menggunakan versi lama dari library. Tombol terpisah di atas deretan dompet dan tautan yang diperbaiki — ini hanya tersedia dengan UI 3.1.0 dan yang lebih baru. Apakah login dengan tanda tangan akan berhasil atau tidak, itu ditentukan oleh server aplikasi.




