difficulté : Pourquoi cette formule laide pour calculer la « cible » à partir de « nBits » dans l'en-tête du bloc  : cible = coefficient * 256**(exposant-3)


TL;DR La formule vient de la transformation d'un algorithme en une formule mathématique. nBits code la cible avec les premiers octets comme taille de la cible finale, suivis des 3 octets les plus significatifs de cette cible. Cela peut être converti en cette formule folle.

La formule est la représentation mathématique de l’algorithme réel utilisé pour la compression. Pour comprendre pourquoi la formule est telle qu'elle est, nous devons d'abord examiner le code original qui code une cible de 256 bits sous la forme de nBits de 4 octets. Cela vient de la version 0.1.5 dans l'arborescence des sources Bitcoin/Bitcoin, mais c'est la même chose dans la version 0.1.0 :

unsigned int GetCompact() const { unsigned int nSize = BN_bn2mpi(this, NULL); std::vector vch(nSize); nTaille -= 4 ; BN_bn2mpi(this, &vch[0]); unsigned int nCompact = nSize = 1) nCompact |= (vch[4]

difficulté : Pourquoi cette formule laide pour calculer la « cible » à partir de « nBits » dans l'en-tête du bloc : cible = coefficient * 256**(exposant-3)