Я составлял таблицу для префикса версии (шестнадцатеричный) и префикса результата 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 ».
Эти байты (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
используются при вычислении контрольной суммы ( |
конкатенация).
Энди_Джейк