|
|
Publicēts 2025-10-17 09:01:55
|
|
|
|

Base58, Base58Check, Bech32 un Bech32m ir bieži izmantoti kodēšanas formāti blokķēdes tehnoloģijā, ko galvenokārt izmanto, lai uzlabotu lasāmību, samazinātu kļūdas un nodrošinātu datu integritāti. Šiem četriem kodiem ir savas priekšrocības, nodrošinot drošības, saderības un kļūdu labošanas iespējas, un tie ir svarīgi mūsdienu blokķēdes adrešu sistēmu stūrakmeņi.
Bāze58
"Base58" ir Satoshi Nakamoto izgudrota kodēšanas metode, kas ir pielāgota no labi pazīstamas kodēšanas metodes "Base64". Base64 rakstzīmju kopā ietilpst: visi skaitļi un lielie un mazie burti, kā arī divi simboli ("+" un "/"); Kopā 64 rakstzīmes. Satoshi Nakamoto noņēma skaitli 0, lielos burtus I un O, mazo burtu l un simbolu, un tas kļuva par Base58.
Rakstzīmju kopa: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Bāze58Pārbaudīt
Salīdzinot ar Base58, Base58Check kodējumam ir tikai viens kontrolsummas aprēķins. Kā parādīts zemāk:
Base58Check atrisina problēmas, kas saistītas ar kļūdām, grūti atpazīstamām un nepārbaudītām tradicionālajās kodēšanas metodēs, nodrošinot drošu, kompaktu, cilvēkam draudzīgu un kļūdu atklāšanas metodi blokķēdes galvenajiem datiem (piemēram, adresēm un privātajām atslēgām). Lai gan tagad to pakāpeniski aizstāj ar progresīvāku Bech32 / Bech32m (SegWit adresēm), tam bija izšķiroša loma agrīnajā Bitcoin ekosistēmā.
Bech32
"Bech32" ir kodēšanas metode, ko definē BIP 0173, kuras autori ir Pieter Wuille un Greg Maxwell. Tomēr šim kodējumam ir arī sava izcelsme: "Bech" attiecas uz "BCH", ciklisku kļūdu labošanas kodēšanas algoritmu, ko izgudroja trīs matemātiķi attiecīgi 1959. un 1960. gadā (nosaukums BCH nāk no šo trīs matemātiķu vārdiem). "32" nozīmē, ka kodēšanas metodes rakstzīmju kopai ir tikai 32 rakstzīmes: mazie burti un cipari, izņemot ciparus "1", burtus "b", "i" un "o".
BIP 0173 sākumā autori norāda uz nevēlamajiem Base58 aspektiem:
- Base58 izmanto gan lielus, gan mazus angļu burtus, kas padara datus QR kodos nevis mazākā "ciparu alfabēta" režīmā, bet tikai lielākajā "baitu datu" režīmā.
- Gan korpusa, gan korpusa izmantošana apgrūtina arī transkribēšanu, rakstīšanu un lasīšanu tālruņa tastatūrā.
- Kontrolsummai bija nepieciešamas divas secīgas SHA256 operācijas, kas bija lēnas un nespēja atrast nepareizu izvietojumu.
- Lielākā daļa lokalizējamo kļūdu kodēšanas metožu darbojas tikai tad, ja rakstzīmju kopas lielums ir primārais un 58 nav primārā jauda.
- Base58 ir sarežģītāk atšifrēt un lēnāk dekodēt.
Tā rezultātā Bech32 jaunajā pieejā tiek izmantoti tikai mazie burti un cipari; Ja nepieciešams, piemēram, zīmējot QR kodu, šos burtus var aizstāt ar lielajiem burtiem, lai iegūtu kompaktāku attēlojumu. Mazāki QR kodi, tā kā Bech32 adreses ir vienskaitlis, varat tos kodēt kā QR kodus, izmantojot burtciparu režīmu. Tas nozīmē, ka varat izveidot kompaktāku QR kodu, jo Base58 prasa lielos un mazos burtus (tas nozīmē, ka jūs nevarat izmantot burtciparu režīmu), bet Bech32 to nedara. Kā parādīts zemāk:
Kā redzat, neskatoties uz Bech32 adresiSatur vairāk rakstzīmju, bet iespēja izmantot burtciparu rakstus nozīmē, ka QR kodi kopumā izmanto mazāk datu。
Tajā pašā laikā Bech32 ir iespēja atrast kļūdas: tas var ne tikai konstatēt, ka esat pieļāvis kopēšanas kļūdu, bet arī norādīt, kurus bitus esat nokopējis nepareizi (šī spēja atrast kļūdas ir daudz pārāka par Base58).
Faktiski BCH algoritmam ir arī "kļūdu labošanas" funkcija: tas var ne tikai norādīt, kurus bitus esat nepareizi nokopējis, bet arī kādas rakstzīmes tam vajadzētu būt. Tomēr BIP 0173 autori konstatēja tam raksturīgās briesmas: no vienas puses, kļūdu labošanas stiprināšana vājina spēju atrast kļūdas; No otras puses, ja lietotājs pārāk uzticas programmatūras kļūdu labošanas iespējām, programmatūra var labot lietotāja ievadītos kļūdainos datus "derīgos, bet bezjēdzīgos" datos, lai gan tie ir derīgi kā BCH kodēti dati; Tomēr ir iespējams, ka atjaunotais Bitcoin skripts nav saņēmēja vai pat kāda kontrolē. Tas ir ārkārtīgi bīstami. Tāpēc BIP 0173 brīdina: "Papildus atgādināšanai lietotājiem, kuri biti, iespējams, ir nepareizi kopēti, programmatūrai nevajadzētu ieviest kļūdu labošanas iespējas (sniegt labošanas ieteikumus)." ”
Turklāt Bech32 seko modelim, kas atrodams Base58 kodējumā:
1. Bech32 dati sāksies ar rindkopu "dati ar nozīmi (hrp)", līdzīgi kā Base58 prefikss, kas var norādīt, kāda veida dati tie ir. HRP var izmantot daudz vairāk nekā 32 rakstzīmes; Bech32 izmanto arī skaitli "1" kā atdalītāju, lai atdalītu HRP no datiem, kas faktiski ir jāatšifrē. Papildus Bitcoin ir arī daudzi citi projekti, kas ir pieņēmuši arī Bech32; HRP tiek izmantots, lai atšķirtu datus no dažādiem vienumiem. Šeit ir reģistrēto HRP saraksts, kas ir ļoti interesants (bet tikai interesants). 2. Bech32 arī izstrādāja kontrolsummu, kas aizņem pēdējās 6 kodēto datu rakstzīmes.
Bech32m
"Bech32m" ir kodēšanas metode, ko definē BIP 0350. Saikne:Hipersaites pieteikšanās ir redzama.Tas tika ierosināts, jo izstrādātāji atklāja ievainojamību Bech32 kodēšanā:
Ja pēdējā rakstzīme ir "p", jebkura "q" skaitļa ievietošana vai noņemšana šīs rakstzīmes priekšā neradīs kontrolsummas kļūdu (dati joprojām tiks uzskatīti par derīgiem), tadKontrolsummas mehānisms pilnībā zaudē savu funkcijuPabeigt.
Ja nepievienojat standartizētu Bitcoin skriptu, šo problēmu var viegli atrisināt: gan P2WPKH adresei, gan P2WSH adresei ir noteikts garums, vienkārši pievienojiet garuma pārbaudi. Tomēr, ņemot vērā, ka nākotnē mēs pievienosim arī jaunus standartizētus skriptus, adreses garums var mainīties, tāpēc ir nepieciešams novērst šo problēmu.
Bech32m novērš šo problēmu, mainot parametru Bech32 kontrolsummas ģeneratorā.
Pašlaik Bech32m tiek izmantots tikai, lai kodētu adreses "P2TR" skriptiem, kas tiek pievienoti ar "Taproot" jauninājumu. Nākotnē to var izmantot citu standartizētu skriptu adrešu kodēšanai.
Atsauce:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama. |
Iepriekšējo:tiktok, Douyin uztver pakotni un nogalina Frida skriptu, kas var atrast SO faila plākstera atrašanās vietuNākamo:Ievads Bitcoin adrešu tipos Legacy, Nested SegWit, Native SegWit un Taproot
|