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_algorithmOn 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/00000000000000001e8d6829a8a21adc5d38d0a473b144b6765798e61f98bd1don 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