Was ist der Unterschied zwischen "native segwit" und "bech32"?

Die Leute scheinen "native segwit" und "bech32" synonym zu verwenden. Sind sie wirklich dasselbe?

Antworten (1)

TL;DR: Natives Segwit bezieht sich auf Segwit-Ausgaben ohne P2SH-Wrapper. Bech32 ist das Adressformat, das zur Darstellung nativer Segwit-v0-Sperrskripts verwendet wird.

Gewickeltes Segwit vs. natives Segwit

Als Segwit aktiviert wurde, führte es die nullte Generation von Segwit ein, Segwit-v0. Die entsprechenden Sperrskripte gab es in zwei Varianten:

  1. Die aufwärtskompatiblen Ausgabetypen „wrapped segwit“ oder „nested segwit“ packen das Witness-Programm in eine P2SH- Ausgabe (Pay to Script Hash). Es gibt zwei Varianten, P2SH-P2WPKH für Single-Sig und P2SH-P2WSH für beliebige Skripte einschließlich Multisig. Wie alle P2SH-Adressen werden verpackte Segwit-Ausgaben mit Base58Check codiert . Das Wrapping ermöglicht es allen P2SH-fähigen Wallets, an verpackte Segwit-Adressen zu senden.
  2. Die kompatibilitätsbrechenden „nativen Segwit“-Ausgabetypen, die nur von Segwit-fähigen Wallets bezahlt werden können. Native Segwit-Ausgaben sind Blockspace-effizienter, da sie die für den P2SH-Wrapper erforderlichen zusätzlichen Daten vermeiden, indem sie das Witness-Programm direkt auflösen. Native Segwit-Sperrskripte werden mit dem neu eingeführten bech32-Adressformat (BIP-173) codiert (für v0-native Segwit-Ausgaben).

Andere Verwendungen von Bech32

Bech32 wird auch für andere Zwecke verwendet, wie zB zum Verschlüsseln von Lightning-Rechnungen . Ursprünglich war geplant, Bech32 auch für spätere native Segwit-Ausgabeversionen zu verwenden. Nachdem jedoch eine Mutabilitätsschwäche entdeckt wurde und Umfragen ergaben, dass viele Wallets das Senden an höhere Segwit-Versionen nicht richtig handhaben, wird eine geänderte Version von Bech32 diskutiert. Diese geänderte Version von Bech32 würde eine andere Prüfsummenkonstante verwenden, um explizit die Vorwärtskompatibilität zu unterbrechen, dh Wallets müssen aktualisiert werden, um Segwit-v1-Ausgaben zu erstellen. Das Aufbrechen der Vorwärtskompatibilität schützt Wallets vor dem Verbrennen von Geldern, indem segwit-v1-Adressen fälschlicherweise auf segwit-v0-Adressen herabgestuft werden, und ermöglicht die Behebung der Mutabilitätsschwäche.

Natives segwit-v1 zur Verwendung von Bech32m

Der vorgeschlagene Taproot-Softfork führt den nativen Segwit-v1-Ausgabetyp Pay to Taproot (P2TR) ein , der der erste native Segwit-Ausgabetyp wäre, der dieses geänderte Bech32-Adressformat namens "Bech32m" verwendet, das von BIP-350 vorgeschlagen wird .