13 Ekim'de TON Core ekibi, Telegram cüzdanına ilişkin ekosistem için öneriler yayınladı. Bağımsız cüzdan uygulamalarına, yeni cüzdanları hala W5 (wallet-v5r1) sözleşmesi üzerinde oluşturmaları önerildi, çünkü Telegram cüzdanı sözleşmesi olan WalletTg, Telegram'ın kendisi için yapılmıştır; ancak mevcut Telegram cüzdanlarını gizli kurtarma ifadeleriyle açmayı öğrenmeleri gerekiyor. Bu durum, Telegram cüzdanını ayrı bir uygulamada da tutmak isteyen herkesi ilgilendiriyor: My Wallet ve Gram Wallet bu tür bir içe aktarmayı zaten destekliyor; bunun için gerekli kod, 6 Ekim'deki 26.10.0 sürümünde yayınlandı.

The post on Telegram — @toncore
Uygulamalar, Tarayıcılar ve Cüzdanlar için TON Core Önerileri

Telegram Cüzdanını Başka Bir Uygulamada Nasıl Açarsınız?

  1. Telegram'daki cüzdan adresini not alın. Daha sonra bu adresle, doğru cüzdanın açılıp açılmadığını kontrol edeceksiniz.
  2. Mevcut ifadeyi alın. Belgelere göre, Telegram Desktop'ta cüzdan menüsünde bulunur: Keys & Backup → Show Recovery Phrase. Anahtar değiştirilmediyse, 12 kelimeden oluşur. Anahtar değiştirildikten sonra ifade 24 kelimeye çıkar ve tüm 24 kelimenin girilmesi gerekir. İfadeyi nasıl saklayacağınız ayrıca ele alınmıştır.
  3. İfadeyi My Wallet veya Gram Wallet'a aktarın: Import Existing Wallet → Secret Words. Her iki program da aynı açık kaynak kodundan derlenmiştir ve App Store ile wallet.ton.org'da şu anda destek içeren 26.10.4 sürümü bulunmaktadır.
  4. Adresi kontrol edin. Telegram'daki adresle eşleşiyorsa, cüzdanınız bakiyesi ve geçmişiyle birlikte tamamen açılmıştır. Eşleşmiyorsa, uygulama aynı anahtarla başka bir cüzdan açmıştır ve bunun nedeni genellikle aşağıdaki üç durumdan biridir.

Cüzdandan henüz hiçbir şey gönderilmedi. TON'da sözleşme, ilk giden işlemle birlikte adreste belirir: bundan önce adreste coinler olabilir, ancak kod yoktur. Uygulama, bir Telegram cüzdanı adresini, ancak Telegram kodu ve gerekli anahtarla bir sözleşme zaten çalışıyorsa tanır. Dağıtılmamış bir cüzdan için 12 kelime boş bir W5 cüzdanı açar, 24 kelime ise hatayla sonuçlanır: uygulama, bu adreste bir Telegram cüzdanı sözleşmesi olmadığını bildirir. Kod mantığına göre çözüm, önce Telegram'dan en az bir transfer göndermek ve ardından içe aktarma işlemini tekrarlamaktır.

Anahtar değiştirildi, ancak ilk 12 kelime girildi. Anahtar değiştirildikten sonra, ifadenin ilk yarısı hala adresi belirler, ancak artık imzalama yapamaz. Uygulama, sözleşmedeki anahtarın farklı olduğunu görür ve sizin cüzdanınız yerine boş bir W5 cüzdanı gösterir. Mevcut ifadenin tüm 24 kelimesi gereklidir.

İfade güncel değil. Anahtar birden fazla kez değiştirildiyse ve sizde ifadenin önceki bir sürümü kayıtlıysa, uygulama yanıt olarak genel anahtarın ifadeyle eşleşmediğini ve cüzdanın anahtarını değiştirmiş olabileceğini belirtir. Sadece Telegram'dan alınan güncel ifade yardımcı olur.

Telegram cüzdanını desteklemeyen bir uygulama, 12 kelimeyi genellikle standart bir BIP-39 ifadesi olarak kabul eder ve farklı bir adrese sahip, sıfır bakiyeli bir cüzdan gösterir; iki yarıdan oluşan 24 kelimeyi ise hiç kabul etmeyebilir. Bu durumda coinler Telegram adresinde kalır: uygulama sadece bu adresi ifadeden hesaplayamaz ve WalletTg formatında transferleri imzalayamaz.

İçe aktarma sonrası anahtar iki yerde yaşar. Telegram varsayılan olarak şifrelenmiş anahtarın üç kıtadaki veri merkezlerinde üç parçaya bölünmüş bir kopyasını tutar ve şimdi anahtar uygulamada da bulunur. Amaç self-custody'ye geçmekse, belgeler bir çözüm sunar: Keys & Backup → Disable Backup seçeneğiyle Update Secret Phrase işaretlenir. Telegram, imza anahtarını değiştirir, 24 kelimelik yeni bir ifade gösterir ve bulut kopyasını ancak değişiklik ağda tamamlandıktan sonra devre dışı bırakır. Anahtar değişikliği için Gram cinsinden bir ücret alınır. Adres aynı kalır, eski ifade transferleri imzalayamaz ve bundan sonra uygulamaya yeni 24 kelimenin tekrar girilmesi gerekir.

Bir İfade, Üç Adres

TON'daki cüzdan adresi anahtardan değil, sözleşmenin başlangıç durumunun (kod ve başlangıç verileri) hash'inden hesaplanır. Anahtar bu verilere dahil olsa da, her cüzdan türünün kendi kodu vardır. Bu nedenle, aynı anahtar, mevcut sözleşme türü sayısı kadar adres verir ve her birinde farklı şeyler bulunabilir.

Telegram cüzdanının ifadesinden türetilen anahtar, My Wallet'ın 12 kelimelik ifadesinden anahtarı türettiği aynı m/44'/607'/0' yoluyla genel BIP-39 standardına göre türetilir. Sonra yollar ayrılır. Telegram cüzdanının başlangıç durumunda bir trampoline sözleşmesi kodu ve dört alan bulunur: depolama revizyon numarası, seqno sayacı, 0x7FFF7F11 alt cüzdan numarası ve genel anahtar. W5'in kodu farklıdır ve kendi cüzdan tanımlayıcısı vardır.

Bu durumun pratikte nasıl göründüğü, bu makale için oluşturulan tek kullanımlık 12 kelimelik bir ifade üzerinde test edilmiştir: belgelerdeki algoritmaya göre bir anahtar ve ondan üç adres elde edilmiştir.

SözleşmeTek bir ifadeden türetilen adres
WalletTg, Telegram cüzdanıUQAgG-WT…P_gXad
W5 (wallet-v5r1)UQA7s7tH…boDdkIc
v4R2UQBVSR_U…djLee01

Uygulamanın hangi adresi göstereceğine kendi kodu karar verir. My Wallet ve Gram Wallet, 12 kelimelik bir ifade için, bilinen tüm sözleşme sürümlerini, en eskilerden W5 ve telegram'a kadar, ilk iki yol indeksinde dolaşır. Telegram cüzdanı, ancak adreste bir trampoline sözleşmesi çalışıyorsa, alt cüzdan numarası 0x7FFF7F11 ise ve get_public_key get metodundan alınan anahtar, ifadeden alınan anahtarla eşleşiyorsa bu listeye dahil olur. Bulunanlar arasından, geçmişi varsa W5 seçilir; aksi takdirde en yüksek bakiyeye sahip adres; aksi takdirde son işleme sahip adres; her yer boşsa W5. Yukarıdaki tuzaklardaki boş W5 de buradan gelir: Telegram cüzdanı doğrulamayı geçemediğinde, adaylar arasında yer almaz.

24 kelimelik ifade ayrı bir yoldan ilerler. Eğer her biri 12 kelimeden oluşan her iki yarı da BIP-39 doğrulamasını geçerse, ilk yarı anchor key'i ve ondan adresi verirken, ikinci yarı sözleşmedeki anahtarla karşılaştırılan imza anahtarını verir. Bu yol, 24 kelimenin ağın kendi kurallarına göre türetilen eski TON cüzdanlarında da bulunabilmesi nedeniyle gereklidir. Belgeler, tartışmalı bir durumda kullanıcıya her iki adayı da göstermeyi ve sessizce seçim yapmamayı emreder; My Wallet önce Telegram yolunu dener ve adreste bir Telegram sözleşmesi yoksa ve ifade normal bir ifade olarak uygunsa, onu normal olarak içe aktarır.

Yeni Cüzdanlar Neden W5'te Kalıyor?

TON Core önerisindeki gerekçe tekdir: WalletTg, özellikle Telegram için yapılmıştır. Sözleşmenin yapısı bunun arkasındaki nedeni gösterir.

Cüzdan kodu ortaktır ve oylama ile değişir. Her Telegram cüzdanı adresinde, ağ yapılandırmasının −123 parametresindeki koda kontrolü devreden değişmez bir trampoline sözleşmesi bulunur. Bu kodun yeni sürümü, belgelere göre toplam ağırlıklarının %75'inden fazlası ile doğrulayıcılar tarafından onaylanır ve tüm Telegram cüzdanlarına aynı anda ulaşır. Cüzdan sahibi bir sürümü sabitleyemez veya güncellemeyi reddedemez. W5 kodu her hesapta kendi başına bulunur ve değişmez.

TON Core, Cüzdanlardan W5 Üzerinde Adres Oluşturmalarını ve Telegram Cüzdanı İfadesini Kabul Etmelerini İstiyor.

Uzantı Yok. W5 uzantıları destekler: cüzdanın kendi adına hareket etmesine izin verdiği ayrı kontratlardır; abonelikler ve ek doğrulamalar bunlar üzerine kurulur. My Wallet'ın kendisindeki iki faktörlü kimlik doğrulama, tam da bir W5 cüzdan uzantısı olarak aranır. WalletTg'de uzantı yoktur; yazarların tasarımına göre iki faktörlü kimlik doğrulama ve abonelikler, yerleşik özellikler olarak içinde yer alacaktır.

Kendi İstek Formatı. WalletTg'deki imza, istek gövdesinin önündedir; tek bir mesaj göndermek için ayrı, kısa bir format vardır ve kullanıcı adına ücret ödemek için istek, yürütme için Gram ekleyen bir aracı aracılığıyla iletilir. Sadece Telegram cüzdanının bakiyesini göstermekle kalmayıp aynı zamanda ondan göndermek de isteyen uygulamanın, bu formatı W5'ten ayrı olarak uygulaması gerekir.

WalletTg'nin farklı bir şekilde tasarlanmasının ana nedeni, adres değiştirmeden anahtar rotasyonudur. Kontratın açıklamasında açıkça belirtilmiştir: Telegram bir cüzdan oluşturur ancak self-custody'ye geçişe izin verir. Üçüncü taraf uygulamalara aktarım, bu geçişin ikinci yarısıdır.

Diğerlerine Önerilenler

TON Core, cüzdan girişi olan uygulamalara TON Connect'i güncellemelerini ve ton_proof imzasını spesifikasyonun gerektirdiği şekilde doğrulamalarını tavsiye eder: Telegram cüzdanının anahtarı başlangıç durumundan değil, ağdan alınır. Bu kısım TON Connect 5.0 hakkındaki makalede incelenmiştir.

Blok zinciri gözlemcilerine, Telegram cüzdanlarını tanımaları, anahtar rotasyonunu göstermeleri ve ücreti sahibinin ödemediği transferleri işaretlemeleri önerilmiştir. Toncenter API, Telegram cüzdan kontratını ayırt etmeyi öğrendi ve anahtar rotasyonunu yeni bir anahtar ve şifrelenmiş eski anahtar ile ayrı bir eylem olarak döndürüyor; tonscan.org ise bu verilerle Telegram cüzdanlarını ve "Fee paid by Telegram" etiketiyle transferleri işaretliyor.