Cómo se usa
- Elige Codificar para crear una cadena Base58Check, o Decodificar para verificar una y recuperar sus bytes.
- Para codificar, pon el Formato de entrada en Hexadecimal e introduce el byte de versión seguido de la carga útil, por ejemplo 00 y un HASH160 de 20 bytes.
- Deja activada la opción Suma de verificación Base58Check. La suma se añade al codificar y se verifica al decodificar.
- Para decodificar, pega la cadena y pon el Formato de salida en Hexadecimal. Obtendrás el byte de versión y la carga útil, sin la suma de verificación.
Cómo funciona Base58Check
- Se parte de un byte de versión que indica qué tipo de datos son, seguido de la carga útil, por ejemplo un hash de clave pública de 20 bytes.
- Se calcula el SHA-256 de esos bytes, se vuelve a aplicar SHA-256 al resultado y se toman los 4 primeros bytes como suma de verificación.
- Se añade la suma de verificación y se codifica todo con Base58. Cada byte
0x00inicial se convierte en un1.
Esta herramienta calcula la suma de verificación exactamente sobre los bytes que introduces. No añade ningún byte de versión por ti, así que inclúyelo al principio de la entrada. Al decodificar, vuelve a calcular la suma sobre todo excepto los 4 últimos bytes. Si coinciden, obtienes el byte de versión y la carga útil; si no, aparece un error de suma de verificación. Un error de escritura aleatorio solo pasa desapercibido aproximadamente una vez de cada cuatro mil millones.
Bytes de versión habituales
| Byte de versión | Datos | La cadena codificada empieza por |
|---|---|---|
0x00 | Dirección Bitcoin P2PKH (HASH160 de 20 bytes) | 1 |
0x05 | Dirección Bitcoin P2SH (hash de script de 20 bytes) | 3 |
0x6F | Dirección P2PKH de la testnet de Bitcoin | m o n |
0x80 | Clave privada WIF (32 bytes, más 0x01 si la clave es comprimida) | 5, o K / L si es comprimida |
Las direcciones SegWit y Taproot que empiezan por bc1 usan Bech32, no Base58Check, y no se pueden decodificar aquí. Las direcciones de XRP Ledger usan la misma suma de verificación con el alfabeto Ripple: elige Ripple en la opción Alfabeto.
Ejemplo: de HASH160 a dirección
La conocida dirección asociada al bloque génesis de Bitcoin es el byte de versión 00 seguido de un HASH160 de 20 bytes. Si lo introduces en Hexadecimal con Base58Check activado, obtienes la dirección de siempre:
Input (Hex) 00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Output 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
En código, el paquete base58 de Python ofrece b58encode_check() y b58decode_check(), y el paquete npm bs58check proporciona encode() y decode().
Especificación
| Alfabeto | 1-9 A-Z a-z sin 0 O I l |
|---|---|
| Tamaño de salida | Aprox. 137% más una suma de verificación de 4 bytes |
| Relleno | Ninguno |
| Estándar | Bitcoin Base58Check |
| Distingue mayúsculas y minúsculas | Sí |
Ejemplos
| Entrada (UTF-8) | Salida |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Preguntas frecuentes
¿Por qué la decodificación falla con un error de suma de verificación?
¿La herramienta añade el byte de versión por mí?
00 para una dirección Bitcoin.¿Puedo decodificar una clave privada WIF?
80, la clave de 32 bytes y, en las claves comprimidas, un 01 final. La decodificación se realiza localmente en tu navegador, pero aun así trata con cuidado las claves privadas reales.¿Puedo decodificar direcciones bc1?
No. Las direcciones SegWit nativas y Taproot usan Bech32 o Bech32m, una codificación distinta con su propia suma de verificación. En Bitcoin, Base58Check solo se usa en las direcciones heredadas que empiezan por 1 o 3 (m, n o 2 en la testnet).