|
|
Publicerad den 2025-10-17 09:01:55
|
|
|
|

Base58, Base58Check, Bech32 och Bech32m är vanligt använda kodningsformat inom blockkedjeteknik, främst för att förbättra läsbarheten, minska fel och säkerställa dataintegritet. Dessa fyra koder har sina egna fördelar när det gäller att säkerställa säkerhet, kompatibilitet och felkorrigeringsmöjligheter, och är viktiga hörnstenar i moderna blockkedjeadresser.
Base58
"Base58" är en kodningsmetod uppfunnen av Satoshi Nakamoto, som är anpassad från den välkända kodningsmetoden "Base64". Base64:s teckenuppsättning innehåller: alla siffror samt versaler och gemener samt två symboler ("+" och "/"); Totalt 64 tecken. Satoshi Nakamoto tog bort siffran 0, de stora bokstäverna I och O, gemener l och symbolen, och det blev Base58.
Teckenuppsättning: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58Check
Jämfört med Base58 har Base58Check-kodning bara en kontrollsumma beräkning till. Som visas nedan:
Base58Check löser problemen med felbenägen, svår att känna igen och overifierad i traditionella kodningsmetoder, och erbjuder en säker, kompakt, människovänlig och feldetekterande representationsmetod för nyckeldata i blockkedjan (såsom adresser och privata nycklar). Även om den nu gradvis ersätts av den mer avancerade Bech32/Bech32m (för SegWit-adresser), spelade den en avgörande roll i det tidiga Bitcoin-ekosystemet.
Bech32
"Bech32" är en kodningsmetod definierad av BIP 0173, som författades av Pieter Wuille och Greg Maxwell. Denna kodning har dock också sitt ursprung: "Bech" syftar på "BCH", en cyklisk felkorrigeringskodningsalgoritm uppfunnen av tre matematiker 1959 respektive 1960 (namnet BCH kommer från namnen på dessa tre matematiker). "32" betyder att teckenuppsättningen i kodningsmetoden endast består av 32 tecken: små bokstäver och siffror, exklusive siffrorna "1", bokstäverna "b", "i" och "o".
I början av BIP 0173 påpekar författarna de oönskade aspekterna av Base58:
- Base58 använder både stora och små bokstäver på engelska bokstäver, vilket gör att dess data dras in i QR-koder inte i det mindre "numeriska alfabet"-läget, utan endast i det större "bytedata"-läget.
- Användningen av både fodral och fodral gör det också svårt att transkribera, skriva och läsa på telefonens tangentbord.
- Kontrollsumman krävde två på varandra följande SHA256-operationer, som var långsamma och inte kunde lokalisera fel placering.
- De flesta lokaliserbara felkodningsmetoder fungerar bara om teckenuppsättningens storlek är av primtalspotens, och 58 är inte en primpotens.
- Base58 är mer komplex att avkoda och långsammare att avkoda.
Som ett resultat använder Bech32:s nya metod endast gemener bokstäver och siffror; Vid behov, till exempel vid ritning av en QR-kod, kan dessa bokstäver ersättas med versaler för en mer kompakt representation. Mindre QR-koder, eftersom Bech32-adresser är singular, kan du koda dem som QR-koder med alfanumeriskt läge. Det betyder att du kan skapa en mer kompakt QR-kod eftersom Base58 kräver versaler och gemener (vilket betyder att du inte kan använda alfanumeriskt läge), medan Bech32 inte gör det. Som visas nedan:
Som du kan se, trots Bech32-adressenInnehåller fler tecken, men möjligheten att använda alfanumeriska mönster innebär att QR-koder använder mindre data totalt sett。
Samtidigt har Bech32 förmågan att hitta fel: den kan inte bara hitta att du har gjort ett kopieringsfel, utan också peka ut vilka bitar du har kopierat fel (denna förmåga att hitta fel är långt överlägsen Base58).
Faktum är att BCH-algoritmen också har en "felkorrigerings"-funktion: den kan inte bara ange vilka bitar du har kopierat fel, utan också vilka tecken det ska vara. Författarna till BIP 0173 fann dock dess inneboende faror: å ena sidan försvagar en förstärkning av felkorrigering förmågan att hitta fel; Å andra sidan, om användaren litar för mycket på programvarans felkorrigeringsfunktioner, kan programvaran korrigera de felaktiga data som användaren matat in till en "giltig men värdelös" databit – även om den är giltig som en BCH-kodad data; Det är dock möjligt att det återställda Bitcoin-skriptet inte är under mottagarens eller någons kontroll. Detta är extremt farligt. Därför varnar BIP 0173: "Förutom att påminna användare om vilka bitar som kan ha kopierats felaktigt, bör programvaran inte implementera felkorrigeringsfunktioner (ge korrigeringsförslag)." ”
Dessutom följer Bech32 mönstret som finns i Base58-kodning:
1. Bech32-data börjar med ett stycke "data med betydelse (hrp)", liknande prefixet i Base58, vilket kan ange vilken typ av data det är. HRP kan använda betydligt fler än 32 tecken; Bech32 använder också siffran "1" som separator för att separera HRP från den data som faktiskt ska avkodas. Förutom Bitcoin finns det många andra projekt som också har antagit Bech32; HRP används för att skilja data från olika artiklar. Här är en lista över registrerade HRP:er, vilket är väldigt intressant (men bara intressant). 2. Bech32 designade också en kontrollsumma som upptar de sista 6 tecknen av den kodade datan.
Bech32m
"Bech32m" är en kodningsmetod definierad av BIP 0350. Länk:Inloggningen med hyperlänken är synlig.Det föreslogs eftersom utvecklare upptäckte en sårbarhet i Bech32:s kodning:
När det sista tecknet är "p", kommer det inte att orsaka ett kontrollsummefel att infoga eller ta bort ett antal "q" framför det tecknet (datan anses fortfarande vara valid), dåKontrollsummemekanismen förlorar helt sin funktionAvsluta.
Om du inte lägger till ett standardiserat Bitcoin-skript kan detta problem enkelt lösas: både P2WPKH-adressen och P2WSH-adressen har en viss längd, lägg bara till längdkontrollen. Men med tanke på att vi också kommer att lägga till nya standardiserade skript i framtiden kan adresslängden ändras, så det är nödvändigt att åtgärda detta problem.
Bech32m löser detta problem genom att ändra en parameter i Bech32:s kontrollsummegenerator.
För närvarande används Bech32m endast för att koda adresser för "P2TR"-skript som läggs till med "Taproot"-uppgraderingen. Den kan komma att användas i adresskodning av andra standardiserade skript i framtiden.
Hänvisning:
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig. |
Föregående:tiktok, fångar Douyin paketet och dödar Frida-skriptet, som kan lokalisera platsen för SO-filpatchenNästa:Introduktion till Bitcoin-adresstyperna Legacy, Nested SegWit, Native SegWit och Taproot
|