Voici comment envoyer une transaction brute BTC en utilisant la commande Bitcoin-cli
Scénario:
Michael reçoit 0,05000000 BTC De Pablo et un autre 0,01000000 BTC de Kuradang. Michael veut aussi envoyer 0,02500000 BTC à Berteng. Chaque montant que Michael reçoit a le txid correspondant et d'autres détail. Permet de vérifier cela à l'aide de
listunspent
commande puis créer un transaction brute utilisantcreaterawtransaction
après cela, signez en utilisantsignrawtransaction
et envoyer cette transaction brute en utilisantsendrawtransaction
.
étant donné:
- Michael's Bitcoin adresse: mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zafe
- Berteng's Bitcoin adresse: mxh3H416KCRoBDiweSESew5YJyAk1nxLrn
- Envoyer à Berteng: 0.02500000 mBTC
Étape 1)
listunspent
Format:
$ bitcoin-cli listunspent [misconf=1] [max_number_confirmation=99999999] '''["<wallet_address>"]'''
permet de vérifier la liste de Michael de l'unspent en utilisant avec son adresse.
Exécuter:
$ bitcoin-cli listunspent 1 99999999 '''["mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"]'''
Résultat:
[{
"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
}]
ce que nous voyons ici sont les résultats qui ont assigné 50 et 10 mBTC à notre adresse mkrz.... Pour dépenser cet extrant, nous allons créer une nouvelle transaction.
Étape 2)
createrawtransaction
nous avons besoin de choisir quelques blocs avec une quantité suffisante du résultat de
listunspent
. Puisque nous avons seulement besoin d'envoyer 0.02500000 mBTC je pense que le premier bloc a le montant suffisant pour faire la transaction.
Format:
$ bitcoin-cli createrawtransaction
'[{
"txid" : "<txid_of_selected_block>",
"vout" : <vout>
}]'
'{"<recipient_address>": <amount_to_send>, "<sender_address>": <amount_change>}'
pour payer les frais, nous réduirons la production de changement de 0.5 millibits comme vous pouvez voir ci-dessous.
Exécuter:
$ bitcoin-cli createrawtransaction
'[{
"txid" : "12b8e7ede4992f4d30f93idj3085746951d945e39f40becebd7c290af8c2e7ad",
"vout" : 0
}]'
'{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025, "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe": 0.0245}'
Résultat
0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
la commande createrawtransaction produit brut hex chaîne code les détails de la transaction que nous avons fournis. Si vous voulez décoder le hex utilise la commande decoderawtransaction.
Etape 3)
signrawtransaction
signe le mouvement dans le format de transaction sérialisé en utilisant clés privées stockées dans le porte-monnaie ou fournies dans le appeler.
Format:
$ bitcoin-cli signrawtransaction <hex_createrawtransaction>
Exécuter:
$ bitcoin-cli signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
Résultat:
{
"hex" : "0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000",
"complete" : true
}
maintenant la commande signrawtransaction renvoie un autre raw encodé hex transaction.
Étape 4)
sendrawtransaction
RPC valide une transaction et la retransmet à l'pair-à-pair réseau.
Format:
$ bitcoin-cli sendrawtransaction <hex_signrawtransaction>
Exécuter:
$ bitcoin-cli sendrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
Résultat:
ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346
la commande sendrawtransaction renvoie un hachage de transaction (txid) tel qu'il soumet la transaction sur le réseau. Pour vérifier l'opération de hachage, vous pouvez aller à tbtc.blockr.io
pour plus d'information voir ce site mastering bitcoin
2 réponses
encore une autre façon plus simple avec un supplément fundrawtransaction
. Les Docs nous disent quelles entrées et sorties tous les champs requis. Mais n'oubliez pas la liste vide est un objet trop:
Étape 1)
$ bitcoin-cli createrawtransaction '[]' \
'{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025}'
Étape 2)
$ bitcoin-cli fundrawtransaction <hex_createrawtransaction> \
'{"changeAddress": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"}'
Après la deuxième étape, vous pouvez regarder les frais générés par votre porte-monnaie. Et de le modifier avec feeRate
option de fundrawtransaction
la commande. Tout cela peut être fait avant de signer et d'envoyer au réseau votre transaction.
Multisig la mise en œuvre d'envoyer rawtransaction dans regtest de l'environnement)
1)Créer un rawtransaction
syntaxe:
bitcoin-cli-regtest createrawtransaction ' [{"txid":"", "vout":}]' '{"receive_address":montant}'
Exemple:
> bitcoin-cli -regtest createrawtransaction
> '[{"txid":"eee0de90e9878c039f87c9eedbdf5b9a5da157b19e5354a51ff3b2f84c8a901b","vout":0},]'
> '{"2MxieCJNTKiiBj6U3SjghQaatZYbM7Qn6GW":30}'
2)signer le mouvement brut
syntaxe
<hexstring> [{"txid":txid,"vout":n,"scriptPubKey":hex},...] [<privatekey1>,...]
bitcoin-cli -regtest signrawtransaction "0200000001a1c33ebb12d94f96effc70c9dd4488faf32dc15269d6a41d115ac956033cadbb0100000000ffffffff0100e1f505000000001976a9145768a869521bb01af8bdd787e6e1e65ec3d9870e88ac00000000" '''
[
{
"txid":"bbad3c0356c95a111da4d66952c12df3fa8844ddc970fcef964fd912bb3ec3a1",
"vout":1,
"scriptPubKey":"a91401a8f0509da2396f58d3f9948a76331964524c9687",
"redeemScript": "5221022d6f957dd76773432d2493edb5601b2d0791286e31c83483ab299672c3d44fc921022dd9c36eece99cc308986a8334c3a0bf24d7ef8b842dacebf56f2477b0f6daab21030544c9613bf27c9773e6fcd79c7786a297188a2647d346da0c3305e22d3e28da53ae"
}
]
''' '''
[
"cUdhE3NvePyjqksgJTc5BQfXGDJckPgEKfoRT72x2BRoG2uMS81H"
]
'''
o/p sera un hex qui je store
rawtransactionbitcoin-cli -regtest sendrawtransaction $signed_raw_txn