'01' am Ende der Signaturen

Ich bin verwirrt über die Endmarkierung am Ende von Signaturen (in meinem Fall einzelne Sigs für einen Tx, der einen P2SH ausgibt) in pybitcointools:

pybitcointools: 304402204dae851c29a117383c5c535086a7fe899c9c5f0d927a4e680498fdd9b244cb15022058fea40a9f8c3988b17556fceacdce063860057fd8c6ad84de40715d2

Bitcore: 304402204dae851c29a117383c5c535086a7fe899c9c5f0d927a4e680498fdd9b244cb15022058fea40a9f8c3988b17556fceacdce063860057fd8c6ad84de407758d2

Dies sind zwei gleiche Signaturen (dh gleiche Tx, Eingabe, privater Schlüssel). Nur, in pybitcointoolsder 'Implementierung, haben Sie eine 01 am Ende . Warum?

Liegt es vielleicht am Hashtyp?

Danke

Antworten (2)

Es ist der Hash-Typ, in diesem Fall ist es SIGHASH_ALL . Um die digitale Signatur innerhalb der Skriptsprache zu verifizieren, muss am Ende der digitalen Signatur ein Hash-Typ angehängt werden. Wenn Sie die Signatur jedoch mit etwas wie openssl überprüfen, wäre die Bitcore-Signatur gültig.

Danke. Bedeutet dies, dass wir bei Verwendung von openssl zur Überprüfung der Signatur den Hash-Typ nicht kennen müssen?
@hartmut Das stimmt. OpenSSL prüft nur die DER-Signatur. Byte 2 des DER ist die Signaturlänge (dh kein Hashcode)
@WizardOfOzzie Ok danke. Wenn Sie einen Link haben, den Sie mir zum Weiterlesen empfehlen können, können Sie ihn gerne posten :).

In bitcore-lib wird der Sighash-Typ hinzugefügt, wenn das Eingabeskript (scriptSig) für die Transaktion erstellt wird, zum Beispiel hier: https://github.com/bitpay/bitcore-lib/blob/9e82395e71f8c1a9d4b1e4e4fc2b90085d5443d9/lib/script/script. js#L865-L886

Sowie mit der toTxFormatMethode: https://github.com/bitpay/bitcore-lib/blob/764aa6d4e9f28969192db2e8c1c82326cdbb6a6b/lib/crypto/signature.js#L300-L305

Danke! Zusammen mit bitcoin.stackexchange.com/questions/37125/… hat mir Ihre Antwort geholfen, es endlich zu bekommen.