Zum Inhalt springen

Mining Verständnisfrage


seppim

Empfohlene Beiträge

Guten Morgen!

 

Mining bedeutet, das durch komplexe Berechnungen ein Hashwert für eine Blockchain gesucht wird?

Es dauert mit einem Nerdminer 38 Milliarden Jahre um diesen zu finden.

Man könnte sagen das Mining eine Art Passwort knacken gleicht?

Wie wird aber sicher gestellt, das ein Block überhaupt gefunden wird? Gleichen die Miner die bereits geprüften Zahlen ab, damit andere nicht die selbe Berechnung durchführen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 53 Minuten schrieb seppim:

Guten Morgen!

 

Mining bedeutet, das durch komplexe Berechnungen ein Hashwert für eine Blockchain gesucht wird?

Es dauert mit einem Nerdminer 38 Milliarden Jahre um diesen zu finden.

Man könnte sagen das Mining eine Art Passwort knacken gleicht?

Wie wird aber sicher gestellt, das ein Block überhaupt gefunden wird? Gleichen die Miner die bereits geprüften Zahlen ab, damit andere nicht die selbe Berechnung durchführen?

Es gibt da viele... viele... ganz viele.. Details. Ich kanns grob vereinfachen:

 

Du versendest Coins an jemand, deine Wallet signiert diese Transaktion und sendet sie ins Netzwerk. Deine Wallet gibt auch an wieviel Gebühren darun enthalten sind.

Deune Transaktion landet dann erstmal im Mempool.

Die Miner greifen sich die Transaktionen aus dem Mempool. Je mehr Gebühren du mitsendest umso lieber greifen die Miner sich deine Transaktion. Mit sehr wenig Gebühr bleibt die TX erstmal liegen, bis alle "guten" TX verarbeitet sind und dann alle "billigen" dran sind.

Die Miner prüfen und berechnen deine TX. Danach landet sie zusammen mit anderen in einem Block.

Nach 10 Minuten wird für diesen Block und alles was sich darun befindet ein Hashwert berechnet. Der Miner der den Hashwert Block mit dem höchsten Schwierigkeitsgrad abschliesst, der bekommt die Belohnung, den Blockreward. Die Gebühren werden auf alle Miner verteilt.

Dieser Hashwert kommt dann als erstes in den darauffolgenden Block. Anschliessend kommen wieder neue Transaktionen drauf. Dann wird für den Block wieder der Hashwert berechnet, in den nächsten Block rein, Transaktionen obendrauf... repeat.

Daran sieht man das jeder Block logischerweise den Hashwert ALLER vorangegangenen Blöcke enthält. Weil ja der Hashwert eines Blockrs immer in den darauffolgenden mit reinkommt 

Würde nun jemand versuchen einen zug Jahre alten Bloch manipulieren, dann würde der Hashwert aller Blöcke nicht mehr passen. Auch der Hashwert des jetzigen aktuellen würde sich verändern.

Das besondere bei Bitcoin ist der SHA256 Algorithmus.

Theoretisch könnte man etwas so verändern das wieder derselbe Hashwert herauskommt. Doch bei SHA256 geht das nicht. Denn zwei identische Dinge haben bei diesem Algorithmus verschiedene Hashwerte. Jedesmal wenn der Hashwert berechnet wird, kommt ein komplett anderer Hashwert raus. Auch bei identischen Dingen. Deshalb kann ein Block nicht unbemerkt verändert werden.

Zu Gebühren und Blockreward. Man mint in Pools, mit vielen anderen Minern gemeinsam hat man bessere Chancen. Die Gebühren werden auf alle Miner verteilt die in dem Pool sind. Den Blockreward bekommen auch alle Miner gemeinsam die in dem Pool sind.

Wenn ich also z.b. bei Antpool bin und eine TX bearbeite, dann bekommen alle die in Antpool sind die Gebühr. Wenn ich einen Block abschliessen kann, dann bekommen slle die in Antpool sind einen Teil des Blockreward.

Es gibt unzählige Pools. Man kann sich einen aussuchen. Ohne Registrierung oder sonstiges. Man trägt in der Befehlszeile des Miners nur die Adresse des Pools ein und dann die eigene Walletadresse. Schwupps, schon gehts los.

Bearbeitet von Tschubaka
  • Love it 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb seppim:

Wie wird aber sicher gestellt, das ein Block überhaupt gefunden wird?

Da hilft der Kollege Zufall. Wenn ein Nerdminer 38 Milliarden Jahre braucht um einen Block zu finden dann würden 38 Milliarden Nerdminer im Schnitt einmal im Jahr einen Block finden. Das ganze müssen wir dann noch 6*24*365 rechen und schon haben wir genug Nerdminer damit im Schnitt alle 10 Minuten einer von ihnen durch Zufall einen Block bilden kann. 

Jetzt wäre das recht unwirtschaftlich Milliarden von Nerdminer laufen zu lassen. Es gibt am Markt deutlich bessere Miner mit einem vielfachen der Rechenleistung eines Nerdminer. Nehmen wir mal an es würde einen Nerdminer2.0 geben mit 1000facher Rechenleistung aber nur leicht höherem Stromverbrauch als das alte Modell. Dann kannst du die oben stehenden 38 Milliarden Nerdminer gegen 38 Millionen Nerdminer2.0 austauschen. Genau das passiert beim Mining ununterbrochen. Durch technologischen Fortschritt werden immer bessere Miner an den Start gebracht mit noch mehr Rechenleistung bzw geringeren Stromverbrauch im Verhältnis zur Rechenleistung.

Wenn sich die Rechenleistung im Netzwerk verdoppelt wie kann dann das Intervall gleich bleiben? Die Difficulty wird automatisch angepasst. Alle 2016 Blöcke also ca alle 2 Wochen wird geschaut wie viel Zeit ins Land geflossen ist. Nehmen wir mal an die aktuelle Difficulty ist X und die 2016 Blöcke haben es in nur 13 Tage auf die Blockchain geschafft. Diese 13 Tage werden mit dem Ziel von 14 Tagen verrechnet. 14/13=1,077. Wenn also die Difficulty um den Faktor 1,077 erschwert wird, würde bei gleichbleibender Rechenleistung das 10 Minuten Intervall erreicht werden.

Es kann auch passieren, dass die Rechenleistung sich schlagartig halbiert. Dann würde es 4 Wochen dauern bis zur nächsten Difficulty Anpassung und in diesen 4 Wochen gibt es im Schnitt nur alle 20 Minuten einen Block. Die Difficulty würde in diesem Fall leichter werden sodass nach den 4 Wochen wieder ein 10 Minuten Intervall erreicht wird.

Soweit verstanden oder irgendwas unklar?

vor 2 Stunden schrieb seppim:

Gleichen die Miner die bereits geprüften Zahlen ab, damit andere nicht die selbe Berechnung durchführen?

Innerhalb eines Miningpools wird einfach der Zahlenraum aufgeteilt. Alle Miner melden sich am Miningpool an und bekommen von diesem dann mitgeteilt bei welchem Nonce sie starten sollen. Ich glaube der Miningpool sorgt sogar für absichtliche Überschneidungen in ganz kleiner Anzahl um fehlerhafte Miner zu erkennen und die Bezahlung zu verweigern / zu reduzieren. Ohne eine derartige Überprüfung könnte ich sonst einen Nerdminer3.0 an den Start bringen der bei drastisch reduziertem Stromverbrauch nur so tut als ob er arbeiten würde um vom Miningpool immer fleißig für nicht geleistete Arbeit bezahlt zu werden. Das kann der Miningpool erkennen indem er sporadisch für Überschneidungen sorgt und die Ergebnisse vergleicht. Ich glaube diese Überschneidungen werden zeitlich so gelegt, dass die Performance des Miningpools nicht leidet. 100 Miner suchen einen Block. 1 findet einen Block und während dieser eine Block im Netzwerk verteilt wird, haben die anderen 99 Miner kurz Leerlauf. Der Perfekte Moment um allen 100 Minern identische Rechenaufgaben zu geben und die Ergebnisse zu vergleichen. Damit kann der Miningpool die tatsächliche Rechenleistung messen und den Reward entsprechend verteilen. Ich meine irgendwo mal etwas in der Richtung gelesen zu haben aber ich findet es gerade nicht. Such da sonst nochmal selbst nach wenn es dich interessiert.

Miningpool übergreifend sind keine Absprachen notwendig. Selbst wenn zwei Miningpools die exakt gleichen Transaktionen in der gleichen Reinfolge in den Block drücken wollen so würde dennoch die Auszahlungsadresse des Miningpools selbst unterschiedlich sein. Damit ändert sich dann auch der Hash des Blocks. Beide Miningpools können also den gleichen Zahlenraum durcharbeiten weil die Metadaten des von ihnen gesuchten Blocks sich zwangsweise leicht unterscheiden.

 

 

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb seppim:

Mining bedeutet, das durch komplexe Berechnungen ein Hashwert für eine Blockchain gesucht wird?

Nicht ganz.

Die Berechnung ist total einfach. (siehe https://de.wikipedia.org/wiki/Secure_Hash_Algorithm)

vor 3 Stunden schrieb seppim:

Es dauert mit einem Nerdminer 38 Milliarden Jahre um diesen zu finden.

Das kommt weil ein gültiger Blockhash eine "Hürde" überspringen muss (Difficulty), es muss ein Hashwert gefunden werden, der mit einer gewissen Anzahl 0-Bytes beginnt. Die Anzahl ist diese "Difficulty"/Hürde.

Hier siehst du diese Anzahl an Nullen: https://blockchair.com/bitcoin/block/00000000000000000000283403ebbfb2b3748a90edf7096596204bd147351dfa

Wenn dein Nerdminer alle zu verarbeitenden Transaktionen zusammen gebaut hat, dann muss er diesen Datenblock verändern um mit jeder Veränderung einen komplett neuen Hashwert zu ermitteln.

Das macht er über diese "Nonce", siehe Beitrag von Skunk hier drüber.

Wenn dein Nerdminer 38 Mrd. Jahre braucht, kannst du das runterrechnen auf 10 Minuten und du weißt wieviel Nerdminer in einem Miningpool zusammengeschlossen werden müssen um innerhalb von "durchschnittlich" 10 Minuten einen Block zu finden.

Hier siehst du, dass nicht alle 10 Minuten ein Block gefunden wird, sondern eben nur im "Durchschnitt": https://blockchair.com/bitcoin/blocks#

Alle 2016 Blöcke wird ermittelt ob der Durchschnitt von 10 Minuten noch gehalten wird und wenn nicht, dann wird die Difficulty angepasst.
Fällt z.B. die 10% der  Miningpower aus, wird die Difficulty um 10% herabgesetzt.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb seppim:

Man könnte sagen das Mining eine Art Passwort knacken gleicht?

Näherungsweise schon, nur dass das "Passwort" bekannt ist (Anzahl führende Nullen) und man nun solange rumraten muss bis der Blockhash die Bedingung erfüllt.

vor 3 Stunden schrieb seppim:

Wie wird aber sicher gestellt, das ein Block überhaupt gefunden wird? Gleichen die Miner die bereits geprüften Zahlen ab, damit andere nicht die selbe Berechnung durchführen?

Wenn kein Miner einen gültigen Blockhash findet, dann steht die Blockchain und sie ist tot. Total simpel, denn wenn niemals die nächsten 2016 Blöcke erreicht werden, kann die Hürde auch nicht herabgesetzt werden.

So aprupt geht das jedoch in einem dezentralen System nicht. Jeder Block bringt richtig viel Kohle ein, daher ist dieser Fall unwahrscheinlich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 6.9.2023 um 09:43 schrieb skunk:

Ich glaube der Miningpool sorgt sogar für absichtliche Überschneidungen in ganz kleiner Anzahl um fehlerhafte Miner zu erkennen und die Bezahlung zu verweigern / zu reduzieren.

Das wäre ineffizient, wenn mehrere Miner an derselben Arbeit schuften. Der Pool weist jedem Miner individuelle Arbeit zu, mit angepasster und in der Regel niedrigerer Difficulty, je nach Leistungsfähigkeit des Miners. Der Miner liefert "Shares", Arbeitsergebnisse (gültige Blockheader einer angepassten und deutlich niedrigeren Difficulty), die die niedrigere Difficulty erfüllen, so weist der Miner seine korrekte geleistete Arbeit nach. Dabei kann zufällig ein Arbeits-Share produziert werden, dessen Difficulty die reale Difficulty erfüllt, also einen validen realen Block ergäbe. Solch einen Arbeits-Share publiziert der Pool dann als einen neuen gültigen Block.

Ich erinnere mich nicht so genau, ob das etwas mit dem Stratum-Protokoll zu tun hat.
 

Am 6.9.2023 um 09:43 schrieb skunk:

Ohne eine derartige Überprüfung könnte ich sonst einen Nerdminer3.0 an den Start bringen der bei drastisch reduziertem Stromverbrauch nur so tut als ob er arbeiten würde um vom Miningpool immer fleißig für nicht geleistete Arbeit bezahlt zu werden.

Nein, kannst du nicht, weil du keine gültigen Arbeits-Shares mit 'nem passenden Blockhash selbst für eine niedrigere Share-Difficulty abliefern kannst. Bei Kryptographie und Hashes kannst du nicht bescheissen, weil du bei Beschiss keine passende Nonce und Extra-Nonce für einen vorgegebenen Blockheader liefern kannst, der zu deinem gefakten Blockheader-Hash passt bzw. diesen ergibt. So blöd ist kein Pool, sich von oberfaulen Nerdminern3.0 auf's Glatteis ziehen zu lassen und dafür noch zu bezahlen.

Meldet ein Worker innerhalb bestimmter Fristen keine gültigen Shares, nimmt der Pool an, daß der Worker defekt ist und teilt dieselbe Arbeit einem anderen Worker zu. Da ein gültiger Blockhash aber ohnehin ein Zufallsprodukt ist, ist es auch nicht so schlimm, wenn Arbeitsteilbereiche unter'm Tisch fallen. Es wäre auch etwas zu mühsam, wenn der Pool minutiös Buch führen müsste, welche Arbeit nun wohin vergeben wurde und ob diese Arbeit auch vollständig durchgenudelt wurde (hier komme ich aber mit meinem Wissen an Grenzen, daher mit 'n paar Körnchen Salz nehmen).

Durch neue lukrativere Transaktionen im Mempool wird der Candidate-Block eines Pools ohnehin relativ oft neu zusammengestellt und neue Arbeit für die Worker verteilt. Außerdem sind die ASICs heutzutage so schnell, daß die einen vollständigen Nonce-Bereich in Sekundenbruchteilen abarbeiten und für neue Arbeit, die Extra-Nonce (in der Coinbase-Transaktion) oder die Reihenfolge der Transaktionen, was den Merkle-Root beeinflusst, angepasst wird. Das wird in irgendeiner geeigneten Form schon noch der Pool vorgeben und über seine vielen Worker steuern, damit Arbeitsaufträge effizient verteilt werden. Doppelte Arbeit ist ineffizientes Hashen und ökonomisch sinnlos.
 

Am 6.9.2023 um 09:43 schrieb skunk:

1 findet einen Block und während dieser eine Block im Netzwerk verteilt wird, haben die anderen 99 Miner kurz Leerlauf. Der Perfekte Moment um allen 100 Minern identische Rechenaufgaben zu geben und die Ergebnisse zu vergleichen.

Sorry, das ist Quark und total ineffizient. Um die Miner nicht sinnloses Zeug hashen zu lassen, während der neue Candidate-Block konstruiert wird, bekommen alle Worker, die in dieser Zeitspanne gerade nichts zu tun haben, einen simpleren Candidate-Block zum Hashen, nämlich die eigene Coinbase-Transaktion ohne weitere Transaktionen aus dem Mempool. Machmal findet ja innerhalb der ersten paar Sekunden nach einem neuen Block dann ein Worker einen validen Blockhash für einen Block der nur die Coinbase-Transaktion enthält, obwohl der Mempool eigentlich voll ist. Den Block-Reward ohne Fees nimmt man doch auch gerne mit. Die meisten solcher Mini-Blöcke, trotz genügend Transaktionen im Mempool, werden kurz nach dem vorherigen Block gefunden und das hat genau den von mir genannten Hintergrund.

Das ist die einfache Erklärung für solche Blöcke, die man in der eigentlichen Mempool-Situation unverständlich findet. Bei dem Hashdruck der ganzen Pools ist jeder leerlaufende Worker, dem keine Arbeit zugewiesen werden kann und der dann nichts leistet, eine sinnlose und ineffiziente Verschwendung von Ressourcen.


TL;DR
Jeder Worker weist seine Arbeit mit für ihn angepasster Share-Difficulty und entsprechend gültigen Arbeits-Shares nach. Simpel, vertrauenslos und durch Kryptographie abgesichert! Der Worker kann hier nicht bescheissen, Punkt. Die Überprüfung ergibt sich von allein, da der Worker einen gültigen Arbeits-Blockheader-Hash abliefern muss, der zu seiner angepassten Worker-Difficulty passt. Die Arbeit zu leisten, ist schwer, die Arbeit, den Hash zu überprüfen, geht ratzfatz.

 

Bearbeitet von Cricktor
  • Love it 2
  • Thanks 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.