Estoy jugando con OP_CHECKSEQUENCEVERIFY.
Aquí está mi transacción que estoy tratando de gastar:
https://tchain.btc.com/e79d469698915aa6724288ae3a4141a31706d081f39fb7fd0b956a73a9044b22
que tiene el siguiente script de canje:
2 OP_CHECKSEQUENCEVERIFY f45d94733d430261962932e0c847075195916a04 OP_CHECKSIG
Pero recibí un error cuando lo transmití (después de que quedaron dos confirmaciones de bloque):
mandatory-script-verify-flag-failed (Non-canonical DER signature) (code 16)
No tengo problemas para gastar la transacción si yo:
2 CHECKLOCKTIMEVERIFY
(puede pasar cualquiera)HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL
pero ninguno con combinación de ellos. Aquí hay una transacción firmada:
0200000001224b04a9736a950bfdb79ff381d00617a341413aae884272a65a919896469de7000000006b4830450221008801d7f0e402724b090133ec01a817e993675a44a871f1a3afc0dba730e24ea4022044097be610bece524e90a743fa9d060cd194079105e6f6d150265a1164e722c3012103e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef020000000120a107000000000017a914f45d94733d430261962932e0c847075195916a048700000000
¿Alguien puede explicarme qué estoy haciendo mal?
PD Con el siguiente script de canje (OP_DROP agregado)
https://tchain.btc.com/022d42355ac90e63f2667208112cf22471397dd2812645b5571da2d212596932
2 OP_CHECKSEQUENCEVERIFY OP_DROP f45d94733d430261962932e0c847075195916a04 OP_CHECKSIG
tengo otro error
(Script evaluated without error but finished with a false/empty top stack element) (code 16)
[ACTUALIZADO]:
https://tchain.btc.com/46894d9dd5e20147826523b1a3ac8e8c5c64603338430d04bd6f5846af2bb9b4
3 OP_CHECKSEQUENCEVERIFY OP_DROP OP_HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL
Luego, tratando de transmitir este tx:
0200000001b4b92baf46586fbd040d43383360645c8c8eaca3b12365824701e2d59d4d8946000000006a47304402205649f715d2553cc4a66dd36a61b3c1b187d19f585bd40427d795c600373a45ab02203325ef44a3aae191ed3f2a90efe382d7992712c03f249f8dd61d8a30997806dc012103e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef0300000001e00f97000000000017a914f45d94733d430261962932e0c847075195916a048700000000
Obtuve
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)
Aquí hay una clave privada
cUB1iazKDHngknjpTHUfKtH9zNRvHn1aBMPJbK2s913zUegjkeNn
¿Alguien puede gastarlo?
Debe proporcionar scriptSig
eso, cuando se ejecuta con scriptPubKey
resultados en un verdadero (o cualquier elemento distinto de cero) en la pila (y pasa todas las operaciones de verificación).
Lo scriptPubKey
que necesita para satisfacer (con un scriptSig
) es:
2 OP_CHECKSEQUENCEVERIFY f45d94733d430261962932e0c847075195916a04 OP_CHECKSIG
(Tenga en cuenta que este no es el redeemScript
)
Hay problema principal es:
OP_CHECKSIG
está buscando una clave pública, pero ha proporcionado un hash de secuencia de comandos: f45d94733d430261962932e0c847075195916a04
. Esto nunca se cumplirá, por lo que el resultado de esta transacción no se puede gastar.
Si desea usar lo mismo redeemScript
que antes, probablemente desee lo siguiente scriptPubKey
:
2 OP_CHECKSEQUENCEVERIFY OP_DROP HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL
Nótese OP_DROP
porque OP_CHECKSEQUENCEVERIFY
deja el 2 en la pila.
Para gastar esto, debe proporcionar cualquier firma y redeemScript
cuyo hash sea igual a f45d94733d430261962932e0c847075195916a04
.
Actualizar :
El redeemScript
todavía está mal. En lugar de 03e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef
, intente 0014e17bbad678e82f8188099a351170c3e0efd4011b
. Este es el P2WPKH
script que usó anteriormente en https://tchain.btc.com/46894d9dd5e20147826523b1a3ac8e8c5c64603338430d04bd6f5846af2bb9b4 . También tenga en cuenta que este es un script segwit, por lo que buscará la firma y la clave pública en los datos testigo: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#p2wpkh
Raghav Sood
OP_DUP OP_HASH160 <hash> OP_EQUAL OP_CHECKSIG
? Su ejemplo solo verifica que la clave pública coincida, no verifica la firma.JBaczuk
P2SH
ejemplo, no un archivoP2PKH
.Raghav Sood
Andrés
JBaczuk
03e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef
que no genera el valor correcto para elOP_EQUAL
cheque. Necesitas elredeemScript
hash paraf45d94733d430261962932e0c847075195916a04
Andrés
JBaczuk
redeemScript
se proporciona en elscriptSig
:0014e17bbad678e82f8188099a351170c3e0efd4011b
Andrés
JBaczuk
Andrés
Andrés