blockchain : Quelles sont les équations à convertir entre bits et difficulté ?
Il existe 3 représentations de la même chose (avec des degrés de précision variables) dans Bitcoin :
- bits – entier non signé 32 bits
- cible – entier non signé 256 bits
- difficulté – flottant double précision (64 bits)
et 6 méthodes sont nécessaires pour convertir entre deux d’entre elles :
- bits -> difficulté (GetDifficulty() dans bitcoin/src/rpc/blockchain.cpp)
- cible -> difficulté (identique à cible -> bits -> difficulté)
- difficulté -> bits (pas fait en bitcoin/src)
- difficulté -> cible (identique à difficulté -> bits -> cible)
cpp)
cpp)
mais ne peut pas effectuer la conversion de difficulté -> bits comme également demandé dans la question.
J’ai écrit ma propre implémentation de la difficulté -> conversion de bits en Javascript vanille en imitant la cible -> conversion de bits lorsque cela est possible, plus quelques vérifications supplémentaires :
0) throw ‘la difficulté ne peut pas être négative’ pow(0x100 // convertir en int < 0xffffff var size = 0x1d taille++ = 0) throw 'le \'bits\' \'word\' est hors limites' ; if (size > 0xff) throw ‘le \’bits\’ \’size\’ est hors limites’ ; var bits = (taille difficulté -> bits
La seule exception est lorsque (bits & 0x00800000) ! = 0, car cela signifie que bits est un nombre négatif, alors que la difficulté est toujours un nombre positif dans Bitcoin.
null.place/how-do-the-bitcoin-mining-algorithms-work/#form7
cpp et bitcoin/src/test/.cpp sur le blog juste en dessous de l’outil susmentionné – tous les tests réussissent.