Versuchen Sie hier, die Grundlagen des Standard-Transaktionsskripts von Bitcoin zu lernen. Für eine Transaktion, bei der Alice Coins an Bob gesendet hat, der nun versucht, sie einzulösen, haben wir die verketteten scriptSig und scriptPubKey wie unten
<Sig> <PubKey> OP_DUP OP_HASH160 <PubkeyHash> OP_EQUALVERIFY OP_CHECKSIG
PubKey
Wenn wir sagen, dass der Empfänger das und Sig
in angeben muss scriptSig
, was genau ist in Sig
? Mein Verständnis ist, dass Bob die gesamte Transaktion mit seinem privaten Schlüssel signiert und dies dann OP_CHECKSIG
verifiziert. In diesem Fall sind die Eingaben OP_CHECKSIG
die Transaktionsdaten und der öffentliche Schlüssel. Bitte teilen Sie mir mit, ob dies richtig ist, und wenn nicht, welche Eingaben sind dann genau OP_CHECKSIG
erforderlich?
Zweitens, was ist der Sinn des ersten Teils des Skripts, der die Übereinstimmung zwischen scriptSig
's PubKey
und scriptPubKey
? Könnten wir nicht stattdessen ein einfacheres Skript erhalten, bei dem die Ausgaben einer Transaktion den öffentlichen Schlüssel selbst anstelle des Hashs des öffentlichen Schlüssels angeben? In diesem Fall hätten wir einfach
<Sig> <PubKey> OP_CHECKSIG
,
woher Sig
kommt der Bob und PubKey
von Alice.
Die Signatur wird mathematisch unter Verwendung des privaten Schlüssels und der Nachricht generiert, ist aber nicht die Nachricht selbst (sie verwendet den Hash der Nachricht während des Signiervorgangs, die Nachricht kann nicht nur aus der Signatur wiederhergestellt werden). Es ist nur ein Wert (insbesondere zwei Zahlen, genannt r und s), der anhand des öffentlichen Schlüssels und der Nachricht überprüft werden kann, um festzustellen, ob es sich um eine gültige Signatur handelt. In diesem Fall handelt es sich bei der Nachricht um die Transaktionsdaten, die die Transaktion auch vor Änderungen schützen, da bei einer Änderung die Signatur ungültig würde. Wenn Sie interessiert sind, können Sie hier mehr über den Elliptic Curve Digital Signature Algorithm (ECDSA) lesen .
Tatsächlich wäre es möglich, nur den öffentlichen Schlüssel ohne die Hash-Schritte zu verwenden, dies wird als Pay to Public Key, P2PK bezeichnet und ist auch ein akzeptabler Ausgabetyp. Bitte beachten Sie jedoch, dass eine Bitcoin-Adresse nicht der öffentliche Schlüssel selbst ist. Um diese Art von Ausgabe zu erstellen, müsste der Absender den öffentlichen Schlüssel kennen, um ihn in die Ausgabe einzufügen. Es ist nicht möglich, den öffentlichen Schlüssel von einer Bitcoin-Adresse zu erhalten, da die Adresse ein Hash dieses öffentlichen Schlüssels ist, um ihn für die allgemeine Verwendung kürzer und einfacher zu machen, und somit eine nicht-injektive Falltürfunktion ist.
Benutzer1936752
meshcollider
pebwindkraft
craf
meshcollider