Un examen complet de la sélection des composants à la configuration logicielle pour un système d'agriculture (minage) de crypto-monnaie Chia.
Chia est une nouvelle crypto-monnaie qui vise à atteindre un consensus décentralisé avec une consommation d'énergie par transaction inférieure à celle de ses pairs. Ceci est réalisé via un algorithme de preuve d'espace au lieu de Preuve de travail.
Alors que la preuve de travail repose sur le calcul continu d'un problème mathématique (généralement des hachages tels que SHA256) pour tenter de trouver des résultats correspondant au modèle souhaité, Chia s'appuie plutôt sur la vérification de l'existence de certaines propriétés dans des fichiers uniques pré-générés appelés tracés.
Cela se fait dans un processus en deux étapes appelé agriculture consistant en:
- Traçage où de gros fichiers uniques (généralement 101.6 Go) sont créés.
- Et récolte où les fichiers créés précédemment sont vérifiés pour avoir une chance de gagner la récompense de ce bloc (actuellement 2 Chia).
Plus un nœud possède de parcelles (stockage plus important utilisé), plus grandes sont les chances de gagner la récompense de ce bloc. Il y a 4608 chances de gagner quotidiennement et la probabilité de gagner la récompense de ce bloc est basée principalement sur le nombre de parcelles que l'on possède en proportion de la taille totale du réseau. Un calculateur de gains est fourni ici.
Par conséquent, pour maximiser les récompenses, nous voulons avoir la plus grande quantité de stockage possible et suffisamment de ressources informatiques pour remplir ladite mémoire de tracés.
Comme pour la plupart des problèmes de conception, il existe une infinité de solutions valables à la combinaison d'appareils pouvant être utilisés pour cultiver Chia. Pour aider à affiner les options, j'ai commencé par décider de certaines contraintes et priorités :
- Le coût en $/To doit être minimisé malgré une complexité supplémentaire (dans des limites raisonnables).
- En raison de mon temps limité à consacrer à ce projet, le système devrait être principalement composé de pièces standard (pas de PCB personnalisés, de châssis personnalisés, etc.).
Tracé — Traitement
Selon la configuration matérielle, la création d'un seul tracé peut prendre entre 4 et 20 heures. Par conséquent, choisir le bon matériel de traçage peut faire la différence entre remplir toute votre ferme en quelques jours plutôt qu'en mois.
Il est important de considérer non seulement la vitesse à laquelle chaque tracé est réalisé, mais également le nombre de tracés simultanés qui peuvent être créés. Par exemple, une configuration qui crée 10 tracés simultanés à 12 heures chacun produira 20 tracés (~ 2 To/jour) alors qu'une configuration qui trace 1 tracé simultané toutes les 4 heures ne produira que 6 tracés par jour (0.6 To/jour).
Pour minimiser les coûts, j'ai décidé de rechercher des serveurs déclassés. Ces serveurs ont des propriétés intéressantes qui pourraient en faire de puissants traceurs, notamment :
- Un grand nombre de carottes peut permettre plusieurs parcelles en parallèle. La phase 1 (environ la moitié du temps de tracé) est multithread (généralement configurée pour être entre 2 et 4 threads), mais les phases restantes sont à thread unique.
- La RAM disponible est généralement supérieure à celle requise pour tracer (~ 4 Go/tracé simultané).
- Conçu pour fonctionner à charge élevée pendant de longues périodes.
Après avoir passé en revue des dizaines d'options et de configurations possibles, j'ai opté pour un HP ProLiant DL380p Gen8 avec 2x Intel E5-2670 et 192 Go de RAM DDR3. Avec l'hyper-threading activé, ce serveur pourrait théoriquement prendre en charge le traçage simultané de jusqu'à 16 tracés en phase 1 pour moins de 400 $.
Traçage — Stockage temporaire
En raison de la charge d'écriture élevée lors de la création du tracé (environ 1.6 To écrit pour un tracé ak=32), le choix du support de stockage temporaire peut avoir un impact significatif sur le temps et le coût de traçage. Quelques points à considérer :
- Plus le stockage est rapide, plus les tracés peuvent être créés rapidement. Ce fil traite des temps de tracé de 4 heures en utilisant RAMDISK (monter un dossier sur la RAM).
- Compte tenu du volume d'écriture important, il est important de considérer l'endurance du support. Un SSD NVMe de qualité grand public de 1 To a généralement une endurance d'environ 600 TBW (téraoctets écrits) avant qu'il ne tombe en panne, ce qui signifierait qu'il pourrait faire environ 375 parcelles.
J'ai fini par opter pour l'achat d'un HP StorageWorks D12 à 2600 baies avec des disques SAS 15K 450 Go. Avec cette configuration, je peux tracer simultanément sur chaque lecteur sans risquer de conflit d'E/S au niveau du lecteur. Les disques JBOD + étaient nettement moins chers qu'une configuration équivalente avec des disques NVMe (sans même prendre en compte le coût de remplacement une fois que TBW a été atteint).
Ferme — Stockage à long terme
Contrairement au stockage de traçage, le stockage de récolte ne nécessite pas de débit élevé ni d'IOP. Pour cette raison, la réduction des coûts était la priorité la plus élevée.
Il y a plusieurs configurations possibles dont certaines sont discutées ici. Cependant, après avoir recherché sur eBay des options d'occasion, certaines choses sont devenues claires :
- Les disques durs 3.5 pouces plus grands ont tendance à être les moins chers. Cela a du sens puisque la plupart des appareils sont aujourd'hui passés aux tailles plus petites de 2.5 "ou 1.8".
- Les disques durs SAS (pas les SSD) semblaient avoir le coût par To le plus bas avec certains lots aussi bas que 10 $/To (en mai 2021). Ces disques SAS ne sont pas compatibles avec les cartes SATA (grand public) et sont généralement vendus sur eBay après avoir été mis hors service du centre de données d'une entreprise.
Une fois que je me suis concentré sur l'utilisation de disques durs SAS de 3.5 pouces, j'ai dû trouver un moyen de les connecter réellement à mon abatteur/traceur. Tenant compte de la contrainte de ne pas construire le boîtier/le fond de panier, j'ai commencé à rechercher des boîtiers d'occasion pouvant abriter ces disques tout en maintenant le coût par baie le plus bas.
Je suis tombé sur plusieurs options sur eBay et j'ai fini par acheter quelques modèles différents, dont un HP 24PAR à 3 baies et deux IBM DS12 à 3512 baies.
Liste complète
La liste finale des composants est présentée ci-dessous. Il comprend les principaux composants décrits ci-dessus, mais également des pièces auxiliaires nécessaires pour assembler le système.
Une mention digne est la carte HBA. C'est la carte PCIe qui expose les connecteurs externes SAS auxquels se connecteront les câbles des JBOD. Lors de l'achat, assurez-vous que vous obtenez une carte en mode cible d'initiateur (IT) afin que les lecteurs apparaissent directement dans le système d'exploitation, par opposition à une carte en mode IR. En plus, vous voudrez peut-être faire flasher une carte avec un système d'exploitation plus récent (version 20).
La configuration est principalement intuitive. Les câbles se connectent aux trous dans lesquels ils s'insèrent. Cependant, le câblage SAS qui relie les JBOD et la machine de traçage/récolte peut être connecté en guirlande.
Dans mon cas, j'ai deux câbles sortant du serveur (un sur chaque port du HBA). L'un des câbles se connecte à l'entrée de la matrice de stockage temporaire (HP D2600) et la sortie de cette matrice se connecte à la matrice HP 3PAR. L'autre câble se connecte à la première baie IBM et la sortie de celui-ci se connecte à la deuxième baie IBM. Les JBOD ont généralement un port d'entrée (principal) et un port de sortie (généralement étiqueté avec une flèche vers l'extérieur).
j'ai installé Ubuntu LTS 20.04 sur le serveur car il s'agit d'une distribution Linux largement utilisée, ce qui signifie qu'il serait plus facile de trouver des forums de dépannage en cas de problème. Les étapes ci-dessous décrivent la configuration restante.
Étape 1 : Assurez-vous que tous les lecteurs sont disponibles
La première étape consiste à vérifier quels lecteurs sont détectés par le système d'exploitation. Ceci peut être accompli en exécutant le lsscsi
commander. Dont la sortie est illustrée ci-dessous.
Notez que la commande ci-dessus ne fournit pas d'informations sur le système de fichiers ou la taille des lecteurs. Pour cela, lancez le lsblk
commander.
Important: Notez que tous les lecteurs n'apparaissent pas sous les deux commandes ! Les lecteurs qui apparaissent sous lsscsi
mais pas lsblk
peut avoir une certaine incompatibilité qui empêche le système d'exploitation de les rendre disponibles pour le montage, etc. Un exemple de ceci est /dev/sdaw
.
Dans mon cas, ce problème était dû au fait que la taille du secteur était de 520, ce qui n'est pas pris en charge par mon noyau Linux installé (une discussion sur ce sujet peut être trouvée ici et de ici). Vous pouvez déterminer si c'est votre cas en consultant le dmesg
journal de la commande pour un message d'erreur comme [sdaw] Unsupported sector size 520
.
Pour résoudre ce problème, j'ai reformaté les disques en utilisant une taille de bloc de 512 avec la commande sg_format -v --format --size=512 /dev/sdX
. L'exécution de cette commande peut prendre un certain temps (plusieurs heures) et la sortie est illustrée ci-dessous.
À la fin, le lecteur devrait apparaître dans le lsblk
sortie.
Étape 2 : Créer un système de fichiers sur les lecteurs
Pour formater les disques avec le ext4 système de fichiers, j'ai exécuté la commande suivante : sudo mkfs -t ext4 — verbose /dev/sda
.
Étape 3 : Monter les disques
Maintenant que nous pouvons accéder aux disques et qu'ils ont été formatés avec le système de fichiers souhaité, nous pouvons monter ces lecteurs.
- Créez les dossiers dans lesquels nous monterons les lecteurs. Par example:
/mnt/farm/00
à/mnt/farm/23
pour les lecteurs qui stockeront les tracés finaux, et/mnt/plot-tmp/00
à/mnt/plot-tmp/11
pour les emplacements de traçage temporaires. - Courir
sudo blkid
pour obtenir les identifiants uniques de vos disques (ou partitions). Il affichera plusieurs lignes telles que/dev/sdae: UUID=”29494f44–2f75–4c01-a766–18755eb583d7" TYPE=”ext4"
. - Modifiez le fichier fstab avec
sudo vim /etc/fstab
et associez chacun des lecteurs à leur correspondant/mnt/...
dossier. Être prudent de ne pas éditer les premières lignes du fichier car celles-ci sont nécessaires pour monter le lecteur racine du système d'exploitation. Mon fichier final est montré ci-dessous. - Courir
sudo mount -a
pour monter tous les lecteurs spécifiés dans le fichier fstab. Il ne montera que les lecteurs qui ne sont pas déjà montés, il est donc sûr de l'exécuter plusieurs fois. - Assurez-vous que les utilisateurs ont accès aux lecteurs et à leurs fichiers en exécutant sudo
chmod -R 777 /mnt/farm/00
.
Étape 4: Exécutez le logiciel Chia Blockchain
- Suivez les instructions officielles spécifiées ici pour installer la blockchain Chia (je n'ai pas installé l'interface graphique).
- Courir
chia start farmer
pour démarrer les démons pour le portefeuille, la moissonneuse, etc.
Étape 5 : Configurer Plotman (facultatif)
L'intrigueur est un gestionnaire de traçage qui prendra en charge la création de nouvelles tâches de traçage. C'est un outil pratique (non requis).
- Installez Plotman en suivant les instructions ici.
- Modifier
plotman.yaml
aux spécifications de votre traceur. Mon fichier final est montré ci-dessous.
interface utilisateur:
use_stty_size : vrai
répertoires :
log : /home/plotter/plotman-logs
tmp :
- /mnt/plot-tmp/f00
- /mnt/plot-tmp/f01
- /mnt/plot-tmp/f02
- /mnt/plot-tmp/f03
- /mnt/plot-tmp/f04
- /mnt/plot-tmp/f05
- /mnt/plot-tmp/f06
- /mnt/plot-tmp/f07
- /mnt/plot-tmp/f08
- /mnt/plot-tmp/f09
- /mnt/plot-tmp/f10
- /mnt/plot-tmp/f11
dst :
#- /mnt/farm/00 COMPLET
#- /mnt/farm/01 COMPLET
#- /mnt/farm/02 COMPLET
#- /mnt/farm/03 COMPLET
#- /mnt/farm/04 COMPLET
#- /mnt/farm/05 COMPLET
#- /mnt/farm/06 COMPLET
#- /mnt/farm/07 COMPLET
#- /mnt/farm/08 COMPLET
#- /mnt/farm/09 COMPLET
#- /mnt/farm/10 COMPLET
#- /mnt/farm/11 COMPLET
- /mnt/ferme/12
- /mnt/ferme/13
- /mnt/ferme/14
- /mnt/ferme/15
- /mnt/ferme/16
- /mnt/ferme/17
- /mnt/ferme/18
- /mnt/ferme/19
- /mnt/ferme/20
- /mnt/ferme/21
- /mnt/ferme/22
- /mnt/ferme/23
Planification:
tmpdir_stagger_phase_major : 2
tmpdir_stagger_phase_minor : 1
tmpdir_stagger_phase_limit : 1
tmpdir_max_jobs : 1
global_max_jobs : 20
global_stagger_m : 40
polling_time_s : 30
traçage:
k : 32
e: False # Utilisez l'option de tracé -e
n_threads : 2 # Threads par tâche
n_buckets : 128 # Nombre de buckets dans lesquels diviser les données
job_buffer: 8096 # Par mémoire de travail
Quelques points à mentionner :
- Plotman n'arrête pas de planifier les lecteurs de batterie (au moment de la rédaction de cet article) lorsque le lecteur est plein. Par conséquent, vous devez les supprimer (ou les commenter comme ci-dessus).
- Plotman ajoutera automatiquement des disques de ferme à la moissonneuse de chia.
- j'utilise
tmpdir_max_jobs
égal à 1 car je trace sur des disques durs qui n'ont pas de bonnes performances de recherche par rapport aux SSD.
Étape 6 : Exécutez le traceur
À ce stade, tout ce qui est nécessaire pour commencer à tracer est d'exécuter plotman interactive
.
Remarque : Le travail de très longue durée de traçage /dev/farm/usb2
est une exécution de débogage qui n'est pas censée s'exécuter jusqu'à la fin.
J'espère que cela peut vous être utile pour vous donner une idée de ce qui est nécessaire pour cultiver Chia !
À l'heure actuelle, ma ferme est pleine au tiers et je prévois de publier des mises à jour au fur et à mesure qu'elle se remplit et lorsque je commence à re-tracer pour les pools.
Un merci spécial à Katie Gandomi pour l'aide au développement.
Bonne agriculture!
- accès
- Supplémentaire
- Tous
- autour
- baie
- blockchain
- Développement
- acheter
- Achat
- causé
- chances
- vérification
- composant
- informatique
- Consensus
- consommateur
- consommation
- crypto-monnaie
- données
- journée
- Décentralisé
- Conception
- Développement
- Compatibles
- DID
- Mes Revenus
- eBay
- énergie
- EU
- EV
- ferme
- agriculture
- Prénom
- s'adapter
- le format
- plein
- Don
- Bien
- Matériel
- Haute
- Villa
- hr
- HTTPS
- ia
- IBM
- idée
- Impact
- Y compris
- d'information
- Intel
- IP
- IT
- Emploi
- Emplois
- gros
- Niveau
- limité
- linux
- Liste
- charge
- Location
- LP
- Match
- math
- moyenne
- Mines
- mois
- réseau et
- officiel
- Options
- Autre
- Patron de Couture
- performant
- Piscines
- Projet
- preuve
- RAM
- Resources
- Résultats
- Avis
- Programme de fidélité
- plate-forme
- Courir
- pour le running
- des
- Rechercher
- sens
- Taille
- So
- Logiciels
- vendu
- Solutions
- RÉSOUDRE
- l'espace
- vitesse
- scission
- Commencer
- j'ai commencé
- storage
- Boutique
- Support
- Appareils
- combustion propre
- Target
- temporaire
- fiable
- transaction
- Actualités
- utilisateurs
- Versus
- le volume
- Wallet
- Qu’est ce qu'
- Wikipédia
- gagner
- dans les
- activités principales
- vaut
- écriture