Hex'ten Base58'e Dönüştürücü

Onaltılık baytları yapıştırın ve Bitcoin, Solana ve IPFS'in kullandığı Base58 dizesini alın. Baştaki her 00 baytı baştaki bir 1 olur, diğer tüm baytlar aynen korunur.

Tamamen tarayıcınızda çalışır. Hiçbir veri yüklenmez.

Nasıl kullanılır

  1. Hex baytlarını girdi alanına yapıştırın. Boşluklar, iki nokta işaretleri ve 0x öneki kabul edilir.
  2. Base58 sonucunu çıktıda okuyun.
  3. Sonucu kopyalayın veya Base58'i yeniden hex'e çözmek için "Girdi ve çıktının yerini değiştir" düğmesine basın.

Hex nasıl Base58'e dönüşür

Hex basamakları önce bayt başına iki basamak olacak şekilde baytlara çevrilir; bu nedenle girdinin çift sayıda basamak içermesi gerekir. Baytlar ardından tek bir big-endian sayı olarak okunur ve Bitcoin alfabesiyle 58 tabanında yeniden yazılır. Baştaki her 00 baytı bir 1 olarak yazılır; 0000ff değerinin 115Q, tek başına ff değerinin ise 5Q olmasının nedeni budur.

Base58 bayt başına yaklaşık 1,37 karakter gerektirir; bu nedenle 64 hex basamağı (32 bayt) 43 veya 44 karaktere iner. Alfabede 0, O, I, l, + veya / bulunmadığından sonuç kolayca sesli okunabilir, çift tıklamayla seçilebilir ve URL'lere sorunsuz yerleşir. Her şey tarayıcınızda hesaplanır.

Solana ve IPFS tanımlayıcıları oluşturma

  • Solana: Bir adres, önek ve sağlama toplamı olmadan Base58 ile yazılmış 32 baytlık Ed25519 açık anahtarıdır. Adresi almak için 64 basamaklı hex anahtarı yapıştırın.
  • IPFS CIDv0: CIDv0, Base58 ile yazılmış bir sha2-256 multihash değeridir. 64 basamaklı özetin önüne 1220 eklediğinizde Qm ile başlayan 46 karakterlik bir dize elde edersiniz. Özet, IPFS'in kodlanmış blok için hesapladığı özet olmalıdır; bu, orijinal dosyanın SHA-256 değeriyle aynı değildir.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

Bitcoin adresleri sağlama toplamı gerektirir

Tek başına bir hash160 değeri adres değildir. Eski tip bir Bitcoin adresi, 00 sürüm baytı ve ardından gelen 20 baytlık hash160 değerinin Base58Check ile kodlanmış halidir; Base58Check, kodlamadan önce 4 baytlık bir çift SHA-256 sağlama toplamı ekler. 00 ve hash160 değerini düz Base58 ile kodlamak, sağlama toplamı olmayan daha kısa bir dize verir ve cüzdanlar bunu reddeder.

Bunun yerine Base58Check sayfasını kullanın: girdi biçimini "Onaltılık" yapın, 00 ve ardından hash160 değerini girin; sağlama toplamı sizin için eklenir. Hex değeriniz zaten doğru sağlama toplamıyla bitiyorsa bu sayfa da aynı adresi üretir.

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18    (Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Kodda hex'ten Base58'e dönüştürme

# Python (kurulum: pip install base58)
import base58
base58.b58encode(bytes.fromhex('0000ff'))     # sonuç: b'115Q'

// JavaScript (kurulum: npm install bs58)
import bs58 from 'bs58';
bs58.encode(Buffer.from('0000ff', 'hex'));    // sonuç: '115Q'

Sıkça sorulan sorular

Bir hash160 değerini Bitcoin adresine nasıl dönüştürürüm?
Önüne 00 sürüm baytını ekleyin ve düz Base58 ile değil, Base58Check ile kodlayın. Baytları hex olarak girdiğinizde Base58Check sayfası bunu sizin için yapar.
Sonuç neden birkaç 1 karakteriyle başlıyor?

Hex değeriniz aynı sayıda 00 baytıyla başlıyor. Base58, dize çözüldüğünde geri getirilebilmeleri için bunları baştaki 1'ler olarak korur.

Hex girdim neden reddediliyor?

Hex, çift sayıda basamak gerektirir ve büyük ya da küçük harfle yazılmış yalnızca 0-9 ve a-f karakterlerini kabul eder. Boşluklar, iki nokta işaretleri ve 0x öneki otomatik olarak kaldırılır; araya karışmış bir g harfi veya eksik bir basamak gibi diğer her şey hataya yol açar.

Bu sayfa hangi Base58 alfabesini kullanıyor?
Solana, IPFS ve diğer projelerin çoğunun da kullandığı Bitcoin alfabesini. Flickr veya Ripple alfabesi için Base58 sayfasına gidin, alfabeyi orada seçin ve girdinizi hex baytları olarak girin.