Redimir OP_SHA256 hash OP_EQUAL (Testnet) Tx

Creé el siguiente Tx no estándar en la red Testnet3: 6b52c981e6814072db77cb755b2633cd126b4ca21501d18ab994531e17a4a813

{
hash: "6b52c981e6814072db77cb755b2633cd126b4ca21501d18ab994531e17a4a813",
ver: 1,
vin_sz: 1,
vout_sz: 1,
lock_time: 0,
size: 234,
in: [
{
prev_out: {
hash: "a61a8bd4aaab2aa935f2e62672a783ca936821c94e021caed747d3ff8b658ff7",
n: 0
},
scriptSig: "3045022100b4b97d5f21efa866ffc25ae4e20b4427adbeffca0fb8ea5d90ef261e1050c43e022077d1e734b077630b3634f91b2d60eb267f4a4e3e25ad9a0f56825363eee0fdc001 04dcc0cf808a5313ee50185575a850738011730247273aa3e11f400f7904e01fda86383ff0e8ed2ba201cb6cfb974d6148199ffc635d92b92b834ec04885bb9a71"
}
],
out: [
{
value: "0.00080000",
scriptPubKey: "OP_SHA256 931d236179670b00348f87bea4199fe18297f0ef26da02c7542bd54d5b7836d8 OP_EQUAL"
}
]
}

La salida de interés, es: "OP_SHA256 931d236179670b00348f87bea4199fe18297f0ef26da02c7542bd54d5b7836d8 OP_EQUAL".

hash 'secreto' =adfladsfhuifo8ry8fh4u4et4e5tsg415et458s43etg41s35e4g3541r35g143sg54s385g41s535e1g435s4g;.:;,[@snrltgnjslenjrgklsnleignilsnklgnslnglk

sha256(secret)=931d236179670b00348f87bea4199fe18297f0ef26da02c7542bd54d5b7836d8

La página de BTC Wiki Script (a saber, la sección Puzzle Tx ) proporciona una discusión de alto nivel (de DOUBLE SHA256, tenga en cuenta que esto es solo SHA256, es decir 0xa8. Esta discusión de BTCtalk proporciona el formato de Tx sin formato secreto antes mencionado, etc.


estoy tratando de redimir010000000113a8a4171e5394b98ad10115a24c6b12cd33265b75cb77db724081e681c9526b0000000000ffffffff01204e000000000000864c846164666c61647366687569666f38727938666834753465743465357473673431356574343538733433657467343173333565346733353431723335673134337367353473333835673431733533356531673433357334673b2e3a3b2c5b40736e726c74676e6a736c656e6a72676b6c736e6c6569676e696c736e6b6c676e736c6e676c6b00000000

{
"txid" : "717b0d0db10f79d38553d2aeda3994768fda306fa5331d055fb3cf00818a6d7e",
"version" : 1,
"locktime" : 0,
"vin" : [
{
"txid" : "6b52c981e6814072db77cb755b2633cd126b4ca21501d18ab994531e17a4a813",
"vout" : 0,
"scriptSig" : {
"asm" : "",
"hex" : ""
},
"sequence" : 4294967295
}
],
"vout" : [
{
"value" : 0.00020000,
"n" : 0,
"scriptPubKey" : {
"asm" : "6164666c61647366687569666f38727938666834753465743465357473673431356574343538733433657467343173333565346733353431723335673134337367353473333835673431733533356531673433357334673b2e3a3b2c5b40736e726c74676e6a736c656e6a72676b6c736e6c6569676e696c736e6b6c676e736c6e676c6b",
"hex" : "4c846164666c61647366687569666f38727938666834753465743465357473673431356574343538733433657467343173333565346733353431723335673134337367353473333835673431733533356531673433357334673b2e3a3b2c5b40736e726c74676e6a736c656e6a72676b6c736e6c6569676e696c736e6b6c676e736c6e676c6b",
"type" : "nonstandard"
}
}
]
}

Entonces, se ve bien, ¿verdad?

Bueno, firmar (con signrawtransaction) devuelve datos hexadecimales con una bandera falsa para completar. Además, tanto las cadenas hexadecimales firmadas como las no firmadas devuelven este error:

  • 16: mandatory-script-verify-flag-failed (Operation not valid with the current stack size) (code -26)

¿Alguien tiene alguna idea de cuál puede ser el problema y, quizás más útil para todos los demás, suponiendo que P2SH no sea una opción , cómo se canjean estos resultados?

Respuestas (1)

Entonces, se ve bien, ¿verdad?

No. No se ve bien. Tienes que poner tu 'secreto' en scriptSig. Y su scriptPubkey debe canjearse a una de sus direcciones (por ejemplo, a msimoNvz23QXyiRofLtGSCsVdkdsNJn4SU). No debe intentar firmar esta transacción; canjearla no requiere la firma ecdsa

algo como esto: (lo siento, lo hice "a mano", por lo que puede ser incorrecto)

01000000
01 
13a8a4171e5394b98ad10115a24c6b12cd33265b75cb77db724081e681c9526b
00000000

86    // length of script
4c84  // push 0x84 following bytes
6164666c61647366687569666f38727938666834753465743465357473673431356574343538733433657467343173333565346733353431723335673134337367353473333835673431733533356531673433357334673b2e3a3b2c5b40736e726c74676e6a736c656e6a72676b6c736e6c6569676e696c736e6b6c676e736c6e676c6b
ffffffff

01                 // one output
204e000000000000   // value in hex
19                 // length
76 A9 14 85ddbd9c2f9733dc3860b9e1ffcdc0da2633004b 88 AC // redeem to msimoNvz23QXyiRofLtGSCsVdkdsNJn4SU

00000000
¡Por supuesto! Eso tiene sentido. La confusión surgió inicialmente porque no se requería la firma, pero en retrospectiva, veo que la redención se basa en la firma, lo cual tiene sentido. Y claramente, el Tx es un desastre, dado que las salidas/entradas faltan por completo o se intercambian en su lugar. Lo probaré dentro de una hora.