Sous le capot de Bitfury Clarke - comment fonctionne notre nouvelle puce minière

Fin septembre, nous avons introduit une nouvelle puce ASIC développée spécifiquement pour l'exploitation minière SHA256 dans le réseau Bitcoin. Aujourd'hui, nous vous dirons ce qu'il y a à l'intérieur.


Image: Groupe Bitfury

Quelques mots sur l'exploitation de Bitcoin


Le but de l'exploitation minière est de protéger le réseau blockchain. Les mineurs utilisent leur matériel pour résoudre des problèmes informatiques complexes qui garantissent l'intégrité des transactions sur le réseau et éliminent les attaques à double dépense . En parallèle, l'exploitation minière agit comme un mécanisme de génération de crypto-monnaie, que les mineurs reçoivent en récompense (maintenant - 12,5 bitcoins par bloc).

Les tâches de calcul en question sont liées à la sélection d'un hachage qui correspond aux transactions dans le bloc. La valeur souhaitée est formée sur la base du hachage du bloc précédent, d'un nombre aléatoire (appelé nonce) et de la somme des hachages de transaction au cours des dix dernières minutes. Dans ce cas, deux conditions doivent être remplies: le hachage doit respecter la complexité de minage déclarée et avoir au départ un nombre strictement défini de bits zéro. Pour évaluer la complexité , l' expansion dans une série de Taylor modifiée est utilisée.

Les hachages dans la blockchain Bitcoin sont calculés en utilisant l'algorithme SHA256. Il comprend 64 itérations, au cours desquelles les bits de transaction sont «mélangés» dans le bloc à l'aide d'opérations de décalage et «addition modulo 2». Le résultat de l'application de la fonction SHA256 est considéré comme irréversible, pour cette raison le hachage cible est trouvé par la force brute. Nous avons écrit plus en détail sur le minage et les pools de minage, dans lesquels les participants des réseaux de blockchain s'unissent afin d'accélérer la décision des blocs.

Auparavant, les processeurs et les GPU étaient utilisés pour trier le nonce et le hachage, mais au fil du temps, en raison de la complexité toujours croissante de l'exploitation minière (elle change en fonction de la puissance de calcul totale de tous les participants au réseau bitcoin), des ASIC spécialisés ont été conçus.
Chez Bitfury, nous développons également de telles solutions. Au total, nous avons créé cinq générations de puces minières, et en septembre, nous avons présenté la sixième - nous parlons d'ASIC Clarke, spécialement conçu pour résoudre les hachages SHA256.

Comment va Clarke


Clarke est fabriqué en utilisant une technologie de processus de 14 nm et est mis en œuvre dans le facteur de forme FC- LGA 35L 6x6 mm. Le deuxième boîtier a un câblage plus efficace des circuits de puissance sur la carte. La puce résout 120 gigaoctets par seconde, mais elle permet d' ajuster les performances en fonction de ce dont le mineur a maintenant besoin - un plus grand hashrate ou une faible consommation d'énergie. En particulier, il est possible d'atteindre un coefficient d'efficacité énergétique de 55 mJ / gigahesh, car 0,3 volt suffit pour alimenter la puce. La structure de Clarke ressemble à ceci:


Générateur d'horloge Il règle l'horloge de la puce. Niveaux de tension : VSS = 0, VDD = 1.

Interface de contrôle série connectée au contrôleur externe par bus série. Il ressemble à un bus SPI avec des contacts de transfert de données MOSI et MISO (utilisé pour transférer des données du maître à l'esclave et vice versa), connecté par la ligne SDATA.

L'interface est chargée de transmettre les commandes. En voici quelques-unes: tâche écrire pour écrire une nouvelle tâche, forcer le changement de tâche pour forcer la commutation du tampon, lire les nonces pour lire les valeurs nonce, etc. Toutes les commandes ont un modèle et contiennent le code, la longueur, le champ de données, l'octet d'état de la puce, les données du tampon nonce et checksums.


Les sommes de contrôle sont la somme arithmétique des octets, commençant par zéro. Par exemple, la somme de contrôle de la commande 04 03 03 8c 18 00 sera égale à AE.

Système de contrôle Nonce. Contrôle le processus de calcul du hachage en fonction du masque. Le masque «se trouve» dans le tampon des tâches et est utilisé pour définir la plage de calculs. Il définit des bits en nonce qui resteront inchangés lors de la recherche d'une nouvelle valeur.

Tampons de tâches. Nécessaire pour calculer les hachages (leur longueur est de 20 doubles mots). Il y a deux tampons au total, ce qui vous permet de basculer rapidement entre les tâches. Alors que le premier tampon est occupé par une solution de hachage, le second écrit des données pour les calculs suivants.

8154 noyaux de hachage en anneau. Ils utilisent l'algorithme double SHA256.

Tampon nonce. Il s'agit d'un tampon en anneau de 12 mots doubles où les décisions de hachage sont écrites. À titre d' exemple, nous avons donné le processus d'échange de données dans une puce qui se produit lors du calcul des hachages (dans le spoiler ci-dessous):

Échange de données par puce (en anglais)
// Programmer le générateur d'horloge à la valeur 0x20 et prescaler = 1 (désactivé) Envoyer: 0803038c1800
Recv: f0b200b2
// Définit le masque nonce sur 0x00000000
Envoyer: 200300000000 Recv: f0230023
// Forcer le changement de tâche Envoyer: 020000
Recv: f0020002
// Envoyer la tâche
Wi 0 = CD3F992C 1 = 037F8197 2 = A58E091A
MS0 A = 0CAD7CD1 B = CBE38FD9 C = D14DC164 D = F90EB10B E = 819621CF F = 358D45CD G = 8C14CAE3 H = 538EF887 MS3 A = 5FF18CDD B = 8CDA24A4 C = 180266F9 D = 0CAD7 NONCE = D5D0E8B9
Envoyer: _014fa607d67b614925737be76bce53a41ba12b3c8b659f27ef6726be6049f924522d2b3c8b659c78616c779 a13c81a609
35067953386a9d52b3d0f24a3b0a607d67bb2a8cc5326708e0ef55b267700000000 Recv: 0fb200b2
// Forcer le changement de tâche
Envoi: 020000
Recv: 0f020002
// Lire le tampon nonce
Envoyer: 040000 Recv: _0f04000000000000000000000000000000000000000000000000000000003ffffffc7f7a42132ffffffc 1ffffffc0001ffbf8c
FIFO [0] = aaaaaaaa
FIFO [1] = aaaaaaaa
FIFO [2] = aaaaaaaa
FIFO [3] = aaaaaaaa
FIFO [4] = aaaaaaaa
FIFO [5] = aaaaaaaa
FIFO [6] = aaaaaaaa
FIFO [7] = 3ffffffc
FIFO [8] = d5d0e8b9 <- valeur nonce
FIFO [9] = 2ffffffc <- marqueur de changement de tâche
FIFO [A] = 1ffffffc <- marqueur de changement de tâche
FIFO [B] = aaab5515



Où la puce sera-t-elle utilisée


Maintenant, nous installons de nouveaux appareils dans nos propres serveurs d'exploration de données et centres de données mobiles de BlockBox . Nous modifions également les fermes de bitcoins au Canada, en Islande, en Géorgie et en Norvège ( lancées au début de l'année ).

Les puces Clarke seront disponibles en tant que produit commercial. En particulier, ils viennent avec des mineurs Bitfury Tardis conçus pour les grandes organisations. Dans Tardis, 5 à 8 planches sont adaptées, capables de calculer jusqu'à 80 téraheshes par seconde. Ce mineur peut être mis à niveau - à l'avenir, ASIC Clarke qui y sera installé sera remplacé par de nouvelles puces.



Voici notre courte vidéo présentant le concept de la nouvelle puce:

Source: https://habr.com/ru/post/fr428788/


All Articles