Wie beim Mining, was lösen die Bitcoin-Miner wirklich? Ich habe gelesen, dass sie Hashes lösen, aber was bedeutet das wirklich? Können wir sehen, was sie lösen? Kann jemand ein Beispiel dafür geben, was eine Bitcoin-Mining-Maschine zu lösen sieht?
Sie versuchen, eine zufällige Nonce (wenig zufällige Daten) zu finden, die in einen Block einfließt und dafür sorgt, dass der Block einen (SHA256)-Hash hat, der (binär) mit einer bestimmten Anzahl von Nullen beginnt. Je mehr Nullen, desto seltener ist Hash. Ein gutes Hash-Ergebnis ist nicht vorhersehbar, und daher müssen Sie viele Male versuchen, ein gutes Nonce zu finden.
Die Anzahl der Nullen richtet sich danach, wie schwierig es sein soll, einen Block zu finden. In Bitcoin passt es sich an, alle 10 Minuten einen neuen Block zu haben (im Durchschnitt, angesichts der Rate, mit der vorherige Blöcke gefunden werden).
Interessant: Da die Hashes unvorhersehbar sind, spielt es keine Rolle, wie sich die Nonce ändert! Meistens ist es nur eine Zahl, die von 0 aufwärts zählt!
Hier ist eine extrem vereinfachte Skizze des Problems, aber es sollte eine ziemlich gute Vorstellung davon geben, was das Problem ist.
Die Daten:
Dies ist der Hash des letzten Blocks (gekürzt auf 30 Zeichen):
00000000000001adf44c7d69767585
Dies sind die Hashes einiger gültiger Transaktionen, die auf die Aufnahme warten (gekürzt).
5572eca4dd4
db7d0c0b845
Und dies ist der Hash einer speziellen Transaktion, die Sie gerade erstellt haben und der Ihnen 25 BTC (die aktuelle Belohnung) gibt:
916d849af76
Aufbau des nächsten Blocks:
Lassen Sie uns nun eine grobe Annäherung verwenden, wie ein neuer Block aussehen könnte (der echte verwendet das Binärformat). Es enthält den Hash des vorherigen Blocks und die Hashes dieser 3 Transaktionen:
00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--
Jetzt lass uns Mining von Hand machen! Unser Ziel ist es, diesen Block mit einem Nonce (einem Stück Müll) zu vervollständigen, sodass der Hash des neuen Blocks mit 13 Nullen beginnt (in Anbetracht des vorherigen Hashs scheinen 13 Nullen die aktuelle Schwierigkeit zu sein!).
Bergbau (versucht, diesen Block abzuschließen):
Versuchen wir es mit nonce=1 und berechnen den Hash des Blocks (ich verwende den md5-Hash-Algorithmus, aber Bitcoin verwendet Double sha256):
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum
8b9b994dcf57f8f90194d82e234b72ac
Kein Glück, der Hash beginnt nicht mit einer 0… Versuchen wir es mit nonce=2
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum
5b7ce5bcc07a2822f227fcae7792fd90
Kein Glück…
…
Wenn wir bis nonce=16 weitermachen, erhalten wir unsere erste führende Null.
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum
03b80c7a34b060b33dd8fbbece79cee3
Für nonce=208 erhalten wir zwei führende Nullen!
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum
0055e55df5758517c9bed0981b52ce4a
Fahren Sie so fort… Wenn Sie endlich einen Hash finden, der 13 führende Nullen hat… haben Sie gewonnen! Andere Miner bauen jetzt auf Ihrem Block auf, Sie haben gerade 25 BTC.
Aber du musst schnell sein!
Zurück zu Schritt 1…
Wenn es jemandem gelingt, einen Block vor Ihnen zu bauen, müssen Sie mit dem Hash des neuen Blocks (dem des Gewinners) wieder von vorne beginnen.
00000000000001ae00000000000000
ist größer als 00000000000001adf44c7d69767585
<-- dies wäre ein gültiger Hash.Das Folgende ist eine Beschreibung des globalen, statistischen Glücksspiels, das etwa alle 10 Minuten gespielt wird. Das Intervall des Spiels wird durch die Schwierigkeit gesteuert, die angibt , wie viele "Hashes" pro Intervall benötigt werden.
Mit anderen Worten, die difficulty
und target
definieren die "Chancen des Hauses" gegen Ihre Chance, einen gewinnenden SHA-Hash zu erhalten. Das nonce
ist der "Rubbel"-Bereich.
Jeder Hash verbraucht Strom und gibt Wärme ab, die zusätzliche Kühlung erfordert.
Das wird mit jedem Hash gemacht:
Schritt 1
Auf hoher Ebene nimmt die Miner-Software eine Liste aktiver Transaktionen und gruppiert sie dann in einem sogenannten „Block“.
Oder genauer gesagt: Die Miner-Software wandelt alle Transaktionen in eine zusammenfassende Ansicht namens „Merkle Root“ um und hasht sie, was für die Transaktionen repräsentativ ist.
Schritt 2
Dann wandelt die Mining-Software dies in ein binäres Format namens Block Header um , das auch auf die vorherigen Blöcke verweist (auch Kette genannt).
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
Schritt 3:
Die Miner-Hardware ändert einen kleinen Teil dieses Blocks, der als „Nonce“ bezeichnet wird.
Schritt 4:
Der Block-Header wird gehasht und mit dem Ziel verglichen, als wäre es einfach eine große Zahl wie 10.000.000 > 7.000.000 (die realen Zahlen sind viel größer und in Hex). Das Ziel wird komprimiert und in jedem Block in einem Feld namens Bits gespeichert.
Ein erweitertes Ziel sieht folgendermaßen aus:
Target 0000000000000083ef00000000000000000000000000000000000000000000000
Und das Ziel ist sicherzustellen, dass der SHA256-Hash des Blocks kleiner als dieser Wert ist. Im Beispiel unten 83ee
ist " " kleiner als " 83ef
"
Um dieses Konzept zu vereinfachen, können Sie das Ziel einschätzen, indem Sie die führenden Nullen zählen (wie die andere Antwort hier erklärt). Hier ist ein Beispiel:
Hier ist ein Beispielblock mit Transaktionen, die Sie auf BlockChain.info einsehen können. Suchen Sie in der oberen rechten Ecke der Webseite nach diesem Hash:
Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
Dieser vorherige Hash stammt von heute und hat 14 führende Nullen. Vergleichen wir das mit dem, was vor 3 Jahren mit Block 100 benötigt wurde, der 8 führende Nullen hat.
Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
Zusammenfassung
Am Ende des Tages ist alles, was ein Miner tut, Folgendes:
Möchten Sie sehen, was Bitcoin-QT tut, wenn es einen Block findet? ... Ich habe es hier gepostet. . Die Informationen in diesem Beitrag helfen Ihnen zu verstehen, was passiert ist.
Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.
Mining bietet eine Möglichkeit, einen Konsens darüber zu erzielen, wie das Transaktionsbuch aussehen sollte, und zu wissen, dass niemand betrügt.
Das ist die nicht-technische Definition von Mining.
Die „Autorität“ für Double Spending ist die Blockchain. Die Blockchain besteht aus der Historie aller Blöcke in der Blockchain plus dem nächsten Transaktionsblock. Der Belohnungszuschuss beträgt derzeit 25 BTC für die Partei, die den nächsten Block einreicht. Aber hey … du hättest gerne diese 25 BTC (im Wert von derzeit etwa 825 $), genauso wie ich und alle anderen. Wie schaffst du es also, dass ich nicht schummeln und den Block selbst beanspruchen kann?
Nun, Sie haben ein System eingeführt, in dem Sie und ich miteinander konkurrieren müssen. Das ist es, was der Arbeitsnachweis tut – er macht es so, dass es einfach ist, zu beweisen, dass ich die damit verbundene Arbeit wirklich geleistet habe, wenn ich die Belohnung beanspruche. Damit ich also eine Chance von 2 % habe, einen Block zu lösen, muss ich 2 % der Mining-Arbeit investieren. Es gibt keine Möglichkeit für mich, weniger als 2 % der gesamten Arbeit zu investieren und trotzdem Blöcke in mindestens 2 % der Zeit (im Durchschnitt) zu lösen.
Wenn also ein Transaktionsblock eingereicht wird, überprüfen alle Peers, dass es keine doppelten Ausgaben gab, dass der richtige Betrag der Subvention beansprucht wurde und dass der Einreicher wirklich die für diese Lösung erforderliche Arbeit aufgewendet hat. Mit diesen drei Regeln muss es keine zentrale Behörde geben, die den Prozess verwaltet oder das Ergebnis kontrollieren kann.
Bergleute erraten eine zufällige Zielzahl, die eine vom Bitcoin-Protokoll generierte Gleichung löst. Natürlich machen Computer diese Vermutung, nicht Menschen.
Die Bitcoin-Blockchain verwendet den sicheren Hash-Algorithmus SHA-256, um 32-Byte-Zahlen derselben Länge auf eine Weise zu generieren, die eine vorhersehbare Menge an Prozessoraufwand erfordert. Um eine Kryptowährungs-Belohnung zu erhalten (und „legitime“ Transaktionen im Hauptbuch aufzuzeichnen), lösen Bergleute den Hash von Blöcken, die bestimmte Kriterien erfüllen (vom System festgelegt).
Eine "Schätzzahl" wird aus einem endgültigen Hash des aktuellen Block-Hash, Nonce , Daten und vorherigen Block-Hash gebildet. Eine Brute-Force-Suche wird wiederholt, bis Miner einen Hash entdecken, der kleiner als die Zielzahl ist.
Stefan Gornik
Benutzer10225
Großer Josch