Allgemein
SHA-256 (Secure Hash Algorithm 256-bit) ist ein kryptografisches Hash-Verfahren. Es wird verwendet, um eine feste Länge von 256 Bits (32 Bytes) aus beliebigen Eingabedaten zu generieren. Dieser Hash-Wert ist in der Regel eine eindeutige Darstellung der Eingabedaten und wird häufig in der IT-Sicherheit, insbesondere bei der Verschlüsselung und Überprüfung von Datenintegrität, verwendet.
Hashwertberechnung bei Bitcoin
Da wir uns mit unseren Produkten bei PKITNEXT viel mit dem Thema “Hashalgorithmen” auseinandersetzen, soll hier auch der Zusammenhang mit dem Bitcoin erläutert werden.
Ich will versuchen es so einfach als möglich zu halten, und habe im folgenden ein kleines Fragen-Antwort Verfahren angewendet.
Wie stellt das Bitcoin Netzwerk sicher, dass Transaktionen stimmen?
Das Bitcoin Netzwerk stellt die Korrektheit von Transaktionen durch verkettete “gehashte” Blöcke sicher. Dies geschiet in einem Wettbewerb innerhalb des Netzwerkes. Dieser Wettbewerb im Bitcoin-Netzwerk, um einen gültigen Blockhash zu finden, ist ein wesentlicher Teil des Proof-of-Work-Konsensmechanismus. Wie läuft dieser Wettbewerb nun in der Praxis ab:
- Sammeln von Transaktionen: Zuerst sammeln die Miner Transaktionen aus dem Bitcoin-MemPool (eine Warteschlange von Transaktionen, die noch nicht in Blöcke aufgenommen wurden). Diese Transaktionen werden in den zu erstellenden Block aufgenommen.
- Vorbereitung des Block-Headers: Der Miner erstellt den Block-Header, der verschiedene Informationen enthält, darunter eine Referenz auf den vorherigen Block (der Blockhash des letzten Blocks in der Blockchain), eine Zusammenfassung der im Block enthaltenen Transaktionen und eine zufällige Zahl, die als Nonce bezeichnet wird.
- Starten des Proof-of-Work: Der Miner beginnt mit dem Hashing-Prozess, indem er den Block-Header mit dem SHA-256-Hashalgorithmus hashet. Dies erzeugt einen vorläufigen Blockhash. Der entscheidende Teil ist, dass dieser vorläufige Blockhash kleiner sein muss als ein bestimmter Zielwert, der von der aktuellen Schwierigkeitsstufe des Netzwerks abhängt.
- Überprüfung des Blockhashs: Der Miner überprüft, ob der vorläufige Blockhash kleiner ist als der erforderliche Zielwert. Wenn dies der Fall ist, hat der Miner erfolgreich einen gültigen Blockhash gefunden.
- Wenn das Ziel nicht erreicht wird: Wenn der vorläufige Blockhash nicht kleiner ist als der Zielwert, ändert der Miner die Nonce (eine zufällige Zahl im Block-Header) und wiederholt den Hashing-Prozess. Dies wird so lange wiederholt, bis ein gültiger Blockhash gefunden wird oder bis ein anderer Miner erfolgreich ist.
- Veröffentlichung des Blocks: Sobald ein Miner einen gültigen Blockhash gefunden hat, veröffentlicht er den Block im Bitcoin-Netzwerk. Andere Miner überprüfen den Block und die enthaltenen Transaktionen, um sicherzustellen, dass alles korrekt ist.
- Belohnung: Der Miner, der den gültigen Block gefunden hat, wird mit neuen Bitcoins belohnt (die sogenannte “Blockbelohnung”) und erhält auch Transaktionsgebühren von den Transaktionen im Block.
Der Wettbewerb besteht darin, als Erster einen gültigen Blockhash zu finden, der den Anforderungen des aktuellen Schwierigkeitsgrads entspricht. Dieser Wettbewerb erfordert erhebliche Rechenleistung und ist ein zufälliger Prozess. Miner müssen unzählige Hash-Berechnungen durchführen, bis sie erfolgreich sind, und dies ist der Mechanismus, der die Sicherheit und Dezentralisierung des Bitcoin-Netzwerks gewährleistet.
Wie ist das gemeint mit dem Schwierigkeitsgrad, was ist kleiner oder größer?
SHA-256-Hashes sind in der Regel 64 Hexadezimalzeichen lang und bestehen aus Buchstaben von A bis F und Zahlen von 0 bis 9. Die Buchstaben A bis F repräsentieren die Werte 10 bis 15 in der Hexadezimalnotation.
Ein Hash ist im Wesentlichen eine große Zahl in Hexadezimalform. Um zu verstehen, was bedeutet, dass ein Hash kleiner als ein bestimmter Wert ist, können wir uns vorstellen, dass jeder Hexadezimalwert eine dezimale (basis-10) Zahl darstellt.
Nehmen wir als Beispiel einen 64-stelligen SHA-256-Hash:
00000000000000000019b21b31187a4cb20a55e3ff6bb3641f98efb75e01473
Nun stellen wir uns vor, dass der Zielwert (Target) für diesen Hash aufgrund der aktuellen Netzwerkschwierigkeiten festgelegt wurde und 10^70 entspricht.
- Der obige Hash wird als eine Hexadezimalzahl betrachtet, die in dezimaler Form sehr viel kleiner ist als 10^70.
- Wenn wir diesen Hash in dezimaler Form umwandeln würden, wäre er eine sehr viel kleinere Dezimalzahl als 10^70.
Das bedeutet, dass dieser Hash kleiner als der Zielwert ist, und er würde als gültiger Blockhash akzeptiert werden, wenn er in einem gültigen Bitcoin-Block auftauchen würde.
In der Praxis sind die Zielwerte für Bitcoin-Hashes extrem klein, was bedeutet, dass das Finden eines gültigen Blockhashs sehr schwierig ist. Miner müssen Milliarden von Versuchen unternehmen, um einen Hash zu finden, der kleiner ist als der aktuelle Zielwert, um einen gültigen Block zu erstellen und Belohnungen zu erhalten.
Kann es sein, dass man dann nie einen Hash findet der kleiner als der Zielwert ist ?
Ja, es ist theoretisch möglich, dass ein Miner nie einen Hash findet, der kleiner als der aktuelle Zielwert ist. Dies ist jedoch äußerst unwahrscheinlich und tritt nur sehr selten auf. Hier sind einige wichtige Punkte dazu:
- Zufälliger Prozess: Das Finden eines gültigen Blockhashs ist ein zufälliger Prozess. Jeder Versuch, den Hash zu berechnen, ist unabhängig von den vorherigen Versuchen. Die Wahrscheinlichkeit, einen gültigen Hash zu finden, ist bei jedem Versuch gleich.
- Schwierigkeitsanpassung: Das Bitcoin-Netzwerk passt die Schwierigkeitsstufe alle zwei Wochen an, um sicherzustellen, dass die durchschnittliche Zeit, die für das Finden eines Blocks benötigt wird, etwa 10 Minuten beträgt. Wenn Miner sehr schnell oder sehr langsam Hashes finden, wird die Schwierigkeitsstufe entsprechend angepasst.
- Enorme Rechenleistung: Das Bitcoin-Netzwerk verfügt über eine immense kombinierte Rechenleistung von Tausenden von Minern weltweit. Diese Rechenleistung ermöglicht es, Milliarden von Hashes pro Sekunde zu berechnen. Die Wahrscheinlichkeit, dass jemand einen gültigen Blockhash findet, ist daher sehr hoch.
- Unberechenbarkeit: Aufgrund der Unvorhersehbarkeit des SHA-256-Hashalgorithmus ist es äußerst unwahrscheinlich, dass ein Miner in der Praxis nie einen gültigen Hash findet. Die Wahrscheinlichkeit, dass ein Miner in kurzer Zeit Erfolg hat, ist hoch, auch wenn sie nie genau vorhersagen können, wann dies passieren wird.
In der Praxis finden Miner aufgrund der immensen Rechenleistung im Bitcoin-Netzwerk normalerweise relativ schnell gültige Blockhashes. Es kann jedoch dennoch eine erhebliche Variation in der Zeit geben, die benötigt wird, um einen Block zu finden, da dies ein zufälliger Prozess ist.
Somit kann ich also sagen: es gibt bei Bitcoin einen innerne Hashwert und einen äusseren Hashwert?
Ja, man kann das Konzept des “inneren Hashwerts” und des “äußeren Hashwerts” verwenden, um den Prozess des Bitcoin-Minings zu beschreiben:
- Äußerer Hashwert (Blockhash): Dies ist der Hashwert, den ein Bitcoin-Miner finden muss, um einen gültigen Block zu erstellen. Der äußere Hashwert, auch als “Blockhash” bezeichnet, ist das Ergebnis des Hashens des gesamten Blocks, einschließlich des Block-Headers und der darin enthaltenen Transaktionen. Dieser Blockhash muss kleiner sein als der aktuelle Zielwert, um als gültig akzeptiert zu werden.
- Innerer Hashwert (Transaktions-Merkle-Root): Innerhalb des Blocks gibt es einen weiteren Hashwert, den sogenannten “Transaktions-Merkle-Root”. Dieser Hashwert wird aus den Hashes der Transaktionen im Block berechnet und dient zur Verifizierung der im Block enthaltenen Transaktionen. Der Transaktions-Merkle-Root wird in den Block-Header aufgenommen und ist ein wichtiger Bestandteil der Blockstruktur.
Der äußere Hashwert (Blockhash) ist das eigentliche Ziel, das die Miner erreichen müssen, um einen Block zu erstellen und Belohnungen zu erhalten. Der innere Hashwert (Transaktions-Merkle-Root) ist Teil des Prozesses zur Überprüfung der Gültigkeit der Transaktionen im Block.
In der Praxis werden beide Hashwerte benötigt, um sicherzustellen, dass ein Block gültig ist. Der Blockhash muss kleiner als der Zielwert sein, um akzeptiert zu werden, und der Transaktions-Merkle-Root muss korrekt berechnet werden, um die Transaktionen im Block zu überprüfen.
Nochmals: was muss der Miner variieren, um den Blockhash zu variieren?
Um den Blockhash zu variieren und einen gültigen Blockhash zu finden, müssen Miner normalerweise die Nonce ändern. Die Nonce (Number used once) ist ein einmaliger 32-Bit-Wert im Blockheader, der von Minern verwendet wird, um eine große Anzahl von möglichen Blockhashes zu erzeugen.
Der Prozess sieht folgendermaßen aus:
- Der Miner erstellt den Blockheader, der alle relevanten Informationen über den Block enthält, einschließlich des Transaktions-Merkle-Roots, des Zeitstempels, der Schwierigkeitszielinformationen und anderer Daten.
- Der Miner setzt die Nonce auf einen beliebigen anfänglichen Wert.
- Der Miner führt die SHA-256-Hashberechnung auf dem Blockheader mit der aktuellen Nonce durch.
- Der berechnete Blockhash wird überprüft, um sicherzustellen, dass er kleiner ist als der aktuelle Zielwert (dieser Zielwert ist sehr klein und wird von der aktuellen Schwierigkeitsstufe des Netzwerks bestimmt).
- Wenn der berechnete Blockhash nicht kleiner ist als der Zielwert, ändert der Miner die Nonce auf einen anderen Wert und wiederholt den Hashing-Prozess.
- Dies wird solange wiederholt, bis ein gültiger Blockhash gefunden wird (einer, der kleiner ist als der Zielwert). Wenn ein gültiger Blockhash gefunden wird, hat der Miner erfolgreich einen neuen Block erstellt und kann ihn dem Bitcoin-Netzwerk zur Überprüfung vorlegen.
Die Nonce ist im Grunde ein Wert, den der Miner beliebig ändern kann, um verschiedene Hashes zu generieren. Da die SHA-256-Hashfunktion sehr empfindlich auf Änderungen in den Eingabedaten reagiert, ermöglicht die Änderung der Nonce dem Miner, verschiedene Hashwerte auszuprobieren, bis er einen findet, der den Anforderungen des Netzwerks entspricht. Dieser Prozess wird als Proof-of-Work bezeichnet und ist der Schlüsselmechanismus, der es den Minern ermöglicht, Blöcke im Bitcoin-Netzwerk zu erstellen.
Wird der Nonce durch eine Zufallszahl gebildet ?
Der Nonce (Number used Once) ist im Bitcoin-Mining keine zufällig generierte Zahl, sondern eher eine Zahl, die schrittweise erhöht wird, um verschiedene Hashwerte auszuprobieren. Hier ist, wie der Nonce normalerweise verwendet wird:
- Der Miner beginnt normalerweise mit einem anfänglichen Wert für die Nonce, oft bei Null.
- Der Miner berechnet den Blockhash, indem er den Blockheader (einschließlich des aktuellen Nonce) mit der SHA-256-Hashfunktion hashet.
- Der berechnete Blockhash wird überprüft, um festzustellen, ob er kleiner ist als der aktuelle Zielwert (die Schwierigkeitsanforderungen des Netzwerks). Wenn der Hash nicht den Anforderungen entspricht, wird die Nonce erhöht.
- Die Nonce wird um eine kleine Zahl erhöht (normalerweise um eins oder eine andere feste Inkrementzahl), und der Hashing-Prozess wird erneut durchgeführt.
- Dieser Vorgang wird wiederholt, indem die Nonce schrittweise erhöht wird, bis ein gültiger Blockhash gefunden wird (einer, der kleiner ist als der Zielwert).
Die Nonce ist also keine zufällig generierte Zahl, sondern eher eine variable Zahl, die schrittweise erhöht wird, um verschiedene Hashwerte auszuprobieren. Da die SHA-256-Hashfunktion deterministisch ist, würde dieselbe Nonce bei denselben Eingabedaten immer denselben Hashwert erzeugen. Das Ändern der Nonce ist der Weg, wie Miner verschiedene Hashwerte ausprobieren, um die Anforderungen des Netzwerks zu erfüllen und einen gültigen Block zu finden.
Vorletzte Frage: Kann ich auch Miner werden, lohnt sich das?
Das Bitcoin-Mining ist im Jahr 2023 eine hochspezialisierte und wettbewerbsintensive Tätigkeit. Ob es sich lohnt, Miner zu werden, hängt von mehreren Faktoren ab:
- Mining-Hardware: Die meisten erfolgreichen Bitcoin-Miner verwenden spezialisierte Hardware, sogenannte ASIC-Miner (Application-Specific Integrated Circuits). Diese ASIC-Miner sind äußerst leistungsstark und optimiert für das Bitcoin-Mining. Wenn Sie mit einer herkömmlichen CPU, GPU oder einem Raspberry Pi minen möchten, werden Sie höchstwahrscheinlich nicht rentabel sein, da Sie nicht mit der Hashleistung dieser spezialisierten Geräte konkurrieren können.
- Stromkosten: Das Bitcoin-Mining erfordert erhebliche Energie, und die Stromkosten können je nach Ihrem Standort erheblich variieren. Stellen Sie sicher, dass die potenziellen Belohnungen Ihre Stromkosten nicht übersteigen.
- Schwierigkeitsgrad: Die Schwierigkeit des Bitcoin-Minings passt sich alle zwei Wochen oder alle 2016 Blöcke an. Je mehr Hashleistung im Netzwerk vorhanden ist, desto schwieriger wird es, einen Block zu finden. Dies bedeutet, dass die Belohnungen aufgeteilt werden und dass es schwieriger ist, erfolgreich zu minen.
- Mining-Pool: Viele Miner schließen sich Mining-Pools an, um ihre Chancen auf das Finden von Blöcken zu erhöhen und regelmäßig kleine Belohnungen zu erhalten. In einem Mining-Pool arbeiten mehrere Miner zusammen, um Blöcke zu finden, und die Belohnungen werden aufgeteilt. Dies kann eine gute Option sein, um regelmäßige Einnahmen zu erzielen.
- Investitionskosten: Die Anschaffungskosten für Mining-Hardware sind hoch, insbesondere für leistungsstarke ASIC-Miner. Sie müssen die Kosten für die Hardware und eventuell für den Betrieb eines Mining-Farms berücksichtigen.
- Marktpreise für Bitcoin: Die Rentabilität des Minings hängt stark von den aktuellen Marktpreisen für Bitcoin ab. Wenn die Preise hoch sind, können die Belohnungen attraktiver sein, aber sie unterliegen auch erheblichen Schwankungen.
Zusammengefasst ist das Bitcoin-Mining in der Regel eine Aktivität, die von großen Mining-Firmen mit erheblichen Ressourcen und spezialisierter Hardware betrieben wird. Das Mining mit herkömmlichen Computern oder kleinen Geräten ist normalerweise nicht rentabel. Wenn Sie Miner werden möchten, sollten Sie eine gründliche Forschung durchführen, die Kosten und möglichen Gewinne abwägen und realistische Erwartungen haben. Beachten Sie auch, dass das Mining in erster Linie ein Beitrag zur Sicherheit und Funktionsweise des Bitcoin-Netzwerks ist und nicht unbedingt dazu gedacht ist, schnell reich zu werden.
Und zum Schluss: Kann man Bitcoin Mining mit Lottospielen vergleichen ?
Ja und nein.
Bitcoin-Mining und Lottospiele sind in gewisser Hinsicht ähnlich, da beide auf Zufall und Wahrscheinlichkeit basieren. Es gibt jedoch auch wichtige Unterschiede zwischen ihnen:
- Zufall und Wahrscheinlichkeit: In beiden Fällen spielen Zufall und Wahrscheinlichkeit eine Rolle, aber auf unterschiedliche Weisen. Im Bitcoin-Mining handelt es sich um einen wettbewerbsintensiven Prozess, bei dem Miner Hashes berechnen und hoffen, einen gültigen Blockhash zu finden. Die Wahrscheinlichkeit, einen Block zu finden, hängt von der Mining-Leistung ab. Bei Lottospielen handelt es sich um Glücksspiele, bei denen die Ergebnisse zufällig ausgelost werden, unabhängig von der Leistung oder Anstrengung der Teilnehmer.
- Kontrolle und Einfluss: Beim Bitcoin-Mining haben Miner die Kontrolle über ihre Hashleistung und können die Chancen, einen Block zu finden, durch den Einsatz von mehr Rechenleistung erhöhen. Bei Lottospielen haben die Teilnehmer keinen Einfluss auf die Ziehung der Gewinnzahlen, da sie vollständig vom Zufall abhängt.
- Langfristige Erwartungen: Im Bitcoin-Mining gibt es eine gewisse Vorhersagbarkeit, basierend auf der Hashleistung und den aktuellen Schwierigkeiten im Netzwerk. Langfristig können Miner anhand ihrer Hashleistung und ihrer Beteiligung an Mining-Pools abschätzen, wie oft sie voraussichtlich Belohnungen erhalten werden. Bei Lottospielen ist jede Ziehung unabhängig von vorherigen Ziehungen, und es gibt keine langfristige Vorhersagbarkeit.
- Risiko und Belohnung: Sowohl Bitcoin-Mining als auch Lottospiele bergen Risiken, aber sie sind unterschiedlicher Natur. Beim Mining besteht das Risiko darin, dass Sie möglicherweise keine ausreichenden Belohnungen erhalten, um die Kosten zu decken. Bei Lottospielen besteht das Risiko darin, dass Sie Geld für den Kauf von Lottoscheinen ausgeben, ohne eine Belohnung zu erhalten. Die Belohnungen im Mining hängen von der Mining-Leistung ab, während die Belohnungen in Lottospielen auf den Zufall und die Wahrscheinlichkeit basieren.
Insgesamt sind Bitcoin-Mining und Lottospiele unterschiedliche Arten von Aktivitäten, die auf Zufall und Wahrscheinlichkeit basieren, aber in ihrer Funktionsweise und ihren Auswirkungen auf die Teilnehmer unterschiedlich sind. Bitcoin-Mining ist in gewisser Hinsicht mehr von individueller Anstrengung und technischer Leistung abhängig, während Lottospiele eher auf reines Glück setzen.
Ich hoffe ich konnte Ihnen damit eine Vorstellung des Nutzens des Hashing mit sha256 im Bezug zu Bitcoin näherbringen. Ich weiss, das Dokument ist noch sehr technisch, wir werden hierzu noch ein paar Grafiken zur Veranschaulichung veröffentlichen.