Estaba compilando una tabla para el prefijo de la versión (hexadecimal) y el prefijo del resultado Base-58 para diferentes tipos de direcciones de Bitcoin.
Encontré el contenido aquí: https://en.bitcoin.it/wiki/List_of_address_prefixes , que no contiene información sobre Decimal , prefijo hexadecimal para direcciones Bech32 (supongo que también llamaron dirección SegWit, ¿verdad?)
Entonces, revisé este cuadro aquí: https://en.bitcoin.it/w/images/en/4/48/Address_map.jpg pero no entiendo el significado de " x03x03x00x02x03 ".
Esos bytes (x03x03x00x02x03 o mejor mostrados como 0x0303000203
) son la parte ampliada legible por humanos. Puede encontrar el código en BIP-173 .
def bech32_hrp_expand(s):
return [ord(x) >> 5 for x in s] + [0] + [ord(x) & 31 for x in s]
Sin embargo, el problema es que, a diferencia de la codificación Base58, esos bytes solo se usan en el cálculo de la suma de verificación, no como los bytes iniciales. Lo que hace que la imagen sea engañosa en mi opinión.
La codificación Bech32 es muy diferente de la codificación Base58 ya que no hay un "prefijo de versión". Hay un Hrp, una versión testigo, un dato (hash) y un checksum. Witness version | hash
son los datos que se codifican y expanded_hrp | data
se utilizan en el cálculo de la suma de comprobación ( |
es una concatenación).
andy_jake