Сценарий:
Майкл получает 0,05000000 BTC от Пабло и еще 0,01000000 BTC от Кураданга. Майкл также хочет отправить Бертенгу 0,02500000 BTC. Каждая сумма, которую получает Майкл, имеет соответствующий txid и другие детали. Давайте проверим это с помощью команды
listunspent
, затем создадим необработанную транзакцию с помощьюcreaterawtransaction
, после этого подпишем ее с помощьюsignrawtransaction
и отправим эту необработанную транзакцию с помощьюsendrawtransaction
.
Дано:
- Биткойн-адрес Майкла: mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe
- Биткойн-адрес Berteng: mxh3H416KCRoBDiweSESew5YJyAk1nxLrN
- Отправить на Berteng: 0,02500000 mBTC
Шаг 1)
listunspent
Формат:
$ bitcoin-cli listunspent [misconf=1] [max_number_confirmation=99999999] '''["<wallet_address>"]'''
Давайте сверим список неизрасходованных средств Майкла с его адресом.
Выполнить:
$ bitcoin-cli listunspent 1 99999999 '''["mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"]'''
Результат:
[{
"txid": "12b8e7ede4992f4d30f93idj3085746951d945e39f40becebd7c290af8c2e7ad",
"vout": 1,
"address": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe",
"account": "micz",
"scriptPubKey": "76a9143aa28e1740a6a5a2190975b6e7f1ad67aaec9a3988ac",
"amount": 0.05000000,
"confirmations": 94,
"spendable": true
}, {
"txid": "8443bc63b65d569ff9ekwm37sy3b67b9c7c6f8f386c3cdf372b260961b64ec9fc",
"vout": 1,
"address": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe",
"account": "micz",
"scriptPubKey": "76a9143aa28e1740a6a5a2190975b6e7f1ad67aaec9a3988ac",
"amount": 0.01000000,
"confirmations": 93,
"spendable": true
}]
Здесь мы видим результаты, по которым нашему адресу mkrz… были присвоены 50 и 10 mBTC. Чтобы провести этот вывод, мы создадим новую транзакцию.
Шаг 2)
createrawtransaction
Нам нужно выбрать несколько блоков с достаточным количеством из результата
listunspent
. Поскольку нам нужно отправить всего 0,02500000 mBTC, я думаю, что в первом блоке достаточно суммы для совершения транзакции.
Формат:
$ bitcoin-cli createrawtransaction
'[{
"txid" : "<txid_of_selected_block>",
"vout" : <vout>
}]'
'{"<recipient_address>": <amount_to_send>, "<sender_address>": <amount_change>}'
Чтобы заплатить комиссию, мы уменьшим вывод сдачи на 0,5 миллибит, как вы можете видеть ниже.
Выполнить:
$ bitcoin-cli createrawtransaction
'[{
"txid" : "12b8e7ede4992f4d30f93idj3085746951d945e39f40becebd7c290af8c2e7ad",
"vout" : 0
}]'
'{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025, "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe": 0.0245}'
Результат
0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
Команда createrawtransaction создает необработанную шестнадцатеричную строку, которая кодирует предоставленные нами сведения о транзакции. Если вы хотите декодировать шестнадцатеричный код, просто используйте команду decoderawtransaction.
Шаг 3)
signrawtransaction
подписывает транзакцию в формате сериализованной транзакции, используя закрытые ключи, хранящиеся в кошельке или предоставленные в вызове.
Формат:
$ bitcoin-cli signrawtransaction <hex_createrawtransaction>
Выполнить:
$ bitcoin-cli signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
Результат:
{
"hex" : "0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000",
"complete" : true
}
Теперь команда signrawtransaction возвращает еще одну необработанную транзакцию в шестнадцатеричном коде.
Шаг 4)
sendrawtransaction
RPC проверяет транзакцию и передает ее в одноранговую сеть.
Формат:
$ bitcoin-cli sendrawtransaction <hex_signrawtransaction>
Выполнить:
$ bitcoin-cli sendrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
Результат:
ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346
Команда sendrawtransaction возвращает хэш транзакции (txid) при отправке транзакции в сеть. Чтобы проверить хэш транзакции, перейдите на страницу tbtc.blockr.io
Для получения дополнительной информации посетите этот сайт освоение биткойнов