Nasıl kullanılır
- Bir Base58Check dizesi oluşturmak için "Kodla", bir dizeyi doğrulayıp baytlarını geri almak için "Kodu çöz" seçeneğini seçin.
- Kodlamak için girdi biçimini "Onaltılık" yapın ve önce sürüm baytını, ardından yükü girin; örneğin 00 ve 20 baytlık bir HASH160.
- "Base58Check sağlama toplamı" seçeneğini açık bırakın. Sağlama toplamı kodlarken eklenir, kod çözerken doğrulanır.
- Kodu çözmek için dizeyi yapıştırın ve çıktı biçimini "Onaltılık" yapın. Sürüm baytını ve yükü, sağlama toplamı çıkarılmış olarak elde edersiniz.
Base58Check nasıl çalışır?
- Verinin ne olduğunu belirten bir sürüm baytıyla başlayın; ardından 20 baytlık bir açık anahtar özeti gibi yük gelir.
- Bu baytların SHA-256 özetini alın, sonucun SHA-256 özetini yeniden hesaplayın ve ilk 4 baytı sağlama toplamı olarak ayırın.
- Sağlama toplamını sona ekleyin ve tümünü Base58 ile kodlayın. Baştaki her
0x00baytı bir1karakterine dönüşür.
Bu araç sağlama toplamını tam olarak girdiğiniz baytlar üzerinden hesaplar. Sürüm baytını sizin yerinize eklemez; bu yüzden onu girdinizin başına yazın. Kod çözerken sağlama toplamını son 4 bayt dışındaki her şey üzerinden yeniden hesaplar. Değerler eşleşirse sürüm baytını ve yükü alırsınız; eşleşmezse sağlama toplamı hatası alırsınız. Rastgele bir yazım hatasının fark edilmeden geçme olasılığı yaklaşık dört milyarda birdir.
Yaygın sürüm baytları
| Sürüm baytı | Veri | Kodlanmış dizenin ilk karakteri |
|---|---|---|
0x00 | Bitcoin P2PKH adresi (20 baytlık HASH160) | 1 |
0x05 | Bitcoin P2SH adresi (20 baytlık betik özeti) | 3 |
0x6F | Bitcoin testnet P2PKH adresi | m veya n |
0x80 | WIF özel anahtarı (32 bayt; sıkıştırılmış anahtarda ek olarak 0x01) | 5; sıkıştırılmışsa K / L |
bc1 ile başlayan SegWit ve Taproot adresleri Base58Check değil Bech32 kullanır ve burada çözülemez. XRP Ledger adresleri aynı sağlama toplamını Ripple alfabesiyle kullanır: "Alfabe" seçeneğinde Ripple'ı seçin.
Örnek: HASH160'tan adrese
Bitcoin genesis bloğuyla ilişkilendirilen bilinen adres, 00 sürüm baytı ve ardından gelen 20 baytlık bir HASH160 değerinden oluşur. "Base58Check sağlama toplamı" açıkken onaltılık girdi olarak girildiğinde tanıdık adres elde edilir:
Girdi (Onaltılık) 00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Çıktı 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Kodda ise Python'daki base58 paketi b58encode_check() ve b58decode_check() fonksiyonlarını, npm paketi bs58check ise encode() ve decode() fonksiyonlarını sunar.
Teknik özellikler
| Alfabe | 1-9 A-Z a-z (0 O I l hariç) |
|---|---|
| Çıktı boyutu | Yaklaşık %137, artı 4 baytlık sağlama toplamı |
| Dolgu | Yok |
| Standart | Bitcoin Base58Check |
| Büyük/küçük harf duyarlı | Evet |
Örnekler
| Girdi (UTF-8) | Çıktı |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Sıkça sorulan sorular
Kod çözme neden sağlama toplamı hatasıyla başarısız oluyor?
Araç sürüm baytını benim yerime ekliyor mu?
00.Bir WIF özel anahtarının kodunu çözebilir miyim?
80, 32 baytlık anahtar ve sıkıştırılmış anahtarlarda sondaki 01 görüntülenir. Kod çözme tarayıcınızda yerel olarak yapılır, ancak gerçek özel anahtarları yine de dikkatli kullanın.bc1 adreslerinin kodunu çözebilir miyim?
Hayır. Yerel (native) SegWit ve Taproot adresleri, kendi sağlama toplamına sahip farklı bir kodlama olan Bech32 veya Bech32m kullanır. Bitcoin'de Base58Check yalnızca 1 veya 3 ile (testnet'te m, n veya 2 ile) başlayan eski tip adreslerde kullanılır.