Michael reçoit 0,05000000 BTC de Pablo et un autre 0,01000000 BTC de Kuradang. Michael souhaite également envoyer 0,02500000 BTC à Berteng . Chaque montant que Michael reçoit a le txid correspondant et autre détails. Vérifions cela en utilisant la commande
listunspent
puis créons un transaction brute utilisantcreaterawtransaction
après cette signature en utilisantsignrawtransaction
et envoyez cette transaction brute en utilisantsendrawtransaction
.
listunspent
Format:
$ bitcoin-cli listunspent [misconf=1] [max_number_confirmation=99999999] '''["<wallet_address>"]'''
Permet de vérifier la liste des achats non dépensés de Michael avec son adresse.
Execute:
$ 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, ce sont les résultats qui ont affecté 50 et 10 mBTC à notre adresse mkrz…. Pour utiliser cette sortie, nous allons créer une nouvelle transaction.
createrawtransaction
Nous devons choisir des blocs avec une quantité suffisante du résultat de
listunspent
. Comme nous n’avons besoin que d’envoyer 0,02500000 mBTC, je pense que le premier bloc a le montant suffisant pour effectuer 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 modification de 0,5 millibits à l’aide de vous pouvez voir ci-dessous.
Execute:
$ bitcoin-cli createrawtransaction
'[{
"txid" : "12b8e7ede4992f4d30f93idj3085746951d945e39f40becebd7c290af8c2e7ad",
"vout" : 0
}]'
'{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025, "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe": 0.0245}'
Résultat
0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
La commande createrawtransaction génère une chaîne hexadécimale brute qui code les détails de la transaction que nous avons fournis. Si vous voulez décoder le hex utilise simplement la commande decoderawtransaction.
signrawtransaction
signe la transaction au format de transaction sérialisée à l'aide de clés privées stockées dans le portefeuille ou fournies dans l'appel.
Format:
$ bitcoin-cli signrawtransaction <hex_createrawtransaction>
Execute:
$ bitcoin-cli signrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c0000000000ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
Résultat:
{
"hex" : "0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000",
"complete" : true
}
À présent, la commande signrawtransaction renvoie un autre fichier brut .__ codé en hexadécimal. transaction.
sendrawtransaction
RPC valide une transaction et la diffuse vers le peer-to-peer réseau.
Format:
$ bitcoin-cli sendrawtransaction <hex_signrawtransaction>
Execute:
$ bitcoin-cli sendrawtransaction 0100000001e34ac1e2baac09c366fce1c2245536bda8f7db0f6685862aecf53ebd69f9a89c000000006a47304402203e8a16522da80cef66bacfbc0c800c6d52c4a26d1d86a54e0a1b76d661f020c9022010397f00149f2a8fb2bc5bca52f2d7a7f87e3897a273ef54b277e4af52051a06012103c9700559f690c4a9182faa8bed88ad8a0c563777ac1d3f00fd44ea6c71dc5127ffffffff02a0252600000000001976a914d90d36e98f62968d2bc9bbd68107564a156a9bcf88ac50622500000000001976a91407bdb518fa2e6089fd810235cf1100c9c13d1fd288ac00000000
Résultat:
ae74538baa914f3799081ba78429d5d84f36a0127438e9f721dff584ac17b346
La commande sendrawtransaction renvoie un hachage de transaction (txid) sous la forme soumet la transaction sur le réseau. Pour vérifier le hash de la transaction, vous pouvez aller à tbtc.blockr.io
Pour plus d'informations, voir ce site mastering bitcoin
Implémentation multisig de send rawtransaction dans un environnement regtest)
1) Créer une Rawtransaction
syntaxe:
bitcoin-cli -regtest createrawtransaction '[{"txid": "", "vout":}]' '{"receive_address": amount}'
Exemple:
> bitcoin-cli -regtest createrawtransaction
> '[{"txid":"eee0de90e9878c039f87c9eedbdf5b9a5da157b19e5354a51ff3b2f84c8a901b","vout":0},]'
> '{"2MxieCJNTKiiBj6U3SjghQaatZYbM7Qn6GW":30}'
2) Signer la transaction brute
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 hexagone que je stocke comme
signed_raw_txn = 0200000001a1c33ebb12d94f96effc70c9dd4488faf32dc15269d6a41d115ac956033cadbb01000000fdfe0000483045022100f9561640d9cf6c7fa7decdd2a3e0c40b0f05d167ee96f22dc11b7ef120c8483902201e53915eed3399e07a4e2648ab76c665fca6486d872d10964ad1926e792d2d6001483045022100a0a084182fb84efdf21757b9caa723cb013a469dc47c5bd8007c23f6201260c8022014fa11cb241c2e63ed0a043aceb1c3f89344c22b4ea6662f93da30820ef18796014c695221022d6f957dd76773432d2493edb5601b2d0791286e31c83483ab299672c3d44fc921022dd9c36eece99cc308986a8334c3a0bf24d7ef8b842dacebf56f2477b0f6daab21030544c9613bf27c9773e6fcd79c7786a297188a2647d346da0c3305e22d3e28da53aeffffffff0100e1f505000000001976a9145768a869521bb01af8bdd787e6e1e65ec3d9870e88ac00000000
3) envoyer rawtransaction
bitcoin-cli -regtest sendrawtransaction $signed_raw_txn
Encore une autre façon plus simple avec quelques fundrawtransaction
supplémentaires. Les docs nous disent quelles entrées et sortent tous les champs obligatoires. Mais n'oubliez pas que la liste vide est aussi un objet:
$ bitcoin-cli createrawtransaction '[]' \
'{"mxh3H416KCRoBDiweSESew5YJyAk1nxLrN": 0.025}'
$ bitcoin-cli fundrawtransaction <hex_createrawtransaction> \
'{"changeAddress": "mkrzDhhZtzQm8zgckSs4fMNrvtNJ66zaFe"}'
Après la deuxième étape, vous pouvez consulter les frais générés par votre portefeuille. Et changez-le avec l'option feeRate
de la commande fundrawtransaction
. Tout cela peut être fait avant de signer et d’envoyer au réseau votre transaction.