Vào ngày 13 tháng 10, đội ngũ TON Core đã công bố các khuyến nghị cho hệ sinh thái liên quan đến ví Telegram. Các ứng dụng ví độc lập được đề xuất tiếp tục tạo ví mới trên hợp đồng W5 (wallet-v5r1), vì hợp đồng ví Telegram, WalletTg, được thiết kế riêng cho Telegram. Tuy nhiên, các ví này cũng cần học cách mở các ví Telegram hiện có bằng cụm từ khôi phục bí mật của chúng. Điều này áp dụng cho tất cả những ai muốn giữ ví Telegram của mình trong một ứng dụng riêng biệt: My Wallet và Gram Wallet đã hỗ trợ tính năng nhập này, với mã nguồn xuất hiện trong phiên bản 26.10.0 vào ngày 6 tháng 10.
Cách Mở Ví Telegram Trong Một Ứng Dụng Khác
- Ghi lại địa chỉ của ví từ Telegram. Bạn sẽ dùng địa chỉ này để kiểm tra xem ví đã mở có đúng là ví của bạn không.
- Lấy cụm từ khôi phục hiện tại. Theo tài liệu trong Telegram Desktop, bạn có thể tìm thấy nó trong menu ví: Keys & Backup → Show Recovery Phrase. Nếu bạn chưa thay đổi khóa, cụm từ này sẽ có 12 từ. Sau khi thay đổi khóa, cụm từ sẽ có 24 từ và bạn cần nhập cả 24 từ. Cách lưu trữ cụm từ khôi phục đã được giải thích riêng.
- Nhập cụm từ khôi phục vào My Wallet hoặc Gram Wallet: Import Existing Wallet → Secret Words. Cả hai chương trình đều được xây dựng từ một mã nguồn mở duy nhất, và phiên bản 26.10.4 hiện có trên App Store và wallet.ton.org đã hỗ trợ tính năng này.
- Kiểm tra địa chỉ. Nếu địa chỉ trùng khớp với địa chỉ từ Telegram, ví của bạn đã được mở hoàn toàn, bao gồm số dư và lịch sử giao dịch. Nếu không trùng khớp, ứng dụng đã mở một ví khác bằng cùng một khóa, và nguyên nhân thường là một trong ba trường hợp dưới đây.
Ví chưa gửi bất kỳ giao dịch nào. Hợp đồng trong TON xuất hiện trên địa chỉ với giao dịch gửi đi đầu tiên: trước đó, tiền có thể nằm trên địa chỉ nhưng không có mã hợp đồng. Ứng dụng chỉ nhận diện địa chỉ là ví Telegram nếu một hợp đồng với mã Telegram và khóa cần thiết đã hoạt động trên đó. Đối với một ví chưa được triển khai, 12 từ sẽ mở một ví W5 trống, và 24 từ sẽ dẫn đến lỗi: ứng dụng sẽ thông báo rằng không có hợp đồng ví Telegram nào tại địa chỉ này. Theo logic mã nguồn, giải pháp là gửi ít nhất một giao dịch từ Telegram trước, sau đó thử nhập lại.
Khóa đã được thay đổi, nhưng chỉ nhập 12 từ đầu tiên. Sau khi thay đổi khóa, nửa đầu của cụm từ vẫn xác định địa chỉ, nhưng không thể dùng để ký giao dịch nữa. Ứng dụng sẽ thấy rằng khóa trong hợp đồng khác và hiển thị một ví W5 trống thay vì ví của bạn. Bạn cần tất cả 24 từ của cụm từ khôi phục hiện tại.
Cụm từ khôi phục đã lỗi thời. Nếu khóa đã được thay đổi nhiều hơn một lần và bạn đang sử dụng phiên bản cụm từ khôi phục cũ, ứng dụng sẽ phản hồi rằng khóa công khai không khớp với cụm từ và ví có thể đã thay đổi khóa. Chỉ cụm từ khôi phục mới nhất từ Telegram mới có thể giúp ích.
Một ứng dụng không hỗ trợ ví Telegram thường sẽ chấp nhận 12 từ như một cụm từ BIP-39 thông thường và hiển thị một ví với địa chỉ khác và số dư bằng không, trong khi 24 từ từ hai nửa có thể không được chấp nhận hoàn toàn. Tiền vẫn nằm trên địa chỉ Telegram: ứng dụng đơn giản là không thể tính toán địa chỉ này từ cụm từ và ký các giao dịch theo định dạng WalletTg.
Sau khi nhập, khóa tồn tại ở hai nơi. Telegram mặc định giữ một bản sao khóa được mã hóa, chia thành ba phần tại các trung tâm dữ liệu trên ba châu lục, và bây giờ khóa còn nằm trong ứng dụng. Nếu mục tiêu là chuyển sang tự quản lý, tài liệu mô tả giải pháp: Keys & Backup → Disable Backup với tùy chọn Update Secret Phrase. Telegram sẽ thay đổi khóa ký, hiển thị một cụm từ mới gồm 24 từ và chỉ tắt bản sao đám mây sau khi thay đổi đã được thực hiện trên mạng. Một khoản phí bằng Gram sẽ được tính cho việc thay đổi khóa. Địa chỉ vẫn giữ nguyên, cụm từ cũ không còn có thể ký giao dịch, và sau đó bạn cần nhập lại 24 từ mới vào ứng dụng.
Một Cụm Từ, Ba Địa Chỉ
Địa chỉ ví trong TON không được tính toán từ khóa, mà từ hàm băm của trạng thái khởi tạo hợp đồng: mã và dữ liệu khởi tạo. Khóa là một phần của dữ liệu này, nhưng mỗi loại ví có mã riêng. Do đó, cùng một khóa có thể tạo ra nhiều địa chỉ tương ứng với số lượng loại hợp đồng tồn tại, và mỗi địa chỉ có thể chứa tài sản riêng.
Khóa từ cụm từ khôi phục của ví Telegram được tạo ra theo tiêu chuẩn BIP-39 chung với đường dẫn m/44'/607'/0', giống như cách My Wallet tạo khóa từ cụm từ 12 từ của nó. Sau đó, các đường dẫn khác nhau. Trạng thái khởi tạo của ví Telegram chứa mã hợp đồng trampoline và bốn trường: số phiên bản lưu trữ, bộ đếm seqno, số ID ví phụ 0x7FFF7F11 và khóa công khai. W5 có mã khác và ID ví riêng.
Cách thức này hoạt động đã được kiểm tra trên một cụm từ 12 từ dùng một lần, được tạo cho bài viết này: theo thuật toán từ tài liệu, một khóa duy nhất đã được tạo ra và từ đó ba địa chỉ.
| Hợp đồng | Địa chỉ từ một cụm từ |
|---|---|
| WalletTg, ví Telegram | UQAgG-WT…P_gXad |
| W5 (wallet-v5r1) | UQA7s7tH…boDdkIc |
| v4R2 | UQBVSR_U…djLee01 |
Ứng dụng sẽ hiển thị địa chỉ nào phụ thuộc vào mã của nó. My Wallet và Gram Wallet, đối với cụm từ 12 từ, duyệt qua tất cả các phiên bản hợp đồng mà chúng biết, từ cũ nhất đến W5 và telegram, trên hai chỉ mục đường dẫn đầu tiên. Ví Telegram chỉ được đưa vào danh sách này nếu một hợp đồng với trampoline đang hoạt động tại địa chỉ đó, số ID ví phụ bằng 0x7FFF7F11, và khóa từ get method get_public_key khớp với khóa từ cụm từ. Trong số các kết quả tìm được, W5 được chọn nếu nó có lịch sử; nếu không, địa chỉ có số dư lớn nhất; nếu không, địa chỉ có giao dịch cuối cùng; nếu tất cả đều trống – W5. Từ đó, ví W5 trống trong các trường hợp lỗi trên: khi ví Telegram không vượt qua kiểm tra, nó đơn giản là không nằm trong số các ứng cử viên.
Cụm từ 24 từ đi theo một nhánh riêng. Nếu mỗi nửa 12 từ vượt qua kiểm tra BIP-39, nửa đầu cung cấp khóa neo và từ đó là địa chỉ, còn nửa thứ hai cung cấp khóa ký, được so sánh với khóa trong hợp đồng. Nhánh này cần thiết vì 24 từ cũng có thể xuất hiện trong các ví TON cũ, được tạo theo các quy tắc riêng của mạng. Tài liệu hướng dẫn rằng trong trường hợp có tranh chấp, hãy hiển thị cả hai ứng cử viên cho người dùng và không tự động chọn; My Wallet trước tiên thử nhánh Telegram và, nếu không có hợp đồng Telegram tại địa chỉ đó và cụm từ có thể được sử dụng như một cụm từ thông thường, nó sẽ nhập cụm từ đó như một cụm từ thông thường.
Tại Sao Các Ví Mới Vẫn Sử Dụng W5
Lý do trong khuyến nghị của TON Core rất đơn giản: WalletTg được tạo ra đặc biệt cho Telegram. Cấu trúc của hợp đồng cho thấy điều gì đằng sau đó.
Mã ví là chung và được thay đổi bằng bỏ phiếu. Mỗi địa chỉ ví Telegram chứa một trampoline không thể thay đổi, chuyển quyền điều khiển cho mã từ tham số −123 của cấu hình mạng. Phiên bản mới của mã này được các validator phê duyệt, theo tài liệu cần hơn 75% tổng trọng lượng của họ, và nó được phân phối cho tất cả các ví Telegram cùng một lúc. Chủ sở hữu ví không thể khóa một phiên bản hoặc từ chối cập nhật. Mã W5 nằm trong mỗi tài khoản riêng và không thay đổi.
Không có tiện ích mở rộng. W5 hỗ trợ các tiện ích mở rộng: các hợp đồng riêng biệt mà ví cho phép hoạt động thay mặt nó, dựa trên đó các đăng ký và xác minh bổ sung được xây dựng. Xác thực hai yếu tố trong My Wallet được tìm kiếm chính xác dưới dạng tiện ích mở rộng của ví W5. Trong WalletTg, không có tiện ích mở rộng; theo ý tưởng của các tác giả, xác thực hai yếu tố và đăng ký sẽ xuất hiện dưới dạng các chức năng tích hợp.
Định dạng yêu cầu riêng. Chữ ký trong WalletTg đứng trước phần thân yêu cầu, việc gửi một tin nhắn có định dạng ngắn riêng, và để thanh toán phí cho người dùng, yêu cầu được chuyển qua một trung gian, người này sẽ đính kèm Gram để thực hiện. Ứng dụng muốn không chỉ hiển thị số dư của ví Telegram mà còn gửi từ đó, phải triển khai định dạng này riêng biệt với W5.
Lý do chính khiến WalletTg được thiết kế khác biệt là xoay khóa mà không thay đổi địa chỉ. Trong mô tả của hợp đồng đã nêu rõ: Telegram tạo ví, nhưng cho phép người dùng chuyển sang tự quản lý tài sản. Việc nhập vào các ứng dụng bên thứ ba chính là nửa sau của quá trình chuyển đổi này.
Những gì được khuyến nghị cho các bên khác
Đối với các ứng dụng có đăng nhập qua ví, TON Core khuyên nên cập nhật TON Connect và kiểm tra chữ ký ton_proof theo cách yêu cầu của đặc tả kỹ thuật: khóa của ví Telegram được lấy từ mạng, chứ không phải từ trạng thái ban đầu. Phần này đã được phân tích trong bài viết về TON Connect 5.0.
Các nhà phân tích blockchain được đề xuất nhận diện ví Telegram, hiển thị việc xoay khóa và đánh dấu các giao dịch mà phí không do chủ sở hữu thanh toán. API Toncenter đã học cách phân biệt hợp đồng ví Telegram và trả về việc xoay khóa dưới dạng một hành động riêng biệt với khóa mới và khóa cũ được mã hóa, và tonscan.org dựa trên dữ liệu này đã gắn nhãn các ví Telegram và các giao dịch với ghi chú "Fee paid by Telegram".




