Author: Arman The Parman | Original Date: 2022 | Translated by: Leon A. Wankum | On Extended vs Regular Public/Private Keys
Dieser Essay erklärt hierarchische deterministische Wallets (BIP32) und Seed Phrases (BIP39)
In meinen Kursen stoße ich häufig auf Verwirrung über öffentliche/private erweiterte Schlüssel im Vergleich zu einzelnen öffentlichen/privaten Schlüsseln. Wie es funktioniert, ist ziemlich interessant.
Jede Adresse stammt aus einem öffentlichen Schlüssel. Welcher auch als Pubkey bezeichnet wird und sich von einem erweiterten öffentlichen Schlüssel (xPub) unterscheidet.
Dieser Pubkey stammt von einem privaten Schlüssel (anders als ein erweiterter privater Schlüssel oder xPrv und anders als ein „Seed“).
Das „einzige“, was ein privater Schlüssel tut, ist, einen Pubkey zu erstellen und Signaturen zu erstellen.
Diese Signaturen beweisen, dass Sie den privaten Schlüssel zu einem Pubkey/einer Adresse haben, ohne den privaten Schlüssel preiszugeben. Übrigens ein unglaublicher Durchbruch der Menschheit und von Satoshi verwendet, um den digitalen Besitz von bitcoin zu ermöglichen.
Wenn Sie nur einen privaten Schlüssel haben, dann haben Sie insgesamt:
- 1 privater Schlüssel
- 1 öffentlicher Schlüssel (vom privaten Schlüssel)
- 1 Adresse (aus dem öffentlichen Schlüssel)
Dies ist sehr einschränkend und nicht sehr privat, da Sie mit nur einer Adresse entweder Zahlungen an diese eine Adresse akzeptieren oder jedes Mal mehr private Schlüssel erstellen müssen, wenn Sie eine neue Adresse wünschen. Dies wäre sehr mühsam und ein relatives Sicherheitsrisiko.
HD-Wallets (Hierarchical Deterministic Wallets) stammen von einem protokollierten Algorithmus (BIP32 = Bitcoin Improvement Proposal 32), den Wallets verwenden, um dieses Problem zu lösen. Anstatt dass der Benutzer einen privaten Schlüssel erstellt, erzeugt er einen ERWEITERTEN privaten Schlüssel.
Wenn das Schema unten nicht viel Sinn macht, lesen Sie weiter, ich werde es am Ende noch einmal präsentieren.
Der Einfachheit halber habe ich in diesem Bild keine Ableitungspfade eingefügt. Es kann als „zweiter Passphrase“ betrachtet werden, die auf protokollierte Weise für die Wallet-Interoperabilität die Art der erzeugten Adressen beeinflusst. Es ist am besten, dies nicht von den Standardeinstellungen zu bearbeiten, es sei denn, Sie sind ein Experte.
HD-Wallets erlauben „unbegrenzte“ reguläre private Schlüssel, mathematisch und reproduzierbar (deterministisch). Wie ein SEED!
Beachten Sie, dass dies keine Seed-PHRASE ist. Es ist ein erweiterter privater Schlüssel (eine riesige zufällig aussehende Zahl, die aus der Seed-Phrase + Passphrase abgeleitet wird).
Jeder der untergeordneten privaten Schlüssel erzeugt einen entsprechenden einzelnen Pubkey und jeder erzeugt eine einzelne Adresse – die Sammlung von 8,6 Milliarden eindeutigen Adressen ist Ihre „Wallet“ (4,3 Milliarden Empfangsadressen, 4,3 Milliarden Änderungsadressen – siehe Anhang).
Der erweiterte private Schlüssel erzeugt auch einen ERWEITERTEN öffentlichen Schlüssel (xPub).
Der xPub erstellt eine riesige Liste von Pubkeys (deterministisch), und, was sehr wichtig ist – die Pubkeys sind die GLEICHEN Paare, die über alle einzelnen privaten Schlüssel erzeugt werden (dank der kryptografischen „Magie“ öffentlicher/privater Schlüssel).
Was bedeutet das?
Dies bedeutet, dass Sie, wenn Sie eine Software-Wallet (z. B. Electrum) mit dem erweiterten privaten Schlüssel ODER dem erweiterten öffentlichen Schlüssel „füttern“ („füttern“, was bedeutet, die Schlüssel zum Wiederherstellen einer Wallet verwenden), Sie dieselbe Sammlung von Pubkeys/Adressen produzieren ( dh gleiche Brieftasche).
Was ist der Sinn dieser Option?
Wenn Sie Electrum mit einem xPub "füttern", können Sie ein Watch-only-Wallet erstellen .
Der Sinn dahinter?
In erster Linie ermöglicht es Ihnen, eine Transaktion zu erstellen (indem Sie auf ein UTXO in der Blockchain verweisen), die zum Signieren bereit ist. Auf das UTXO kann nur auf einem mit dem Internet verbundenen Gerät zugegriffen werden (Sie müssen sich mit einer Node verbinden, um das UTXO zu erhalten, um es auszugeben – das UTXO befindet sich in der Blockchain, nicht in Ihrer Wallet), aber ohne die privaten Schlüssel auf dem Computer preiszugeben.
Die signierfertige Transaktion („unsignierte Bitcoin-Transaktion“, die üblicherweise in der Verwendung des Begriffs „teilweise signierte Bitcoin-Transaktion“ enthalten ist, obwohl sie überhaupt nicht signiert ist) wird dann an ein Signiergerät (z. B. HWW oder Air-Gap Computerübergeben ) zum Signieren geschickt.
Dieses Gerät kann keine Transaktion erstellen (es ist vom Internet getrennt), es benötigt die überwachende Brieftasche, um sie zu erstellen, und dann kann es den Signierungsteil ausführen. Danach kann das Signiergerät die Transaktion nicht veröffentlichen. Es leitet die Transaktion (signierte Transaktion, jetzt gültig) zurück an die überwachende Wallet, um sie an eine Node zu senden.
Das ist natürlich viel mühsamer, als einfach den Seed (ext. Private Key) an einen mit dem Internet verbundenen Computer zu füttern und eine vollständige Wallet zu generieren – die Generierung des tx, das Signieren und Senden würde dann alles auf einem einzigen Gerät passieren. Einfacher, aber nicht so sicher.
Irgendwann nach BIP32 (HD Wallets) kam BIP39, ein weiteres Protokoll.
Der Zweck bestand darin, einer Reihe von Wörtern zu ermöglichen, Zahlen darzustellen (gemäß einem Protokoll). Dadurch konnte eine private Nummer weniger fehleranfällig erfasst werden.
Die „mnemotechnische Seedphrase“, auch genannt
„Seed Phrase“ oder mehrdeutig „Seed“ oder fälschlicherweise „Private Key“.
Mit der BIP39-Seed-Phrase und einer optionalen Passphrase und einem Ableitungspfad – in Kombination - wird ein erweiterter privater Schlüssel erzeugt (derselbe Schlüsseltyp, den ich zuvor besprochen habe). Beachten Sie, dass ich der Einfachheit halber den Ableitungspfad nicht in der Zeichnung aufgenommen habe, dei ich zuvor gezeichnet habe.
Die Seedphrase ist kein SCHLÜSSEL – es ist eine Reihe von Wörtern, die eine private Nummer darstellen, die zur Erstellung eines erweiterten privaten Schlüssels BEITRÄGT. Es ist in gewisser Weise ein „Seed“, weil es den erweiterten privaten Schlüssel produziert. Beachten Sie, dass die Seedphrase mehr als einen erweiterten privaten Schlüssel erzeugen kann, da sie mit verschiedenen Passphrasen und Ableitungspfaden kombiniert werden kann. Weitere Informationen finden Sie in meiner Artikelliste zu #bitcoin-Schlüsseln…
Schauen Sie sich das Diagramm noch einmal an, nachdem Sie den ganzen Aufsatz gelesen haben:
Anhang – Worum geht es beim Empfangen und Ändern von Adressen?
Wie bereits erwähnt, stammen unbegrenzte (8,6 Milliarden) Adressen aus dem erweiterten öffentlichen Schlüssel. Es gibt 4,3 Milliarden Empfangsadressen und 4,3 Milliarden Wechseladressen.
Adressen empfangen
Sie müssen die genaue Berechnung einer Adresse nicht kennen, es sei denn, Sie entwickeln Bitcoin-Wallets. Die Hauptidee ist, dass xPub genommen und mit einer Zahl kombiniert wird, die in einer Einweg-Reihe von Funktionen (Hashing) und definierten Schritten eine Adresse erzeugt. Diese hinzugefügte Zahl ist „0“ für die erste Adresse. Die nächste Zahl ist „1“ und so weiter. Jedes Mal, wenn die hinzugefügte Nummer geändert wird, wird eine völlig neue zufällig aussehende Adresse erzeugt. Der der hinzugefügten Nummer zugewiesene Speicher beträgt 32 Bytes. Diese Größe kann 4.294.967.295 verschiedene Werte (Ganze Zahlen ohne Vorzeichen) enthalten. Jeder kann eine Adresse erzeugen, wenn er mit dem xPub kombiniert wird.
Wenn Sie jemandem eine Rechnung schicken, zum Beispiel einem Kunden, sollten Sie ihm und nur ihm eine Adresse zuweisen (unter Einhaltung des Datenschutzgrundsatzes der einmaligen Verwendung von Adressen). Aber Sie wissen vielleicht nicht, wann der Kunde bezahlen wird. Auch Ihre Wallet-Software hat keine Ahnung, dass Sie jemandem eine Adresse zugeordnet haben (insbesondere wenn die Zuordnung vom Kunden automatisiert generiert wird – wie im Fall meiner Spenden-App ).
Wenn Sie, bevor der Kunde bezahlt hat, eine nicht damit zusammenhängende Transaktion von Ihrem Wallet aus durchführen, die Wechselgeld erfordert (siehe Artikel über UTXOs für eine Erklärung, was Wechselgeld ist), sendet das Wallet das Wechselgeld automatisch an die nächste unbenutzte Adresse. Aber warten Sie, was ist, wenn es an eine Adresse gesendet wird, die Sie bereits einem Kunden zugewiesen haben? In diesem Fall wird Ihre Änderung möglicherweise an diese „unbenutzte“ Adresse gesendet, und Ihr Kunde zahlt später an dieselbe Adresse. Dann haben Sie zwei UTXOs in einer Adresse. Eine kann KYC an Sie sein, und die andere ist eine Kundenzahlung, die normalerweise völlig privat wäre (außer zwischen Ihnen und dem Kunden). Die Privatsphäre dieser Coins geht dann verloren, da sie dieselbe Adresse wie Ihr Wechselgeld belegt. Die Coins vom Kunden werden effektiv KYC'd.
Adressen ändern:
Hier helfen Wechselgeldadressen. Sie sind einen weiterer Satz von 4,3 Milliarden Adressen, die Sie nicht für Rechnungen verwenden sollten. Auf diese Weise hat keiner von ihnen jemals ausstehende Zahlungen von anderen, und wenn Ihre Wallet Wechselgeld hierher sendet, besteht kein Risiko, dass zwei Zahlungen an dieselbe Adresse erfolgen.
Wie entstehen diese Adressen? Sehr ähnlich wie die Empfangsadressen, außer dass eine Ziffer im Ableitungspfad von „0“ auf „1“ geändert wird und dann die gleichen 32 Bytes für die „hinzugefügte Nummer“ zugewiesen werden, die mit dem xPub kombiniert werden, um eine neue Reihe von Adressen zu erzeugen.
Value 4 Value | Tips:
Wenn Ihnen diese Übersetzung gefallen hat, würde ich mich über eine Wertschätzung in Form von Satoshi an law@getalby.com freuen.
Sie können mir ausserdem auf Twitter folgen oder meine Homepage besuchen.
Nostr: npub1v5k43t905yz6lpr4crlgq2d99e7ahsehk27eex9mz7s3rhzvmesqum8rd9
Leon A. Wankum
Bitcoin. Real Estate. Philosophy & Ethics. ⚡law@getalby.com npub1v5k43t905yz6lpr4crlgq2d99e7ahsehk27eex9mz7s3rhzvmesqum8rd9
follow me :
Related Posts
Rabbit fragt #17
Aug 28, 2024
Der Bitcoiner in der Midlife-Crisis
Jun 14, 2024
Rabbit fragt...#16...Was ist eine Hardware Wallet?
May 26, 2024