Bitcoin Forum
July 13, 2024, 12:41:23 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Need Help pour comprendre la vérification d'un bloc-> SHA256(SHA256(Block_Head))  (Read 592 times)
onepix (OP)
Full Member
***
Offline Offline

Activity: 171
Merit: 100


View Profile
May 14, 2014, 04:15:57 PM
 #1

Bonjour  Smiley

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  Grin
perl
Legendary
*
Offline Offline

Activity: 1918
Merit: 1190


View Profile
May 14, 2014, 05:13:06 PM
 #2

Wink
Lit la difficulté à l'envers Wink
C'est les stockage inter de la donne qui donnée qui donne cette ordre .
D'ailleurs lis la version aussi à l'envers
perl
Legendary
*
Offline Offline

Activity: 1918
Merit: 1190


View Profile
May 14, 2014, 05:17:03 PM
 #3

Wink
Lit la difficulté à l'envers Wink
C'est les stockage interne de la donne qui donnée qui donne cette ordre .
D'ailleurs lis la version aussi  à l'envers
davout
Legendary
*
Offline Offline

Activity: 1372
Merit: 1007


1davout


View Profile WWW
May 14, 2014, 06:02:33 PM
 #4

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

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

onepix (OP)
Full Member
***
Offline Offline

Activity: 171
Merit: 100


View Profile
May 14, 2014, 08:17:25 PM
 #5

Wink
Lit la difficulté à l'envers Wink
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  Grin


Dommage pour moi, je n'ai pas vue le ruby même si le code paraît très clair
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!