Bitcoin Forum

Local => Discussions générales et utilisation du Bitcoin => Topic started by: onepix on May 14, 2014, 04:15:57 PM



Title: Need Help pour comprendre la vérification d'un bloc-> SHA256(SHA256(Block_Head))
Post by: onepix on May 14, 2014, 04:15:57 PM
Bonjour  :)

Dans le cadre d'une petite soutenance et de mes recherches personnels j'essaye de comprendre le bitcoin d'un point de vue technique.

Aujourd'hui, j'essaie juste de comprendre comment vérifié le hash d'un bloc à partir de son en tête.
Sur ce lien qui ma l'air pas mal du tout : https://en.bitcoin.it/wiki/Block_hashing_algorithm

On trouve tous les champs de l'en tête ( Version, hashBlocPrec, hashRacineMerkle, Temps, Difficulté, Nonce ) et déjà là, je ne comprends pas à quoi correspond la version et le format compacté de la difficulté.

En effet sur l'exemple qu'il donne, on remarque que le bloc 125552 est calculé avec ce header :
header_hex = (
    "01000000" +
    "81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000" +
    "e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122b" +
    "c7f5d74d" +
    "f2b9441a" +
     "42a14695")

Or, lorsque je regarde les informations dispo sur ce bloc
http://blockexplorer.com/block/00000000000000001e8d6829a8a21adc5d38d0a473b144b6765798e61f98bd1d
on remarque le difficulté en décimal puis en format compacté -> Difficulty?: 244 112.487774 ("Bits"?: 1a44b9f2)
Or le format compacté ne concorde pas avec l'avant dernier argument de header_hex.

Donc au final, je ne comprends pas trop l'en tête et comment arrivé au hash final car  SHA256(SHA256(Block_Head)) c'est facilement compréhensible mais au final je vois pas vraiment à quoi ressemble le Block_Head avant de le passer deux fois à la moulinette ...

Je vous remercie pour toute aide ou tout lien qui pourrais m'aidé à comprendre.
Pour des liens qui m'en apprendrait d'avantage je prends aussi  ;D


Title: Re: Need Help pour comprendre la vérification d'un bloc-> SHA256(SHA256(Block_Head))
Post by: perl on May 14, 2014, 05:13:06 PM
;)
Lit la difficulté à l'envers ;)
C'est les stockage inter de la donne qui donnée qui donne cette ordre .
D'ailleurs lis la version aussi à l'envers


Title: Re: Need Help pour comprendre la vérification d'un bloc-> SHA256(SHA256(Block_Head))
Post by: perl on May 14, 2014, 05:17:03 PM
;)
Lit la difficulté à l'envers ;)
C'est les stockage interne de la donne qui donnée qui donne cette ordre .
D'ailleurs lis la version aussi  à l'envers


Title: Re: Need Help pour comprendre la vérification d'un bloc-> SHA256(SHA256(Block_Head))
Post by: davout on May 14, 2014, 06:02:33 PM
Un peu de code pourra peut-être t'éclairer.

https://github.com/davout/bitcoin-pool/blob/master/lib/bitcoin/block_header.rb


Title: Re: Need Help pour comprendre la vérification d'un bloc-> SHA256(SHA256(Block_Head))
Post by: onepix on May 14, 2014, 08:17:25 PM
;)
Lit la difficulté à l'envers ;)
C'est les stockage inter de la donne qui donnée qui donne cette ordre .
D'ailleurs lis la version aussi à l'envers

Ah, oui c'est mieux  ;D

Un peu de code pourra peut-être t'éclairer.

https://github.com/davout/bitcoin-pool/blob/master/lib/bitcoin/block_header.rb

Dommage pour moi, je n'ai pas vue le ruby même si le code paraît très clair