forward the original title ‘白话区块链三:揭开挖矿神秘的面纱——挖矿是什么?为什么要挖矿?谁是我们买不起显卡的罪魁祸首?’
L'un des concepts les plus familiers liés à la blockchain pour tout le monde est probablement l'extraction minière. De nombreuses personnes ont peut-être entendu parler de l'extraction minière à de nombreuses reprises, mais ne sont pas tout à fait sûres de ce qu'elle implique réellement. Dans cette section, nous interrompons notre programmation régulière pour d'abord introduire l'extraction minière.
un bref récapitulatif du contenu de “plain blockchain 1: introduction to bitcoin (le pionnier de la révolution blockchain et le challenger de la monnaie souveraine),” où satoshi nakamoto a conçu le système monétaire du bitcoin pour lier les récompenses de la tenue de comptes à l'émission de monnaie. cette approche permet à l'émission de monnaie d'être automatisée grâce au processus de tenue de comptes, résolvant ainsi le problème de l'émission de monnaie tout en encourageant les tenanciers de comptes à participer activement.
dans le monde réel, l'exploitation minière implique des mineurs utilisant divers outils pour extraire des métaux précieux cachés dans les roches des mines. les mineurs extraient de la valeur de ces métaux rares cachés dans la nature par le travail physique.
pour les projets blockchain avec des récompenses pour la tenue de livres (généralement des projets de monnaie numérique), les nœuds du réseau dépensent des ressources informatiques pour résoudre des problèmes. Une fois qu'ils trouvent la solution, ils empaquettent le bloc et reçoivent une récompense sous forme de monnaie nouvellement émise. Ce processus est analogue à l'extraction de métaux précieux tels que l'or à partir du minerai, d'où le terme couramment utilisé de «minage». Ici, les tenanciers de livres sont les mineurs, qui rivalisent pour empaquetter les blocs à l'aide de matériel et d'électricité, ce qui entraîne la création d'une nouvelle monnaie.
Le minage sert à deux fins principales : valider les transactions récentes en les regroupant en blocs et en les reliant à la chaîne de blocs, et émettre une nouvelle devise en récompensant les gardiens de livre. Ci-dessous sont les fonctions détaillées du minage :
Les mineurs sont incités à participer à l'extraction car ils reçoivent des récompenses substantielles pour avoir réussi à empaqueter un bloc sur la chaîne de blocs. Ces récompenses proviennent de deux sources principales :
avec le temps, les récompenses en bloc diminueront (par exemple, en raison du mécanisme de division par deux du bitcoin, où la récompense est divisée par deux environ tous les quatre ans). finalement, une fois que les 21 millions de bitcoins auront été minés, prévu vers l'année 2141, la récompense automatique en bloc cessera d'exister, et les frais de transaction deviendront la principale source de revenus pour les mineurs.
bitcoin génère un nouveau bloc environ toutes les 10 minutes. initialement, chaque nouveau bloc produit 50 bitcoins. cette récompense est réduite de moitié tous les quatre ans, et à ce jour, il y a eu quatre de ces événements de réduction de moitié. actuellement, chaque bloc génère 3,125 bitcoins, avec la réduction de moitié la plus récente ayant eu lieu en avril 2024. la prochaine réduction de moitié est prévue vers 2028. vers 2141, bitcoin atteindra sa limite d'émission.
Les frais de transaction sont influencés non seulement par l'offre et la demande, mais aussi par la taille de la transaction, car les frais sont proportionnels à l'espace occupé par la transaction dans le bloc.
Pour les mineurs, participer au minage est simple. Téléchargez un client de portefeuille de crypto-monnaie, et à l'intérieur du client, cliquez sur le bouton de minage pour commencer à miner.
pour les projets blockchain avec des récompenses en blocs, l'algorithme de minage est généralement écrit dans un script intégré au portefeuille. les mineurs n'ont qu'à cliquer sur un bouton pour démarrer le script.
l'algorithme de minage est déterministe, ce qui signifie que tant que les mineurs exécutent continuellement l'algorithme, ils obtiendront éventuellement un résultat. cependant, en raison des ressources informatiques variables, le temps nécessaire pour calculer ce résultat peut différer d'un mineur à l'autre. une fois qu'un nœud calcule la valeur cible, les efforts des autres mineurs pendant cette période sont rendus futiles, entraînant des rendements négatifs en raison des ressources physiques dépensées.
pour éviter les efforts inutiles, les mineurs regroupent souvent leurs ressources de calcul en rejoignant un nœud de pool de minage. Ce nœud fonctionne comme n'importe quel autre nœud mais dispose d'une puissance de calcul considérablement plus importante. Lorsque le pool réussit à miner un bloc, les récompenses sont réparties entre les mineurs participants en fonction de leurs ressources de calcul contribuées. Il est important de noter que sur la blockchain, le mineur enregistré comme empaquetant le bloc est le nœud de pool de minage, tandis que les mineurs individuels reçoivent leur part des récompenses allouées par le pool, pas directement du système de monnaie.
Bitmain, une entreprise qui fabrique des puces minières spécialisées à haute efficacité, a solidifié le rôle des pools de minage, contribuant ainsi à la centralisation du pouvoir de tenue de livres.
différents projets blockchain peuvent avoir des puzzles miniers et des niveaux de difficulté variables. ici, prenons bitcoin comme exemple. l'algorithme minier utilisé par bitcoin s'appelle proof of work (pow). l'essence de cet algorithme est qu'une certaine quantité de travail doit être dépensée pour prouver un résultat.
le puzzle de minage n'est pas un problème mathématique traditionnel mais consiste à trouver un nombre aléatoire, appelé nonce. Ce nonce, lorsqu'il est combiné avec les données du bloc et traité par une fonction de hachage, doit produire une valeur de hachage qui satisfait une condition spécifique. En général, cette condition exige que la valeur de hachage soit inférieure à une valeur cible (ou, de manière équivalente, que les premiers n bits de la valeur de hachage soient nuls). L'équation est la suivante: hachage(nonce+données_bloc)≤cible\text{hachage}(\text{nonce} + \text{données_bloc}) \leq \text{cible}hachage(nonce+données_bloc)≤cible
bitcoin utilise la fonction de hachage sha-256, qui convertit n'importe quelle longueur d'entrée en une sortie de longueur fixe de 256 bits (équivalent à 64 chiffres hexadécimaux ou 32 octets). la sortie est presque aléatoire mais garantie d'être la même pour la même entrée. le minage implique de changer continuellement le nonce et de hacher les données d'en-tête de bloc en utilisant sha-256 jusqu'à ce qu'une valeur de hachage qui satisfait la condition cible soit trouvée.
par exemple, une valeur de hachage sha-256 avec les 30 premiers bits étant des zéros: 000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110
la conversion de ceci en hexadécimal donne une valeur commençant par sept zéros: 00000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac90
En simplifiant, la probabilité de trouver un hachage avec les premiers n bits étant zéro est de 12n\frac{1}{2^n}2n1. Plus n est grand, plus il y a de bits à zéro et plus la probabilité est faible :
avec n jusqu'à 256, trouver une valeur de hachage avec la puissance de calcul humaine actuelle, en excluant les ordinateurs quantiques, est pratiquement impossible avant que la Terre cesse d'exister.
en raison des propriétés de sha-256, la seule méthode est la force brute, qui consiste à essayer continuellement différents nonces jusqu'à ce que la condition soit satisfaite. cette nécessité d'équipements informatiques haute performance est la raison pour laquelle l'exploitation minière nécessite de tels appareils.
puisque vous ne pouvez pas prédire la valeur de hash générée en ajoutant le nonce aux données de bloc et en les passant à travers sha-256, le processus est entièrement aléatoire. par exemple, si la valeur de hash cible est 10 000, vous ne pouvez pas savoir quel nonce combiné aux données de bloc donnera une valeur de hash inférieure à 10 000. cette nature imprévisible et aléatoire signifie que les mineurs doivent énumérer les possibilités jusqu'à ce que la condition soit satisfaite. si plusieurs valeurs remplissent la condition, la plus petite valeur de hash est choisie car une plus petite valeur de hash indique une difficulté plus élevée et une probabilité plus faible d'occurrence.
vérifier si une valeur de hachage générée satisfait la condition est facile, ne nécessitant qu'une seule opération de comparaison. cependant, trouver une valeur de hachage inférieure ou égale à la valeur cible ne peut être réalisé que par une énumération par force brute. cette caractéristique, où vérifier un résultat est facile mais trouver le résultat est difficile, est connue sous le nom d'asymétrie computationnelle.
Le code suivant simule le processus d'extraction. Il commence par une chaîne de données d'en-tête de bloc « geekbang » et effectue une recherche progressive à partir d'une valeur de nonce de 10 000 jusqu'à ce qu'il trouve un nonce qui satisfait la condition spécifiée.
Voici un script python qui démontre le processus de minage:
import hashlibdef main(): base_string = "geekbang" nonce = 10000 count = 0 while true: target_string = base_string + str(nonce) pow_hash = hashlib.sha256(target_string.encode()).hexdigest() count += 1 if pow_hash.startswith("0000"): # premiers 4 chiffres hexadécimaux sont 0, équivalent aux premiers 16 bits étant 0 print("hash:", pow_hash) print("nonce:", nonce, "temps de numérisation:", count) break nonce += 1if __name__ == '__main__': main()
lorsque l'exigence est que les 4 premiers chiffres hexadécimaux du résultat du hachage soient nuls (équivalent à ce que les 16 premiers bits soient nuls), le nombre de calculs est d'environ 58 000. si l'exigence est augmentée pour que les 5 premiers chiffres soient nuls, le nombre de calculs augmente à 1,23 million. lorsque l'exigence est que les 7 premiers chiffres soient nuls, le nombre de calculs atteint 160 millions. cela illustre que chaque zéro supplémentaire dans le préfixe de hachage augmente le calcul d'environ 16 fois.
voici les résultats pour différentes conditions cibles:
les quatre premiers chiffres hexadécimaux sont zéro (16 bits):
import hashlib
def main():
base_string = "geekbang"nonce = 10000count = 0while true: target_string = base_string + str(nonce) pow_hash = hashlib.sha256(target_string).hexdigest() count = count + 1 if pow_hash.startswith("0000"): # 前4个16进制位是0,相当于前16个比特位是0 print pow_hash print "nonce: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/51d786353cf4ac886dbb869fc7abf883dac67ceb.png" scan times: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/4ebdb22f10c27f8797a1c2ae7bbbd78f40220ed4.png"" % (nonce, count) break nonce = nonce + 1
sinom == ‘principal‘:
main()
comme on peut le voir, augmenter le nombre requis de zéros de tête dans le hachage augmente considérablement le nombre de tentatives nécessaires, suivant un schéma de croissance exponentielle. cela démontre la difficulté de calcul et les ressources nécessaires pour le minage, soulignant le besoin de dispositifs informatiques haute performance dans le processus de minage.
Pour garantir qu'un bloc est généré environ toutes les 10 minutes, le système Bitcoin ajuste la difficulté de minage en modifiant le nombre de zéros en tête requis dans la valeur de hachage. Ce mécanisme d'ajustement de la difficulté est une partie cruciale du système Bitcoin. Il évalue le temps nécessaire à la génération des 2016 derniers blocs, qui devrait idéalement être d'environ deux semaines. Si ces blocs ont été minés en moins de deux semaines, la difficulté augmente en ajoutant plus de zéros en tête (ce qui abaisse la valeur cible). En revanche, s'il a fallu plus de deux semaines, la difficulté diminue en réduisant le nombre de zéros en tête (ce qui élève la valeur cible). Ce mécanisme garantit que le temps de génération d'un bloc reste d'environ 10 minutes, même si le taux de hachage total du réseau fluctue.
ce mécanisme de réglage de la difficulté, conçu par le créateur de bitcoin satoshi nakamoto, a été prévu dès le départ pour s'adapter automatiquement à la puissance de calcul totale du réseau. Il maintient un rythme d'extraction stable et empêche la monnaie d'être émise trop rapidement, ce qui pourrait perturber l'économie du marché.
différents projets blockchain peuvent avoir des algorithmes de minage variables. ici, nous décrivons le plus célèbre d'entre eux: l'algorithme de minage de Bitcoin.
le processus d'exécution de l'algorithme minier sous-jacent de Bitcoin est le suivant:
la taille de chaque champ de l'en-tête de bloc est la suivante:
https://time.geekbang.org/column/article/5963
alt = "" >la structure de l'arbre de Merkle est la suivante:
大后端私房菜]. alt="">
La principale controverse entourant l'exploitation minière concerne les algorithmes de preuve de travail (PoW) utilisés par Bitcoin et ses dérivés. Ces algorithmes obligent les mineurs à allouer d'importantes ressources informatiques pour résoudre des problèmes sur lesquels le réseau est d'accord. De nombreuses personnes travaillent simultanément sur ces calculs, mais seule la première à résoudre le problème obtient la récompense. Les ressources informatiques et électriques des autres participants sont donc effectivement gaspillées, sans générer de valeur supplémentaire.
Il existe deux voies principales pour optimiser ce gaspillage de ressources :
Quelle est la valeur de l’exploitation minière ? Cela semble être un gaspillage de ressources et dénué de sens pour la société.
En revenant sur la section «Pourquoi l'exploitation minière est-elle nécessaire?» de cet article, la signification directe de l'exploitation minière est qu'elle soutient l'émission de devises numériques. Les récompenses minières incitent davantage de personnes à participer à la maintenance de devises numériques, les rendant plus stables. De plus, les algorithmes miniers maintiennent la cohérence des transactions au sein des systèmes de devises numériques, les rendant plus robustes et moins susceptibles d'attaques internes et externes.
La signification indirecte de l'exploitation minière est dérivée des devises numériques elles-mêmes. Les devises numériques créent un système monétaire mondial et sans confiance où des transactions sécurisées peuvent avoir lieu sans avoir besoin d'institutions centralisées, évitant les inconvénients de la centralisation. Leur nature mondiale permet également des transactions transfrontalières efficaces et peu coûteuses.
Les rendements miniers vont-ils diminuer au point de tomber en dessous des coûts, ce qui entraînerait l'arrêt de l'exploitation minière et la cessation des transactions?
Il est courant de craindre que les gains miniers dépendent uniquement des récompenses du système, qui diminuent avec le temps. Cependant, le minage génère également des revenus importants provenant des frais de transaction. À mesure que les monnaies numériques gagnent en acceptation, le marché des transactions de monnaie numérique va s'étendre. Cette augmentation du volume des transactions intensifiera la concurrence pour l'inclusion des blocs, ce qui entraînera des frais plus élevés que les utilisateurs sont prêts à payer pour donner la priorité à leurs transactions. Par conséquent, les mineurs peuvent continuer à gagner des frais de transaction substantiels, garantissant la viabilité continue du traitement des transactions.
Les frais de transaction compenseront-ils les coûts de minage ?
oui, les frais de transaction peuvent aider à compenser les coûts de minage. Comme les récompenses de bloc diminuent avec le temps, les frais de transaction deviennent une source de revenus cruciale pour les mineurs. Cela garantit que même si les coûts d'électricité sont élevés, les mineurs peuvent toujours maintenir leurs opérations grâce aux frais payés par les utilisateurs pour le traitement des transactions.
Est-ce que plusieurs mineurs partagent les récompenses de minage s'ils diffusent simultanément leurs nouveaux blocs ?
non, si plusieurs mineurs résolvent le puzzle et diffusent leurs nouveaux blocs en même temps, cela crée une fourchette temporaire dans la blockchain. Voici comment cela fonctionne :
exemple:
qu'est-ce qu'une attaque de 51% et pourquoi les super nœuds ne trichent-ils pas ?
Une attaque de 51 % se produit lorsqu'une seule entité ou un groupe contrôle plus de 50 % de la puissance de calcul du réseau. Voici pourquoi les super nœuds ne trichent généralement pas:
comment la blockchain empêche-t-elle les interruptions intentionnelles et les transactions frauduleuses?
prévention de la distribution incohérente des blocs par les mineurs
définition et fonction : dans un réseau blockchain, toutes les transactions diffusées qui n'ont pas encore été incluses dans un bloc sont temporairement stockées dans le pool de mémoire (mempool) des nœuds du réseau. Les mineurs surveillent leur mempool pour sélectionner les transactions à inclure dans la construction de nouveaux blocs.
stratégie de sélection de transaction: les mineurs peuvent choisir les transactions de la mempool en fonction de leur stratégie. En général, ils privilégient les transactions avec des frais plus élevés, mais certains peuvent également prendre en compte d'autres facteurs, tels que l'âge de la transaction (le temps qu'elle a passé dans la mempool).
qui participe et comment ils gagnent: mis à part les utilisateurs, les trois principaux participants du système bitcoin sont les mineurs, les développeurs et les opérateurs de nœuds.
augmentation des prix des GPU: la forte demande de GPUs par les mineurs à des fins de minage a entraîné une pénurie d'approvisionnement, faisant augmenter les prix.
Cartes graphiques de minage : les cartes graphiques de minage sont celles qui ont été utilisées précédemment pour le minage de crypto-monnaies. Ces cartes subissent des calculs intensifs, ce qui entraîne une usure importante. En raison de leurs performances diminuées, la plupart des gens préfèrent ne pas acheter de cartes graphiques de minage d'occasion.
Exigence de stockage redondant complet : Oui, les mineurs doivent stocker l’intégralité du registre de la blockchain pour vérifier si un jeton a déjà été dépensé et pour assurer la sécurité et l’intégrité du registre. Cependant, pour les blocs très anciens, les mineurs n’ont besoin de stocker que les en-têtes de bloc, et non le contenu complet du bloc. Cela permet de maintenir l’efficacité de la blockchain tout en préservant sa sécurité.
pas de récompenses automatiques au-delà de 21 millions de bitcoins : une fois que l'offre totale de bitcoins atteint sa limite de 21 millions, le système ne délivrera plus de nouveaux bitcoins en récompense aux mineurs. Si les utilisateurs ne sont pas prêts à payer des frais de transaction, théoriquement, le système de transaction pourrait rencontrer des défis opérationnels. Cependant, il est probable que les utilisateurs seront prêts à payer des frais de transaction pour que leurs transactions soient traitées, assurant ainsi la continuation du système.
La hauteur des blocs continuera d’augmenter : même après avoir atteint l’offre maximale de 21 millions de bitcoins, la hauteur des blocs (le nombre total de blocs) continuera d’augmenter tant que les mineurs seront prêts à miner et à regrouper les transactions dans de nouveaux blocs. La hauteur du bloc n’est pas limitée par le plafond d’offre de bitcoins.
potentiel de changements de consensus : la communauté pourrait proposer des modifications aux règles de consensus, telles que l'augmentation de l'offre totale de bitcoin, pour permettre une nouvelle génération de pièces si nécessaire.
transaction coinbase : dans la blockchain bitcoin, les récompenses des mineurs sont distribuées via une transaction spéciale appelée « transaction coinbase » ou « récompense de bloc ». cette transaction présente des caractéristiques uniques :
calcul du revenu par bloc : le revenu du mineur est calculé à chaque fois qu'un bloc est miné avec succès et confirmé par le mécanisme de consensus du réseau. Le mineur (ou le pool de minage) qui mine le bloc reçoit la récompense du bloc ainsi que les frais de transaction cumulés de toutes les transactions incluses dans le bloc.
Processus de réception des récompenses : Une fois qu’un mineur ou un pool de minage a réussi à miner un bloc et que cela est confirmé par le réseau, il reçoit la récompense du bloc et les frais de transaction. Ceci est exécuté par le biais de la transaction Coinbase, qui convertit les frais et les récompenses en sorties de transaction non dépensées (UTXO) créditées sur le compte du mineur.
Création séquentielle : les blocs sont créés de manière séquentielle dans la blockchain. Un nouveau bloc ne peut être créé qu’une fois que le bloc précédent a été miné avec succès et ajouté à la chaîne.
transactions multiples par bloc : les blocs contiennent généralement plusieurs transactions. Les mineurs incluent autant de transactions que possible pour maximiser leurs gains de frais de transaction, plutôt que d'emballer les transactions individuellement.
blocs partiellement remplis: la plupart des blocs ne sont pas entièrement utilisés. les mineurs commencent à travailler sur le bloc suivant dès qu'ils trouvent un hachage valide qui répond aux exigences de difficulté, indépendamment du fait que le bloc soit complètement plein.
blocs vides : des blocs peuvent être extraits même s'il n'y a aucune transaction à inclure. Ces blocs, appelés blocs vides, fournissent toujours une récompense système au mineur.
règle de la chaîne la plus longue : lorsqu'une fourche se produit, le réseau suit la chaîne avec la plus grande accumulation de preuves de travail, qui est généralement la chaîne la plus longue. Les nœuds basculent vers la chaîne la plus longue une fois qu'il devient évident laquelle a le plus de travail qui y a été investi.
Résolution de la double dépense :
processus de validation:
calcul des frais de transaction : les utilisateurs peuvent contrôler les frais de transaction pour accélérer la confirmation de leurs transactions. Les frais sont déterminés par la formule suivante :
frais de transaction=entrée totale−sortie totale−changement
Les utilisateurs définissent les frais de transaction en ajustant le montant en entrée, le montant en sortie et le montant de la monnaie rendue en échange.
Distribution des gains : lors du minage dans un pool, le nœud du pool reçoit la récompense de bloc. Le pool distribue ensuite les gains à ses membres en fonction de leur puissance de calcul contributive. Cette distribution est exécutée par le biais de transferts vers les portefeuilles des mineurs.
minage égoïste: le minage égoïste est une stratégie où un mineur (ou un pool de minage) trouve un nouveau bloc mais ne le diffuse pas immédiatement. Au lieu de cela, ils continuent à miner en privé sur leur chaîne (chaîne cachée). Une fois qu'ils trouvent des blocs supplémentaires, ils les diffusent tous en même temps. Cela peut invalider le travail des autres mineurs et incliner la puissance de calcul et les récompenses en faveur du mineur égoïste. Bitcoin peut mitiGate.io l'impact du minage égoïste en améliorant le protocole de diffusion.
Validation de la transaction : Lorsqu’une transaction est diffusée sur un nœud, elle subit plusieurs vérifications pour déterminer si elle doit être ajoutée au mempool :
Validation du bloc : Lorsqu’un nœud mineur reçoit un nouveau bloc, il effectue des vérifications approfondies sur le bloc et ses transactions :
[1] Conférence 12 | Technologie Blockchain en profondeur (4) : Explication approfondie du consensus PoW sur le temps Blockchain-Geek :démenti:
forward the original title ‘白话区块链三:揭开挖矿神秘的面纱——挖矿是什么?为什么要挖矿?谁是我们买不起显卡的罪魁祸首?’
L'un des concepts les plus familiers liés à la blockchain pour tout le monde est probablement l'extraction minière. De nombreuses personnes ont peut-être entendu parler de l'extraction minière à de nombreuses reprises, mais ne sont pas tout à fait sûres de ce qu'elle implique réellement. Dans cette section, nous interrompons notre programmation régulière pour d'abord introduire l'extraction minière.
un bref récapitulatif du contenu de “plain blockchain 1: introduction to bitcoin (le pionnier de la révolution blockchain et le challenger de la monnaie souveraine),” où satoshi nakamoto a conçu le système monétaire du bitcoin pour lier les récompenses de la tenue de comptes à l'émission de monnaie. cette approche permet à l'émission de monnaie d'être automatisée grâce au processus de tenue de comptes, résolvant ainsi le problème de l'émission de monnaie tout en encourageant les tenanciers de comptes à participer activement.
dans le monde réel, l'exploitation minière implique des mineurs utilisant divers outils pour extraire des métaux précieux cachés dans les roches des mines. les mineurs extraient de la valeur de ces métaux rares cachés dans la nature par le travail physique.
pour les projets blockchain avec des récompenses pour la tenue de livres (généralement des projets de monnaie numérique), les nœuds du réseau dépensent des ressources informatiques pour résoudre des problèmes. Une fois qu'ils trouvent la solution, ils empaquettent le bloc et reçoivent une récompense sous forme de monnaie nouvellement émise. Ce processus est analogue à l'extraction de métaux précieux tels que l'or à partir du minerai, d'où le terme couramment utilisé de «minage». Ici, les tenanciers de livres sont les mineurs, qui rivalisent pour empaquetter les blocs à l'aide de matériel et d'électricité, ce qui entraîne la création d'une nouvelle monnaie.
Le minage sert à deux fins principales : valider les transactions récentes en les regroupant en blocs et en les reliant à la chaîne de blocs, et émettre une nouvelle devise en récompensant les gardiens de livre. Ci-dessous sont les fonctions détaillées du minage :
Les mineurs sont incités à participer à l'extraction car ils reçoivent des récompenses substantielles pour avoir réussi à empaqueter un bloc sur la chaîne de blocs. Ces récompenses proviennent de deux sources principales :
avec le temps, les récompenses en bloc diminueront (par exemple, en raison du mécanisme de division par deux du bitcoin, où la récompense est divisée par deux environ tous les quatre ans). finalement, une fois que les 21 millions de bitcoins auront été minés, prévu vers l'année 2141, la récompense automatique en bloc cessera d'exister, et les frais de transaction deviendront la principale source de revenus pour les mineurs.
bitcoin génère un nouveau bloc environ toutes les 10 minutes. initialement, chaque nouveau bloc produit 50 bitcoins. cette récompense est réduite de moitié tous les quatre ans, et à ce jour, il y a eu quatre de ces événements de réduction de moitié. actuellement, chaque bloc génère 3,125 bitcoins, avec la réduction de moitié la plus récente ayant eu lieu en avril 2024. la prochaine réduction de moitié est prévue vers 2028. vers 2141, bitcoin atteindra sa limite d'émission.
Les frais de transaction sont influencés non seulement par l'offre et la demande, mais aussi par la taille de la transaction, car les frais sont proportionnels à l'espace occupé par la transaction dans le bloc.
Pour les mineurs, participer au minage est simple. Téléchargez un client de portefeuille de crypto-monnaie, et à l'intérieur du client, cliquez sur le bouton de minage pour commencer à miner.
pour les projets blockchain avec des récompenses en blocs, l'algorithme de minage est généralement écrit dans un script intégré au portefeuille. les mineurs n'ont qu'à cliquer sur un bouton pour démarrer le script.
l'algorithme de minage est déterministe, ce qui signifie que tant que les mineurs exécutent continuellement l'algorithme, ils obtiendront éventuellement un résultat. cependant, en raison des ressources informatiques variables, le temps nécessaire pour calculer ce résultat peut différer d'un mineur à l'autre. une fois qu'un nœud calcule la valeur cible, les efforts des autres mineurs pendant cette période sont rendus futiles, entraînant des rendements négatifs en raison des ressources physiques dépensées.
pour éviter les efforts inutiles, les mineurs regroupent souvent leurs ressources de calcul en rejoignant un nœud de pool de minage. Ce nœud fonctionne comme n'importe quel autre nœud mais dispose d'une puissance de calcul considérablement plus importante. Lorsque le pool réussit à miner un bloc, les récompenses sont réparties entre les mineurs participants en fonction de leurs ressources de calcul contribuées. Il est important de noter que sur la blockchain, le mineur enregistré comme empaquetant le bloc est le nœud de pool de minage, tandis que les mineurs individuels reçoivent leur part des récompenses allouées par le pool, pas directement du système de monnaie.
Bitmain, une entreprise qui fabrique des puces minières spécialisées à haute efficacité, a solidifié le rôle des pools de minage, contribuant ainsi à la centralisation du pouvoir de tenue de livres.
différents projets blockchain peuvent avoir des puzzles miniers et des niveaux de difficulté variables. ici, prenons bitcoin comme exemple. l'algorithme minier utilisé par bitcoin s'appelle proof of work (pow). l'essence de cet algorithme est qu'une certaine quantité de travail doit être dépensée pour prouver un résultat.
le puzzle de minage n'est pas un problème mathématique traditionnel mais consiste à trouver un nombre aléatoire, appelé nonce. Ce nonce, lorsqu'il est combiné avec les données du bloc et traité par une fonction de hachage, doit produire une valeur de hachage qui satisfait une condition spécifique. En général, cette condition exige que la valeur de hachage soit inférieure à une valeur cible (ou, de manière équivalente, que les premiers n bits de la valeur de hachage soient nuls). L'équation est la suivante: hachage(nonce+données_bloc)≤cible\text{hachage}(\text{nonce} + \text{données_bloc}) \leq \text{cible}hachage(nonce+données_bloc)≤cible
bitcoin utilise la fonction de hachage sha-256, qui convertit n'importe quelle longueur d'entrée en une sortie de longueur fixe de 256 bits (équivalent à 64 chiffres hexadécimaux ou 32 octets). la sortie est presque aléatoire mais garantie d'être la même pour la même entrée. le minage implique de changer continuellement le nonce et de hacher les données d'en-tête de bloc en utilisant sha-256 jusqu'à ce qu'une valeur de hachage qui satisfait la condition cible soit trouvée.
par exemple, une valeur de hachage sha-256 avec les 30 premiers bits étant des zéros: 000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110
la conversion de ceci en hexadécimal donne une valeur commençant par sept zéros: 00000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac90
En simplifiant, la probabilité de trouver un hachage avec les premiers n bits étant zéro est de 12n\frac{1}{2^n}2n1. Plus n est grand, plus il y a de bits à zéro et plus la probabilité est faible :
avec n jusqu'à 256, trouver une valeur de hachage avec la puissance de calcul humaine actuelle, en excluant les ordinateurs quantiques, est pratiquement impossible avant que la Terre cesse d'exister.
en raison des propriétés de sha-256, la seule méthode est la force brute, qui consiste à essayer continuellement différents nonces jusqu'à ce que la condition soit satisfaite. cette nécessité d'équipements informatiques haute performance est la raison pour laquelle l'exploitation minière nécessite de tels appareils.
puisque vous ne pouvez pas prédire la valeur de hash générée en ajoutant le nonce aux données de bloc et en les passant à travers sha-256, le processus est entièrement aléatoire. par exemple, si la valeur de hash cible est 10 000, vous ne pouvez pas savoir quel nonce combiné aux données de bloc donnera une valeur de hash inférieure à 10 000. cette nature imprévisible et aléatoire signifie que les mineurs doivent énumérer les possibilités jusqu'à ce que la condition soit satisfaite. si plusieurs valeurs remplissent la condition, la plus petite valeur de hash est choisie car une plus petite valeur de hash indique une difficulté plus élevée et une probabilité plus faible d'occurrence.
vérifier si une valeur de hachage générée satisfait la condition est facile, ne nécessitant qu'une seule opération de comparaison. cependant, trouver une valeur de hachage inférieure ou égale à la valeur cible ne peut être réalisé que par une énumération par force brute. cette caractéristique, où vérifier un résultat est facile mais trouver le résultat est difficile, est connue sous le nom d'asymétrie computationnelle.
Le code suivant simule le processus d'extraction. Il commence par une chaîne de données d'en-tête de bloc « geekbang » et effectue une recherche progressive à partir d'une valeur de nonce de 10 000 jusqu'à ce qu'il trouve un nonce qui satisfait la condition spécifiée.
Voici un script python qui démontre le processus de minage:
import hashlibdef main(): base_string = "geekbang" nonce = 10000 count = 0 while true: target_string = base_string + str(nonce) pow_hash = hashlib.sha256(target_string.encode()).hexdigest() count += 1 if pow_hash.startswith("0000"): # premiers 4 chiffres hexadécimaux sont 0, équivalent aux premiers 16 bits étant 0 print("hash:", pow_hash) print("nonce:", nonce, "temps de numérisation:", count) break nonce += 1if __name__ == '__main__': main()
lorsque l'exigence est que les 4 premiers chiffres hexadécimaux du résultat du hachage soient nuls (équivalent à ce que les 16 premiers bits soient nuls), le nombre de calculs est d'environ 58 000. si l'exigence est augmentée pour que les 5 premiers chiffres soient nuls, le nombre de calculs augmente à 1,23 million. lorsque l'exigence est que les 7 premiers chiffres soient nuls, le nombre de calculs atteint 160 millions. cela illustre que chaque zéro supplémentaire dans le préfixe de hachage augmente le calcul d'environ 16 fois.
voici les résultats pour différentes conditions cibles:
les quatre premiers chiffres hexadécimaux sont zéro (16 bits):
import hashlib
def main():
base_string = "geekbang"nonce = 10000count = 0while true: target_string = base_string + str(nonce) pow_hash = hashlib.sha256(target_string).hexdigest() count = count + 1 if pow_hash.startswith("0000"): # 前4个16进制位是0,相当于前16个比特位是0 print pow_hash print "nonce: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/51d786353cf4ac886dbb869fc7abf883dac67ceb.png" scan times: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/4ebdb22f10c27f8797a1c2ae7bbbd78f40220ed4.png"" % (nonce, count) break nonce = nonce + 1
sinom == ‘principal‘:
main()
comme on peut le voir, augmenter le nombre requis de zéros de tête dans le hachage augmente considérablement le nombre de tentatives nécessaires, suivant un schéma de croissance exponentielle. cela démontre la difficulté de calcul et les ressources nécessaires pour le minage, soulignant le besoin de dispositifs informatiques haute performance dans le processus de minage.
Pour garantir qu'un bloc est généré environ toutes les 10 minutes, le système Bitcoin ajuste la difficulté de minage en modifiant le nombre de zéros en tête requis dans la valeur de hachage. Ce mécanisme d'ajustement de la difficulté est une partie cruciale du système Bitcoin. Il évalue le temps nécessaire à la génération des 2016 derniers blocs, qui devrait idéalement être d'environ deux semaines. Si ces blocs ont été minés en moins de deux semaines, la difficulté augmente en ajoutant plus de zéros en tête (ce qui abaisse la valeur cible). En revanche, s'il a fallu plus de deux semaines, la difficulté diminue en réduisant le nombre de zéros en tête (ce qui élève la valeur cible). Ce mécanisme garantit que le temps de génération d'un bloc reste d'environ 10 minutes, même si le taux de hachage total du réseau fluctue.
ce mécanisme de réglage de la difficulté, conçu par le créateur de bitcoin satoshi nakamoto, a été prévu dès le départ pour s'adapter automatiquement à la puissance de calcul totale du réseau. Il maintient un rythme d'extraction stable et empêche la monnaie d'être émise trop rapidement, ce qui pourrait perturber l'économie du marché.
différents projets blockchain peuvent avoir des algorithmes de minage variables. ici, nous décrivons le plus célèbre d'entre eux: l'algorithme de minage de Bitcoin.
le processus d'exécution de l'algorithme minier sous-jacent de Bitcoin est le suivant:
la taille de chaque champ de l'en-tête de bloc est la suivante:
https://time.geekbang.org/column/article/5963
alt = "" >la structure de l'arbre de Merkle est la suivante:
大后端私房菜]. alt="">
La principale controverse entourant l'exploitation minière concerne les algorithmes de preuve de travail (PoW) utilisés par Bitcoin et ses dérivés. Ces algorithmes obligent les mineurs à allouer d'importantes ressources informatiques pour résoudre des problèmes sur lesquels le réseau est d'accord. De nombreuses personnes travaillent simultanément sur ces calculs, mais seule la première à résoudre le problème obtient la récompense. Les ressources informatiques et électriques des autres participants sont donc effectivement gaspillées, sans générer de valeur supplémentaire.
Il existe deux voies principales pour optimiser ce gaspillage de ressources :
Quelle est la valeur de l’exploitation minière ? Cela semble être un gaspillage de ressources et dénué de sens pour la société.
En revenant sur la section «Pourquoi l'exploitation minière est-elle nécessaire?» de cet article, la signification directe de l'exploitation minière est qu'elle soutient l'émission de devises numériques. Les récompenses minières incitent davantage de personnes à participer à la maintenance de devises numériques, les rendant plus stables. De plus, les algorithmes miniers maintiennent la cohérence des transactions au sein des systèmes de devises numériques, les rendant plus robustes et moins susceptibles d'attaques internes et externes.
La signification indirecte de l'exploitation minière est dérivée des devises numériques elles-mêmes. Les devises numériques créent un système monétaire mondial et sans confiance où des transactions sécurisées peuvent avoir lieu sans avoir besoin d'institutions centralisées, évitant les inconvénients de la centralisation. Leur nature mondiale permet également des transactions transfrontalières efficaces et peu coûteuses.
Les rendements miniers vont-ils diminuer au point de tomber en dessous des coûts, ce qui entraînerait l'arrêt de l'exploitation minière et la cessation des transactions?
Il est courant de craindre que les gains miniers dépendent uniquement des récompenses du système, qui diminuent avec le temps. Cependant, le minage génère également des revenus importants provenant des frais de transaction. À mesure que les monnaies numériques gagnent en acceptation, le marché des transactions de monnaie numérique va s'étendre. Cette augmentation du volume des transactions intensifiera la concurrence pour l'inclusion des blocs, ce qui entraînera des frais plus élevés que les utilisateurs sont prêts à payer pour donner la priorité à leurs transactions. Par conséquent, les mineurs peuvent continuer à gagner des frais de transaction substantiels, garantissant la viabilité continue du traitement des transactions.
Les frais de transaction compenseront-ils les coûts de minage ?
oui, les frais de transaction peuvent aider à compenser les coûts de minage. Comme les récompenses de bloc diminuent avec le temps, les frais de transaction deviennent une source de revenus cruciale pour les mineurs. Cela garantit que même si les coûts d'électricité sont élevés, les mineurs peuvent toujours maintenir leurs opérations grâce aux frais payés par les utilisateurs pour le traitement des transactions.
Est-ce que plusieurs mineurs partagent les récompenses de minage s'ils diffusent simultanément leurs nouveaux blocs ?
non, si plusieurs mineurs résolvent le puzzle et diffusent leurs nouveaux blocs en même temps, cela crée une fourchette temporaire dans la blockchain. Voici comment cela fonctionne :
exemple:
qu'est-ce qu'une attaque de 51% et pourquoi les super nœuds ne trichent-ils pas ?
Une attaque de 51 % se produit lorsqu'une seule entité ou un groupe contrôle plus de 50 % de la puissance de calcul du réseau. Voici pourquoi les super nœuds ne trichent généralement pas:
comment la blockchain empêche-t-elle les interruptions intentionnelles et les transactions frauduleuses?
prévention de la distribution incohérente des blocs par les mineurs
définition et fonction : dans un réseau blockchain, toutes les transactions diffusées qui n'ont pas encore été incluses dans un bloc sont temporairement stockées dans le pool de mémoire (mempool) des nœuds du réseau. Les mineurs surveillent leur mempool pour sélectionner les transactions à inclure dans la construction de nouveaux blocs.
stratégie de sélection de transaction: les mineurs peuvent choisir les transactions de la mempool en fonction de leur stratégie. En général, ils privilégient les transactions avec des frais plus élevés, mais certains peuvent également prendre en compte d'autres facteurs, tels que l'âge de la transaction (le temps qu'elle a passé dans la mempool).
qui participe et comment ils gagnent: mis à part les utilisateurs, les trois principaux participants du système bitcoin sont les mineurs, les développeurs et les opérateurs de nœuds.
augmentation des prix des GPU: la forte demande de GPUs par les mineurs à des fins de minage a entraîné une pénurie d'approvisionnement, faisant augmenter les prix.
Cartes graphiques de minage : les cartes graphiques de minage sont celles qui ont été utilisées précédemment pour le minage de crypto-monnaies. Ces cartes subissent des calculs intensifs, ce qui entraîne une usure importante. En raison de leurs performances diminuées, la plupart des gens préfèrent ne pas acheter de cartes graphiques de minage d'occasion.
Exigence de stockage redondant complet : Oui, les mineurs doivent stocker l’intégralité du registre de la blockchain pour vérifier si un jeton a déjà été dépensé et pour assurer la sécurité et l’intégrité du registre. Cependant, pour les blocs très anciens, les mineurs n’ont besoin de stocker que les en-têtes de bloc, et non le contenu complet du bloc. Cela permet de maintenir l’efficacité de la blockchain tout en préservant sa sécurité.
pas de récompenses automatiques au-delà de 21 millions de bitcoins : une fois que l'offre totale de bitcoins atteint sa limite de 21 millions, le système ne délivrera plus de nouveaux bitcoins en récompense aux mineurs. Si les utilisateurs ne sont pas prêts à payer des frais de transaction, théoriquement, le système de transaction pourrait rencontrer des défis opérationnels. Cependant, il est probable que les utilisateurs seront prêts à payer des frais de transaction pour que leurs transactions soient traitées, assurant ainsi la continuation du système.
La hauteur des blocs continuera d’augmenter : même après avoir atteint l’offre maximale de 21 millions de bitcoins, la hauteur des blocs (le nombre total de blocs) continuera d’augmenter tant que les mineurs seront prêts à miner et à regrouper les transactions dans de nouveaux blocs. La hauteur du bloc n’est pas limitée par le plafond d’offre de bitcoins.
potentiel de changements de consensus : la communauté pourrait proposer des modifications aux règles de consensus, telles que l'augmentation de l'offre totale de bitcoin, pour permettre une nouvelle génération de pièces si nécessaire.
transaction coinbase : dans la blockchain bitcoin, les récompenses des mineurs sont distribuées via une transaction spéciale appelée « transaction coinbase » ou « récompense de bloc ». cette transaction présente des caractéristiques uniques :
calcul du revenu par bloc : le revenu du mineur est calculé à chaque fois qu'un bloc est miné avec succès et confirmé par le mécanisme de consensus du réseau. Le mineur (ou le pool de minage) qui mine le bloc reçoit la récompense du bloc ainsi que les frais de transaction cumulés de toutes les transactions incluses dans le bloc.
Processus de réception des récompenses : Une fois qu’un mineur ou un pool de minage a réussi à miner un bloc et que cela est confirmé par le réseau, il reçoit la récompense du bloc et les frais de transaction. Ceci est exécuté par le biais de la transaction Coinbase, qui convertit les frais et les récompenses en sorties de transaction non dépensées (UTXO) créditées sur le compte du mineur.
Création séquentielle : les blocs sont créés de manière séquentielle dans la blockchain. Un nouveau bloc ne peut être créé qu’une fois que le bloc précédent a été miné avec succès et ajouté à la chaîne.
transactions multiples par bloc : les blocs contiennent généralement plusieurs transactions. Les mineurs incluent autant de transactions que possible pour maximiser leurs gains de frais de transaction, plutôt que d'emballer les transactions individuellement.
blocs partiellement remplis: la plupart des blocs ne sont pas entièrement utilisés. les mineurs commencent à travailler sur le bloc suivant dès qu'ils trouvent un hachage valide qui répond aux exigences de difficulté, indépendamment du fait que le bloc soit complètement plein.
blocs vides : des blocs peuvent être extraits même s'il n'y a aucune transaction à inclure. Ces blocs, appelés blocs vides, fournissent toujours une récompense système au mineur.
règle de la chaîne la plus longue : lorsqu'une fourche se produit, le réseau suit la chaîne avec la plus grande accumulation de preuves de travail, qui est généralement la chaîne la plus longue. Les nœuds basculent vers la chaîne la plus longue une fois qu'il devient évident laquelle a le plus de travail qui y a été investi.
Résolution de la double dépense :
processus de validation:
calcul des frais de transaction : les utilisateurs peuvent contrôler les frais de transaction pour accélérer la confirmation de leurs transactions. Les frais sont déterminés par la formule suivante :
frais de transaction=entrée totale−sortie totale−changement
Les utilisateurs définissent les frais de transaction en ajustant le montant en entrée, le montant en sortie et le montant de la monnaie rendue en échange.
Distribution des gains : lors du minage dans un pool, le nœud du pool reçoit la récompense de bloc. Le pool distribue ensuite les gains à ses membres en fonction de leur puissance de calcul contributive. Cette distribution est exécutée par le biais de transferts vers les portefeuilles des mineurs.
minage égoïste: le minage égoïste est une stratégie où un mineur (ou un pool de minage) trouve un nouveau bloc mais ne le diffuse pas immédiatement. Au lieu de cela, ils continuent à miner en privé sur leur chaîne (chaîne cachée). Une fois qu'ils trouvent des blocs supplémentaires, ils les diffusent tous en même temps. Cela peut invalider le travail des autres mineurs et incliner la puissance de calcul et les récompenses en faveur du mineur égoïste. Bitcoin peut mitiGate.io l'impact du minage égoïste en améliorant le protocole de diffusion.
Validation de la transaction : Lorsqu’une transaction est diffusée sur un nœud, elle subit plusieurs vérifications pour déterminer si elle doit être ajoutée au mempool :
Validation du bloc : Lorsqu’un nœud mineur reçoit un nouveau bloc, il effectue des vérifications approfondies sur le bloc et ses transactions :
[1] Conférence 12 | Technologie Blockchain en profondeur (4) : Explication approfondie du consensus PoW sur le temps Blockchain-Geek :démenti: