Un Mining Pool est un service de distribution du travail et de répartition comptable des récompenses. Le pool attribue des tâches de minage et les mineurs soumettent des shares satisfaisant un target de pool plus facile, qui servent de base statistique à l’estimation du travail réalisé. Seul un résultat rare satisfait également le target du réseau et permet de soumettre un bloc candidat ; celui-ci doit respecter toutes les règles de consensus. Un share ordinaire n’est pas un bloc Bitcoin, et le contrôle du pool sur les tâches ne lui donne pas le pouvoir de modifier le consensus.
Le Solo Mining présente une forte variance : un mineur reçoit tout le revenu du bloc lorsqu’il trouve un bloc accepté, sinon rien. Un pool regroupe de nombreux mineurs et répartit les revenus selon leur part estimée du travail. Il ne réduit pas la Difficulty du réseau ; il ne fait que lisser statistiquement les versements. [Bitcoin Developer Guide — Mining] [Meni Rosenfeld — Analysis of Bitcoin Pooled Mining Reward Systems]
Une tâche de minage repose sur un Block Template ou une construction équivalente d’un bloc candidat. BIP22 décrit getblocktemplate et BIP23 ses extensions pour le minage en pool. Le protocole du pool transmet aux workers les champs nécessaires, les données de la transaction coinbase et l’espace de recherche. Un ASIC Miner teste des en-têtes candidats ; le bloc soumis doit avoir un hash d’en-tête satisfaisant le target de Proof of Work du réseau et respecter aussi les autres règles de consensus. [BIP 22 — getblocktemplate] [BIP 23 — getblocktemplate pooled mining] [Bitcoin Core mining RPC — getblocktemplate]
Un Mining Share est un résultat soumis dont le hash satisfait le target du pool, généralement bien plus facile à atteindre que celui du réseau. À partir des shares acceptés et de leur difficulté, le pool estime statistiquement la part de travail de chaque worker ; il ne compte pas exactement ses tentatives. Un share ordinaire satisfaisant uniquement le target du pool ne devient pas un bloc dans la blockchain et ne crée aucune confirmation. Il sert à mesurer la contribution pour la comptabilité. [Meni Rosenfeld — Analysis of Bitcoin Pooled Mining Reward Systems] [Stratum V2 — Mining Protocol]
Le pool définit un share target plus facile pour recevoir des résultats assez souvent pour effectuer ses mesures. Le target du réseau Bitcoin est bien plus difficile à satisfaire. Un share satisfaisant uniquement le target du pool apporte un crédit comptable ; si le même hash satisfait aussi le target du réseau, un bloc candidat peut être soumis. VarDiff modifie la difficulté des shares et donc leur fréquence, pas la Difficulty de consensus de Bitcoin. [Stratum V2 — Mining Protocol]
PPS verse une valeur attendue fixée pour chaque share accepté en fonction de sa difficulté et transfère au pool le risque des fluctuations aléatoires des découvertes de blocs. FPPS ajoute généralement à la subvention attendue une estimation des revenus des frais de transaction. PPLNS répartit les revenus des blocs réellement trouvés selon les shares d’une fenêtre de travail récente, laissant ainsi davantage de variance au mineur. Les formules précises, les frais et le traitement des Stale Blocks dépendent des règles de chaque pool. [Meni Rosenfeld — Analysis of Bitcoin Pooled Mining Reward Systems] [Braiins Academy — Rewards and Payouts]
Dans un pool classique, l’opérateur du pool prépare généralement le Block Template et détermine aussi le destinataire de la sortie coinbase. Le mineur explore principalement l’espace qui lui est attribué. Le pool acquiert ainsi une influence sur la sélection des transactions, mais pas la capacité d’imposer un bloc invalide ; chaque Full Node valide le bloc indépendamment. [Bitcoin Developer Guide — Mining] [Stratum V2 — Protocol Overview]
Stratum V1 sert à attribuer le travail de minage, et le contrôle du modèle reste généralement au pool. Stratum V2 distingue plus clairement les rôles et prend en charge des communications chiffrées et authentifiées. Le Job Declaration Protocol optionnel permet au mineur de soumettre son propre modèle avec sa propre sélection de transactions, si le mineur et le pool prennent tous deux en charge les composants nécessaires. Le Mining Protocol de Stratum V2 peut fonctionner seul, sans cette possibilité ; la désignation Stratum V2 ne garantit donc pas à elle seule une sélection indépendante des transactions. [Stratum V2 — Protocol Overview]
La concentration des pools importe, car un petit nombre de coordinateurs peut influencer l’inclusion des transactions, le déploiement des logiciels et la répartition du Hashrate à court terme. Le Hashrate d’un pool n’est toutefois pas équivalent à la propriété des équipements de minage : les opérateurs d’ASIC peuvent rediriger leurs machines. Le risque augmente si les coûts de changement de pool, les contrats ou le micrologiciel limitent cette possibilité. [Bitcoin Developer Guide — Mining] [Stratum V2 — Protocol Overview]
Un share peut être rejeté parce qu’il est périmé (stale), dupliqué, mal construit ou incompatible avec la tâche attribuée. Une latence plus élevée entre le mineur et le pool, des mises à jour lentes des tâches et des interruptions du réseau augmentent le travail perdu. La proportion de stale shares renseigne donc sur l’efficacité opérationnelle de la liaison entre le mineur et le pool ; ce n’est pas la même chose qu’un Stale Block dans la blockchain. [Stratum V2 — Mining Protocol]
Le mineur doit vérifier les frais du pool, le modèle de récompense, le montant minimal et les règles des versements, la Share Difficulty, la proportion de shares rejetés et stale, les serveurs et connexions de secours, la compatibilité du micrologiciel et qui contrôle la sélection des transactions. Pour des revenus importants, il convient de comparer le tableau de bord du pool aux shares acceptés et à ses blocs dans la blockchain. [Braiins Academy — Rewards and Payouts] [Stratum V2 — Mining Protocol]
Pour une vision complète, lisez aussi Minage, Hashrate, Braiins Pool, Stratum V2, Mining Share, Pay Per Share. Cette entrée est également citée par Transaction coinbase, ASIC Miner, Hashrate, Nonce.