Voici le résultat de petis tests réalisés avec une adresse multisig.
Le but était de créer et de signer des tx avec une adresse n-m (il faut n clées sur les m pour signer une transaction) avec n = m = 2.
Thx à davout pour l'assistance sur le chan irc #bitcoin-fr, et à perl pour son exemple
ici (sauf que je signe en une seule fois dans mon exemple).
(les autres sources c'est le forum en anglais ou google, donc vu qu'ils ne nous liront pas pas besoin de les remercier :-)
Bref :
###############################################
Préparation des 2 privates keys
###############################################Création de 2 adresses avec vanity gen par ex :$ ./vanitygen 1A
Pattern: 1A
Address: 1AUACQnPPxWk34f4ru91rQym1rHRNmfyWF
Privkey: 5K7GrfvAczQYuAtJXmFByqf9GLJ74ydB1N7eqZGj8987KbmjLCT
$ ./vanitygen 1B
Pattern: 1B
Address: 1BkvkS4dvt5uEM7hH6muYWLKvm3rCgzpD1
Privkey: 5Je1z9roEnhCtfDV8d6sCsDuyqZ9FXV6JcMspsUVMYf1UFFUG2U
Nous avons donc :
1AUACQnPPxWk34f4ru91rQym1rHRNmfyWF et
1BkvkS4dvt5uEM7hH6muYWLKvm3rCgzpD1Import des adresses dans Bitcoin Core/bitcoind $ ./bitcoind importprivkey "5K7GrfvAczQYuAtJXmFByqf9GLJ74ydB1N7eqZGj8987KbmjLCT" 1A
$ ./bitcoind importprivkey "5Je1z9roEnhCtfDV8d6sCsDuyqZ9FXV6JcMspsUVMYf1UFFUG2U" 1B
$ ./bitcoind validateaddress 1AUACQnPPxWk34f4ru91rQym1rHRNmfyWF
{
"isvalid" : true,
"address" : "1AUACQnPPxWk34f4ru91rQym1rHRNmfyWF",
"ismine" : true,
"isscript" : false,
"pubkey" : "04e1ad0319283c15d3a4ba0a39478fafacdb723c9380d361133b96c760b5e450f7a7057e3c62f45d020c635f8c99e3978ed6690b98184275385171b6c7b9399d40",
"iscompressed" : false,
"account" : "1A"
}
$ ./bitcoind validateaddress 1BkvkS4dvt5uEM7hH6muYWLKvm3rCgzpD1
{
"isvalid" : true,
"address" : "1BkvkS4dvt5uEM7hH6muYWLKvm3rCgzpD1",
"ismine" : true,
"isscript" : false,
"pubkey" : "049fdcc896ac8ee36884cc6a35160ad5664b81d6ff0e56cc231ff9531358fadb6477159fc71253445104b366110b6e55799472e5024d213aa370207840ad4c4096",
"iscompressed" : false,
"account" : "1B"
}
###############################################
Création de l'adresse multisig 2-2
###############################################Création :$ ./bitcoind addmultisigaddress 2 '["04e1ad0319283c15d3a4ba0a39478fafacdb723c9380d361133b96c760b5e450f7a7057e3c62f45d020c635f8c99e3978ed6690b98184275385171b6c7b9399d40","049fdcc896ac8ee36884cc6a35160ad5664b81d6ff0e56cc231ff9531358fadb6477159fc71253445104b366110b6e55799472e5024d213aa370207840ad4c4096"]'
3FFXxVEhBtwgvWvqxNKuDdk18y1pWVBuFK
L'adresse 2-2 est donc :
3FFXxVEhBtwgvWvqxNKuDdk18y1pWVBuFKVérification :$ ./bitcoind validateaddress 3FFXxVEhBtwgvWvqxNKuDdk18y1pWVBuFK
{
"isvalid" : true,
"address" : "3FFXxVEhBtwgvWvqxNKuDdk18y1pWVBuFK",
"ismine" : true,
"isscript" : true,
"script" : "multisig",
"hex" : "524104e1ad0319283c15d3a4ba0a39478fafacdb723c9380d361133b96c760b5e450f7a7057e3c62f45d020c635f8c99e3978ed6690b98184275385171b6c7b9399d4041049fdcc896ac8ee36884cc6a35160ad5664b81d6ff0e56cc231ff9531358fadb6477159fc71253445104b366110b6e55799472e5024d213aa370207840ad4c409652ae",
"addresses" : [
"1AUACQnPPxWk34f4ru91rQym1rHRNmfyWF",
"1BkvkS4dvt5uEM7hH6muYWLKvm3rCgzpD1"
],
"sigsrequired" : 2,
"account" : ""
}
###############################################
On recharge le solde de l'adresse :-)
###############################################Envoi depuis blockchain.info, txid : 679235f8a3d47774967506e644110d8e9525d6ef8e8b06dc59c4f70f666705b1
https://blockchain.info/tx/679235f8a3d47774967506e644110d8e9525d6ef8e8b06dc59c4f70f666705b1Le but était de renvoyer les BTC à l'adresse d'où ils viennet, donc : 16KT1voxZq7jZEYfuS4xtkxy1naE2nYE6w
###############################################
Création de la transaction
###############################################
On a besoin pour ça de connaitre les inputs disponibles (on prend comme input l'outpout de la transaction de recharge) :
https://blockchain.info/rawtx/679235f8a3d47774967506e644110d8e9525d6ef8e8b06dc59c4f70f666705b1On renvoie 0.0001 BTC à l'adresse d'origine, ce qui fait 0.0002 - 0.0001 de fees (input(s) - output(s))
$ ./bitcoind createrawtransaction '[{"txid" : "679235f8a3d47774967506e644110d8e9525d6ef8e8b06dc59c4f70f666705b1", "vout" : 0}]' '{"16KT1voxZq7jZEYfuS4xtkxy1naE2nYE6w" : 0.0001}'
0100000001b10567660ff7c459dc068b8eefd625958e0d1144e60675967477d4a3f83592670000000000ffffffff0110270000000000001976a9143a55d552897303926437049aa348c1623a84575d88ac00000000
###############################################
Signature de la transactions
###############################################$ ./bitcoind signrawtransaction "0100000001b10567660ff7c459dc068b8eefd625958e0d1144e60675967477d4a3f83592670000000000ffffffff0110270000000000001976a9143a55d552897303926437049aa348c1623a84575d88ac00000000" '[{"txid" : "679235f8a3d47774967506e644110d8e9525d6ef8e8b06dc59c4f70f666705b1", "vout" : 0, "scriptPubKey" : "a91494c004454d13a0db37d981400a128f02321564b187", "redeemScript" : "524104e1ad0319283c15d3a4ba0a39478fafacdb723c9380d361133b96c760b5e450f7a7057e3c62f45d020c635f8c99e3978ed6690b98184275385171b6c7b9399d4041049fdcc896ac8ee36884cc6a35160ad5664b81d6ff0e56cc231ff9531358fadb6477159fc71253445104b366110b6e55799472e5024d213aa370207840ad4c409652ae"}]' '["5K7GrfvAczQYuAtJXmFByqf9GLJ74ydB1N7eqZGj8987KbmjLCT","5Je1z9roEnhCtfDV8d6sCsDuyqZ9FXV6JcMspsUVMYf1UFFUG2U"]'
{
"hex" : "0100000001b10567660ff7c459dc068b8eefd625958e0d1144e60675967477d4a3f835926700000000fd1a0100473044022039bb29798ea03d3c64e16ac57676e6b51321fe08a0764f1812e50887a5ee058c0220344770ec5f8bb74d4923adba319a36c37895415df4e810b4e8e262d7daab88d80147304402207dd14a57595d9904878a43c8a49744c3e13d20ad696767b4ec5a06b6434a839e02204612149133d595c1b918a51906bb3d332ea458c58f5c65d02958ff24839a0b57014c87524104e1ad0319283c15d3a4ba0a39478fafacdb723c9380d361133b96c760b5e450f7a7057e3c62f45d020c635f8c99e3978ed6690b98184275385171b6c7b9399d4041049fdcc896ac8ee36884cc6a35160ad5664b81d6ff0e56cc231ff9531358fadb6477159fc71253445104b366110b6e55799472e5024d213aa370207840ad4c409652aeffffffff0110270000000000001976a9143a55d552897303926437049aa348c1623a84575d88ac00000000",
"complete" : true
}
###############################################
On broadcast la transaction sur le réseau
###############################################$ ./bitcoind sendrawtransaction "0100000001b10567660ff7c459dc068b8eefd625958e0d1144e60675967477d4a3f835926700000000fd1a0100473044022039bb29798ea03d3c64e16ac57676e6b51321fe08a0764f1812e50887a5ee058c0220344770ec5f8bb74d4923adba319a36c37895415df4e810b4e8e262d7daab88d80147304402207dd14a57595d9904878a43c8a49744c3e13d20ad696767b4ec5a06b6434a839e02204612149133d595c1b918a51906bb3d332ea458c58f5c65d02958ff24839a0b57014c87524104e1ad0319283c15d3a4ba0a39478fafacdb723c9380d361133b96c760b5e450f7a7057e3c62f45d020c635f8c99e3978ed6690b98184275385171b6c7b9399d4041049fdcc896ac8ee36884cc6a35160ad5664b81d6ff0e56cc231ff9531358fadb6477159fc71253445104b366110b6e55799472e5024d213aa370207840ad4c409652aeffffffff0110270000000000001976a9143a55d552897303926437049aa348c1623a84575d88ac00000000"
error: {"code":-22,"message":"TX rejected"}
Comme vous pouvez le voir la transaction a été rejetée par mon bitcoind mais c'est parce que ma blockchain n'était pas à jour..., les mêmes commandes faites hier par davout avec les mêmes adresses fonctionnaient :
https://blockchain.info/tx/66b80651a37f9c58155ee72cab01c9cccbc276a2cb0e9a1ca420cbf962bd239aJ'ai refait un test avec la blockchain à jour sur une autre adresse 2-2 depuis, c'est passé comme une lettre à la poste (transaction en attente de confiramtion :-)