Versionspräfix für Bech32-Adressen

Oct 17 2020

Ich habe eine Tabelle für das Versionspräfix (hex) und das Base-58-Ergebnispräfix für verschiedene Arten von Bitcoin-Adressen zusammengestellt.

Ich bin hier auf den Inhalt gestoßen: https://en.bitcoin.it/wiki/List_of_address_prefixes, das keine Informationen über Dezimal enthält , Präfix Hex für Bech32-Adressen (ich denke, sie werden auch SegWit-Adresse genannt, oder?)

Also habe ich diese Tabelle hier überprüft: https://en.bitcoin.it/w/images/en/4/48/Address_map.jpgAber ich verstehe die Bedeutung von " x03x03x00x02x03 " nicht.

  1. Wenn x00 gleich 0x00 in hex und x80 gleich 0x80 in hex ist, wie soll ich x03x03x00x02x03 interpretieren?
  2. Was ist das Versionspräfix für Bech32-Adressen (bc1-Adressen)?

Antworten

CodingEnthusiast Oct 17 2020 at 18:20

Diese Bytes (x03x03x00x02x03 oder besser dargestellt als 0x0303000203) sind der erweiterte, vom Menschen lesbare Teil. Sie finden den Code auf BIP-173 .

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

Das Problem ist jedoch, dass diese Bytes im Gegensatz zur Base58-Codierung nur zur Berechnung der Prüfsumme verwendet werden und nicht als Startbytes. Was das Bild meiner Meinung nach irreführend macht.

Die Bech32-Codierung unterscheidet sich stark von der Base58-Codierung, da es kein "Versionspräfix" gibt. Es gibt eine HRP, eine Zeugenversion, Daten (Hash) und eine Prüfsumme. Witness version | hashsind die Daten, die codiert werden und expanded_hrp | databei der Prüfsummenberechnung verwendet werden ( |ist Konkatination).