Как подписать биткойновую транзакцию с «биткойным» и не-биткойно-кошельковым закрытым ключом?
Я хочу создать и подписать биткойновую транзакцию , используя только «биткойн» и «биткойн-кли» .
Я могу создать транзакцию с использованием API createrawtransaction RPC, но ее подписание с использованием функции signrawtransaction завершается неудачно.
ОБНОВЛЕНИЕ : Я понял это и ответил ниже. Позаботьтесь о том, чтобы scriptPubKey был прав и оставил redeemScript пустым для простых транзакций.
Закрытый ключ не сохраняется в встроенном кошельке bitcoind . То есть, частная /открытая пара ключей была создана утилитой тщеславия (например).
Настройка
- "из" address ":
1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD
(From_Addr_1As
) - "to" адрес:
1Mu5S5fuztimKZizvYZjKwpYfM9ZFf7zmo
(To_Addr_1Mu
- , которая отправила средства в
From_Addr_1As
:4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e
(Prev_Tx_4325
) - новая транзакция
New_Tx
Финансирование
Транзакция (Prev_Tx_4325
) отправила 0,00187 BTC на From_Addr_1As
:
https://blockchain.info/tx/4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e - также видели в представлении адрес сделки https://blockchain.info/address/1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD
Я хочу отправить 0.00186 BTC из From_Addr_1As
в To_Addr_1Mu
.
В стоимость входит 0,00001 BTC.
Bash Shell: создать необработанную транзакцию (успешно):
$ ./bitcoin-cli -rpcpassword=123456 createrawtransaction '[{"txid":"4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e","vout":0}]' '{"1AsJjnWg5QKBThM6mK9jZ8mmo6KUzDjRD":0.00186}'
Выход команды:
01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000
Bash Shell: декодирование необработанной транзакции (успешно):
Обратите внимание: «scriptSig» пуст!
$ ./bitcoin-cli -rpcpassword=123456 decoderawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000
Выход команды:
{
"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: Sign Raw Transaction (успешно):
Обратите внимание:
-
scriptPubKey
копируется изPrev_Tx_4325
-
redeemScript
остается пустая строка: ""
./bitcoin-cli -rpcpassword=123456 signrawtransaction "01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba525430000000000ffffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000" '[{"txid":"4325a5db66cbc8e9ff6a585cd0e8a2288ea74f9b46d2972b93f63bbb7d09a23e","vout":0,"scriptPubKey":"76a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac","redeemScript":""}]' '["5J34hLVaP9UAj4BcdbgYoPia93zzDfo8JhTzUN2tf8qqRiZqtjY"]' "ALL"
Выход команды:
{
"hex" : "01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000",
"complete" : true
}
Bash Shell: декодирование подписанной транзакции (успешно):
$ ./bitcoin-cli -rpcpassword=123456 decoderawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000
Выход команды:
{
"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: отправить необработанную транзакцию (успешно):
./bitcoin-cli -rpcpassword=123456 sendrawtransaction 01000000013ea2097dbb3bf6932b97d2469b4fa78e28a2e8d05c586affe9c8cb66dba52543000000008a47304402206f40f4eb8c6cab7c6dd45a132d437e736a6a0dddfb2b78b10e6efbcaf61592f602200d329a57d7a0c969cc349f41852da4ba1a3bc2245e656bdd41780455b97bf84a014104aa49fbe6608076318ff09171e3c2b4a2effa52d53a417371140642996693ae3ac53ce300fff7fef650d0a2418b087a237aa6838eed3bdfad0ec0069df7209f4affffffff0190d60200000000001976a91401ddbca1a39b60b54fb671297a4a20a7681e017188ac00000000
267550934eb413a623459464d88cb14ff47fa192df720cf8485b590812db8fba
Выход команды: Нет результата при успешном выполнении команды!
Заключение: -)
Объясняя и формулируя вопрос, я нашел решение. Это действительно стоит спросить на StackExchange, и я добрался до ответа сам!
ОБНОВЛЕНИЕ : Спасибо за комментарии - я ответил себе ниже. Убедитесь, что scriptPubKey является правильным и оставить redeemScript пустым для простых транзакций.
1 ответ
Отвечая на мой вопрос
Две вещи в основном получили возможность создавать и подписывать сырую биткойновую транзакцию с использованием программы «биткойн»:
- Если оставить 'redeemScript' пустой строкой
- Он должен быть пустым для простой транзакции биткойнов!
- Использование метки одной кавычки ('), чтобы сделать вызов биткойна RPC приятным и не беспорядочным.
Вот и все.