Was lösen Bitcoin Miner wirklich?

Was lösen die Bitcoin-Miner wie beim Bergbau 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 geben, was eine Bitcoin-Mining-Maschine zu lösen sieht?

Kommentare

  • Verwandte Themen: bitcoin.stackexchange.com/q/148/153
  • Ok, aber WELCHE Daten werden abgebaut? Niemand scheint es zu wissen. Es ist mir ‚ egal, wie es funktioniert. Ich möchte wissen, wo die Daten von diesem Bit-Mining stammen, das entschlüsselt oder verschlüsselt wird.

Antwort

Sie versuchen, eine zufällige Nonce (ein wenig zufällige Daten) zu finden, die in einen Block geht und den Block zu einem (SHA256) -Hash macht, der (binär) ist ) beginnt mit einer bestimmten Anzahl von 0 „s. Je mehr Nullen, desto seltener ist der Hash. Ein gutes Hash-Ergebnis ist nicht vorhersehbar. Daher müssen Sie häufig versuchen, eine gute Nonce zu finden.

Die Anzahl der Nullen hängt davon ab, wie schwierig es sein soll, einen Block zu finden. In Bitcoin wird angepasst, dass alle 10 Minuten ein neuer Block angezeigt wird (im Durchschnitt angesichts der Rate, mit der vorherige Blöcke gefunden werden).

Interessant: Da die Hashes nicht vorhersehbar sind, spielt es keine Rolle, wie sich die Nonce ändert Meistens ist es nur eine Zahl, die von 0 aufwärts zählt!

Antwort

Hier ist ein 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 (auf 30 Zeichen verkürzt):

00000000000001adf44c7d69767585 

Diese sind die Hashes einiger gültiger Transaktionen, die auf die Aufnahme warten (verkürzt).

5572eca4dd4 db7d0c0b845 

Und dies ist der Hash einer speziellen Transaktion, die Sie gerade erstellt haben und die 25BTC ergibt (die aktuelle Belohnung) für sich selbst:

916d849af76 

Erstellen des nächsten Blocks:

Verwenden wir nun eine grobe Annäherung daran, 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-- 

Lassen Sie uns nun das Mining von Hand durchführen! Unser Ziel ist es, dies abzuschließen Block mit einer Nonce (einem Stück Müll), so dass der Hash des neuen Blocks mit 13 Nullen beginnt (unter Berücksichtigung des vorherigen Hashs scheinen 13 Nullen die aktuelle Schwierigkeit zu sein!).

Mining (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 dahin weitermachen nonce = 16 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 mit 13 führenden Nullen finden … Du bist ein Gewinner! Andere Bergleute bauen jetzt auf Ihrem Block auf, Sie haben gerade 25BTC.

Aber Sie müssen schnell sein!

Zurück zu Schritt 1…

Wenn es jemandem gelingt, einen Block zu erstellen, bevor Sie dies tun, müssen Sie erneut mit dem neuen Block beginnen „s Hash (derjenige des Gewinners).

Kommentare

  • Auch Ihr Beispiel geht konzeptionell in die richtige Richtung, aber der wahre Erfolg ist wenn der sha256-Hash des Headers kleiner als das Ziel ist. Beispielziel: 00000000000001ae00000000000000 ist größer als 00000000000001adf44c7d69767585 < – dies wäre ein gültiger Hash .
  • @Reonarudo, nicht genau, dies ist eine sehr vereinfachte Skizze dessen, was tatsächlich getan wird. Transaktionen werden mit Skripten durchgeführt, die häufig aus Adressen erstellt werden. Weitere Informationen finden Sie im Bitcoin-Wiki.
  • Dies klingt im Grunde nach einer schönen (vereinfachten) Zusammenfassung, aber ab wann akzeptiert das Bitcoin-Netzwerk dies? als der nächste gültige Block, und was passiert in dem (unwahrscheinlichen) Fall, dass zwei verschiedene Bergleute es geschafft haben, fast gleichzeitig einen gültigen Block einzureichen?
  • Wow, großartige Antwort! Es gibt ‚ einige Dinge, die ich ‚ immer noch nicht verstehen konnte: Lassen Sie ‚ s sagen, Sie ‚ haben 6 Minuten lang nach einer Lösung gesucht und es kommt eine neue Transaktion. 1) Was passiert jetzt? Wenn ich von vorne anfangen muss, dann klingt das so, als müsste jeder von vorne anfangen. Wie kann Blockchain dann garantieren, dass ein Block in ~ 10 Minuten gefunden wird? 2) Wie kommt diese Transaktion überhaupt zu mir?3) Was ist, wenn ich eine Lösung für diesen Block finde und dann eine neue Transaktion von einem anderen Knoten zu mir kommt, der sie für den gerade geschlossenen Block akzeptiert hat?
  • 1) Ja, jeder beginnt von vorne, wenn Sie erstellen Auf einem alten Block gibt es ‚ kaum eine Chance, dass Ihre Blöcke Teil der längeren Kette sind und vom Rest des Netzwerks ignoriert werden. Es gibt keine Garantie dafür, dass ein Block innerhalb von 10 Minuten gefunden wird. ‚ ist nur ein durchschnittliches statistisches Ergebnis. 2) Welche Transaktion? Blöcke werden von demjenigen gesendet, der sie abgebaut und von anderen Knoten weitergeleitet hat. 3) Nichts zwingt Sie dazu, alle ausstehenden Transaktionen einzuschließen. Je mehr Transaktionen Sie einschließen, desto mehr Gebühren können Sie erheben.

Antwort

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 zu bekommen ein gewinnender SHA-Hash. Die nonce ist der Bereich „Rubbel“.

Jeder Hash verbraucht Strom und gibt Wärme ab, die zusätzliche Kühlung erfordert.

Dies geschieht mit jedem Hash:

Schritt 1

Auf hoher Ebene nimmt die Miner-Software eine Liste der aktiven Transaktionen auf und gruppiert sie dann in einem sogenannten „Block“.

Oder genauer gesagt: Die Miner-Software fasst alle Transaktionen in einer zusammenfassenden Ansicht zusammen, die als „Merkle-Wurzel“ bezeichnet wird, und hasht sie, die für die Transaktionen repräsentativ ist.

Schritt 2

Dann konvertiert Mining-Software dies in ein Binärformat namens a Blockheader , der auch auf die vorherigen Blöcke verweist (auch als Kette bezeichnet).

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 Blockheader ist gehasht und im Vergleich zum Ziel , als wäre es einfach eine große Zahl wie 10.000.000> 7.000.000 (die reellen 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 es sicherzustellen, dass der SHA256-Hash des Blocks kleiner als dieser Wert ist. Im folgenden Beispiel ist „83ee“ kleiner als „83ef

Um dieses Konzept zu vereinfachen, können Sie Baseball spielen das Ziel durch Zählen der führenden Nullen (wie die andere Antwort hier erklärt). Hier ein Beispiel:

Hier ist ein Beispielblock mit Transaktionen, die Sie auf BlockChain.info anzeigen können. Schauen Sie in der oberen rechten Ecke nach der Webseite für diesen Hash:

 Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf 

Dieser vorherige Hash war von heute und hat 14 führende Nullen. Vergleichen wir das mit dem, was vor 3 Jahren benötigt wurde, mit Block 100 , der 8 führende Nullen hat.

 Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899 

Zusammenfassung

Letztendlich tut also alles ein Bergmann ist:

  1. Nehmen Sie einen Blockheader als Eingabe
  2. Ändern Sie den Nonce
  3. Testen Sie, ob der Blockheader hash ist kleiner als das Ziel. Wenn ja, gewinnen Sie.
  4. Fahren Sie mit Schritt 2 fort (oder fahren Sie mit Schritt 1 fort, wenn jemand anderes den Block gewonnen hat)

Möchten Sie sehen, was Bitcoin-QT tut, wenn es einen Block findet? … Ich habe es hier gepostet. Die Informationen in diesem Beitrag werden helfen Sie zu verstehen, was passiert ist.

Kommentare

  • Ist ‚ nicht die Nonce (32 Bit) weit zu klein, um einen Hash zu finden, der mit 14 führenden Nullen beginnen muss (14×4 = 56 Bit)? Um einen solchen Hash zu finden, wären durchschnittlich 2 ^ 56/2 Versuche und eine 32-Bit-Nr. erforderlich Es sind nur 2 ^ 32 Versuche möglich, bevor alle möglichen Nonce-Werte erschöpft sind. Bearbeiten: Da sich die Zeit jede Sekunde ändert, gilt dies vermutlich nur, wenn die Hash-Rate 4 GH / Sek. Überschreitet (was meiner Meinung nach auch der Fall ist …).
  • Ja, Sie ‚ ist richtig, … von der URL im Block-Header: Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.

Antwort

Mining bietet eine Möglichkeit, einen Konsens darüber zu erzielen, wie das Transaktionsbuch aussehen soll und zu wissen, dass niemand betrügt.

Dies ist die nichttechnische Definition von Mining

Die „Autorität“ für doppelte Ausgaben ist die Blockchain. Die Blockchain besteht aus dem Verlauf aller Blöcke in der Blockchain sowie dem nächsten Transaktionsblock. Die Belohnungssubvention beträgt derzeit 25 BTC für die Partei, die den nächsten Block einreicht. Aber hey … Sie möchten diese 25 BTC (im Wert von derzeit etwa 825 US-Dollar) genauso wie ich wie alle anderen. Wie schaffen Sie es also, dass ich den Block nicht selbst betrügen und beanspruchen kann?

Nun, Sie haben ein System eingebaut, mit dem Sie und ich konkurrieren müssen. Das ist der Beweis für die Arbeit – es macht es so, dass es leicht zu beweisen ist, dass ich die damit verbundene Arbeit wirklich geleistet habe, wenn ich die Belohnung beanspruche. Damit ich eine 2% ige Chance habe, einen Block zu lösen, muss ich 2% der Bergbauarbeiten aufbringen. Es gibt keine Möglichkeit für mich, weniger als 2% der gesamten Arbeit einzubringen und dennoch mindestens 2% der Zeit (im Durchschnitt) Blöcke zu lösen.

Als Ergebnis eines Transaktionsblocks Wenn eingereicht wird, überprüfen alle Peers, dass es keine doppelten Ausgaben gab, dass die richtige Höhe der Subvention beantragt wurde und dass der Einreicher die für diese Lösung erforderliche Arbeit wirklich aufgewendet hat. Mit diesen drei Regeln muss es keine geben eine zentrale Behörde, die den Prozess verwaltet oder das Ergebnis kontrollieren kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.