Comment est calculée la difficulté ? : Échange de pile Bitcoin


La réponse de Meni est bonne. Je veux juste donner quelques détails pratiques sur le calcul de la difficulté, peut-être utile pour les vues futures de la réponse à cette question.

Jetons un coup d’œil à l’en-tête du bloc de genèse de Satoshi (partie des informations connexes) :

$ bitcoin-cli getblockhash 0

$ bitcoin-cli getblockheader

« hauteur » : 0,

« bits » : « 1d00ffff »,

« difficulté » : 1,

le bloc de genèse a une difficulté ‘1’ et des bits ‘1d00ffff’. Les bits bitcoin signifient la valeur de hachage ‘cible’, le nouveau bloc généré doit remplir une condition : la double valeur de hachage SHA-256 de l’en-tête du bloc doit être inférieure à cette valeur ‘cible’.

Comment est calculée la difficulté ? : Échange de pile Bitcoin

La valeur des bits ‘1d00ffff’ dans le bloc Genesis signifie la valeur ‘cible’  :

Ensuite, pour trouver un nouveau bloc, vous devez rechercher cette valeur nNonce de 32 bits (et nTimes et le hashMerkleRoot également) jusqu’à ce que la valeur de hachage du bloc ait 4 octets à zéro en tête.

Soit dit en passant, le nNonce est l’un des champs de la structure d’en-tête de bloc  :

// 4 versions

// 32 hachage d’en-tête de bloc précédent

// 32 hachage racine merkle

// 4 fois

// 4 cibles

// 4 nonce

Étant donné que l’algorithme SHA-256 (ainsi que tout algorithme de hachage sécurisé cryptographiquement) produit une sortie qui apparaîtra comme une séquence uniformément aléatoire, la méthode pratique « essais et erreurs » est le seul moyen de trouver un nouveau bloc pour répondre à la condition. La probabilité de trouver un bloc avec la valeur de hachage principale zéro de 4 octets est de 1/(2^32), ce qui signifie que les nombres moyens d' »essais et erreurs » sont exactement de 2^32 (c’est-à-dire 4G).

qui signifie les nombres moyens « d’essais et d’erreurs » pour trouver un bloc répondant à la condition « cible »

1 ‘difficulté’ = hachages 4G

Ensuite, jusqu’à aujourd’hui, la hauteur de la blockchain bitcoin atteint 501509, jetons un coup d’œil à son en-tête  :

$ bitcoin-cli getblockheader

« hauteur » : 501509,

« bits » : « 18009645 »,

« difficulté » : 1873105475221.611,

Les bits du bloc 501509 = 0x18009645, c’est le format compact d’entier 256 bits, son format 256 bits est :

c’est 0x009645 * (256 ^ 21)

La cible du bloc de genèse est (0x00ffff * 256 ^ 26 )qui est l’unité de difficulté ‘1.0’.

Alors, la difficulté

= (0x00ffff * 256 ^ 26)/ (0x009645 * 256 ^ 21)

= 65535/38469 * (256^5)

= 1.703579505575918 * 2^40

= 1873105475221.611

Jusqu’à présent, vous avez tous les détails sur la façon de calculer la « difficulté ».

7T pour dire la difficulté, dans l’exemple ci-dessus:

(1.703579505575918 * 2^40) = 1.703579505575918T

1T = 2^40 = 1024^4