Zum Inhalt springen
buybitcoinsmart

Glossar / Adressen und Schlüssel

BIP-49-Ableitung

Was ist die BIP-49-Ableitung?
Die BIP-49-Ableitung legt verschachtelte SegWit-Konten auf einen eigenen Zweig bei m/49'/0'/0', sodass eine Wallet, die sie nicht lesen kann, nichts anzeigt statt eines falschen Guthabens.

Spezifiziert im BIP-49.

BIP-49 reserviert die erste gehärtete Ebene des Schlüsselbaums, 49', für Konten, deren Adressen in P2SH eingebettete P2WPKH sind. Es wurde am 19. Mai 2016 zugewiesen und erhielt später eigene Versionsbytes für erweiterte Schlüssel, 0x049d7cb2 für ypub und 0x049d7878 für yprv. Wenn Ihre Wallet einen Kontoschlüssel exportiert, der mit ypub beginnt, ist das der Zweig, den eine Wiederherstellung durchsuchen muss.

Wie es funktioniert

BIP-49 klärt zwei Fragen: welcher Zweig eines BIP-32-Baums die Schlüssel für verschachteltes SegWit enthält und wie eine Adresse aus einem Schlüssel in diesem Zweig aufgebaut wird.

Der Zweig übernimmt die Vorlage mit fünf Ebenen, die BIP-44 bereits verwendete, m / purpose' / coin_type' / account' / change / address_index, und ändert genau eine Zahl. Der Zweck wird 49' statt 44'. Coin-Typ, Konto, Chain und Index behalten die Bedeutungen, die BIP-44 ihnen gegeben hat.

Die Adresshälfte ist mechanisch: den komprimierten öffentlichen Schlüssel hashen, das Ergebnis mit 20 Bytes in ein Redeem-Skript mit 22 Bytes einbetten und dann dieses Skript hashen, um das zu erhalten, worauf sich der Output festlegt. Die Spezifikation schreibt die beiden Teile als scriptSig: 0x160014{20-byte-key-hash} und scriptPubKey: 0xA914{20-byte-script-hash}87.

Interessant ist die Option, die der Autor verworfen hat. Weigl nennt zwei Ansätze: das Konto behalten, das Sie bereits haben, und verschachtelte SegWit-Adressen an dieselben öffentlichen Schlüssel hängen, oder eigene Konten unter einem neuen Zweck anlegen. Der erste ist benutzerfreundlicher, bis etwas schiefgeht, und dann heißt es in der Spezifikation, das Konto "might show up but also it might miss some UTXOs". BIP-49 wählte eigene Konten gerade deshalb, weil diese Option "fails in a more visible way". Ein leerer Bildschirm ist eine bessere Fehlermeldung als eine plausible falsche Zahl.

Die Serialisierung erhielt schließlich dieselbe Behandlung: erweiterte öffentliche Schlüssel in diesem Zweig verwenden die Versionsbytes 0x049d7cb2, die in Base58 zum Präfix ypub führen, mit 0x049d7878 für yprv und upub und uprv im Testnetz.

Wo Sie es sehen

BIP-49 zeigt sich als erweiterter Schlüssel, der mit ypub statt xpub beginnt, und als das verschachtelte SegWit-Konto, das eine Wallet neben dem nativen Konto aufführt. Mycelium, das diese Website mit 3,7 bewertet, führt native und verschachtelte SegWit-Konten in einer App, die beiden Schemata, die SLIP-0132 unter zpub und ypub registriert.

Das Präfix ypub war eine nachträgliche Ergänzung, und diese Geschichte ist noch sichtbar. BIP-43, das die Zweckebene im Jahr 2014 einführte, wies die Implementierer an, 0x0488B21E und das Präfix xpub für jeden Zweck beizubehalten. BIP-49 wurde zunächst so ausgeliefert, und SLIP-0132, das am 8. Februar 2018 entstand, um Versionsbytes ordentlich zu registrieren, beschreibt das Ergebnis unverblümt: Das unveränderte Präfix führte zu "unsustainable user confusion", weil entweder der Nutzer sich merken musste, aus welchem Zweig eine xpub stammte, oder das empfangende Werkzeug beide Adressräume durchsuchen musste. Ein Präfix ist ein Hinweis, keine Garantie. Wenn Sie einen erweiterten Schlüssel in einen Block-Explorer einfügen und dieser Adressen ableitet, die mit 1 beginnen, während Ihre Wallet Adressen anzeigt, die mit 3 beginnen, halten Sie einen BIP-49-Schlüssel mit dem älteren Präfix, und dem Werkzeug muss der Pfad von Hand mitgeteilt werden.

Die Spezifikation enthält einen Testnetz-Vektor, gegen den sich ein Werkzeug zu prüfen lohnt: die Phrase abandon, elfmal wiederholt, gefolgt von about, Kontowurzel m/49'/1'/0', erste Empfangsadresse 2Mww8dCYPUpKHofjgcXcBCEGmniw9CoaiD2.

BIP-49-Ableitung vs. verschachteltes SegWit

Die BIP-49-Ableitung ist eine Regel über Schlüssel, und verschachteltes SegWit ist ein Muster, das die Chain sieht; die beiden treten meist zusammen auf, aber keines impliziert das andere. Ein Output ist verschachteltes SegWit wegen des Skripts, auf das er sich festlegt, und nichts darin verzeichnet, welcher Pfad den Schlüssel erzeugt hat. Eine Wallet kann einen aus einem importierten privaten Schlüssel erstellen oder mit dem Ansatz, den BIP-49 verworfen hat, der eine zweite P2SH-Adresse aus öffentlichen Schlüsseln ableitete, die bereits in einem BIP-44-Konto lagen. Zu wissen, dass Ihre Bitcoin auf Adressen liegen, die mit 3 beginnen, sagt Ihnen daher nicht, wo Sie wiederherstellen müssen, weshalb der Kontopfad neben der Seed-Sicherung in Ihre Notizen gehört.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Warum beginnt mein erweiterter öffentlicher Schlüssel mit ypub statt xpub?

Weil er mit den Versionsbytes serialisiert wurde, die BIP-49 diesem Zweig zuweist, 0x049d7cb2, die in Base58 zu ypub werden. Das Präfix ist eine Bezeichnung für das Ableitungsschema, keine andere Art von Schlüssel, und SLIP-0132 registriert es neben xpub und zpub.

Ist BIP-49 veraltet?

Nein. Der eigene Header des BIP lautet weiterhin Deployed, und Wallets, die Konten im Zweig 49' erstellt haben, leiten diese normal weiter ab. Nichts in der Spezifikation hat den Zweig zurückgezogen, und Bitcoin, die darunter liegen, müssen nicht gerettet werden.

Kann ich an einer Adresse erkennen, ob sie aus BIP-49 stammt?

Nein. Ein P2SH-Output verzeichnet nur den Skript-Hash, auf den er sich festlegt, sodass eine Adresse, die mit 3 beginnt, nichts über den dahinterliegenden Pfad verrät. Schreiben Sie den Kontopfad zusammen mit Ihrer Sicherung auf, statt zu versuchen, ihn später abzuleiten.

Weiterlesen

Verwandte Begriffe

Mehr zum Thema Adressen und Schlüssel

Diese Seite auf Englisch lesen