Bitcoin özel anahtarıyla bir Ethereum adresi nasıl oluşturulur

Bir blockchain cüzdanında, özel anahtar bir genel anahtar oluşturabilir, ancak özel anahtarı genel anahtardan çıkarmak imkansızdır. Açık anahtar ile şifrelenen bilgilerin şifresi özel anahtar ile çözülebilirken, özel anahtar ile imzalanan bilgiler genel anahtar ile doğrulanabilir, doğrulama geçtikten sonra bilgilerin gerçekten özel anahtar sahibi tarafından verildiği kanıtlanabilir. BTC'yi örnek alırsak, bu süreçteki en önemli rol "eliptik eğri şifreleme algoritmasıdır".

Bazı insanlar BTC ve ETH'nin farklı zincirler olduğunu düşünür, bu nedenle kullanılan eliptik eğriler aynı değildir, ancak gerçekte iki zincir aynı secp256k1 eğrisini kullanır, bu nedenle genel anahtarı elde etmenin yolu tamamen aynıdır, fark açık anahtardan üretilir. Adres süreci, daha sonra ilk olarak güvenli bir şekilde özel anahtarın nasıl üretileceğini tanıtacağız ve ardından ETH'nin adresten özel anahtar tarafından oluşturulan genel anahtarı nasıl doğruladığını açıklayacağız.

Özel anahtarın belirtilmesi

Özel anahtar, pozitif bir tamsayı olmalı ve secp256k1 eğrisinin sırasından küçük olmalıdır (secp256k1'in sırası FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141), her nokta 256 bitlik bir dizi ile temsil edilebilir ve bu nedenle 256 bitlik bir algoritma ile 32 bitlik bir algoritmaya ihtiyacımız var Bayt veri.

Başka bir deyişle, BTC ve ETH'nin özel anahtarı 32 baytlık dizelerden oluşan bir dizidir, ancak aynı zamanda ikili bir dize, Base64 dizesi, WIF anahtarı, anımsatıcı ifade, onaltılık Dize.

Güvenli özel anahtar oluşturma

Hepimiz aynı eğriyi kullandıklarını bildiğimiz için, özel anahtarımızı oluşturmak için BTC topluluğunun güvendiği bitaddress.org'u kullanabiliriz. (MEW veya Metamask da iyi seçimlerdir, en azından farklı olabilir. String açığa çıkan özel anahtarlar), ancak iyi bir güvenlik bilincine sahipsek, önemli özel anahtarlarımızı oluşturmak için bir tarayıcı bile kullanmamalıyız (Reddit hakkındaki tartışmaya bakın), bu yüzden daha basit bir tasarım için python kullanacağız bitaddress.

Bitaddress ilkesini anlayın

Bitaddress üç şey yaptı. İlk olarak, bayt dizisini başlatın, ardından kullanıcının bilgisayarından olabildiğince çok entropi almaya çalışın, diziyi kullanıcının girdisine göre doldurun ve son olarak özel anahtarı oluşturun.

Bitaddress, entropiyi depolamak için 256 baytlık bir dizi kullanır. Bu dizinin üzerine bir döngü içinde yazılır, bu nedenle dizi ilk kez dolduğunda, dizin sıfır olur ve ardından üzerine yazma işlemi yeniden başlar.

Program, window.crypto'dan 256 baytlık bir dizi oluşturur. Ardından 4 baytlık entropi elde etmek için bir zaman damgası yazın. Bundan sonra, ekran boyutu, saat dilimi, tarayıcı uzantısı, bölge vb. Dahil olmak üzere diğer bazı verileri alır. 6 bayt daha almak için.

Başlatma sonrasında, kullanıcı ilk baytın üzerine yazmaya devam eder. İmleç hareket ettirildiğinde, program imlecin konumunu yazacaktır. Butona basıldığında program basılan butonun karakter kodunu yazacaktır.

Son olarak, bitaddress, özel anahtarı oluşturmak için birikmiş entropiyi kullanır. bitaddress, ARC4 adlı RNG algoritmasını kullanır. ARC4'ü geçerli saat ve toplanan entropi ile başlatın ve ardından baytları tek tek, toplam 32 kez alın.

Kendi tohum havuzumuzu başlatın

Şifrelenmiş RNG ve zaman damgasından bazı baytlar yazıyoruz. __seed_int ve __seed_byte, havuz dizisine entropi ekleyen iki işlevdir ve rasgele sayılarımızı oluşturmak için sırları kullanırız.

Tohum havuzunu girişten doldurun

Burada önce bir zaman damgası yazıyoruz ve ardından kullanıcı tarafından girilen dizeyi yazıyoruz.

Özel anahtar oluştur

Öncelikle 32 bitlik bir sayı oluşturmak için havuzumuzu kullanın ve özel anahtarımızın (1, CURVE_ORDER) aralığında olduğundan emin olun, ardından kolaylık sağlamak için onaltılıya dönüştürüp 0x bölümünü siliyoruz.

ETH genel anahtarı oluştur

Özel anahtarımızı eliptik eğriye koyarsak, eliptik eğri üzerinde birbirine bağlı X ve Y noktalarını temsil eden 32 baytlık iki tam sayı olan 64 baytlık bir tamsayı elde ederiz.

Sağlama toplamı (ERC-55)

Bitcoin, ortak anahtara hashing uygulayarak ve dönüş değerinin ilk 4 baytını alarak bir sağlama toplamı oluşturur, sağlama toplamı eklenmezse geçerli bir adres alınamaz.

Ancak Ethereum, başlangıçta açık anahtarın bütünlüğünü doğrulamak için bir sağlama toplamı mekanizmasına sahip değildi. Vitalik Buterin'in 2016 yılında EIP-55 olan sağlama toplamı mekanizmasını tanıtmasına ve daha sonra çeşitli cüzdanlar ve borsalar tarafından benimsenmesine kadar değildi.

Büyük / küçük harfe duyarlı hale getirmek için sağlama toplamını Ethereum cüzdan adresine ekleyin

Öncelikle adresin Keccak-256 hash değerini alın. Bu adresi hash fonksiyonuna iletirken bir 0x parçası olamayacağına dikkat edilmelidir.

İkinci olarak, ilk adresin baytlarını sırayla yineleyin. Karma değerinin i'inci baytı 8'den büyük veya 8'e eşitse, i'inci adresteki karakterler büyük harfe dönüştürülür, aksi takdirde küçük harf olarak tutulur.

Son olarak, döndürülen dizenin başına 0x ekleyin. Durum göz ardı edilirse, sağlama toplamı adresi ilk adresle aynı olacaktır. Ancak büyük harflerle yazılmış adresler, herkesin adresin geçerli olduğunu doğrulamasına izin verir.

Bu sağlama toplamının birkaç faydası vardır:

1. Karışık durumu kabul eden birçok onaltılık ayrıştırıcı ile geriye dönük olarak uyumludur ve gelecekte kolayca kullanılabilir;

2. Uzunluğu 40 karakterde tutun;

3. Ortalama olarak, her adresin 15 kontrol basamağı olacaktır.Giriş yanlışsa, rastgele oluşturulan adresin kontrolü yanlışlıkla geçmesinin net olasılığı% 0.0247 olacaktır. 4 baytlık kontrol kodu kadar iyi olmasa da, ICAP'den yaklaşık olarak daha yüksektir. 50 kere;

sonuç olarak

Ethereum için bir cüzdan adresi oluşturmak Bitcoin'den çok daha basittir. Tek yapmamız gereken, özel anahtarı eliptik eğriye atmak ve sonra elde edilen genel anahtarı Keccak-256'ya atmak ve son olarak hash değerinin son 20 baytını çıkarmaktır.

Bu makale halka açık hesapta çoğaltılmıştır: Blockchain Araştırma Laboratuvarı

Saf elektrik istasyonu vagonu? Soru sormayın, 420 km pil ömrü ve daha fazla bagaj alanı var
önceki
L2 otonom sürüş, 510 km'den fazla kapsamlı menzil, bu saf elektrikli araba dört gözle beklemeye değer
Sonraki
Harika, Tao Xichuan, Jingdezhen! Resmi olarak Çin Güzel Sanatlar Akademisi ile el ele tutuşurken, gelecekte ne gibi sürprizler olacak?
Hangisinin güçlü topluluk katılımı var? Cosmos ve Decred yolu gösteriyor
2018'de ABD'de en çok satılan 20 otomobil, ilk üçünün hepsi benzer modeller
Birinci sınıf şehirler artık tamamen elektrikli araçlar için endişelenmeyecek! İşte 630 kilometre pil ömrüyle Aion S geliyor
Hızlı tren çağı geliyor! Şu andan itibaren, Jingdezhen'den insanlar sadece 1.000 yuan karşılığında Tayland'a trenle gidebilir!
İngiltere'de 25.000 sterline hangi 10 lüks arabayı satın alabilirsiniz?
2 saniye boyunca 100 kilometre hızla! 15 dakika tam şarj! Elektrikli araçlar için tüm arzunuzu tatmin edip etmediği
Böyle bir yardımcı polis, kurallara uymayı destekliyor! 18 yaşındaki yardımcı polis, defalarca bıçaklandı ve hala hırsızı takip etti ve yakaladı!
Yabancı medya tarafından en güvenilir otomobil markası olarak seçilen Lexus, arka arkaya sekiz yıldır birinci sırada yer alıyor ve tüm Alman menşeli markalar ortalamanın üzerinde.
Asya Kupası tüm hızıyla devam ediyor! Asia Dragon'un görünümü nedir? Araba yaklaşık 5 metre uzunluğunda, "Küçük ES" yeterince gerçekçi mi?
Ruyi Porselen Resimleri Jingdezhen'de yaşıyorlar ve Banshan Art Hotel'i inşa ettiler
Evreni kim kurtarıyor
To Top