En Solo Mining, un mineur reçoit la récompense des blocs trouvés grâce à sa propre puissance et intégrés à la chaîne. Un bloc est un groupe de transactions ajouté à la blockchain, l’historique public de Bitcoin. « Trouver un bloc » signifie obtenir un résultat de calcul permettant de proposer ce groupe au reste du réseau, qui doit encore vérifier le respect de toutes les règles. Les découvertes des autres ne lui procurent aucun revenu régulier. Il peut gérer son infrastructure ou utiliser un serveur solo externe payant. « Solo » décrit avant tout la répartition des récompenses.
Jan achète un ASIC, une machine spécialisée dans les calculs du minage. Le tableau de bord indique une activité, mais son portefeuille ne reçoit rien. En Solo Mining, cela ne révèle pas forcément une panne. Sa puissance lui donne une chance de trouver un bloc, pas un salaire horaire. Un Mining Pool classique répartit les récompenses selon ses règles ; en solo, Jan attend sa propre découverte. Utiliser un serveur via Stratum, un protocole de communication pour mineurs, ne signifie pas automatiquement partager les paiements. [1] [6]
Prenons une part constante de 1 % de la puissance du réseau. C’est une proportion élevée choisie pour illustrer le calcul, pas une hypothèse pour une machine domestique. Sur les 100 prochains blocs du réseau, le nombre moyen de découvertes personnelles attendu est un. Pourtant, la probabilité d’en trouver au moins un n’est que de 1 − 0,99^100, soit environ 63,4 %. La formule calcule d’abord la probabilité que tous ces blocs soient trouvés par d’autres mineurs, puis la retranche de la certitude. Il reste la probabilité que Jan en trouve au moins un. Il peut y en avoir plusieurs, ou aucun. Attendre longtemps n’améliore pas l’essai suivant : le minage ne garde aucune mémoire des échecs. Difficulté, puissance relative et interruptions peuvent aussi modifier les hypothèses du modèle. [1]
Jan paie l’électricité quel que soit le résultat, ainsi que le matériel, le refroidissement et l’entretien. Le revenu moyen attendu n’est donc pas une somme disponible chaque mois pour régler ses factures. Partager les revenus d’un pool atténue leurs fluctuations ; cela ne donne pas au même appareil davantage de Hashrate, c’est-à-dire de calculs par seconde. Frais et règles de paiement varient également. Pour une expérience à domicile, Jan peut définir un budget supportable même sans aucune découverte. La réussite d’un autre mineur ne prédit pas ses propres gains. [1]
Solo CKPool fournit par exemple du travail de minage, une connexion au réseau et des statistiques. La récompense du bloc de Jan n’est pas répartie entre les autres participants comme dans un pool classique, mais le service peut prélever ses frais. Il faut connaître l’adresse de paiement, les conditions et la procédure en cas de panne. À l’inverse, un Full Node, un nœud qui vérifie les règles de Bitcoin, ne remplace pas la puissance de l’ASIC. Infrastructure et répartition des récompenses sont deux choix distincts. Une liste de blocs trouvés montre les gagnants, pas les chances de chaque appareil. [6]
La machine calcule sans cesse un hash, une empreinte numérique de l’en-tête du bloc proposé. L’en-tête est un court ensemble de données sur le bloc, qui relie le bloc proposé au précédent et aux transactions qu’il contient. Bitcoin Core vérifie qu’il est inférieur ou égal à la cible du réseau, target, encodée dans nBits. Le serveur peut aussi accepter des résultats répondant à une cible plus facile : les shares. Dans un service solo, elles permettent de suivre le travail de la machine ; elles ne constituent ni un bloc trouvé ni un droit à un petit paiement. Abaisser leur difficulté produit plus de signalements, sans améliorer la chance de chaque calcul face à la cible du réseau. Même la meilleure share ne prouve pas la découverte d’un bloc valide. [2] [6]
Avant la recherche, le logiciel prépare un projet de bloc, un modèle. BIP 22 décrit getblocktemplate, une interface qui fournit notamment previousblockhash, la référence au bloc précédent, les transactions et coinbasevalue, le montant maximal disponible pour la récompense. Le logiciel assemble la coinbase, la première transaction particulière qui paie la récompense, et l’en-tête ; l’ASIC essaie ensuite différentes variantes. Quand le réseau avance, son travail doit être actualisé. Une machine rapide avec un mauvais destinataire ou un modèle dépassé n’est pas une installation bien configurée. [3]
Un hash suffisamment bas ne suffit pas. Les autres nœuds vérifient également les transactions, la coinbase et la place du bloc dans la chaîne. Deux mineurs peuvent trouver des blocs concurrents, puis le réseau poursuivre sur l’autre branche. Un bloc hors de la chaîne active est dit stale ; sa récompense ne peut pas être dépensée dans cette chaîne. Une diffusion rapide et un travail à jour sont donc essentiels. Jan vérifie l’acceptation du bloc entier et les confirmations suivantes, pas seulement un voyant vert annonçant une share acceptée. [3] [4]
La récompense peut comprendre du bitcoin nouvellement créé, la subvention de bloc, et les frais des transactions incluses. La hauteur d’un bloc indique sa position dans la chaîne. Sur le réseau principal, de la hauteur 840000 au bloc précédant 1050000, la subvention vaut 3,125 BTC. Les frais varient et un service peut prélever sa part. La coinbase ne doit pas payer plus que la subvention et ces frais réunis. COINBASE_MATURITY s’applique aussi : la récompense ne peut être dépensée que dans un bloc dont la hauteur dépasse d’au moins 100 celle du bloc qui l’a créée. Ce sont des blocs, pas 100 minutes. Découverte, récompense confirmée et argent immédiatement disponible sont des étapes différentes. [4] [5] [7]
Pour une vision complète, lisez aussi Minage, Mining Pool, getblocktemplate, Hashrate, Pay Per Share, Pay Per Last N Shares. Cette entrée est également citée par Mining Pool, Pay Per Share.