Pada 13 Oktober, tim TON Core menerbitkan rekomendasi untuk ekosistem mengenai dompet Telegram. Aplikasi dompet terpisah disarankan untuk tetap membuat dompet baru menggunakan kontrak W5 (wallet-v5r1), karena kontrak dompet Telegram, WalletTg, dirancang khusus untuk Telegram itu sendiri. Namun, mereka juga diminta untuk belajar cara membuka dompet Telegram yang sudah ada menggunakan frasa rahasia mereka. Ini berlaku untuk siapa saja yang ingin menyimpan dompet Telegram mereka juga di aplikasi terpisah: My Wallet dan Gram Wallet sudah mendukung impor semacam ini, dengan kode yang muncul di versi 26.10.0 pada 6 Oktober.
Bagaimana Cara Membuka Dompet Telegram di Aplikasi Lain
- Catat alamat dompet dari Telegram. Anda akan menggunakannya nanti untuk memverifikasi apakah dompet yang benar telah terbuka.
- Ambil frasa saat ini. Menurut dokumentasi di Telegram Desktop, frasa tersebut terletak di menu dompet: Keys & Backup → Show Recovery Phrase. Jika kunci belum diubah, ada 12 words. Setelah kunci diubah, frasa menjadi 24 words, dan Anda harus memasukkan semua 24. Cara menyimpan frasa telah dibahas secara terpisah.
- Impor frasa ke My Wallet atau Gram Wallet: Import Existing Wallet → Secret Words. Kedua program dibangun dari kode sumber terbuka yang sama, dan di App Store serta wallet.ton.org saat ini terdapat versi 26.10.4, yang sudah memiliki dukungan ini.
- Verifikasi alamat. Jika cocok dengan alamat dari Telegram — dompet terbuka sepenuhnya, dengan saldo dan riwayat. Jika tidak cocok — aplikasi membuka dompet lain dengan kunci yang sama, dan alasannya biasanya salah satu dari tiga di bawah ini.
Belum ada yang dikirim dari dompet. Kontrak di TON muncul di alamat dengan transaksi keluar pertama: sebelum itu, koin mungkin ada di alamat, tetapi tidak ada kode di sana. Aplikasi mengenali alamat sebagai dompet Telegram hanya jika kontrak dengan kode Telegram dan kunci yang diperlukan sudah berjalan di alamat tersebut. Untuk dompet yang belum di-deploy, 12 words akan membuka dompet W5 kosong, dan 24 words akan berakhir dengan kesalahan: aplikasi akan melaporkan bahwa tidak ada kontrak dompet Telegram di alamat ini. Secara logis, solusinya adalah dengan mengirim setidaknya satu transfer dari Telegram terlebih dahulu dan setelah itu mengulang impor.
Kunci telah diubah, tetapi hanya 12 words pertama yang dimasukkan. Setelah kunci diubah, paruh pertama frasa masih menentukan alamat, tetapi tidak dapat lagi menandatangani. Aplikasi melihat bahwa kunci dalam kontrak berbeda, dan menunjukkan dompet W5 kosong alih-alih dompet Anda. Diperlukan semua 24 words dari frasa saat ini.
Frasa sudah usang. Jika kunci diubah lebih dari satu kali, dan Anda memiliki versi frasa sebelumnya yang tercatat, aplikasi akan menjawab bahwa kunci publik tidak cocok dengan frasa dan dompet mungkin telah mengubah kunci. Hanya frasa terbaru dari Telegram yang dapat membantu.
Aplikasi yang tidak mendukung dompet Telegram, paling sering akan menerima 12 words sebagai frasa BIP-39 biasa dan menunjukkan dompet dengan alamat berbeda dan saldo nol, dan 24 words dari dua paruh mungkin tidak diterima sama sekali. Koin tetap berada di alamat Telegram: aplikasi hanya tidak dapat menghitung alamat ini dari frasa dan menandatangani transfer dalam format WalletTg.
Setelah impor, kunci hidup di dua tempat. Telegram secara default menyimpan salinan kunci terenkripsi, dibagi menjadi tiga bagian di pusat data di tiga benua, dan sekarang kunci juga ada di aplikasi. Jika tujuannya adalah untuk beralih ke self-custody, dokumentasi menjelaskan solusinya: Keys & Backup → Disable Backup dengan tanda Update Secret Phrase. Telegram akan mengubah kunci penandatanganan, menunjukkan frasa baru 24 words, dan menonaktifkan salinan cloud hanya setelah perubahan berhasil di jaringan. Biaya dalam Gram dikenakan untuk perubahan kunci. Alamat tetap sama, frasa lama berhenti menandatangani transfer, dan setelah itu Anda perlu memasukkan kembali 24 words baru ke dalam aplikasi.
Satu Frasa, Tiga Alamat
Alamat dompet di TON dihitung bukan dari kunci, melainkan dari hash status awal kontrak: kode dan data awal. Kunci termasuk dalam data ini, tetapi setiap jenis dompet memiliki kodenya sendiri. Oleh karena itu, kunci yang sama menghasilkan alamat sebanyak jenis kontrak yang ada, dan setiap alamat dapat menyimpan sesuatu yang berbeda.
Kunci dari frasa dompet Telegram diturunkan sesuai standar umum BIP-39 dengan path m/44'/607'/0', sama dengan yang digunakan My Wallet untuk menurunkan kunci dari frasa 12 words-nya. Selanjutnya, path-nya berbeda. Status awal dompet Telegram berisi kode trampoline dan empat bidang: nomor revisi penyimpanan, penghitung seqno, nomor subwallet 0x7FFF7F11, dan kunci publik. W5 memiliki kode yang berbeda dan pengidentifikasi dompetnya sendiri.
Bagaimana ini terlihat dalam praktik, telah diverifikasi pada frasa satu kali 12 words, yang dihasilkan untuk artikel ini: sesuai algoritma dari dokumentasi, satu kunci diperoleh dan darinya tiga alamat.
| Kontrak | Alamat dari satu frasa |
|---|---|
| WalletTg, dompet Telegram | UQAgG-WT…P_gXad |
| W5 (wallet-v5r1) | UQA7s7tH…boDdkIc |
| v4R2 | UQBVSR_U…djLee01 |
Alamat mana yang akan ditampilkan aplikasi ditentukan oleh kodenya. My Wallet dan Gram Wallet untuk frasa 12 words mengulang semua versi kontrak yang mereka ketahui, dari yang tertua hingga W5 dan telegram, pada dua indeks path pertama. Dompet Telegram masuk dalam daftar ini hanya jika kontrak dengan trampoline berjalan di alamat tersebut, nomor subwallet sama dengan 0x7FFF7F11, dan kunci dari get method get_public_key cocok dengan kunci dari frasa. Dari yang ditemukan, W5 dipilih jika memiliki riwayat; jika tidak, alamat dengan saldo terbesar; jika tidak, alamat dengan transaksi terakhir; jika semuanya kosong — W5. Dari sinilah W5 kosong dalam jebakan di atas: ketika dompet Telegram tidak lolos verifikasi, dompet itu tidak ada di antara kandidat.
Frasa 24 words mengikuti jalur terpisah. Jika setiap paruh 12 words lolos verifikasi BIP-39, paruh pertama memberikan anchor key dan darinya alamat, dan paruh kedua — kunci penandatanganan, yang diverifikasi dengan kunci dalam kontrak. Jalur ini diperlukan karena 24 words juga dapat ditemukan pada dompet TON lama, yang diturunkan sesuai aturan jaringan sendiri. Dokumentasi menyarankan dalam kasus yang meragukan untuk menunjukkan kedua kandidat kepada pengguna dan tidak memilih secara diam-diam; My Wallet pertama mencoba jalur Telegram dan, jika tidak ada kontrak Telegram di alamat tersebut, dan frasa tersebut cocok sebagai frasa biasa, ia mengimpornya sebagai frasa biasa.
Bagaimana dompet Telegram mengubah kunci tanpa mengubah alamat
Dalam penyimpanan kontrak WalletTg, kunci penandatanganan adalah bidang yang dapat diubah, sedangkan alamat selamanya dihitung dari status awal, di mana kunci pertama, anchor key, berada. Perubahan kunci adalah permintaan, ditandatangani oleh kunci saat ini, dengan bukti yang ditandatangani oleh kunci baru. Kontrak menimpa bidang tersebut, dan get method get_public_key sejak saat itu mengembalikan kunci baru. Anchor key masih diperlukan untuk menghitung ulang alamat, tetapi tidak dapat lagi menandatangani. Agar komentar terenkripsi yang diterima sebelum perubahan kunci tetap dapat dibaca, kontrak menerbitkan kunci pribadi sebelumnya yang dienkripsi dengan kunci baru pada setiap perubahan: melalui rantai peristiwa semacam itu, aplikasi memulihkan semua kunci sebelumnya, hanya dengan kunci saat ini.
Mengapa Dompet Baru Tetap Menggunakan W5
Alasan dalam rekomendasi TON Core adalah satu: WalletTg dibuat khusus untuk Telegram. Struktur kontrak menunjukkan apa yang ada di baliknya.
Kode dompet bersifat umum dan diubah melalui pemungutan suara. Setiap alamat dompet Telegram berisi trampoline yang tidak dapat diubah, yang menyerahkan kontrol ke kode dari parameter −123 konfigurasi jaringan. Versi baru dari kode ini disetujui oleh validator, menurut dokumentasi diperlukan lebih dari 75% dari total bobot mereka, dan itu berlaku untuk semua dompet Telegram sekaligus. Pemilik dompet tidak dapat mengunci versi atau menolak pembaruan. Kode W5 berada di setiap akun secara terpisah dan tidak berubah.
Tidak ada ekstensi. W5 mendukung ekstensi: kontrak terpisah yang diizinkan dompet untuk bertindak atas namanya, tempat langganan dan verifikasi tambahan dibangun. Autentikasi dua faktor di My Wallet dicari justru sebagai ekstensi dompet W5. Di WalletTg, tidak ada ekstensi; menurut konsep para pengembang, autentikasi dua faktor dan langganan akan muncul sebagai fitur bawaan.
Format permintaan yang unik. Tanda tangan di WalletTg berada sebelum badan permintaan, pengiriman satu pesan memiliki format singkat yang terpisah, dan untuk pembayaran biaya atas nama pengguna, permintaan diteruskan melalui perantara yang melampirkan Gram untuk eksekusi. Aplikasi yang ingin tidak hanya menampilkan saldo dompet Telegram tetapi juga mengirim dari sana, harus mengimplementasikan format ini secara terpisah dari W5.
Alasan utama mengapa WalletTg dirancang berbeda adalah rotasi kunci tanpa mengubah alamat. Dalam deskripsi kontrak, disebutkan secara langsung: Telegram membuat dompet, tetapi memungkinkan transisi ke self-custody. Impor ke aplikasi pihak ketiga adalah paruh kedua dari transisi ini.
Apa yang Direkomendasikan untuk Lainnya
Untuk aplikasi dengan login melalui dompet, TON Core menyarankan untuk memperbarui TON Connect dan memverifikasi tanda tangan ton_proof sesuai persyaratan spesifikasi: kunci dompet Telegram diambil dari jaringan, bukan dari status awal. Bagian ini dibahas dalam artikel tentang TON Connect 5.0.
Para penjelajah blockchain (blockchain explorers) disarankan untuk mengenali dompet Telegram, menampilkan rotasi kunci, dan menandai transfer yang biaya transaksinya tidak dibayar oleh pemilik. API Toncenter telah belajar membedakan kontrak dompet Telegram dan mengembalikan rotasi kunci sebagai tindakan terpisah dengan kunci baru dan kunci lama yang terenkripsi, dan tonscan.org dengan data ini sudah menandai dompet Telegram dan transfer dengan label "Fee paid by Telegram".




