Es gibt eine Lücke in meinem Verständnis bezüglich der Generierung von Bitcoin-Adressen durch Hashing. (Ich zitiere unten der Einfachheit halber aus Antonoplous, aber ich habe mehrere andere Quellen konsultiert.)
Laut Antonpolous:
"Die Bitcoin-Adresse wird aus dem öffentlichen Schlüssel durch die Verwendung von kryptografischem Einweg-Hashing abgeleitet. (Antonpolous, 2014:71)"
Mein Verständnis von öffentlichen Schlüsseln ist, dass sie sich nicht ändern, sobald sie aus einem privaten Schlüssel (über ECDSA-Multiplikation) generiert wurden:
"Da der Generatorpunkt für alle Bitcoin-Nutzer immer gleich ist, ergibt ein mit G multiplizierter privater Schlüssel k immer denselben öffentlichen Schlüssel K. (Antonpolous, 2014:68)"
Best Practice in Bezug auf Bitcoin-Adressen empfiehlt Folgendes:
„Für jede Transaktion sollte eine eindeutige Adresse verwendet werden. Die meisten Bitcoin-Softwareprogramme und -Websites helfen dabei, indem sie jedes Mal, wenn Sie eine Rechnung oder Zahlungsanforderung erstellen, eine brandneue Adresse generieren. (Antonpolous, 2014:188)“
Ich verstehe, dass das Ausführen einer Hash-Funktion für dieselben Daten immer dasselbe Ergebnis liefert (Digest):
„Für jede spezifische Eingabe ist der resultierende Hash immer gleich und kann von jedem, der denselben Hash-Algorithmus implementiert, leicht berechnet und verifiziert werden.“ (Antonpolous, 2014:188).
Angesichts all dessen lautet meine Frage, wie können verschiedene Adressen aus derselben, unveränderlichen Eingabe, nämlich dem öffentlichen Schlüssel, generiert werden?
Ist es das doppelte Hashing (SHA256 + RIPEMD160)? Ist es der Adresspool? Liegt es an deterministischen Wallets? Die Antwort ist wahrscheinlich einfach und starrt mir ins Gesicht, aber ich kann es nicht sehen. Danke für jede Klarstellung.
Aus irgendeinem Grund sind Sie zu dem Schluss gekommen, dass Sie einfach mehrere Adressen von einem einzigen öffentlichen Schlüssel ableiten können, aber der zitierte Text sagt das nicht. Es besagt, dass der öffentliche Schlüssel eindeutig aus dem privaten Schlüssel generiert wird (durch Multiplikation des Kurvengenerators G mit einer zufälligen 256-Bit-Zahl, die der private Schlüssel ist). Es heißt auch, dass die Adresse aus dem öffentlichen Schlüssel durch Hashing abgeleitet wird (RIPEMD160 & SHA256). Schließlich heißt es, dass es eine gute Idee ist, jedes Mal eine andere Adresse zu verwenden.
Das bedeutet nicht, dass Sie mehrere Adressen aus demselben öffentlichen Schlüssel generieren. Jedes Mal müssen Sie einen neuen privaten Schlüssel generieren, dann den öffentlichen Schlüssel aus diesem privaten Schlüssel und schließlich die Adresse aus dem öffentlichen Schlüssel.
Um die bereits gegebenen guten Antworten zu Schlüsselpaaren zu verstärken ...
„Als zusätzliche Firewall sollte für jede Transaktion ein neues Schlüsselpaar verwendet werden, um zu verhindern, dass sie einem gemeinsamen Eigentümer zugeordnet werden.“
Satoshi Nakamoto, Bitcoin-Whitepaper, 2009, Seite 6:
Um die Frage weiter auszuarbeiten, akzeptieren Sie, dass der in der Frage angegebene Absatz nur impliziert, dass für jede Anfrage verschiedene private/öffentliche Paare generiert werden müssen:
„Für jede Transaktion sollte eine eindeutige Adresse verwendet werden. Die meisten Bitcoin-Softwareprogramme und -Websites helfen dabei, indem sie jedes Mal, wenn Sie eine Rechnung oder Zahlungsanforderung erstellen, eine brandneue Adresse generieren. (Antonpolous, 2014:188)“
Tatsächlich ist es möglich, immer mindestens drei verschiedene gültige Bitcoin-Adressen aus demselben öffentlichen Schlüssel zu generieren, da es immer eine hybride , komprimierte und unkomprimierte Form desselben Paars öffentlicher/privater Schlüssel gibt .
Also zum Beispiel der öffentliche Schlüssel (x,y):
(50863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b2352,
2cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6)
mit seinem entsprechenden eindeutigen privaten Schlüssel, kann mit diesen drei verschiedenen Adressen ausgedrückt werden:
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
1PMycacnJaSqwwJqjawXBErnLsZ7RkXUAs
1DcuACZPCeAEmvSPzKiF8pAaZAEY1XPyue
die zwar völlig unterschiedlichen Bitcoin-Adressen entsprechen, auf die aber im Prinzip alle mit dem gleichen Paar privater/öffentlicher Schlüssel zugegriffen werden könnte.
Nate Eldredge
Nick Odell
Colman McMahon
Nate Eldredge
cpsola
Nick Odell