|
|
Opslået den 17-10-2025 09:01:55
|
|
|
|

Base58, Base58Check, Bech32 og Bech32m er almindeligt anvendte kodningsformater i blockchain-teknologi, primært brugt til at forbedre læsbarheden, reducere fejl og sikre dataintegritet. Disse fire koder har deres egne fordele ved at sikre sikkerhed, kompatibilitet og fejlkorrektion og er vigtige hjørnesten i moderne blockchain-adressesystemer.
Base58
"Base58" er en kodningsmetode opfundet af Satoshi Nakamoto, som er tilpasset fra den velkendte kodningsmetode "Base64". Base64-tegnsættet inkluderer: alle tal samt store og små bogstaver, samt to symboler ("+" og "/"); I alt 64 karakterer. Satoshi Nakamoto fjernede tallet 0, de store bogstaver I og O, det lille l og symbolet, og det blev til Base58.
Tegnsæt: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58Check
Sammenlignet med Base58 har Base58Check-kodning kun én kontrolsumberegning mere. Som vist nedenfor:
Base58Check løser problemerne med fejlbehæftning, svær at genkende og uverificeret i traditionelle kodningsmetoder og leverer en sikker, kompakt, menneskevenlig og fejlopdagende repræsentationsmetode for nøgledata i blockchainen (såsom adresser og private nøgler). Selvom det nu gradvist bliver erstattet af det mere avancerede Bech32/Bech32m (til SegWit-adresser), spillede det en afgørende rolle i det tidlige Bitcoin-økosystem.
Bech32
"Bech32" er en kodningsmetode defineret af BIP 0173, som blev forfattet af Pieter Wuille og Greg Maxwell. Denne kodning har dog også sine rødder: "Bech" henviser til "BCH", en cyklisk fejlkorrigeringskodningsalgoritme opfundet af tre matematikere i henholdsvis 1959 og 1960 (navnet BCH stammer fra navnene på disse tre matematikere). "32" betyder, at tegnsættet i kodningsmetoden kun består af 32 tegn: små bogstaver og tal, eksklusive tallene "1", bogstaverne "b", "i" og "o".
I begyndelsen af BIP 0173 påpeger forfatterne de uønskede aspekter af Base58:
- Base58 bruger både store og små engelske bogstaver, hvilket gør, at dataene trækkes ind i QR-koder ikke i den mindre "numeriske alfabet"-tilstand, men kun i den større "byte data"-tilstand.
- Brugen af både cover og cover gør det også vanskeligt at transskribere, skrive og læse på telefonens tastatur.
- Checksummen krævede to på hinanden følgende SHA256-operationer, som var langsomme og ikke kunne finde den forkerte placering.
- De fleste lokaliserbare fejlkodningsmetoder virker kun, hvis tegnsættets størrelse er af primepotens, og 58 ikke er en primpotens.
- Base58 er mere kompleks at afkode og langsommere at dekode.
Som følge heraf bruger Bech32's nye tilgang kun små bogstaver og tal; Når det er nødvendigt, for eksempel ved tegning af en QR-kode, kan disse bogstaver alle erstattes med store bogstaver for en mere kompakt repræsentation. Mindre QR-koder, da Bech32-adresser er entallige, kan du kode dem som QR-koder ved hjælp af alfanumerisk tilstand. Det betyder, at du kan lave en mere kompakt QR-kode, fordi Base58 kræver store og små bogstaver (hvilket betyder, at du ikke kan bruge alfanumerisk tilstand), mens Bech32 ikke kan. Som vist nedenfor:
Som du kan se, på trods af Bech32-adressenIndeholder flere tegn, men muligheden for at bruge alfanumeriske mønstre betyder, at QR-koder bruger mindre data samlet set。
Samtidig har Bech32 evnen til at finde fejl: den kan ikke kun finde, at du har lavet en kopifejl, men også pege på, hvilke bits du har kopieret forkert (denne evne til at finde fejl er langt overlegen i forhold til Base58).
Faktisk har BCH-algoritmen også en "fejlkorrigerings"-funktion: den kan ikke kun angive, hvilke bits du har kopieret forkert, men også hvilke tegn det skal være. Forfatterne af BIP 0173 fandt dog dens iboende farer: på den ene side svækker styrkelse af fejlkorrektion evnen til at lokalisere fejl; Omvendt, hvis brugeren stoler for meget på softwarens fejlkorrigeringsmuligheder, kan softwaren rette de fejlagtige data, som brugeren indtaster, til et "gyldigt, men ubrugeligt" datastykke – selvom det er gyldigt som et stykke BCH-kodet data; Det er dog muligt, at det gendannede Bitcoin-script ikke er under modtagerens eller nogens kontrol. Det er ekstremt farligt. Derfor advarer BIP 0173: "Ud over at minde brugerne om, hvilke bits der kan være kopieret forkert, bør softwaren ikke implementere fejlkorrigeringsfunktioner (give korrektionsforslag)." ”
Derudover følger Bech32 mønsteret fundet i Base58-kodning:
1. Bech32-data starter med et afsnit "data med betydning (hrp)", ligesom præfikset i Base58, som kan angive, hvilken slags data det er. HRP kan bruge langt mere end 32 tegn; Bech32 bruger også tallet "1" som separator til at adskille HRP fra de data, der faktisk skal dekodes. Ud over Bitcoin er der mange andre projekter, der også har taget Bech32 i brug; HRP bruges til at skelne data fra forskellige elementer. Her er en liste over registrerede HRP'er, som er meget interessant (men kun interessant). 2. Bech32 designede også en checksum, der optager de sidste 6 tegn af de kodede data.
Bech32m
"Bech32m" er en kodningsmetode defineret af BIP 0350. Sammenkæde:Hyperlink-login er synlig.Det blev foreslået, fordi udviklere opdagede en sårbarhed i Bech32-kodning:
Når det sidste tegn er "p", vil indsættelse eller fjernelse af et vilkårligt antal "q" foran det tegn ikke forårsage en checksum-fejl (dataene vil stadig blive betragtet som gyldige), såChecksum-mekanismen mister fuldstændigt sin funktionFinish.
Hvis du ikke tilføjer et standardiseret Bitcoin-script, kan dette problem nemt løses: både P2WPKH-adressen og P2WSH-adressen har en bestemt længde, bare tilføj længdetjekket. Men da vi også vil tilføje nye standardiserede scripts i fremtiden, kan adresselængden ændre sig, så det er nødvendigt at løse dette problem.
Bech32m løser dette problem ved at ændre en parameter i Bech32 checksum-generatoren.
I øjeblikket bruges Bech32m kun til at kode adresser til "P2TR"-scripts, som tilføjes med "Taproot"-opgraderingen. Det kan blive brugt i adressekodning af andre standardiserede scripts i fremtiden.
Henvisning:
Hyperlink-login er synlig.
Hyperlink-login er synlig.
Hyperlink-login er synlig. |
Tidligere:tiktok, fanger Douyin pakken og dræber Frida-scriptet, som kan finde placeringen af SO-filpatchenNæste:Introduktion til Bitcoin-adressetyper Legacy, Nested SegWit, Native SegWit og Taproot
|