Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 259|Risposta: 0

Spiegazione dettagliata della codifica blockchain Base58, Base58Check, Bech32 e Bech32m

[Copiato link]
Pubblicato il 17-10-2025 09:01:55 | | | |
Base58, Base58Check, Bech32 e Bech32m sono formati di codifica comunemente utilizzati nella tecnologia blockchain, principalmente per migliorare la leggibilità, ridurre gli errori e garantire l'integrità dei dati. Questi quattro codici hanno i loro vantaggi nel garantire sicurezza, compatibilità e capacità di correzione degli errori, e rappresentano importanti pilastri dei moderni sistemi di indirizzamento blockchain.

Base58

"Base58" è un metodo di codifica inventato da Satoshi Nakamoto, adattato da un noto metodo di codifica "Base64". Il set di caratteri Base64 comprende: tutti i numeri e le lettere maiuscole e minuscole, oltre a due simboli ("+" e "/"); Un totale di 64 caratteri. Satoshi Nakamoto rimosse il numero 0, le lettere maiuscole I e O, la lettera minuscola l e il simbolo, e divenne Base58.

Set caratteri: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz



Base58Check

Rispetto a Base58, la codifica Base58Check ha solo un calcolo di checksum in più. Come mostrato di seguito:



Base58Check risolve i problemi di errori, difficoltà da riconoscere e non verificati nei metodi di codifica tradizionali, fornendo un metodo di rappresentazione sicuro, compatto, adatto all'uomo e che rileva errori per i dati chiave nella blockchain (come indirizzi e chiavi private). Sebbene ora stia venendo gradualmente sostituito dai più avanzati Bech32/Bech32m (per indirizzi SegWit), ha svolto un ruolo cruciale nell'ecosistema Bitcoin iniziale.

Bech32

"Bech32" è un metodo di codifica definito dal BIP 0173, scritto da Pieter Wuille e Greg Maxwell. Tuttavia, anche questa codifica ha origini: "Bech" si riferisce a "BCH", un algoritmo di codifica ciclico per correzione degli errori inventato da tre matematici rispettivamente nel 1959 e nel 1960 (il nome BCH deriva dai nomi di questi tre matematici). "32" significa che il set di caratteri del metodo di codifica ha solo 32 caratteri: lettere minuscole e numeri, escludendo i numeri "1", le lettere "b", "i" e "o".



All'inizio del BIP 0173, gli autori evidenziano gli aspetti indesiderati di Base58:

  • Base58 utilizza lettere inglesi sia maiuscole che minuscole, il che rende i suoi dati disegnati in codici QR non nella modalità "alfabeto numerico" più piccola, ma solo nella modalità "dati a byte più grande".
  • L'uso sia di case che case rende anche difficile trascrivere, digitare e leggere sulla tastiera del telefono.
  • Il checksum richiese due operazioni consecutive SHA256, che erano lente e non avevano la possibilità di individuare la posizione errata.
  • La maggior parte dei metodi di codifica degli errori localizzabili funziona solo se la dimensione del set di caratteri è di potenza prima, e 58 non è potenza prima.
  • Base58 è più complesso da decodificare e più lento da decodificare.

Di conseguenza, il nuovo approccio di Bech32 utilizza solo lettere minuscole e numeri; Quando necessario, ad esempio disegnando un codice QR, queste lettere possono essere sostituite con maiuscole per una rappresentazione più compatta. I codici QR più piccoli, dato che gli indirizzi Bech32 sono singoli, puoi codificarli come codici QR usando la modalità alfanumerica. Questo significa che puoi creare un codice QR più compatto perché Base58 richiede lettere maiuscole e minuscole (il che significa che non puoi usare la modalità alfanumerica), mentre Bech32 no. Come mostrato di seguito:



Come puoi vedere, nonostante l'indirizzo Bech32Contiene più caratteri, ma la possibilità di usare motivi alfanumerici significa che i codici QR utilizzano meno dati complessivamente

Allo stesso tempo, Bech32 ha la capacità di individuare errori: può non solo individuare che hai commesso un errore di copia, ma anche indicare quali bit hai copiato in modo errato (questa capacità di trovare errori è di gran lunga superiore a Base58).

In effetti, l'algoritmo BCH ha anche una funzione di "correzione errori": può non solo indicare quali bit hai copiato in modo errato, ma anche quali caratteri dovrebbe essere. Tuttavia, gli autori del BIP 0173 ne hanno riscontrato i pericoli intrinseci: da un lato, rafforzare la correzione degli errori indebolisce la capacità di individuare gli errori; D'altra parte, se l'utente si fida troppo delle capacità di correzione degli errori del software, il software può correggere i dati errati inseriti dall'utente in un dato "valido ma inutile" - anche se sono validi come dati codificati in BCH; Tuttavia, è possibile che lo script ripristinato di Bitcoin non sia sotto il controllo del destinatario, né di nessuno. Questo è estremamente pericoloso. Pertanto, BIP 0173 avverte: "Oltre a ricordare agli utenti quali bit potrebbero essere stati copiati in modo errato, il software non dovrebbe implementare capacità di correzione degli errori (fornire suggerimenti di correzione)." ”

Inoltre, Bech32 segue il pattern trovato nella codifica Base58:

1. I dati Bech32 inizieranno con un paragrafo "dati con significato (hrp)", simile al prefisso in Base58, che può indicare che tipo di dati si tratta.
HRP può usare molto più di 32 caratteri; Bech32 utilizza anche il numero "1" come separatore per separare l'HRP dai dati che devono effettivamente essere decodificati.
Oltre a Bitcoin, ci sono molti altri progetti che hanno adottato Bech32; L'HRP viene utilizzato per distinguere i dati da diversi elementi. Ecco un elenco di HRP registrati, che è molto interessante (ma solo interessante).
2. Bech32 ha anche progettato una checksum che occupa gli ultimi 6 caratteri dei dati codificati.

Bech32m

"Bech32m" è un metodo di codifica definito dal BIP 0350. Collegamento:Il login del link ipertestuale è visibile.È stato proposto perché gli sviluppatori hanno scoperto una vulnerabilità nel codice di Bech32:

Quando l'ultimo carattere è "p", inserire o rimuovere qualsiasi numero di "q" davanti a quel carattere non causerà errore di checksum (i dati saranno comunque considerati validi), alloraIl meccanismo di checksum perde completamente la sua funzioneFinire.

Se non aggiungi uno script Bitcoin standardizzato, questo problema può essere facilmente risolto: sia l'indirizzo P2WPKH che quello P2WSH hanno una certa lunghezza, basta aggiungere il controllo della lunghezza. Tuttavia, considerando che in futuro aggiungeremo anche nuovi script standardizzati, la lunghezza dell'indirizzo potrebbe cambiare, quindi è necessario risolvere questo problema.

Bech32m risolve questo problema modificando un parametro nel generatore di checksum Bech32.

Attualmente, Bech32m viene utilizzato solo per codificare gli indirizzi degli script "P2TR" aggiunti con l'aggiornamento "Taproot". Potrebbe essere utilizzata nella codifica degli indirizzi di altri script standardizzati in futuro.

Riferimento:

Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.




Precedente:tiktok, Douyin cattura il pacchetto e blocca lo script di Frida, che può localizzare la posizione della patch del file SO
Prossimo:Introduzione ai tipi di indirizzo Bitcoin Legacy, SegWit annidata, SegWit nativo e Taproot
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com