Comme pour le minage, que résolvent vraiment les mineurs de Bitcoin? Jai lu quils résolvent des hachages, mais quest-ce que cela signifie vraiment. Pouvons-nous voir ce quils résolvent? Quelquun peut-il donner un exemple de ce quune machine dextraction de bitcoins voit à résoudre?
Commentaires
- Related: bitcoin.stackexchange.com/q/148/153
- Ok mais QUELLES données exploitons-nous! Personne ne semble savoir. Je ‘ ne me soucie pas de son fonctionnement Je veux savoir doù proviennent les données de ce bit mining qui consiste à déchiffrer ou à chiffrer.
Réponse
Ils essaient de trouver un nonce aléatoire (un peu de données aléatoires) qui entre dans un bloc et donne au bloc un hachage (SHA256) qui (en binaire ) commence par un certain nombre de 0 « s. Plus il y a de zéros, plus le hachage est rare. Un bon résultat de hachage » nest pas prévisible, et vous devez donc essayer plusieurs fois pour trouver un bon nonce.
Le nombre de zéros est basé sur la difficulté à trouver un bloc. En Bitcoin, il sajuste pour avoir un nouveau bloc toutes les 10 minutes (en moyenne, étant donné la vitesse à laquelle les blocs précédents sont trouvés).
Intéressant: parce que les hachages sont imprévisibles, la façon dont le nonce change na pas dimportance ! La plupart du temps, ce n’est qu’un nombre à partir de 0!
Réponse
Voici une extrêmement schéma simplifié du problème, mais cela devrait donner une assez bonne idée de ce quest le problème.
Les données:
Voici le hachage du dernier bloc (raccourci à 30 caractères):
00000000000001adf44c7d69767585
Ces sont les hachages de quelques transactions valides en attente dinclusion (raccourcis).
5572eca4dd4 db7d0c0b845
Et voici le hachage dune transaction spéciale que vous venez de créer, ce qui donne 25BTC (la récompense actuelle) à vous-même:
916d849af76
Construction du bloc suivant:
Maintenant, utilisons une approximation grossière de ce à quoi un nouveau bloc pourrait ressembler (le vrai utilise le format binaire). Il contient le hachage du bloc précédent et les hachages de ces 3 transactions:
00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--
Maintenant, faisons du minage à la main! Notre objectif est de terminer ceci bloc avec un nonce (un déchet) tel que le hachage du nouveau bloc commence par 13 zéros (compte tenu du hachage précédent, il semble que 13 zéros soit la difficulté actuelle!).
Exploitation minière (en essayant de finaliser ce bloc):
Essayons avec nonce = 1, et calculons le hachage du bloc (jutilise lalgorithme de hachage md5, mais Bitcoin utilise le double sha256):
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 8b9b994dcf57f8f90194d82e234b72ac
Pas de chance, le hachage ne commence pas par un 0 … Essayons avec nonce = 2
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 5b7ce5bcc07a2822f227fcae7792fd90
Pas de chance…
…
Si nous poursuivons jusquà nonce = 16, nous obtenons notre premier zéro non significatif.
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 03b80c7a34b060b33dd8fbbece79cee3
Pour nonce = 208, nous obtenons deux zéros non significatifs!
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 0055e55df5758517c9bed0981b52ce4a
Continuez comme ceci… Si vous trouvez enfin un hachage comportant 13 zéros non significatifs… vous êtes un gagnant! Les autres mineurs vont maintenant sappuyer sur votre bloc, vous venez de recevoir 25 BTC.
Mais vous « devrez être rapide!
Revenir à létape 1…
Si quelquun parvient à construire un bloc avant vous, vous « devrez recommencer depuis le début avec le nouveau bloc « s hash (celui du gagnant).
Commentaires
- De plus, votre exemple va conceptuellement dans la bonne direction, mais le vrai succès est lorsque le hachage sha256 de len-tête est inférieur à la cible. Exemple de cible:
00000000000001ae00000000000000
est supérieur à00000000000001adf44c7d69767585
< – ce serait un hachage valide . - @Reonarudo, pas exactement, cest une esquisse très simplifiée de ce qui est effectivement fait. Les transactions sont effectuées avec des scripts qui sont souvent faits à partir dadresses, vous pouvez trouver plus dinformations sur le wiki Bitcoin.
- Cela ressemble essentiellement à un joli résumé (simplifié), mais à quel moment le réseau Bitcoin accepte-t-il cela comme le prochain bloc valide, et que se passe-t-il dans le cas (peu probable) où deux mineurs différents parviennent à soumettre un bloc valide presque simultanément?
- Wow, bonne réponse! Il y a ‘ quelques choses que je ne pourrais toujours pas ‘ comprendre: laissez ‘ disent que vous ‘ recherchent une solution depuis 6 minutes et quil y a une nouvelle transaction. 1) Que se passe-t-il maintenant? si je dois recommencer, il semble que tout le monde doive recommencer. Alors, comment la blockchain peut-elle garantir de trouver un bloc en ~ 10 minutes? 2) Comment cette transaction me parvient-elle de toute façon?3) Que faire si je trouve une solution pour ce bloc et quune nouvelle transaction me vient dun autre nœud qui la acceptée pour le bloc que je viens de fermer?
- 1) Oui tout le monde recommence, si vous construisez au-dessus dun ancien bloc, il y a ‘ peu de chance que vos blocs fassent partie de la chaîne la plus longue et ils ne seront pas pris en compte par le reste du réseau. Il ny a aucune garantie quun bloc soit trouvé dans les 10 minutes, il ‘ nest quun résultat statistique moyen. 2) Quelle transaction? Les blocs sont diffusés par celui qui les a extraits et relayés par dautres nœuds. 3) Rien ne vous oblige à inclure toutes les transactions en attente, mais plus vous incluez de transactions, plus vous pouvez percevoir de frais.
Réponse
Ce qui suit est une description du pari statistique global qui est joué toutes les 10 minutes environ. Lintervalle du jeu est contrôlé par la difficulté qui indique combien de « hachages » sont nécessaires par intervalle.
En dautres termes, les difficulty
et target
définissent les « cotes de la maison » par rapport à vos chances dobtenir un hachage SHA gagnant. La nonce
est la zone « à gratter ».
Chaque hachage consomme de lélectricité et émet de la chaleur, ce qui nécessite un refroidissement supplémentaire.
Voici ce qui est fait avec chaque hachage:
Étape 1
À un niveau élevé, le logiciel mineur prend une liste de transactions actives, puis les regroupe dans quelque chose appelé un « bloc ».
Ou plus précisément indiqué: Le logiciel du mineur couvre toutes les transactions dans une vue récapitulative appelée «racine merkle», et la hache, qui est représentative des transactions.
Étape 2
Ensuite, le logiciel de minage convertit cela en un format binaire appelé a Block Header , qui fait également référence aux blocs précédents (également appelés une chaîne).
Field Purpose Updated when... Size (Bytes) Version Block version number You upgrade the software and 4 it specifies a new version hashPrevBlock 256-bit hash of the previous A new block comes in 32 block header hashMerkleRoot 256-bit hash based on all A transaction is accepted 32 the transactions in the block Time Current timestamp as seconds Every few seconds 4 since 1970-01-01T00:00 UTC Bits Current target in compact format The difficulty is adjusted 4 Nonce 32-bit number (starts at 0) A hash is tried (increments) 4
Étape 3:
Le matériel du mineur modifie une petite partie de ce bloc appelée « nonce » .
Étape 4:
Len-tête du bloc est haché et comparé à la cible comme sil sagissait simplement dun grand nombre comme 10 000 000> 7 000 000 (les nombres réels sont beaucoup plus gros et en hexadécimal). La cible est compressée et stockée dans chaque bloc dans un champ appelé bits.
Une cible étendue ressemble à ceci:
Target 0000000000000083ef00000000000000000000000000000000000000000000000
Et le Lobjectif est de sassurer que le hachage SHA256 du bloc est inférieur à cette valeur. Dans lexemple ci-dessous, « 83ee
» est plus petit que « 83ef
»
Pour simplifier ce concept, vous pouvez approximer la cible en comptant les zéros de tête (comme lexplique lautre réponse ici). Voici un exemple:
Voici un exemple de bloc avec des transactions que vous pouvez voir sur BlockChain.info. Regardez dans le coin supérieur droit de la page Web pour ce hachage:
Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
Ce hachage précédent datait daujourdhui et comporte 14 zéros non significatifs. Comparons cela à ce qui était nécessaire il y a 3 ans avec le bloc 100 qui a 8 zéros non significatifs.
Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
Résumé
Donc, à la fin de la journée, tout ce quun mineur fait est:
- Prendre un en-tête de bloc comme entrée
- Changer le Nonce
- Test si len-tête de bloc hash est inférieur à la cible. Si tel est le cas, vous gagnez.
- Passez à létape 2 (ou passez à létape 1 si quelquun dautre a gagné le blocage)
Vous voulez voir ce que fait Bitcoin-QT quand il trouve un bloc? … Je lai publié ici. . Les informations contenues dans ce message seront vous aider à comprendre ce qui sest passé.
Commentaires
- Isn ‘ t le nonce (32 bits) loin trop petit pour pouvoir trouver un hachage qui doit commencer par 14 zéros non significatifs (14×4 = 56 bits)? Trouver un tel hachage nécessiterait en moyenne 2 ^ 56/2 tentatives et avec un non de 32 bits nce seulement 2 ^ 32 tentatives sont possibles avant que toutes les valeurs nonce possibles soient épuisées. Edit: avec lheure changeant chaque seconde, je suppose que cela ne sapplique que si le taux de hachage dépasse 4 GH / s (ce que je pense que cest le cas …)
- Ouais, vous ‘ à droite, … à partir de lURL de len-tête du bloc:
Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.
Réponse
Le minage fournit un moyen de parvenir à un consensus sur ce à quoi devrait ressembler le registre des transactions et de savoir que personne ne triche.
Cest la définition non technique du minage .
Le « pouvoir » de doubler les dépenses est la blockchain. La blockchain se compose de lhistorique de tous les blocs de la blockchain ainsi que du prochain bloc de transactions. La subvention de récompense est actuellement de 25 BTC à la partie qui soumet le bloc suivant. Mais bon … vous aimeriez que 25 BTC (dune valeur actuellement denviron 825 $), tout comme moi, comme tout le monde. Alors, comment faire pour que je ne puisse pas « tricher et réclamer le blocage moi-même?
Eh bien, vous avez mis en place un système que vous et moi devons concurrencer. Cest ce que fait la preuve de travail – cela fait en sorte que lorsque je réclame la récompense, il est facile de prouver que jai vraiment fait le travail impliqué. Donc, pour avoir 2% de chance de résoudre un bloc, je dois effectuer 2% du travail minier. Il ny a aucun moyen pour moi de faire moins de 2% de tout le travail et encore de résoudre des blocs au moins 2% du temps (en moyenne).
Donc, en conséquence, quand une transaction bloque est soumise, tous les pairs vérifient quil ny a pas eu de double dépense, que le bon montant de subvention a été réclamé et que lauteur de la proposition a vraiment dépensé le travail nécessaire à cette solution. Avec ces trois règles, il nest pas nécessaire une autorité centrale gérant le processus ou capable de contrôler le résultat.