Bitcoin Forum
May 27, 2024, 01:42:35 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Compréhension du fonctionnement du minage:  (Read 1670 times)
atom-74tungstene (OP)
Newbie
*
Offline Offline

Activity: 4
Merit: 0


View Profile
July 26, 2014, 08:07:44 PM
 #1


Bonsoir à tous,

Je me permets de solliciter l'aide de la communauté pour affirmer mon raisonnement sur le minage de bitcoin

Pour miner un block , il faut :

Effectuer f(x)=SHA(SHA(g(x)))
tel que g(x) est l'élaboration d'un block header à partir de
getblockteplate RPC et d'un nombre aléatoire.
Pour avoir f(x) en HEX tel que les d premiers bits soient des 0
avec d la difficultée donnée par le réseau.

Cela reflète t il la réalité ?

Merci d'avance
laurentmt
Sr. Member
****
Offline Offline

Activity: 384
Merit: 258


View Profile
July 29, 2014, 07:42:33 PM
Last edit: July 29, 2014, 09:04:20 PM by laurentmt
 #2

C'est bien l'idée avec juste une petite correction. L'objectif est d'avoir
Quote
f(x) < target

La target peut être calculée à partir de la difficulté (et inversement) grâce à la formule:
Quote
current_difficulty = target_genesis / current_target

target_genesis correspond à la target du bloc 0 et à pour valeur 0x00000000FFFF0000000000000000000000000000000000000000000000000000
C'est la plus grande target possible, et ça correspond donc à la difficulté la plus basse (difficulty = 1)
Ca peut également être interprété comme une unité de travail minimale qui requiert 2**32 itérations (Les 8 zéros apparaissant au début la valeur en hex)

Demeure un mystère pour moi : pourquoi ces 2**32 itérations ont été retenues comme unité de travail ?

Plus d'infos ici et ici

atom-74tungstene (OP)
Newbie
*
Offline Offline

Activity: 4
Merit: 0


View Profile
August 11, 2014, 04:47:34 PM
 #3

Bonjour et merci à vous de m'avoir répondu,

donc si l'on récapitule :

On doit produire un header de 80 bytes , donc : 0x11111111111111111111111111111111111111111111111111111111111111111111111111111 111

dont l'image par la fonction SHA(SHA(0xHEADER)), commence par un nombre défini de 0 à gauche.

Le champs TIME change tous les combien ?

Le Hash du bitcoin peut il être considéré comme un SHA 256 à 64 tours ?
laurentmt
Sr. Member
****
Offline Offline

Activity: 384
Merit: 258


View Profile
August 11, 2014, 05:57:03 PM
 #4

On doit produire un header de 80 bytes , donc : 0x11111111111111111111111111111111111111111111111111111111111111111111111111111 111
C'est bien des headers de 80 bytes (notez qu'en hex cela donne 160 digits soit 0x11111111111111111111111111111111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111111111111111111111111111111111111111 1111)


dont l'image par la fonction SHA(SHA(0xHEADER)), commence par un nombre défini de 0 à gauche.
C'est bien ça


Le champs TIME change tous les combien ?
C'est à la discrétion du mineur. En théorie le mineur agit sur le champ nonce pour faire varier le hash et trouver la solution.
En pratique, je crois que certains mineurs font également parfois varier la date lorsque les variations sur le nonce n'ont pas produit de hash "gagnant".
Les contrôles de validité effectués par les autres noeuds du réseau sur le timestamp du block sont assez souples (problème d'un référentiel temps commun dans un système distribué):
Quote
- Block timestamp must not be more than two hours in the future
- ...
- Reject if timestamp is the median time of the last 11 blocks or before
Donc ça laisse pas mal de marge au mineur pour choisir la valeur du champs !


Le Hash du bitcoin peut il être considéré comme un SHA 256 à 64 tours ?
Je ne suis pas expert en crypto mais je dirais que Bitcoin utilise bien un algo SHA256 standard avec 64 tours.
atom-74tungstene (OP)
Newbie
*
Offline Offline

Activity: 4
Merit: 0


View Profile
August 11, 2014, 06:10:05 PM
 #5

Merci à vous pour vos réponses qui m'éclairent grandement.
Auriez vous par hasard de la doc sur la vérification du nounce ? Malgré le fait que j'ai eu cherché sur internet , je ne trouve pas d'article mentionnant le déroulement exact d'un minage et la vérifiction avec des valeurs explicites.
laurentmt
Sr. Member
****
Offline Offline

Activity: 384
Merit: 258


View Profile
August 11, 2014, 06:23:29 PM
 #6

Merci à vous pour vos réponses qui m'éclairent grandement.
Auriez vous par hasard de la doc sur la vérification du nounce ? Malgré le fait que j'ai eu cherché sur internet , je ne trouve pas d'article mentionnant le déroulement exact d'un minage et la vérifiction avec des valeurs explicites.
Voici un excellent blog avec un post expliquant le mining, les pools de minage, .... C'est illustré avec du code python, notamment pour l'algo de mining.

Pour des aspects plus théoriques, le wiki bitcoin est une mine mais c'est parfois bien caché. Quelques pages intéressantes: présentation générale du mining, les notions de target et de difficulté, proof of work, hashcash, ...)
atom-74tungstene (OP)
Newbie
*
Offline Offline

Activity: 4
Merit: 0


View Profile
August 11, 2014, 07:11:05 PM
 #7

Merci grandement.
Je vais de ce pas parfaire mes connaissances.
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!