Ich habe verstanden, dass Miner die Transaktionen validieren, indem sie auf doppelte Ausgaben prüfen, und dass die Transaktion noch nicht bestätigt wurde. Was ich nicht verstehe, ist, wie die Miner dies tun können, wenn alle Daten, die sie haben, die Transaktionen sind.
Erstens verwaltet jeder Knoten im Netzwerk ein UTXO-Set. Nicht nur Bergleute.
zu 1. Der UTXO-Satz wird erstellt, indem alle Transaktionen in jedem Block in der Kette von Anfang an angewendet werden. Alle Transaktionen, die beim Erreichen der Kettenspitze nicht ausgegeben werden, befinden sich im UTXO-Set. Je älter ein Block ist, desto höher ist die Wahrscheinlichkeit, dass das gesamte Netzwerk einen gleichen Block hat. Gleiche Blöcke führen zu einem gleichen UTXO-Set.
zu 2. Jeder Node validiert Blöcke, nicht nur Miner. Ein Block gilt als gültig, wenn er den Konsensregeln folgt. Eine Konsensregel ist, dass jede Ausgabentransaktion (TXO) im aktuellen UTXO-Set (vor der Annahme) oder einem TXO sein muss, das früh im selben Block erstellt wurde. Die Blockvalidierung stört das eigentliche Mining nicht (nur für kurze Zeit, wenn der Block akzeptiert wird und ein neues Blocktemplate an den ASIC gepusht werden muss). Die Validierung erfolgt auf der Host-CPU und der eigentliche Mining-Teil findet im ASIC statt. Wenn ein Miner einen ungültigen Block nicht validiert, verschwendet er seine Zeit/Strom/Geld damit, einen ungültigen Block zusätzlich zum vorherigen ungültigen Block abzubauen.