|
|
Julkaistu 2025-10-17 09:01:55
|
|
|
|

Base58, Base58Check, Bech32 ja Bech32m ovat yleisesti käytettyjä koodausmuotoja lohkoketjuteknologiassa, pääasiassa luettavuuden parantamiseen, virheiden vähentämiseen ja tietojen eheyden varmistamiseen. Näillä neljällä koodilla on omat etunsa turvallisuuden, yhteensopivuuden ja virheenkorjausominaisuuksien varmistamisessa, ja ne ovat tärkeitä nykyaikaisten lohkoketjuosoitejärjestelmien kulmakiviä.
Base58
"Base58" on Satoshi Nakamoton kehittämä koodausmenetelmä, joka on mukautettu tunnetusta koodausmenetelmästä "Base64". Base64-merkistö sisältää: kaikki numerot sekä isot ja pienet kirjaimet sekä kaksi symbolia ("+" ja "/"); Yhteensä 64 hahmoa. Satoshi Nakamoto poisti numeron 0, isot kirjaimet I ja O, pienet kirjaimet l sekä symbolin, ja siitä tuli Base58.
Merkkisarja: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58Check
Base58:aan verrattuna Base58Check-koodauksessa on vain yksi tarkistussumman laskenta enemmän. Kuten alla on esitetty:
Base58Check ratkaisee perinteisissä koodausmenetelmissä virhealttiiden, vaikeasti tunnistettavien ja vahvistamattomien ongelmat, tarjoten turvallisen, kompaktin, ihmisystävällisen ja virheentunnistusmenetelmän avaintiedoille lohkoketjussa (kuten osoitteille ja yksityisille avaimille). Vaikka se on nyt vähitellen korvautumassa kehittyneemmällä Bech32/Bech32m:llä (SegWit-osoitteille), sillä oli ratkaiseva rooli varhaisessa Bitcoin-ekosysteemistössä.
Bech32
"Bech32" on koodausmenetelmä, jonka määrittelee BIP 0173, jonka ovat laatineet Pieter Wuille ja Greg Maxwell. Kuitenkin tällä koodauksella on myös alkuperänsä: "Bech" viittaa "BCH":hen, sykliseen virheenkorjausalgoritmiin, jonka kolme matemaatikkoa keksi vuosina 1959 ja 1960 (nimi BCH tulee näiden kolmen matemaatikon nimistä). "32" tarkoittaa, että koodausmenetelmän merkistössä on vain 32 merkkiä: pienet kirjaimet ja numerot, pois lukien numerot "1", kirjaimet "b", "i" ja "o".
BIP 0173:n alussa kirjoittajat nostavat esiin Base58:n ei-toivotut puolet:
- Base58 käyttää sekä suuria että pieniä kirjaimia englanninkielisissä kirjaimissa, jolloin sen data piirretään QR-koodeihin ei pienemmässä "numeerisessa aakkostossa", vaan vain suuremmassa "tavudata"-tilassa.
- Sekä kotelon että kotelon käyttö vaikeuttaa myös puhelimen näppäimistöllä kirjoittamista, kirjoittamista ja lukemista.
- Tarkistussumma vaati kaksi peräkkäistä SHA256-operaatiota, jotka olivat hitaita eivätkä pystyneet paikantamaan väärää sijoitusta.
- Useimmat lokalisoidut virhekoodausmenetelmät toimivat vain, jos merkistökoko on alkuluku ja 58 ei ole alkulukupotenssi.
- Base58:n purkaminen on monimutkaisempaa ja hitaampaa purkaa.
Tämän seurauksena Bech32:n uusi lähestymistapa käyttää vain pieniä kirjaimia ja numeroita; Tarvittaessa, esimerkiksi QR-koodin piirtämisessä, nämä kirjaimet voidaan kaikki korvata isoilla kirjaimilla tiiviimmän esityksen saamiseksi. Pienemmät QR-koodit, koska Bech32-osoitteet ovat yksittäisiä, voit koodata ne QR-koodeiksi aakkosnumeerisessa tilassa. Tämä tarkoittaa, että voit luoda kompaktimman QR-koodin, koska Base58 vaatii isot ja pienet kirjaimet (eli et voi käyttää aakkosnumeerista tilaa), kun taas Bech32 ei. Kuten alla on esitetty:
Kuten näet, Bech32-osoitteesta huolimattaSisältää enemmän merkkejä, mutta mahdollisuus käyttää aakkosnumeerisia kuvioita tarkoittaa, että QR-koodit kuluttavat vähemmän dataa kokonaisuudessaan。
Samaan aikaan Bech32:lla on kyky paikantaa virheitä: se ei ainoastaan havaita kopiointivirhettä, vaan myös osoittaa, mitkä bitit olet kopioinut väärin (tämä kyky löytää virheitä on huomattavasti parempi kuin Base58:lla).
Itse asiassa BCH-algoritmilla on myös "virheenkorjausfunktio": se voi paitsi ilmoittaa, mitkä bitit ovat kopioineet väärin, myös mitkä merkit niiden tulisi olla. BIP 0173:n kirjoittajat kuitenkin havaitsivat sen sisäiset vaarat: toisaalta virheenkorjauksen vahvistaminen heikentää kykyä paikantaa virheitä; Toisaalta, jos käyttäjä luottaa liikaa ohjelmiston virheenkorjauskykyihin, ohjelmisto voi korjata käyttäjän syöttämät virheelliset tiedot "päteväksi mutta hyödyttömäksi" tietoksi – vaikka se on pätevä BCH-koodatun datan osalta; On kuitenkin mahdollista, että palautettu Bitcoin-skripti ei ole vastaanottajan tai kenenkään muun hallinnassa. Tämä on äärimmäisen vaarallista. Siksi BIP 0173 varoittaa: "Ohjelmiston ei tulisi toteuttaa virheenkorjausominaisuuksia (antaa korjausehdotuksia) paitsi muistuttaa käyttäjiä siitä, mitkä bitit on mahdollisesti kopioitu väärin." ”
Lisäksi Bech32 noudattaa Base58-koodauksen kaavaa:
1. Bech32-data alkaa kappaleella "data with meaningful (hrp)", joka muistuttaa Base58:n etuliitettä ja voi kertoa, millaista dataa kyseessä on. HRP voi käyttää paljon enemmän kuin 32 merkkiä; Bech32 käyttää myös numeroa "1" erottelijana erottaakseen HRP:n todellisuudessa purettavasta datasta. Bitcoinin lisäksi on monia muita projekteja, jotka ovat myös ottaneet käyttöön Bech32:n; HRP:tä käytetään erottamaan tietoja eri kohteista. Tässä on lista rekisteröidyistä HRP:istä, mikä on todella mielenkiintoinen (mutta vain kiinnostavaa). 2. Bech32 suunnitteli myös tarkistussumman, joka vie koodatun datan viimeiset 6 merkkiä.
Bech32m
"Bech32m" on koodausmenetelmä, joka on määritelty BIP 0350:ssa. Linkki:Hyperlinkin kirjautuminen on näkyvissä.Tämä ehdotettiin, koska kehittäjät löysivät haavoittuvuuden Bech32-koodauksessa:
Kun viimeinen merkki on "p", minkä suuren määrän "q":n lisääminen tai poistaminen kyseisen merkin edestä ei aiheuta tarkistussummavirhettä (data katsotaan edelleen päteväksi), silloinTarkistussummamekanismi menettää täysin toimintonsaLopettaa.
Jos et lisää standardoitua Bitcoin-skriptiä, tämä ongelma voidaan helposti ratkaista: sekä P2WPKH-osoitteella että P2WSH-osoitteella on tietty pituus, lisää vain pituustarkistus. Koska tulevaisuudessa lisäämme myös uusia standardoituja skriptejä, osoitteen pituus voi muuttua, joten ongelma on korjattava.
Bech32m korjaa tämän ongelman muuttamalla parametria Bech32-tarkistussummageneraattorissa.
Tällä hetkellä Bech32m:ää käytetään vain osoitteiden koodaamiseen "P2TR"-skripteille, jotka lisätään "Taproot"-päivityksen yhteydessä. Sitä voidaan käyttää tulevaisuudessa muiden standardoitujen skriptien osoitekoodauksessa.
Viittaus:
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä. |
Edellinen:tiktok, Douyin kaappaa paketin ja poistaa Frida-skriptin, joka voi paikantaa SO-tiedostopäivityksen sijainninSeuraava:Johdanto Bitcoin-osoitetyyppeihin: Legacy, Nested SegWit, Native SegWit ja Taproot
|