Transaktionssignaturalgorithmus

Wie ich weiß, gibt der standardmäßige digitale ECDSA-Signaturalgorithmus zwei Werte zurück (gemäß diesem Artikel oder Wikipedia), aber Transaktions-Push-Dienste oder APIs wie diese erfordern eine Zeichenfolge als Signatur. Kann jemand erklären, was diese Zeichenfolge ist und wie ich sie mit diesen Werten erhalten kann? Ist es mit OpenSSL möglich? Vielen Dank!

Antworten (1)

Das digitale ECDSA-Signaturschema gibt zwei Werte zurück. Genauer gesagt werden die auf der elliptischen Kurve berechneten X- und Y -Werte zurückgegeben.

In Bitcoin ist die Signatur DER-codiert, die als Zeichenfolge dargestellt wird, die die X- und Y -Werte sowie einige Header-Daten enthält. Aber sowohl X als auch Y können leicht daraus extrahiert werden, wenn die Zeichenfolge von links nach rechts gelesen wird.

Tatsächlich verwendet das Bitcoin-Protokoll mehr Informationen als nur die über die X- und Y - Werte. Beispielsweise wird die Größe der DER-codierten Signatur angegeben, aber auch ein sogenannter Signaturtyp wird verwendet, um zu definieren, für welchen Teil der Transaktion die Signatur berechnet wurde.

Sehen Sie hier unter dem Abschnitt "Transaktion unterschreiben", um zu sehen, wie es genau funktioniert. In der Tabelle sehen Sie, wie eine berechnete Signatur in einem scriptSig verwendet wird.

Die Details bezüglich der DER-Kodierung wurden hier besprochen .