Signieren von Bitcoin-Transaktionen

Es gibt einen Teil des Bitcoin-Protokolls, den ich nicht ganz verstehe.

Wenn Sie eine Transaktion durchführen und die Ausgabe einer vorherigen Transaktion für beispielsweise 1 BTC ausgeben, stellen Sie eine Signatur bereit, indem Sie den privaten Schlüssel verwenden, der mit dem öffentlichen Schlüssel (oder der Adresse) übereinstimmt, der in der Ausgabe der vorherigen Transaktion erscheint. Meine erste Frage hier ist, was genau signiert wird?

Zweitens, wenn die Transaktion gesendet wird, was hindert einen böswilligen Peer daran, die Eingabe meiner Transaktion mit Signatur für 1 BTC zu nehmen und eine neue Transaktion mit derselben Eingabe zu fälschen, die an ihre eigene Adresse geht? Um dies zu vermeiden, müsste die gesamte Transaktion (einschließlich Ausgaben) signiert werden. Ich konnte kein Dokument finden, das angibt, dass die gesamte Transaktion signiert ist.

Ja, großartige Frage, ich habe mir die gleiche Frage gestellt, aber ich habe die Antwort gefunden, als ich das gesamte Transaktions-Wiki durchsuchte.
Das ist eine gute Frage, ich frage dasselbe und kann nicht verstehen, wie die Ausgabeliste geschützt ist, es sieht aus wie Ausgaben, die mit einem öffentlichen Schlüssel signiert sind, aber öffentliche Schlüssel sind nicht sicher.
gute Frage. Es ist wirklich schwer, eine Dokumentation darüber zu finden, was genau in Bitcoin-Transaktionen signiert ist!

Antworten (1)

Soweit ich weiß, signieren Sie sowohl die Eingabe als auch die Ausgabe der Transaktion, was bedeutet, dass niemand den Inhalt der Transaktion ändern kann, ohne Ihre Signatur ungültig zu machen. Ich hatte auch einige Probleme mit diesem Teil des Algorithmus und habe sogar früher eine ähnliche Frage gestellt , aber diese befasst sich eher mit den Low-Level-Bitoperationen als mit dem High-Level-Konzept.

Was signiert wird, ist in der Tat (eine modifizierte Version) der gesamten Transaktion. Die Details sind komplex (siehe die als Antwort verknüpfte Frage), aber am wichtigsten ist, dass die Transaktionseingaben vor dem Signieren entfernt werden (da sich die Signatur sonst vor dem Signieren selbst signieren müsste, was rechnerisch nicht machbar ist).
Danke, das macht Sinn. Wenn es also 3 Eingaben in einer Transaktion gibt, enthält jede Eingabe eine Signatur (es können 3 verschiedene Signaturen sein) der gesamten Transaktion (abzüglich der Eingaben), richtig?