Prefijo de versión utilizado para direcciones Bech32

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 ".

  1. Si x00 es igual a 0x00 en hexadecimal y x80 es igual a 0x80 en hexadecimal, ¿cómo debo interpretar x03x03x00x02x03?
  2. ¿ Cuál es el prefijo de versión para las direcciones Bech32 (direcciones bc1)?

Respuestas (1)

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 | hashson los datos que se codifican y expanded_hrp | datase utilizan en el cálculo de la suma de comprobación ( |es una concatenación).

Gracias por la respuesta. Yo dudaba lo mismo. Votar y aceptar la respuesta.