¿Cómo firmar una transacción de bitcoin con una clave privada de 'bitcoind' y una billetera que no sea de bitcoin?

Quiero crear y firmar una transacción de bitcoin usando solo 'bitcoind' y 'bitcoin-cli' .

Puedo crear una transacción usando la API de RPC createrawtransaction , pero falla la firma usando 'signrawtransaction'.

ACTUALIZACIÓN : Lo descubrí y me respondí a mí mismo a continuación. Tenga cuidado de que scriptPubKey sea correcto y deje redimirScript vacío para transacciones simples.

La clave privada no se almacena en la billetera integrada de bitcoind . Es decir, el par de claves privada/pública fue creado por la utilidad vanity (por ejemplo).

Configuración

  • dirección "de": 1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD( From_Addr_1As)
  • dirección "a": 1Mu5S5fuztimKZizvYZjKwpYfM9ZFf7zmo( To_Addr_1Mu)
  • transacción que envió fondos a From_Addr_1As: 4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e( Prev_Tx_4325)
  • nueva transacción esNew_Tx

Fondos

La transacción ( Prev_Tx_4325) envió 0.00187 BTC a From_Addr_1As: https://blockchain.info/tx/4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e - también se ve en la vista de transacción de dirección https://blockchain.info/address/1AsJjnWg5QKBZThM86mmK

Quiero enviar 0.00186 BTC de From_Addr_1Asa To_Addr_1Mu. La tarifa de 0.00001 BTC incluida.

Bash Shell: Crear transacción sin procesar (exitoso):

$ ./bitcoin-cli -rpcpassword=123456 createrawtransaction '[{"txid":"4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e","vout":0}]' '{"1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD":0.00186}'

Salida de comando:

01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000

Bash Shell: decodificar transacción sin procesar (exitosa):

Preste atención: ¡'scriptSig' está vacío!

$ ./bitcoin-cli -rpcpassword=123456 decoderawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000

Salida de comando:

{ "txid" : "b1ff3da36a6d7c3aaaee41428a7e239baa6243e37d7e1db60ea022d9f994ec52", "version" : 1, "locktime" : 0, "vin" : [ { "txid" : "4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e", "vout" : 0, "scriptSig" : { "asm" : "", "hex" : "" }, "sequence" : 4294967295 } ], "vout" : [ { "value" : 0.00186000, "n" : 0, "scriptPubKey" : { "asm" : "OP_DUP OP_HASH160 01ddbca1a39b60b54fb671297a4a20a7681e0171 OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac", "reqSigs" : 1, "type" : "pubkeyhash", "addresses" : [ "1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD" ] } } ] }

Bash Shell: Firmar transacción sin procesar (exitosa):

Presta atención:

  • scriptPubKeyse copia de laPrev_Tx_4325
  • redeemScriptqueda una cadena vacía: ""

./bitcoin-cli -rpcpassword=123456 signrawtransaction "01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000" '[{"txid":"4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e","vout":0,"scriptPubKey":"76a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac","redeemScript":""}]' '["5J34hLVaP9UAj4BcdbgYoPia93zzDfo8JhTzUN2tf8qqRiZqtjY"]' "ALL"

Salida de comando:

{ "hex" : "01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000", "complete" : true }

Bash Shell: Decodificar transacción firmada (exitosa):

$ ./bitcoin-cli -rpcpassword=123456 decoderawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000

Salida de comando:

{ "txid" : "267550934eb413a623459464d88cb14ff47fa192df720cf8485b590812db8fba", "version" : 1, "locktime" : 0, "vin" : [ { "txid" : "4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e", "vout" : 0, "scriptSig" : { "asm" : "304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a01 04aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4a", "hex" : "47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4a" }, "sequence" : 4294967295 } ], "vout" : [ { "value" : 0.00186000, "n" : 0, "scriptPubKey" : { "asm" : "OP_DUP OP_HASH160 01ddbca1a39b60b54fb671297a4a20a7681e0171 OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac", "reqSigs" : 1, "type" : "pubkeyhash", "addresses" : [ "1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD" ] } } ] }

Bash Shell: enviar transacción sin procesar (exitosa):

./bitcoin-cli -rpcpassword=123456 sendrawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000 267550934eb413a623459464d88cb14ff47fa192df720cf8485b590812db8fba

Salida del comando: ¡No hay salida en el éxito del comando!

Conclusión :-)

Al explicar y formular la pregunta encontré una solución. Realmente vale la pena preguntar en StackExchange, ¡y obtuve la respuesta por mi cuenta!

ACTUALIZACIÓN : Gracias por los comentarios, me respondí a mí mismo a continuación. Asegúrese de que scriptPubKey sea correcto y deje redimirScript vacío para transacciones simples.

¿Cuál es la pregunta?
Haga la pregunta y luego respóndala usted mismo en lugar de poner la pregunta y la respuesta en la "pregunta"
Como ya sugirió @JanMoritzLindemann, su publicación no se ajusta a nuestro formato. Por favor, sepárelo en una pregunta y una respuesta. Puede encontrar una explicación visual del formato Stackexchange en nuestro Acerca de .
¿Por qué su vout->valor está en btc mientras que el mío se muestra en satoshis?

Respuestas (1)

Respondiendo mi propia pregunta

Básicamente, dos cosas entraron en la forma de crear y firmar una transacción de bitcoin sin procesar usando el programa 'bitcoind':

  • Dejando 'redeemScript' para ser la cadena vacía
    • ¡Tiene que estar vacío para una transacción simple de bitcoin!
  • Uso de comillas simples (') para hacer que la llamada RPC de bitcoin se vea bien y no desordenada.

Eso es todo.

when i do sendrawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000 i get error code: -25 error message: Missing inputs