|
|
2025-10-17 09:01:55 tarihinde yayınlandı
|
|
|
|

Base58, Base58Check, Bech32 ve Bech32m, blokzincir teknolojisinde yaygın olarak kullanılan kodlama formatlarıdır; öncelikle okunabilirliği artırmak, hataları azaltmak ve veri bütünlüğünü sağlamak için kullanılırlar. Bu dört kod, güvenlik, uyumluluk ve hata düzeltme yeteneklerini sağlama konusunda kendi avantajlarına sahiptir ve modern blokzincir adres sistemlerinin önemli temel taşlarıdır.
Base58
"Base58", Satoshi Nakamoto tarafından icat edilmiş ve bilinen bir kodlama yöntemi olan "Base64"ten uyarlanmıştır. Base64 karakter seti şunları içerir: tüm sayılar ve büyük ve küçük harfler, ayrıca iki sembol ("+" ve "/"); Toplamda 64 karakter. Satoshi Nakamoto, 0 sayısını, büyük harfleri I ve O'nu, küçük harf l'yi ve sembolü kaldırdı ve bu sembol Base58 oldu.
Karakter seti: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58Check
Base58 ile karşılaştırıldığında, Base58Check kodlaması sadece bir kontrol toplamı hesaplaması daha fazladır. Aşağıda gösterildiği gibi:
Base58Check, hata yapmaya meyilli, tanınması zor ve geleneksel kodlama yöntemlerinde doğrulanmamış sorunları çözerek, blokzincirdeki anahtar veriler (adresler ve özel anahtarlar gibi) için güvenli, kompakt, insan dostu ve hata tespit eden bir temsil yöntemi sunar. Şimdi daha gelişmiş Bech32/Bech32m (SegWit adresleri için) ile kademeli olarak değiştiriliyor olsa da, erken Bitcoin ekosisteminde kritik bir rol oynadı.
Bech32
"Bech32", Pieter Wuille ve Greg Maxwell tarafından yazılmış BIP 0173 tarafından tanımlanan bir kodlama yöntemidir. Ancak bu kodlamanın da kökenleri vardır: "Bech", sırasıyla 1959 ve 1960'ta üç matematikçi tarafından icat edilen döngüsel bir hata düzeltme kodlama algoritması olan "BCH"ye atıfta bulunur (BCH adı, bu üç matematikçinin isimlerinden gelir). "32", kodlama yönteminin karakter setinin sadece 32 karakterden oluşması anlamına gelir: küçük harfler ve rakamlar, "1", "b", "i" ve "o" harfleri hariç.
BIP 0173'ün başında yazarlar Base58'in istenmeyen yönlerine dikkat çekerler:
- Base58 hem büyük hem de küçük harfler İngilizce harfler kullanır; bu da verilerin QR kodlara daha küçük "sayısal alfabe" modunda değil, sadece büyük "bayt verisi" modunda çekilmesini sağlar.
- Hem kılıf hem de kılıf kullanımı, telefon klavyesinde yazı yazmayı ve okumayı da zorlaştırıyor.
- Kontrol toplamı, yavaş ve yanlış konumu bulamayan iki ardışık SHA256 operasyonu gerektiriyordu.
- Çoğu lokalize edilebilir hata kodlama yöntemi yalnızca karakter kümesi asal kuvvet büyüklüğünde ve 58 asal kuvvet değilse çalışır.
- Base58 daha karmaşık, daha yavaş çözülür.
Sonuç olarak, Bech32'nin yeni yaklaşımı yalnızca küçük harfler ve sayılar kullanır; Gerekirse, örneğin QR kodu çizilirken, bu harflerin tamamı daha kompakt bir temsil için büyük harflerle değiştirilebilir. Daha küçük QR kodlar, Bech32 adresleri tekil olduğu için, alfanumerik modda QR kodları olarak kodlayabilirsiniz. Bu, Base58'in büyük ve küçük harfler gerektirdiği için daha kompakt bir QR kodu oluşturabileceğiniz anlamına geliyor (yani alfanumerik modu kullanamazsınız), Bech32 ise bunu gerektirmiyor. Aşağıda gösterildiği gibi:
Gördüğünüz gibi, Bech32 adresine rağmenDaha fazla karakter içerir, ancak alfanumerik desenleri kullanabilme yeteneği sayesinde QR kodlar genel olarak daha az veri kullanır。
Aynı zamanda, Bech32 hataları bulma yeteneğine sahiptir: sadece kopyalama hatası yaptığınızı bulmakla kalmaz, aynı zamanda hangi bitleri yanlış kopyaladığınızı da belirtebilir (bu hata bulma yeteneği Base58'den çok daha üstündür).
Aslında, BCH algoritmasının bir "hata düzeltme" fonksiyonu da vardır: sadece hangi bitleri yanlış kopyaladığınızı değil, aynı zamanda hangi karakterler olması gerektiğini de gösterebilir. Ancak BIP 0173'ün yazarları onun doğasında olan tehlikeleri buldular: bir yandan, hata düzeltmenin güçlendirilmesi hataları tespit etme yeteneğini zayıflatıyor; Öte yandan, kullanıcı yazılımın hata düzeltme yeteneklerine çok güvenirse, yazılım kullanıcının girdiği hatalı verileri "geçerli ama işe yaramaz" bir veri parçasına düzeltebilir - ancak bu veri BCH kodlanmış veri parçası olarak geçerlidir; Ancak, geri getirilen Bitcoin yazısının alıcının ya da hatta başka birinin kontrolünde olmaması mümkün. Bu son derece tehlikelidir. Bu nedenle, BIP 0173 uyarıda bulunur: "Yazılım, kullanıcılara hangi bitlerin yanlış kopyalanmış olabileceğini hatırlatmanın yanı sıra, hata düzeltme yeteneklerini de uygulamamalıdır (düzeltme önerileri vermemeli)." ”
Ayrıca, Bech32 Base58 kodlamasında bulunan deseni takip eder:
1. Bech32 verisi, Base58'deki önekte benzer şekilde, hangi tür veri olduğunu gösterebilen "anlamlı veri (hrp)" paragrafıyla başlar. HRP 32'den fazla karakter kullanabilir; Bech32 ayrıca HRP'yi gerçekten çözülecek veriden ayırmak için "1" sayısını bir ayırıcı olarak kullanır. Bitcoin'in yanı sıra, Bech32'yi benimseyen birçok başka proje de vardır; HRP, verileri farklı öğelerden ayırt etmek için kullanılır. İşte kayıtlı HRP'lerin bir listesi, bu çok ilginç (ama sadece ilginç). 2. Bech32 ayrıca kodlanmış verinin son 6 karakterini kaplayan bir kontrol toplamı tasarlamıştır.
Bech32m
"Bech32m", BIP 0350 tarafından tanımlanan bir kodlama yöntemidir. Bağlantı:Bağlantı girişi görünür.Geliştiricilerin Bech32 kodlamasında bir güvenlik açığı keşfetmesi nedeniyle önerildi:
Son karakter "p" olduğunda, o karakterin önüne herhangi bir sayıda "q" eklemek veya çıkarmak kontrol toplamı hatasına yol açmaz (veri yine geçerli sayılır), o zamanKontrol toplamı mekanizması tamamen işlevini kaybederBitirmek.
Standart bir Bitcoin betiği eklemezseniz, bu sorun kolayca çözülebilir: hem P2WPKH hem de P2WSH adreslerinin belirli bir uzunluğu var, sadece uzunluk kontrolü ekleyin. Ancak, gelecekte yeni standartlaştırılmış betikler de ekleyeceğimiz göz önüne alındığında, adres uzunluğu değişebilir, bu yüzden bu sorunu düzeltmek gerekiyor.
Bech32m, Bech32 kontrol toplamı üretecinde bir parametreyi değiştirerek bu sorunu çözer.
Şu anda Bech32m yalnızca "Taproot" yükseltmesiyle eklenen "P2TR" betiklerinin adreslerini kodlamak için kullanılmaktadır. Gelecekte diğer standart beteklerin adres kodlamasında kullanılabilir.
Referans:
Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür. |
Önceki:tiktok, Douyin paketi yakalar ve SO dosya yamasının yerini bulabilen Frida betiklerini kapatırÖnümüzdeki:Bitcoin adres türlerine giriş Legacy, Nested SegWit, Native SegWit ve Taproot
|