Префикс версии, используемый для адресов Bech32

Я составлял таблицу для префикса версии (шестнадцатеричный) и префикса результата Base-58 для разных типов биткойн-адресов.

Я наткнулся на контент здесь: https://en.bitcoin.it/wiki/List_of_address_prefixes , который не содержит информации о Decimal , префиксе Hex для адресов Bech32 (думаю, они также называли адрес SegWit, верно?)

Итак, я проверил этот график здесь: https://en.bitcoin.it/w/images/en/4/48/Address_map.jpg , но я не понимаю значения « x03x03x00x02x03 ».

  1. Если x00 равно 0x00 в шестнадцатеричном формате, а x80 равно 0x80 в шестнадцатеричном формате, как мне интерпретировать x03x03x00x02x03?
  2. Какой префикс версии для адресов Bech32 (адреса bc1)?

Ответы (1)

Эти байты (x03x03x00x02x03 или лучше показаны как 0x0303000203) являются расширенной удобочитаемой частью. Вы можете найти код на BIP-173 .

def bech32_hrp_expand(s):
  return [ord(x) >> 5 for x in s] + [0] + [ord(x) & 31 for x in s]

Однако проблема заключается в том, что в отличие от кодировки Base58 эти байты используются только при расчете контрольной суммы, а не в качестве начальных байтов. Что делает картинку обманчивой, на мой взгляд.

Кодировка Bech32 сильно отличается от кодировки Base58, поскольку в ней нет «префикса версии». Есть Hrp, версия-свидетель, данные (хэш) и контрольная сумма. Witness version | hashкодируются данные и expanded_hrp | dataиспользуются при вычислении контрольной суммы ( |конкатенация).

Спасибо за ответ. Я то же сомневался. Голосование и принятие ответа.