Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 259|Svare: 0

Detaljert forklaring av blockchain Base58, Base58Check, Bech32 og Bech32m-koding

[Kopier lenke]
Publisert 2025-10-17 09:01:55 | | | |
Base58, Base58Check, Bech32 og Bech32m er ofte brukte kodingsformat i blokkjedeteknologi, primært brukt for å forbedre lesbarhet, redusere feil og sikre dataintegritet. Disse fire kodene har sine egne fordeler når det gjelder å sikre sikkerhet, kompatibilitet og feilkorrigering, og er viktige hjørnesteiner i moderne blokkjede-adressesystemer.

Base58

"Base58" er en kodingsmetode oppfunnet av Satoshi Nakamoto, som er tilpasset fra en velkjent kodingsmetode "Base64". Base64-tegnsettet inkluderer: alle tall og store og små bokstaver, samt to symboler ("+" og "/"); Totalt 64 tegn. Satoshi Nakamoto fjernet tallet 0, de store bokstavene I og O, den lille bokstaven l og symbolet, og det ble Base58.

Tegnsett: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz



Base58Check

Sammenlignet med Base58 har Base58Check-koding bare én ekstra sjekksumberegning. Som vist nedenfor:



Base58Check løser problemene med feilutsatthet, vanskelig å gjenkjenne og uverifisert i tradisjonelle kodingsmetoder, og tilbyr en sikker, kompakt, menneskevennlig og feildetekterende representasjonsmetode for nøkkeldata i blokkjeden (som adresser og private nøkler). Selv om den nå gradvis erstattes av den mer avanserte Bech32/Bech32m (for SegWit-adresser), spilte den en avgjørende rolle i det tidlige Bitcoin-økosystemet.

Bech32

"Bech32" er en kodingsmetode definert av BIP 0173, som ble forfattet av Pieter Wuille og Greg Maxwell. Denne kodingen har imidlertid også sine røtter: "Bech" refererer til "BCH", en syklisk feilkorrigeringskodingsalgoritme oppfunnet av tre matematikere i henholdsvis 1959 og 1960 (navnet BCH kommer fra navnene på disse tre matematikerne). "32" betyr at tegnsettet i kodingsmetoden bare har 32 tegn: små bokstaver og tall, med unntak av tallene "1", bokstavene "b", "i" og "o".



I begynnelsen av BIP 0173 påpeker forfatterne de uønskede sidene ved Base58:

  • Base58 bruker både store og små engelske bokstaver, noe som gjør at dataene trekkes inn i QR-koder ikke i den mindre "numeriske alfabet"-modusen, men kun i den større "byte data"-modusen.
  • Bruken av både etui og etui gjør det også vanskelig å transkribere, skrive og lese på telefonens tastatur.
  • Sjekksummen krevde to påfølgende SHA256-operasjoner, som var trege og ikke hadde mulighet til å finne feil plassering.
  • De fleste lokaliserbare feilkodingsmetoder fungerer bare hvis tegnsettets størrelse er av primtallspotens, og 58 ikke er en primpotens.
  • Base58 er mer komplekst å dekode og tregere å dekode.

Som et resultat bruker Bech32s nye tilnærming kun små bokstaver og tall; Når det trengs, for eksempel når man tegner en QR-kode, kan alle disse bokstavene erstattes med store bokstaver for en mer kompakt gjengivelse. Mindre QR-koder, siden Bech32-adresser er entalls, kan du kode dem som QR-koder i alfanumerisk modus. Dette betyr at du kan lage en mer kompakt QR-kode fordi Base58 krever store og små bokstaver (det vil si at du ikke kan bruke alfanumerisk modus), mens Bech32 ikke gjør det. Som vist nedenfor:



Som du kan se, til tross for Bech32-adressenInneholder flere tegn, men muligheten til å bruke alfanumeriske mønstre betyr at QR-koder bruker mindre data totalt sett

Samtidig har Bech32 evnen til å finne feil: den kan ikke bare finne ut at du har gjort en kopifeil, men også peke ut hvilke biter du har kopiert feil (denne evnen til å finne feil er langt bedre enn Base58).

Faktisk har BCH-algoritmen også en "feilkorrigerings"-funksjon: den kan ikke bare indikere hvilke biter du har kopiert feil, men også hvilke tegn det skal være. Forfatterne av BIP 0173 fant imidlertid dens iboende farer: på den ene siden svekker styrking av feilkorrigering evnen til å finne feil; På den annen side, hvis brukeren stoler for mye på programvarens feilkorrigeringsmuligheter, kan programvaren korrigere de feilaktige dataene brukeren har lagt inn til et "gyldig, men unyttig" datastykke – selv om det er gyldig som et BCH-kodet datastykke; Det er imidlertid mulig at det gjenopprettede Bitcoin-skriptet ikke er under mottakerens eller noen andres kontroll. Dette er ekstremt farlig. Derfor advarer BIP 0173: «I tillegg til å minne brukerne på hvilke biter som kan ha blitt kopiert feil, bør ikke programvaren implementere feilkorrigeringsmuligheter (gi korrigeringsforslag).» ”

I tillegg følger Bech32 mønsteret funnet i Base58-koding:

1. Bech32-data starter med et avsnitt "data with meaning (hrp)", lik prefikset i Base58, som kan indikere hvilken type data det er.
HRP kan bruke langt mer enn 32 tegn; Bech32 bruker også tallet "1" som en separator for å skille HRP fra dataene som faktisk skal dekodes.
I tillegg til Bitcoin finnes det mange andre prosjekter som også har tatt i bruk Bech32; HRP brukes til å skille data fra ulike elementer. Her er en liste over registrerte HRP-er, som er veldig interessant (men bare interessant).
2. Bech32 designet også en sjekksum som opptar de siste 6 tegnene i de kodede dataene.

Bech32m

"Bech32m" er en kodingsmetode definert av BIP 0350. Lenke:Innloggingen med hyperkoblingen er synlig.Den ble foreslått fordi utviklere oppdaget en sårbarhet i Bech32-koding:

Når det siste tegnet er "p", vil det å sette inn eller fjerne et hvilket som helst antall "q" foran det tegnet ikke forårsake en sjekksumfeil (dataene vil fortsatt bli ansett som gyldige), daKontrollsummekanismen mister fullstendig sin funksjonAvslutte.

Hvis du ikke legger til et standardisert Bitcoin-skript, kan dette problemet enkelt løses: både P2WPKH-adressen og P2WSH-adressen har en viss lengde, bare legg til lengdesjekken. Men siden vi også vil legge til nye standardiserte skript i fremtiden, kan adresselengden endre seg, så det er nødvendig å fikse dette problemet.

Bech32m løser dette problemet ved å endre en parameter i Bech32-sjekksumgeneratoren.

For øyeblikket brukes Bech32m kun til å kode adresser for "P2TR"-skript som legges til med "Taproot"-oppgraderingen. Den kan bli brukt i adressekoding av andre standardiserte skript i fremtiden.

Referanse:

Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.




Foregående:tiktok, fanger Douyin pakken og dreper Frida-skriptet, som kan finne plasseringen av SO-filpatchen
Neste:Introduksjon til Bitcoin-adressetypene Legacy, Nested SegWit, Native SegWit og Taproot
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com