Bech32
El formato de dirección para scripts de bloqueo segwit
Bech32 (se pronuncia "bech treinta y dos") es un formato de dirección usado para representar scripts de bloqueo segwit como P2WPKH, P2WSH y P2TR.
Se introdujo poco después de la actualización Segregated Witness para ofrecer un mejor formato de dirección para los nuevos scripts segwit. Es una mejora frente al formato heredado Base58.
Puedes identificar una dirección Bech32 por el prefijo bc1.
Beneficios
¿Por qué Bech32 es mejor que Base58?
Más amigable
Las direcciones Bech32 usan solo letras minúsculas (o solo mayúsculas), así que no son sensibles a mayúsculas/minúsculas como Base58. Esto las hace más fáciles de leer en voz alta, escribir y codificar en códigos QR (los códigos QR quedan más pequeños cuando todo está en mayúsculas).
Detección de errores superior
El checksum de Bech32 usa un código BCH que es mucho mejor en detectar errores que el checksum simple de Base58. Garantiza la detección de hasta 4 errores de carácter y, además, incluso puede sugerir dónde está el error (aunque las carteras normalmente no usan esa capacidad de corrección, por seguridad).
Estructura
¿Cómo se construye una dirección Bech32?
Una dirección Bech32 tiene tres partes:
- Parte legible por humanos (HRP). Indica la red:
bc(mainnet) otb(testnet). - Separador. Siempre el carácter
1. - Parte de datos. La versión de witness + el programa witness + el checksum, todo codificado en el conjunto de 32 caracteres de Bech32.
El proceso de codificación resumido: se toma el programa witness (por ejemplo, el hash de 20 o 32 bytes), se convierte de grupos de 8 bits a grupos de 5 bits, se añade la versión witness al principio, se calcula el checksum y se codifica todo en el alfabeto Bech32 (Base32).
Bech32 vs Bech32m
Hay dos variantes de checksum:
- Bech32 — usado para la versión witness 0 (P2WPKH y P2WSH). Direcciones
bc1q... - Bech32m — usado para la versión witness 1+ (P2TR / Taproot). Direcciones
bc1p...
Bech32m (BIP 350) se introdujo para corregir una debilidad del checksum original de Bech32 para versiones witness mayores que 0.