Ich habe versucht, das Protokoll zu verstehen und verwandte Dokumente zu lesen, aber es gibt einen Punkt, an dem ich nicht weiterkomme.
Soweit ich verstehe (korrigieren Sie mich, wenn nicht), wird eine Transaktion an das Netzwerk gesendet, und einige Miner erhalten sie. Wenn eine bestimmte Anzahl von Transaktionen erreicht ist, werden sie in einen Block gepackt und das Hash Race beginnt.
Was ich nicht verstehe ist; Müssen in diesem Schema nicht alle Miner in perfekter Speicherkohärenz und Zeitsynchronisation sein, damit sie wissen, wann ein Block versiegelt werden muss, und mit der Iteration für Hashes beginnen? Oder müssen sie nicht denselben globalen Block abbauen und hashen, sondern separate Blöcke haben, die später von anderen Minern validiert werden, und Transaktionskollisionen zwischen Blöcken spielen keine Rolle?
Ich weiß, dass ich einen sehr grundlegenden Punkt im Protokoll falsch verstehe, aber ich kann nicht herausfinden, was.
Ein Miner beginnt mit der Erstellung eines neuen Blocks, sobald er einen gültigen Block von einem anderen Miner erhält. Es beginnt dann, den nächsten Block über dem gerade empfangenen Block zu konstruieren und zu hashen.
Sie hatten Recht, als Sie dachten, dass jeder Miner einen separaten Block von den anderen hat. Betrachten Sie es nicht so, als würden Miner alle zusammenarbeiten, um einen Hash für denselben Block zu finden, sondern konkurrieren miteinander, um ihren eigenen Block zum nächsten in der Kette zu machen. Wenn sie einen gültigen Block finden, senden sie ihn und andere Miner geben ihre Bemühungen auf und konzentrieren ihre Hashing-Leistung stattdessen auf den nächsten Block.
e,f,g
, und beginnt mit der Suche nach einem passenden Nonce dafür.Ein Teil Ihres Missverständnisses ist: "Wenn eine bestimmte Anzahl von Transaktionen erreicht ist". Mining benötigt keine bestimmte Anzahl von Transaktionen; Es ist legal, einen Block ohne Transaktionen zu haben (mit Ausnahme der „Coinbase“-Blockbelohnungstransaktion). Das „Hash Race“ findet immer statt; er startet und hört nicht auf. Wenn ein Miner eine neue Transaktion erhält, fügt er sie einfach in die Transaktionen ein, die er bereits hat, generiert einen neuen Block-Header und fährt mit dem Hashing auf dem neuen Header fort. Es ist nicht erforderlich, dass alle Miner mit denselben Transaktionen arbeiten.
Murch