Difficulté

Voir aussi: cible

Quest-ce que la « difficulté »?

La difficulté est une mesure de la difficulté de trouver un hachage sous un cible donnée.

Le réseau Bitcoin a une difficulté globale de blocage. Les blocs valides doivent avoir un hachage en dessous de cette cible. Les pools de minage ont également une difficulté de partage spécifique au pool définissant une limite inférieure pour les partages.

À quelle fréquence la difficulté du réseau change-t-elle?

Toutes les Blocs 2016.

Quelle est la formule de la difficulté?

difficulté = difficulté_1_target / current_target

(la cible est un nombre de 256 bits)

difficulté_1_target peut être différent pour différentes manières de mesurer la difficulté. Traditionnellement, il représente un hachage où les 32 bits de tête sont à zéro et les autres sont à un (cest ce quon appelle «pool difficulté» ou «pdiff»). Le protocole Bitcoin représente des cibles en tant que type à virgule flottante personnalisé avec une précision limitée; par conséquent, les clients Bitcoin évaluent souvent la difficulté en fonction de cela (cest ce quon appelle «bdiff»).

Comment la difficulté est-elle stockée dans les blocs?

Chaque bloc stocke une représentation compacte ( appelé « Bits ») pour sa cible hexadécimale réelle. La cible peut en être dérivée via une formule prédéfinie. Par exemple, si la cible compressée dans le bloc est 0x1b0404cb (stockée dans lordre petit boutiste: cb 04 04 1b), la cible hexadécimale est

0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000

Notez que ce format compressé contient un bit de signe dans le 24e bit, et par exemple la négation de la cible ci-dessus serait 0x1b8404cb au format compressé. Cependant, comme les cibles ne sont jamais négatives en pratique, cela signifie que la plus grande valeur légale pour les 24 bits inférieurs est 0x7fffff. De plus, 0x008000 est la plus petite valeur légale pour les 24 bits inférieurs car les cibles sont toujours stockées avec lexposant le plus bas possible.

Comment la difficulté est-elle calculée? Quelle est la différence entre bdiff et pdiff?

La cible la plus élevée possible (difficulté 1) est définie comme 0x1d00ffff, ce qui nous donne une cible hexadécimale de

0x00ffff * 2**(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

Il convient de noter que lextraction en pool utilise souvent des cibles non tronquées, ce qui place la « difficulté du pool 1 » à

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Donc, la difficulté à 0x1b0404cb est donc:

0x00000000FFFF0000000000000000000000000000000000000000000000000000 /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.420938523983 (bdiff)

Et:

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.669773817162 (pdiff)

Voici « un moyen rapide de calculer la difficulté du bitcoin. Il utilise une série de Taylor modifiée pour le logarithme (vous pouvez voir des tutoriels sur flipcode et wikipedia) et sappuie sur les journaux pour transformer le calcul de la difficulté:

Pour voir le calcul pour passer de la difficulté normale calculs (qui nécessitent de gros entiers plus grands que lespace dans nimporte quel entier normal) au calcul ci-dessus, voici quelques python:

Quelle est la difficulté actuelle?

Difficulté actuelle, comme sortie par getDifficulty de Bitcoin.

Graphiques

Quelle est la maxime euh difficulté?

Il ny a pas dobjectif minimum. La difficulté maximale est à peu près: maximum_target / 1 (puisque 0 entraînerait linfini), ce qui est un nombre ridiculement énorme (environ 2 ^ 224).

La difficulté maximale réelle est lorsque current_target = 0, mais nous ne serait pas en mesure de calculer la difficulté si cela se produisait. (heureusement ce ne sera jamais le cas, alors nous allons bien.)

La difficulté du réseau peut-elle diminuer?

Oui, cest possible. Voir la discussion dans la cible.

Quelle est la difficulté minimale?

La difficulté minimale, lorsque la cible est à la valeur maximale autorisée, est de 1.

Quel taux de hachage réseau entraîne une difficulté donnée?

La difficulté est ajustée tous les blocs de 2016 en fonction du temps nécessaire pour trouver les blocs de 2016 précédents. Au rythme souhaité dun bloc toutes les 10 minutes, les blocs de 2016 prendraient exactement deux semaines à trouver. Si les blocs de 2016 précédents étaient bloqués ont mis plus de deux semaines à trouver, la difficulté est réduite. Sils ont pris moins de deux semaines, la difficulté est augmentée. Le changement de difficulté est proportionnel au temps de plus ou moins de deux semaines que les blocs de 2016 précédents ont pris pour trouver .

Pour trouver un bloc, le hachage doit être inférieur à la cible. Le hachage est en fait un nombre aléatoire compris entre 0 et 2 ** 256-1. Le décalage pour la difficulté 1 est

0xffff * 2**208

et pour la difficulté D est

(0xffff * 2**208)/D

Le nombre attendu de hachages que nous devons calculer pour trouver un bloc de difficulté D est donc

D * 2**256 / (0xffff * 2**208)

ou simplement

D * 2**48 / 0xffff

La difficulté est définie de telle sorte que les blocs de 2016 précédents auraient été trouvé à raison dun toutes les 10 minutes, nous calculions donc (D * 2 ** 48 / 0xffff) hachages en 600 secondes. Cela signifie que le taux de hachage du réseau était de

D * 2**48 / 0xffff / 600

par rapport aux blocs de 2016 précédents. Peut être encore simplifié à

D * 2**32 / 600

sans trop de perte de précision.

En difficulté 1, soit environ 7 Mhashes par seconde.

Au moment de la rédaction de cet article, la difficulté est de 22012.4941572, ce qui signifie que sur lensemble précédent de blocs de 2016, le taux de hachage moyen du réseau était de

22012.4941572 * 2**32 / 600 = around 157 Ghashes per second.

Dans combien de temps pourrais-je espérer générer un bloc?

(La question éternelle.)

Le temps moyen pour trouver un bloc peut être estimé en calculant:

time = difficulty * 2**32 / hashrate

où la difficulté est la difficulté actuelle, le hashrate est le nombre de hachages que votre mineur calcule par seconde, et le temps est la moyenne en secondes entre les blocs que vous trouvez.

Par exemple, en utilisant Python, nous calculons le temps moyen pour générer un bloc en utilisant une plate-forme de minage 1Ghash / s lorsque la difficulté est de 20000:

$ python -c "print 20000 * 2**32 / 10**9 / 60 / 60.0"23.85

et constatez que cela prend un peu moins de 24 heures en moyenne.

  • Tout broyage du hachage a la même chance de « gagner » que tout autre. Le jeu des nombres est le nombre de tentatives que votre matériel peut faire par seconde.
  • Vous devez connaître la difficulté (ci-dessus) et votre taux de khash / sec (rapporté par le client).
    • Exploitation minière La comparaison matérielle contient des statistiques qui peuvent vous aider à prédire ce que vous pourriez obtenir.
  • Visitez une calculatrice ou effectuez les calculs vous-même,
    • http://www.alloscomp.com/bitcoin/calculator.php
    • http://www.vnbitcoin.org/bitcoincalculator.php
    • https://bitknock.com/calculator
  • Souvenez-vous que cest juste une probabilité! Il ny a aucune garantie que vous gagnerez tous les N jours.

Liens connexes

  • Historique de la difficulté Bitcoin
  • Quest-ce que la difficulté Bitcoin Mining?
  • Voir aussi: cible

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *