Ich spiele mit OP_CHECKSEQUENCEVERIFY.
Hier ist meine Transaktion, die ich ausgeben möchte:
https://tchain.btc.com/e79d469698915aa6724288ae3a4141a31706d081f39fb7fd0b956a73a9044b22
welches das folgende Einlösungsskript hat:
2 OP_CHECKSEQUENCEVERIFY f45d94733d430261962932e0c847075195916a04 OP_CHECKSIG
Aber ich bekam einen Fehler, als ich es sendete (nachdem zwei Blockbestätigungen übrig waren):
mandatory-script-verify-flag-failed (Non-canonical DER signature) (code 16)
Ich habe keine Probleme, Transaktionen auszugeben, wenn ich:
2 CHECKLOCKTIMEVERIFY
(kann jeder ausgeben)HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL
aber keine mit Kombination von ihnen. Hier ist eine unterzeichnete Transaktion:
0200000001224b04a9736a950bfdb79ff381d00617a341413aae884272a65a919896469de7000000006b4830450221008801d7f0e402724b090133ec01a817e993675a44a871f1a3afc0dba730e24ea4022044097be610bece524e90a743fa9d060cd194079105e6f6d150265a1164e722c3012103e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef020000000120a107000000000017a914f45d94733d430261962932e0c847075195916a048700000000
Kann mir jemand erklären was ich falsch mache?
PS Mit dem folgenden Einlöseskript (OP_DROP hinzugefügt)
https://tchain.btc.com/022d42355ac90e63f2667208112cf22471397dd2812645b5571da2d212596932
2 OP_CHECKSEQUENCEVERIFY OP_DROP f45d94733d430261962932e0c847075195916a04 OP_CHECKSIG
Ich habe einen anderen Fehler
(Script evaluated without error but finished with a false/empty top stack element) (code 16)
[AKTUALISIERT]:
https://tchain.btc.com/46894d9dd5e20147826523b1a3ac8e8c5c64603338430d04bd6f5846af2bb9b4
3 OP_CHECKSEQUENCEVERIFY OP_DROP OP_HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL
Versuchen Sie dann, diesen TX zu senden:
0200000001b4b92baf46586fbd040d43383360645c8c8eaca3b12365824701e2d59d4d8946000000006a47304402205649f715d2553cc4a66dd36a61b3c1b187d19f585bd40427d795c600373a45ab02203325ef44a3aae191ed3f2a90efe382d7992712c03f249f8dd61d8a30997806dc012103e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef0300000001e00f97000000000017a914f45d94733d430261962932e0c847075195916a048700000000
ich habe
error code: -26
error message:
mandatory-script-verify-flag-failed (Script evaluated without error but finished with a false/empty top stack element) (code 16)
Hier ist ein privater Schlüssel
cUB1iazKDHngknjpTHUfKtH9zNRvHn1aBMPJbK2s913zUegjkeNn
Kann es jemand ausgeben?
Sie müssen ein scriptSig
that bereitstellen, wenn es mit scriptPubKey
Ergebnissen in einem wahren (oder einem beliebigen Nicht-Null-Element) auf dem Stapel ausgeführt wird (und alle Überprüfungsoperationen besteht).
Das scriptPubKey
, was Sie (mit a) erfüllen müssen, scriptSig
ist:
2 OP_CHECKSEQUENCEVERIFY f45d94733d430261962932e0c847075195916a04 OP_CHECKSIG
(Beachten Sie, dass dies nicht der ist redeemScript
)
Das Hauptproblem ist:
OP_CHECKSIG
sucht nach einem öffentlichen Schlüssel, aber Sie haben einen Skript-Hash bereitgestellt: f45d94733d430261962932e0c847075195916a04
. Dies wird niemals erfüllt, sodass diese Transaktionsausgabe nicht ausgegeben werden kann.
Wenn Sie dasselbe redeemScript
wie zuvor verwenden möchten, möchten Sie wahrscheinlich Folgendes scriptPubKey
:
2 OP_CHECKSEQUENCEVERIFY OP_DROP HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL
Beachten Sie das , OP_DROP
weil das OP_CHECKSEQUENCEVERIFY
die 2 auf dem Stapel hinterlässt.
Um diese auszugeben, müssen Sie beliebige Signaturen und redeemScript
deren Hashwert bereitstellen f45d94733d430261962932e0c847075195916a04
.
Aktualisieren :
Das redeemScript
ist immer noch falsch. 03e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef
Versuchen Sie stattdessen 0014e17bbad678e82f8188099a351170c3e0efd4011b
. Dies ist das P2WPKH
Skript, das Sie zuvor in https://tchain.btc.com/46894d9dd5e20147826523b1a3ac8e8c5c64603338430d04bd6f5846af2bb9b4 verwendet haben . Beachten Sie auch, dass dies ein Segwit-Skript ist, sodass es in den Zeugendaten nach der Signatur und dem Pubkey sucht: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#p2wpkh
Raghav Sood
OP_DUP OP_HASH160 <hash> OP_EQUAL OP_CHECKSIG
? Ihr Beispiel überprüft nur, ob der Pubkey übereinstimmt, es überprüft nicht die Signatur.JBaczuk
P2SH
Beispiel zu geben, keinP2PKH
.Raghav Sood
Andreas
JBaczuk
03e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef
, der nicht den richtigen Wert für dieOP_EQUAL
Überprüfung hat. Sie brauchen dasredeemScript
that hashes tof45d94733d430261962932e0c847075195916a04
Andreas
JBaczuk
redeemScript
wird bereitgestellt inscriptSig
:0014e17bbad678e82f8188099a351170c3e0efd4011b
Andreas
JBaczuk
Andreas
Andreas