Glossar / Adressen und Schlüssel
BIP-84-Ableitung
- Was ist die BIP-84-Ableitung?
- Die BIP-84-Ableitung ist das Schema, das die Zweckebene eines BIP-32-Pfads auf 84' festlegt, sodass eine einzige Seed-Phrase native SegWit-Adressen vom Typ bc1q mit der P2WPKH-Kapselung aus BIP-141 liefert.
Spezifiziert im BIP-84.
BIP-84 verwendet das Fünf-Ebenen-Layout von BIP-44 erneut und ändert nur den Zweckwert. Es wurde am 28. Dezember 2017 zugewiesen und ordnet jedem Konto einen erweiterten Schlüssel zpub zu, dessen Versionsbytes 0x04b24746 lauten. Für Sie entscheidet es, ob eine wiederhergestellte Seed-Phrase Ihren bc1q-Bestand findet oder eine leere Wallet meldet.
So funktioniert es
BIP-84 tut zwei Dinge, und das erste besteht darin, eine Zahl innerhalb eines Pfads festzuschreiben. Die Schlüssel hängen am Skelett, das BIP-44 eingeführt hat und das als m / purpose' / coin_type' / account' / change / address_index geschrieben wird, und die einzige Ebene, die diese Spezifikation als ihre eigene beansprucht, ist der Zweck, festgelegt auf 84'. Coin-Typ, Konto, Change und Adressindex behalten die Bedeutungen, die BIP-44 und BIP-49 ihnen bereits gegeben haben, und der Autor, Pavol Rusnak, verwendet ausdrücklich die Begründung von BIP-49 erneut, statt sie neu zu formulieren.
Das zweite ist das Ausgabeformat. BIP-84 entlehnt die Kapselung von BIP-141: Das scriptPubKey besteht aus 0x0014 gefolgt vom 20-Byte-Hash des öffentlichen Schlüssels, das scriptSig bleibt leer, und das Witness-Feld trägt die Signatur und danach den Schlüssel. Nichts in dieser Ausgabe hält fest, welcher Zweckwert sie erzeugt hat.
Erweiterte Schlüssel auf dem Zweig erhalten ihre eigenen Versionsbytes. Öffentliche Schlüssel verwenden 0x04b24746, was als zpub ausgegeben wird, private Schlüssel verwenden 0x04b2430c für zprv, und das Testnetz verwendet 0x045f1cf6 und 0x045f18bc für vpub und vprv. Diese Werte sind nicht einzigartig für Bitcoin. SLIP-0132, das Register, das sie sammelt, führt Groestlcoin und Syscoin unter dem identischen 0x04b24746 auf, weil das Serialisierungsformat kein Feld für den Coin-Typ hat, eine zpub sagt Ihnen also den Skripttyp und nichts über die Chain, zu der sie gehört.
Die Spezifikation bezeichnet sich selbst als "not backwards compatible by design" und sagt, eine inkompatible Wallet "will not discover accounts at all". Das ist beabsichtigt. Ein eigener Zweckwert hält Software, die vor SegWit geschrieben wurde, aus einem Konto heraus, das sie schlecht behandeln würde, und ein Bestand, der null anzeigt, ist ein besserer Fehler als eine Wallet, die sich stillschweigend halb wiederherstellt.
Wo Sie es sehen
BIP-84 erscheint an drei Stellen, die Ihre Wallet bereits anzeigt: dem Kontopfad m/84'/0'/0', einem erweiterten Schlüssel, der mit zpub beginnt, und Empfangsadressen, die mit bc1q beginnen. SLIP-0132 verbindet diese zpub-Zeile für Bitcoin mit dem Pfad m/84'/0', und das ist die Zuordnung, die eine App behauptet, wenn sie Ihnen eine übergibt. Sparrow, in unserer Bewertung mit 4,7 benotet, unterstützt Wallets mit einer Signatur und Multisig-Wallets über die gängigen Skripttypen, das Konto, das Sie öffnen, ist also das von Ihnen gewählte und nicht eine Voreinstellung, die Sie übernommen haben.
Der Teil des Dokuments, den es sich zu übernehmen lohnt, ist sein Block mit Testvektoren, der aus der Frage „implementiert diese Wallet BIP-84 wie alle anderen“ eine Prüfung macht, die eine Minute dauert. Das BIP veröffentlicht Ergebnisse für die Mnemonic "abandon", elfmal wiederholt und danach "about":
- m/84'/0'/0'/0/0 ergibt bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu
- m/84'/0'/0'/0/1 ergibt bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g
- m/84'/0'/0'/1/0 ergibt bc1q8c6fshw2dlwun7ekn9qwf37cu2rn755upcp6el
Laden Sie diese Phrase in unbekannte Software auf einem Gerät, das keine Bitcoin hält, wählen Sie native SegWit und vergleichen Sie die erste Empfangsadresse und die erste Change-Adresse mit diesen Zeichenketten. Wenn beide übereinstimmen, stimmt die Implementierung auch auf dem Change-Zweig mit dem Standard überein, und das ist die Hälfte, die man vergisst zu prüfen. Senden Sie niemals etwas an diese Adressen: Das BIP druckt die zugehörigen privaten Schlüssel und SLIP-0132 druckt dieselbe Mnemonic, jeder, der eines der beiden Dokumente liest, kann also ausgeben, was dort eingeht.
BIP-84-Ableitung vs. P2WPKH
Die BIP-84-Ableitung sagt, woher ein Schlüssel stammt, und P2WPKH sagt, wie die Bitcoin gesperrt sind. Nur Letzteres ist Konsens. Eine Wallet könnte einen Schlüssel über einen Pfad ableiten, der nirgends ein 84' enthält, die Ausgabe mit demselben Muster 0x0014 sperren, und die daraus entstehende bc1q-Adresse wäre On-Chain nicht von Ihrer zu unterscheiden. „Eine BIP-84-Adresse“ ist also eine Kurzform und keine Aussage, die ein Block-Explorer klären könnte, und der Zweckwert ist etwas, das Sie in einer Backup-Notiz festhalten, weil Sie ihn später nicht mehr aus der Blockchain auslesen können.