Читать книгу Mysterium Blockchain - Wolfgang Dirnberger - Страница 20
BERGARBEITER – MINER
ОглавлениеWenn wir uns die Hashes der Bitcoin Blockchain im Blockchain-Explorer im Detail ansehen, fällt sofort auf, dass diese alle mit einer Menge Nullen beginnen. Wenn Du (siehe oben) mit deinem SHA256 Generator brav gespielt hast und das Wort „Mensch“ gehasht hast, kam folgendes Ergebnis heraus:
37fe485ef3b1b6b675845a26738aa92e7020b0691fd6ae4bb9a63248555fdd20
Der Hash beginnt mit 37fe485ef3 … und nicht mit 0000000000 …
Du kannst nun versuchen, alles mögliche zu hashen, Du wirst feststellen, eher selten beginnen die 64-stelligen Hashes mit Null oder mit zwei oder mehr Nullen.
Wie ist es nun möglich, dass alle Hashes der Blöcke der Bitcoin Blockchain mit vielen Nullen beginnen? Ist das Zufall oder ist ein System dahinter? Kein Zufall, System! Und wird auch gleich erklärt.
Der Grund dafür ist der Proof of Work Consensus Algorithmus oder besser bekannt als das Minen oder „Schürfen“.
Proof of Work (PoW, Arbeitsbeweis) wurde ursprünglich erdacht als Methode der Informatik, um das massenweise Versenden von E-Mails (Junk, Spams) zu verhindern und um sogenannte DDoS-Attacken (Distributed Denial of Service Attack, verteilter-Verweigerung-des-Dienstes Angriff oder mutwillig herbeigeführte Überlastung) zu bekämpfen.
Ist jetzt nicht wichtig für uns, ist nur interessant, dass viele Elemente der Blockchain-Technologie bereits vorher existierten und für verschiedene andere Gebiete in der Informatik ihre Dienste verrichteten.
Die beste Methode um das „Minen“, ergo die Arbeit der Bergarbeiter zu verstehen, ist wieder in kleinen Schritten vorzugehen. Vorher eine kleine Warnung: es wird ein wenig herausfordernd, doch für das Verständnis von Blockchain-Technologie ist es von fundamentaler Wichtigkeit, diese letzte technische Hürde zu meistern.
Miner (Bergarbeiter) suchen nach einer Zahl, der sogenannten „Nonce“. Der Name, die Bezeichnung dieser Zahl Nonce wurde abgeleitet vom englischen „Number used only Once“ und ist ein Ergebnis eines kryptographischen Rätsels, welches von den Minern gelöst werden muss.
Wenn sie diese Zahl gefunden haben, werden die Miner belohnt. Die Belohnung ist, je nachdem es sich um einen Bananen-Miner oder Bitcoin-Miner handelt, eine bestimmte Anzahl Bananen oder eine bestimmte Anzahl Bitcoin. Achtung: die Miner (Bergarbeiter) haben damit zwei wichtige Aufgaben im Ökosystem einer Blockchain: das Verifizieren von Blöcken (mittels Arbeitsbeweis) und das Schaffen (Schürfen) neuer Werte (Bananen, Bitcoin). Deswegen auch der Name „Miner“. Das klingt nun vielleicht etwas verwirrend, aber wir vereinfachen die Beschreibung sofort!
Nehmen wir an, Block Nummer 217 einer Blockkette wurde eben fertiggestellt und nun kommt Block 218 an die Reihe. Wir haben darüber gesprochen, dass alle Transaktionen in einem Block gehashed werden. Wenn nun eine Transaktion erzeugt wird (wir sitzen auf der Wiese, ich gebe dir eine virtuelle Banane von Banksy usw.), und dann so eine Transaktion gehashed wurde, wird diese Transaktion mit allen weiteren Transaktionen zunächst einmal in einem Pool gesammelt. Der Name dieses Sammelbeckens lautet Mempool und der hat die Aufgabe, alle Transaktionen, welche noch nicht in einem Block der Blockkette festgeschrieben wurden, zu sammeln.
Jeder Miner ist auch ein Knotenpunkt im dezentralen Netzwerk und alles im Netzwerk passiert in Echtzeit. Stell dir einfach einen zentralen Cloud Service vor, Dropbox, ICloud, OneDrive oder Back-Up-and-Sync. Wenn ein Teilnehmer einer Arbeitsgruppe ein Update macht, haben alle weiteren Teilnehmer das Update in Echtzeit zur Verfügung.
Alle Miner haben nun in Echtzeit immer alle Informationen des Mempools in ihrem Arbeitsspeicher. Wenn die im Mempool gesammelten Transaktionen (die in allen Arbeitsspeichern aller Miner gleich sind) eine bestimmte Anzahl erreicht haben, beginnen die Miner mit dem Lösen des Rätsels (dem Erbringen des Arbeitsbeweises).
Das kryptographische Rätsel, welches die Miner oder Bergarbeiter lösen müssen, ist nun, alle Hashes, aller noch nicht bestätigten Transaktionen, gemeinsam mit einer Zahl (Nonce) zu hashen, bis das Ergebnis ein neuer Hash ist, der mit einer bestimmten Anzahl von Nullen beginnt.
Es ist ein stupides Ausprobieren und ein „daran arbeiten“ (Proof of Work) an einem Block. Der Block ist schlussendlich erst „fertig“, wenn Bergarbeiter/ Miner daran „Bestätigungsarbeit“ geleistet haben. Wie sieht diese Arbeit aus?
„Bergarbeiter/Miner hashen alle Transaktionen des Mempools mit einer x-beliebigen Zahl solange, bis ein neuer Hash herauskommt, der zum Beispiel mit zwei Nullen beginnt.“
Tja, das ist es. Halt durch, Du hast es gleich geschafft!
Machen wir ein Beispiel (Achtung, in der Realität ist alles ein klein wenig komplizierter und die vereinfachten Beschreibungen dienen ausschließlich dem Verständnis):
Wenn Du deinen SHA256 Generator noch geöffnet hast, gib doch zusätzlich zu dem Wort „Mensch“ noch eine Zahl ein, zum Beispiel „1“.
Der Eintrag in deinem SHA256 Generator ist nun „Mensch 1“ (Anfangsbuchstabe M großgeschrieben und zwischen Mensch und 1 ein Leerzeichen).
Das Wort Mensch ist in diesem Beispiel der Platzhalter für alle Hashes der Transaktionen im Mempool.
Die Zahl 1 ist dabei die Zahl, die wir suchen, die Nonce. Wir wissen natürlich noch nicht, ob 1 die richtige Zahl ist. Wir versuchen einmal die 1 und schauen was passiert.
Zur Erinnerung, der Hash für das Wort „Mensch“ war:
37fe485ef3b1b6b675845a26738aa92e7020b0691fd6ae4bb9a63248555fdd20
Gut. Hatten wir bereits. Der SHA256 Hash für „Mensch 1“ lautet:
11d1a507a34034a5351cc81956c9bb6b39a3e30a46ee896f84ffb52481f040cb
Der Hash ändert sich natürlich, ansonsten: keine besonderen Vorkommnisse.
Wir versuchen es mit der Eingabe: „Mensch 2“:
730aed2f08c70fef2d58d39087d182b988fc8c3c91175a2d32d93e4e511165b6
Hash ändert sich, ansonsten: keine besonderen Vorkommnisse.
Bei „Mensch 3“ „Mensch 4“ „Mensch 5“ und so weiter bis „Mensch 9“ keine besonderen Vorkommnisse (wir „minen“ übrigens gerade händisch, ja, dieses Ausprobieren ist das Minen).
Nun versuchen wir:
Mensch 10
Volltreffer!
009f19b6ea89cfd7d541a446e3233df6da48d03f3eca711ccff8a7cb68a1ef2c
Du müsstest nun diesen Hash bekommen, der mit 2 Nullen beginnt! Das machen Miner! Sie suchen so lange nach einer Zahl, dieser NONCE, die gemeinsam mit allen Transaktionen im Mempool (in unserem Fall repräsentiert durch das Wort/den Platzhalter „Mensch“) einen Hash mit einer bestimmten Anzahl Nullen ergibt, in unserem Fall zwei Nullen (an die Profis: natürlich stark vereinfachtes Beispiel!).
Für dein Verständnis von Blockchain ist es enorm hilfreich, wenn Du wirklich mit einem SHA256 Generator herumspielst und siehst, wie die Hashes erzeugt werden.
Noch ein Wort zur Schwierigkeit des Rätsels, der sogenannten „Difficulty“. Der Schwierigkeitsgrad bei unserem Beispiel lautet: „einen Hash mit 2 Nullen am Anfang des 64-stelligen Hashcodes“ zu finden. So ein Rätsel ist schnell gelöst.
Doch nun tritt ein Mechanismus in Kraft, der wie vieles andere bei Bitcoin schlichtweg genial ist. Da es bei Lösung des Rätsels eine Belohnung gibt, wird es nicht sehr lange dauern, bis weitere Bergarbeiter/Miner auf den Plan kommen zu minen. Da die Rätsel immer schneller gelöst werden und immer mehr „Münzen“ in Umlauf kommen, würden die Münzen durch Hyperinflation entwertet werden. Warum?
Der einzige Weg neue Werte zu schaffen, Münzen zu erzeugen, Geld zu schöpfen, in Umlauf zu bringen, ist die Lösung des Rätsels, der Arbeitsbeweis, der Proof of Work.
Wenn ALLE minen, würden viel zu schnell, viel zu viele von diesen Werten wie Münzen, Bitcoins, Bananen, Geld, was auch immer in Umlauf kommen. Der Algorithmus bei Bitcoin sorgt dafür, dass alle 2016 Blöcke der Schwierigkeitsgrad des Rätsels so angepasst wird, sodass ca. alle 10 Minuten ein neuer Block kreiert wird. Die Anpassung des Schwierigkeitsgrads des Rätsels ist nichts anderes, als anstatt zwei Nullen am Anfang des Hashes, drei Nullen am Anfang des Hashes zu verlangen. Nun brauchen die Bergarbeiter/Miner natürlich länger, um das Rätsel zu lösen, sie müssen länger arbeiten. So verlangsamt sich die Wertschöpfung, Bitcoinschöpfung, Bananenschöpfung usw.
Außerdem wird alle 210.000 Blöcke die Belohnung, der sogenannte Block-Reward halbiert. Auch das ist Teil des Konzeptes. Bei Start der Bitcoin Blockchain gab es 50 Bitcoin als Belohnung. Satoshi hat auf seinem Computer beim Bitcoin-Start (Genesisblock oder Block 0) nicht nur die erste Transaktion generiert, gehashed, sondern auch den ersten „Arbeitsbeweis“ geliefert und dabei die Belohnung von 50 Bitcoin kassiert. Das waren die ersten 50 Bitcoin „im Umlauf“.
Heute (2019) müssen die Miner je nach Schwierigkeitsgrad (Difficulty) so lange „rechnen“, bis sie einen Hash mit neunzehn Nullen am Anfang des Hashes finden (Stand 02/20)!!! Wenn Du vielleicht schon einmal ein Video über eine große Mining Farm in Island oder China gesehen hast, mit tausenden von Rechnern, dann verstehst Du nun vielleicht besser, was die so tun. Die suchen alle nach dieser einen Zahl, dieser „Nonce“, die zusammen mit den Transaktionen einen Hash mit 19 Nullen am Anfang ergibt.
Zum Vergleich, Block Null (Genesisblock) ist ein Hash mit 10 Nullen, heute nach 10 Jahren stehen wir bei 19 Nullen.
Nochmals die Bitte an die Profis unter euch: ja, ich könnte auch eine Erklärung schreiben, die den Mining Prozess detailliert wissenschaftlich beschreibt. Doch dieses Buch ist nicht für Euch, es soll allen Interessierten helfen, Blockchain zu verstehen!
Details zu Metadaten, Anzahl der Transaktionen, Volumen, Gebühren, Analysedaten, Block-Reward (Belohnung), Halving, Payload und Header lasse ich wieder weg. Zusätzlich zu den Hashes gibt es auch noch einen Bereich der „Merkle Root“ genannt wird. Über diese Hash-Wurzel oder diesen Hash-Baum werden die Transaktionen im Block in korrekter Reihenfolge kryptografisch abgesichert. So können nicht nur die Blöcke selber, sondern auch die dazugehörenden Transaktionen innerhalb der Blöcke nicht mehr verändert werden und sind somit gesichert für die Ewigkeit.
Wer lässt sich so was einfallen? Und bezüglich der Miner, warum sollten die das tun?
Wichtig ist Folgendes:
Ein neuer Block wird nur zu einem validierten Block, wenn sich jemand „Arbeit angetan hat“, den PROOF of WORK geleistet hat, inklusive die Kosten getragen hat, den Computer gekauft und den Strom dazu bezahlt hat. Dieser „Jemand“ hat nach angenommenen Milliarden Versuchen eine Zahl NONCE gefunden, eine zum Beispiel 10-stellige Zahl, die zusammen mit allen anderen Informationen des Blocks, wie den tausenden Transaktionen und allen dazugehörenden Details, einen Hash ergibt, der mit 19 Nullen beginnt.
Dafür gibt es die Belohnung, die wiederum zwei Aufgaben hat. Jemand macht die Arbeit, die „bezahlt – belohnt“ wird und neue Werte, Bananen, Bitcoin, Münzen werden geschaffen.
Genau diese stupide Aktion macht die Blockchain auch so sicher.
Stell dir vor, wir haben angenommene 600.000 Blöcke in der Bitcoin Blockchain. Jemand würde in Block 300.000 eine Transaktion verändern, eine Transaktion bei der 10.000 Bitcoin von einer Adresse zu einer anderen Adresse, von einem Schließfach zu einem anderen Schließfach transferiert wurden.
Nun kommt jemand auf die Idee und versucht seine Adresse mit der des Empfängers auszutauschen. Eine veränderte Adresse würde den Hash des Blocks 300.000 verändern, da der Hash des Blocks 300.000 im Block 300.001 mit verarbeitet wurde, würde sich auch der Hash dieses Blocks 300.001 verändern und dadurch auch der nächste und so weiter.
Eine Blockchain läuft normalerweise über ein dezentralisiertes Netzwerk (P2P). Das Netzwerk besteht aus vielen Rechnern, verstreut in der ganzen Welt, welche alle die BANANA CORE oder Bitcoin Core-Software installiert haben. Diese Software enthält immer die gesamte Blockchain-Datei. Das Netzwerk manipulieren wird somit unmöglich.
Der Betrüger müsste nun alle Blocks neu minen, denn ab dem manipulierten Block 300.000 haben ja alle Blocks wieder KEINE Hash mit den ganzen Nullen zu Beginn. Und alle Netzwerkteilnehmer haben ja die Software installiert, die sagt: nee, Hash ohne 19 Stellen Nullen am Anfang nehmen wir nicht. Also nicht nur die ganze Rechenarbeit von vorne, hunderttausende Blocks, sondern mehr als die Hälfte aller Miner müssten bei dieser betrügerischen Aktion mitmachen!
Mehr als die Hälfte der Miner müssten dieselbe jahrelange Rechenpower aufbringen, mit denselben jahrelangen Kosten an Material und Strom?
Das ist so wie ein Bankeinbruch mit zehn Spezialisten, Millionen-Equipment und Privatjet als Fluchtfahrzeug und alle wissen ganz genau, es gibt höchstens 10 Euro zu klauen und ein 100 Mann SWAT-Team wartet in der Bank. Im Fachjargon nennt man das 51-%-Attacke, doch so ein Angriff ist nur rein theoretisch möglich.
Wenn 51 % der Hash-Power aller Miner, sich auf die Seite der Angreifer schlagen, wäre es theoretisch möglich, so einen Diebstahl nachträglich zu „minen“. Doch die Angreifer könnten sich nur kurz über so einen Diebstahl freuen, den der „Wert“ der Coins wäre binnen Sekunden dahin.
Da sich die Schwierigkeit der „Nonce Suche“, des kryptographischen Rätsels, automatisch an den „Miner-Markt“ angepasst (Blöcke entstehen immer ca. alle 10 Minuten, unabhängig ob nur einige wenige oder tausende Miner an der „Arbeit“ sind), ergibt sich dadurch ein perfektes autonomes System.
Wenn ich mich im Block-Explorer durch die Blöcke klicke und mir wieder einmal die Entstehungsgeschichte bewusst mache und das Ergebnis betrachte, wirkt Blockchain-Technologie auf mich fast mystisch. Ehrfürchtig denke ich an das was war und was noch kommt.