Bitcoin Forum
November 10, 2024, 04:16:49 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Exemple d'utilisation d'une adresse multisig 2-2  (Read 1055 times)
kcud_dab (OP)
Legendary
*
Offline Offline

Activity: 1652
Merit: 1002


Bitcoin enthusiast!


View Profile
June 19, 2014, 11:01:19 PM
Last edit: August 02, 2014, 04:24:48 PM by kcud_dab
 #1

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 :

Code:
$ ./vanitygen 1A
Pattern: 1A                                                                    
Address: 1AUACQnPPxWk34f4ru91rQym1rHRNmfyWF
Privkey: 5K7GrfvAczQYuAtJXmFByqf9GLJ74ydB1N7eqZGj8987KbmjLCT

Code:
$ ./vanitygen 1B
Pattern: 1B                                                                    
Address: 1BkvkS4dvt5uEM7hH6muYWLKvm3rCgzpD1
Privkey: 5Je1z9roEnhCtfDV8d6sCsDuyqZ9FXV6JcMspsUVMYf1UFFUG2U

Nous avons donc : 1AUACQnPPxWk34f4ru91rQym1rHRNmfyWF et 1BkvkS4dvt5uEM7hH6muYWLKvm3rCgzpD1

Import des adresses dans Bitcoin Core/bitcoind

Code:
 $ ./bitcoind importprivkey "5K7GrfvAczQYuAtJXmFByqf9GLJ74ydB1N7eqZGj8987KbmjLCT" 1A
$ ./bitcoind importprivkey "5Je1z9roEnhCtfDV8d6sCsDuyqZ9FXV6JcMspsUVMYf1UFFUG2U" 1B

Code:
$ ./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 :

Code:
$ ./bitcoind addmultisigaddress 2 '["04e1ad0319283c15d3a4ba0a39478fafacdb723c9380d361133b96c760b5e450f7a7057e3c62f45d020c635f8c99e3978ed6690b98184275385171b6c7b9399d40","049fdcc896ac8ee36884cc6a35160ad5664b81d6ff0e56cc231ff9531358fadb6477159fc71253445104b366110b6e55799472e5024d213aa370207840ad4c4096"]'
3FFXxVEhBtwgvWvqxNKuDdk18y1pWVBuFK

L'adresse 2-2 est donc : 3FFXxVEhBtwgvWvqxNKuDdk18y1pWVBuFK

Vérification :

Code:
$ ./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/679235f8a3d47774967506e644110d8e9525d6ef8e8b06dc59c4f70f666705b1

Le 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/679235f8a3d47774967506e644110d8e9525d6ef8e8b06dc59c4f70f666705b1

On renvoie 0.0001 BTC à l'adresse d'origine, ce qui fait 0.0002 - 0.0001 de fees (input(s) - output(s))

Code:
$ ./bitcoind createrawtransaction '[{"txid" : "679235f8a3d47774967506e644110d8e9525d6ef8e8b06dc59c4f70f666705b1", "vout" : 0}]' '{"16KT1voxZq7jZEYfuS4xtkxy1naE2nYE6w" : 0.0001}'
0100000001b10567660ff7c459dc068b8eefd625958e0d1144e60675967477d4a3f83592670000000000ffffffff0110270000000000001976a9143a55d552897303926437049aa348c1623a84575d88ac00000000

###############################################
Signature de la transactions
###############################################


Code:
$ ./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
###############################################


Code:
$ ./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/66b80651a37f9c58155ee72cab01c9cccbc276a2cb0e9a1ca420cbf962bd239a
J'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 :-)

mangodream
Hero Member
*****
Offline Offline

Activity: 672
Merit: 501



View Profile
June 20, 2014, 12:14:06 AM
 #2

Super intéressant, merci pour l'exemple Wink
yohannc
Legendary
*
Offline Offline

Activity: 1092
Merit: 1089



View Profile WWW
June 20, 2014, 09:18:54 PM
 #3

Donc si je comprends tu as fait une transaction en faisant une multi-signature.

C'est ça ?

kcud_dab (OP)
Legendary
*
Offline Offline

Activity: 1652
Merit: 1002


Bitcoin enthusiast!


View Profile
June 21, 2014, 07:42:28 AM
 #4

Donc si je comprends tu as fait une transaction en faisant une multi-signature.

C'est ça ?
C'est exactement ça.
2 clés qui permettent de signer des TX, 1 clé seule ne sert a rien

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!