Здесь, как отправить необработанную транзакцию BTC с помощью команды Bitcoin-cli

Сценарий:

Майкл получает 0.05000000 BTC из Пабло и еще 0,01000000 БТД из Кураданга. Майкл также хочет отправить 0.02500000 BTC в Berteng. Каждая сумма, которую получает Майкл, имеет соответствующие txid и другие данные. Давайте проверим это, используя команду listunspent затем создадим необработанную транзакцию, используя createrawtransaction после того, как ее подпишите с помощью signrawtransaction и отправьте эту необработанную транзакцию с использованием sendrawtransaction.

Данный:

  • Майкл Биткойн Адрес: mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe
  • Berteng Bitcoin Адрес: 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
}]

То, что мы видим здесь, - это результаты, которые присвоили 50 и 10 mBTC нашему адресу mkrz.... Чтобы провести этот вывод, мы создадим новую транзакцию.

Шаг 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 производит шестую строку, которая кодирует данные транзакции, которые мы предоставили. Если вы хотите декодировать hex, используйте команду 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

Для получения дополнительной информации см. Этот сайт, освоивший биткойн

Ответы

Ответ 1

Многоуровневая реализация отправки rawtransaction в среде regtest)

1) Создайте rawtransaction

синтаксис:

bitcoin-cli -regtest createrawtransaction '[{"txid": "", "vout":}]' '{"receive_address": amount}'

Пример:

 > bitcoin-cli -regtest createrawtransaction
    > '[{"txid":"eee0de90e9878c039f87c9eedbdf5b9a5da157b19e5354a51ff3b2f84c8a901b","vout":0},]'
    > '{"2MxieCJNTKiiBj6U3SjghQaatZYbM7Qn6GW":30}'

2) Подписать необработанную транзакцию

синтаксис

<hexstring> [{"txid":txid,"vout":n,"scriptPubKey":hex},...] [<privatekey1>,...]
bitcoin-cli -regtest signrawtransaction "0200000001a1c33ebb12d94f96effc70c9dd4488faf32dc15269d6a41d115ac956033cadbb0100000000ffffffff0100e1f505000000001976a9145768a869521bb01af8bdd787e6e1e65ec3d9870e88ac00000000" '''
        [
          {
            "txid":"bbad3c0356c95a111da4d66952c12df3fa8844ddc970fcef964fd912bb3ec3a1",
            "vout":1,
            "scriptPubKey":"a91401a8f0509da2396f58d3f9948a76331964524c9687",
            "redeemScript": "5221022d6f957dd76773432d2493edb5601b2d0791286e31c83483ab299672c3d44fc921022dd9c36eece99cc308986a8334c3a0bf24d7ef8b842dacebf56f2477b0f6daab21030544c9613bf27c9773e6fcd79c7786a297188a2647d346da0c3305e22d3e28da53ae"
          }
        ] 
    ''' '''
    [
    "cUdhE3NvePyjqksgJTc5BQfXGDJckPgEKfoRT72x2BRoG2uMS81H"
    ]
    '''

o/p будет шестнадцатеричным, который я храню как

signed_raw_txn =

3) Отправить rawtransaction

bitcoin-cli -regtest sendrawtransaction $signed_raw_txn

Ответ 2

Еще один более простой способ с некоторыми дополнительными fundrawtransaction. Документы говорят нам, какие ресурсы и выводит все необходимые поля. Но не забывайте, что пустой список тоже объект:

Шаг 1)

$ bitcoin-cli createrawtransaction '[]' \
    '{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025}'

Шаг 2)

$ bitcoin-cli fundrawtransaction <hex_createrawtransaction> \
    '{"changeAddress": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"}'

После второго шага вы можете посмотреть гонорар, полученный вашим кошельком. И измените его с feeRate опции fundrawtransaction команды fundrawtransaction. Это все можно сделать перед знаком и отправить в вашу транзакцию.

Ответ 3

Для отправки биткойнов используется необработанная биткойн-транзакция. Я рекомендую следовать этому простому руководству:

-> Трансляция биткойн-транзакции

Он объясняет, как построить и транслировать биткойн-транзакцию, используя закрытый ключ, шаг за шагом. Я использую его почти каждый день без проблем.