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).
1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD
( From_Addr_1As
)1Mu5S5fuztimKZizvYZjKwpYfM9ZFf7zmo
( To_Addr_1Mu
)From_Addr_1As
: 4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e
( Prev_Tx_4325
)New_Tx
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_1As
a To_Addr_1Mu
. La tarifa de 0.00001 BTC incluida.
$ ./bitcoin-cli -rpcpassword=123456 createrawtransaction '[{"txid":"4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e","vout":0}]' '{"1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD":0.00186}'
Salida de comando:
01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000
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" ] } } ] }
Presta atención:
scriptPubKey
se copia de laPrev_Tx_4325
redeemScript
queda 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 }
$ ./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" ] } } ] }
./bitcoin-cli -rpcpassword=123456 sendrawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000 267550934eb413a623459464d88cb14ff47fa192df720cf8485b590812db8fba
Salida del comando: ¡No hay salida en el éxito del comando!
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.
Básicamente, dos cosas entraron en la forma de crear y firmar una transacción de bitcoin sin procesar usando el programa 'bitcoind':
Eso es todo.
pieter wuille
Jan Moritz
muro
usuario10603