Ich habe gerade angefangen, die Bitcoin-Programmierung durch Jimmy Songs Programming Bitcoin zu lernen . Jimmy sagt, dass einige der Vorteile von p2pkh gegenüber p2pk sind:
ein kleinerer ScriptPubKey
seinen öffentlichen Schlüssel privat zu halten
Ich stimme dem ersten Vorteil vollkommen zu, aber ich habe ein wenig Probleme mit dem zweiten Vorteil.
Jimmy erklärt, dass man Bitcoin von einer anderen Entität stehlen könnte, wenn ECDSA gebrochen wäre, weil sie ihren öffentlichen Schlüssel im ScriptPubKey finden könnten (wenn sie p2pk verwenden würden) und eine gültige Signatur erstellen könnten.
Meine Frage ist: Wenn wir nur den öffentlichen Schlüssel vom ScriptPubKey zum ScriptSig verschieben, welche Sicherheit gewährt uns das, wenn auch auf das ScriptSig zugegriffen werden kann? Wenn ich ein UTXO ausgeben würde, das zu meinem öffentlichen Schlüssel-Hash gemacht wurde, wäre mein öffentlicher Schlüssel öffentlich. Könnte ein böswilliger Benutzer, der ECDSA gebrochen hat, nicht weiter nach einem UTXO ScriptPubKey mit meinem Hash darin suchen, meinen öffentlichen Schlüssel aus der vorherigen Transaktion kopieren, eine Signatur generieren und meine Bitcoin stehlen? Es scheint mir, dass mein öffentlicher Schlüssel privat ist, solange ich nichts ausgebe.
Natürlich weiß ich, dass mir etwas fehlt :) Jede Hilfe ist willkommen.
Bitcoin-Adressen und damit auch der öffentliche Schlüssel sollten idealerweise immer nur einmal verwendet werden. Ihre Zeit der Offenlegung des öffentlichen Schlüssels in P2PKH ist also die Zeit zwischen der Ausgabe und der Bestätigung. Bei P2PK ist der öffentliche Schlüssel immer allen bekannt. Es gibt einen beträchtlichen Unterschied zwischen den beiden.
Mike D