|
|
Postat pe 2025-10-17 09:01:55
|
|
|
|

Base58, Base58Check, Bech32 și Bech32m sunt formate de codare utilizate frecvent în tehnologia blockchain, utilizate în principal pentru a îmbunătăți lizibilitatea, a reduce erorile și a asigura integritatea datelor. Aceste patru coduri au propriile avantaje în asigurarea securității, compatibilității și capacităților de corectare a erorilor, fiind pietre de temelie importante ale sistemelor moderne de adrese blockchain.
Base58
"Base58" este o metodă de codificare inventată de Satoshi Nakamoto, adaptată după o metodă de codificare bine cunoscută, "Base64". Setul de caractere Base64 include: toate numerele și literele mari și mici, precum și două simboluri ("+" și "/"); Un total de 64 de personaje. Satoshi Nakamoto a eliminat numărul 0, literele majuscule I și O, litera mică l și simbolul, devenind Base58.
Set de caractere: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58Check
Comparativ cu Base58, codificarea Base58Check are doar un calcul suplimentar al sumei de control. Așa cum se arată mai jos:
Base58Check rezolvă problemele predispuse la erori, greu de recunoscut și neverificate în metodele tradiționale de codificare, oferind o metodă de reprezentare sigură, compactă, prietenoasă cu oamenii și care detectează erorile pentru datele cheie din blockchain (cum ar fi adresele și cheile private). Deși acum este înlocuit treptat de modelul mai avansat Bech32/Bech32m (pentru adresele SegWit), acesta a jucat un rol crucial în ecosistemul Bitcoin timpuriu.
Bech32
"Bech32" este o metodă de codificare definită de BIP 0173, care a fost scrisă de Pieter Wuille și Greg Maxwell. Totuși, această codificare are și originile sale: "Bech" se referă la "BCH", un algoritm de corecție a erorilor ciclice inventat de trei matematicieni în 1959, respectiv 1960 (numele BCH provine de la numele acestor trei matematicieni). "32" înseamnă că setul de caractere al metodei de codificare are doar 32 de caractere: litere mici și numere, excluzând numerele "1", literele "b", "i" și "o".
La începutul BIP 0173, autorii evidențiază aspectele nedorite ale Base58:
- Base58 folosește atât litere englezești cu majusculă mare, cât și cu litere mici, ceea ce face ca datele sale să fie desenate în coduri QR nu în modul mai mic "alfabet numeric", ci doar în modul mai mare "byte data".
- Folosirea atât a hușurii, cât și a carcasei face, de asemenea, dificilă transcrierea, tastarea și citirea pe tastatura telefonului.
- Suma de verificare a necesitat două operațiuni SHA256 consecutive, care erau lente și nu aveau capacitatea de a localiza poziția greșită.
- Majoritatea metodelor localizabile de codare a erorilor funcționează doar dacă dimensiunea setului de caractere este de putere primară, iar 58 nu este o putere primară.
- Base58 este mai complex de decodat și mai lent de decodat.
Ca urmare, noua abordare a Bech32 folosește doar litere mici și cifre; Când este necesar, cum ar fi la desenarea unui cod QR, toate aceste litere pot fi înlocuite cu litere mari pentru o reprezentare mai compactă. Codurile QR mai mici, deoarece adresele Bech32 sunt singulare, le poți codifica ca coduri QR folosind modul alfanumeric. Asta înseamnă că poți crea un cod QR mai compact pentru că Base58 cere litere mari și mici (ceea ce înseamnă că nu poți folosi modul alfanumeric), în timp ce Bech32 nu. Așa cum se arată mai jos:
După cum se vede, în ciuda adresei Bech32Conține mai multe caractere, dar posibilitatea de a folosi modele alfanumerice înseamnă că codurile QR consumă mai puține date în ansamblu。
În același timp, Bech32 are capacitatea de a localiza erori: nu doar că poate identifica că ai făcut o eroare de copiere, dar poate și indica ce biți ai copiat greșit (această abilitate de a găsi erori este mult superioară Base58).
De fapt, algoritmul BCH are și o funcție de "corectare a erorilor": poate indica nu doar ce biți ai copiat greșit, ci și ce caractere ar trebui să fie. Totuși, autorii BIP 0173 au identificat pericolele inerente: pe de o parte, întărirea corecției erorilor slăbește capacitatea de a localiza erorile; Pe de altă parte, dacă utilizatorul are prea multă încredere în capacitățile de corecție a erorilor, software-ul poate corecta datele eronate introduse de utilizator într-o bucată de date "validă, dar inutilă" – deși acestea sunt valabile ca date codificate BCH; Totuși, este posibil ca scriptul Bitcoin restaurat să nu fie sub controlul destinatarului sau chiar al oricui. Este extrem de periculos. Prin urmare, BIP 0173 avertizează: "Pe lângă reamintirea utilizatorilor care biți ar fi putut fi copiați incorect, software-ul nu ar trebui să implementeze capabilități de corecție a erorilor (să ofere sugestii de corecție)." ”
În plus, Bech32 urmează modelul găsit în codificarea Base58:
1. Datele Bech32 vor începe cu un paragraf "date cu sens (hrp)", similar cu prefixul din Base58, care poate indica ce tip de date este. HRP poate folosi mult mai mult de 32 de caractere; Bech32 folosește, de asemenea, numărul "1" ca separator pentru a separa HRP de datele care urmează să fie decodate. Pe lângă Bitcoin, există multe alte proiecte care au adoptat și Bech32; HRP este folosit pentru a distinge datele de diferite elemente. Iată o listă cu HRP înregistrați, care este foarte interesantă (dar doar interesantă). 2. Bech32 a proiectat, de asemenea, o sumă de verificare care ocupă ultimele 6 caractere din datele codificate.
Bech32m
"Bech32m" este o metodă de codificare definită de BIP 0350. Legătură:Autentificarea cu hyperlink este vizibilă.A fost propusă deoarece dezvoltatorii au descoperit o vulnerabilitate în codarea Bech32:
Când ultimul caracter este "p", inserarea sau eliminarea oricărui număr de "q" în fața acelui caracter nu va cauza o eroare de sumă de verificare (datele vor fi considerate în continuare valide), atunciMecanismul sumei de verificare își pierde complet funcțiaTermina.
Dacă nu adaugi un script standardizat pentru Bitcoin, această problemă poate fi rezolvată ușor: atât adresa P2WPKH, cât și adresa P2WSH au o anumită lungime, doar adaugă verificarea lungimii. Totuși, având în vedere că vom adăuga și noi scripturi standardizate în viitor, lungimea adresei s-ar putea schimba, așa că este necesar să rezolvăm această problemă.
Bech32m rezolvă această problemă schimbând un parametru în generatorul de sumă de verificare Bech32.
În prezent, Bech32m este folosit doar pentru a codifica adrese pentru scripturile "P2TR" adăugate odată cu upgrade-ul "Taproot". Poate fi folosit în codarea adreselor altor scripturi standardizate în viitor.
Referință:
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă. |
Precedent:tiktok, douyin capturează pachetul și oprește scriptul Frida, care poate localiza locația patch-ului fișierului SOUrmător:Introducere în tipurile de adrese Bitcoin: Legacy, Igwit Nested, Native SegWit și Taproot
|