Wie werden die Transaktionen aus dem Mempool ausgewählt, wenn jeder Knoten seinen eigenen Mempool hat?

Ich habe dieses Szenario:

Wenn also ein Wallet-Benutzer eine Transaktion initiiert, geht dies so weit ich es verstanden habe in einen Mempool. Und dass jeder Knoten seinen eigenen Mempool hat.

Ich habe jedoch einige Fragen: Bekommt jeder Knoten alle Transaktionen in seinem Mempool, was bedeutet, dass es wie ein Syncronisez-Ort ist, an dem jeder dieselben Transaktionen sehen kann? Wenn ja, woher weiß der Rest des Netzwerks von Minern, dass die Transaktionen, die sie aus dem Mining-Pool ausgewählt haben, nicht bereits von einem anderen Miner abgebaut werden?

Oder erhält jeder Knoten unterschiedliche Transaktionen in seinen Mempools? Wenn ja, wie wird die Transaktion übertragen? Geht es zufällig in den Mempool eines Miners?

Vielen Dank für Ihre Geduld!

Antworten (1)

Wenn eine neue Transaktion gesendet wird, wird sie vom Ursprungsknoten an alle verfügbaren Peers weitergeleitet. Diese Peers geben es dann an alle ihre Peers weiter und so weiter, bis (hoffentlich) jeder Knoten im Netzwerk von der Transaktion gehört hat. Jeder Knoten kann einen Mempool führen, wenn er dies wünscht, und dieser Mempool speichert alle Transaktionen, von denen er kürzlich gehört hat. Knotenbetreiber können mehrere Variablen in ihrer Software konfigurieren, um nur eine bestimmte Menge (in Bytes) an TXs zu speichern, um nur Transaktionen weiterzuleiten, die über einem bestimmten Gebührensatz liegen, usw.

Der Mempool jedes Knotens kann daher etwas anders sein, es gibt keinen erzwungenen Konsens darüber, was im Mempool jedes Knotens gespeichert wird. Tatsächlich kann sich ein Knotenbetreiber dafür entscheiden, überhaupt keinen Mempool zu führen!

Miner betreiben Full Nodes, die mit dem Netzwerk kommunizieren. Auf diese Weise erfahren sie von neuen Transaktionen, die in die Blöcke aufgenommen werden sollen, die sie abbauen. Sobald ein neuer Block gefunden wird, sendet der Miner ihn an das Netzwerk. Wenn jeder Node von dem neuen Block erfährt, wird er daran arbeiten, den Block und alle darin enthaltenen Transaktionen unabhängig zu validieren. Ein Teil dieses Prozesses besteht darin, zu identifizieren, welche Transaktionen im Block bestätigt werden, und diese Transaktionen aus dem Mempool des Knotens zu entfernen. Kurz nachdem Sie von einem neuen Block gehört haben, wird der Mempool jedes Knotens aktualisiert, um die jetzt bestätigten Transaktionen zu entfernen.

Bekommt jeder Node alle Transaktionen in seinem Mempool, was bedeutet, dass es wie ein synchronisierter Ort ist, an dem jeder dieselben Transaktionen sehen kann?

Es gibt keine erzwungene Synchronisierung, keinen Konsens oder Mempools, aber viele Mempools werden wahrscheinlich viele der gleichen Transaktionen zu einem bestimmten Zeitpunkt gespeichert haben.

..woher weiß der Rest des Netzwerks von Minern, dass die Transaktionen, die sie aus dem Mining-Pool ausgewählt haben, nicht bereits von einem anderen Miner abgebaut werden?

Es besteht die Möglichkeit, dass sich die Transaktionen, die im Mempool jedes Miners gespeichert sind, stark überschneiden. Bei der Arbeit an einem neuen Block verwenden Miner Transaktionen aus ihrem Mempool, aber es spielt keine Rolle, ob mehr als ein Miner versucht, einen Block mit denselben Transaktionen abzubauen. Irgendwann findet einer der Miner einen gültigen Block, und nachdem er ihn an das Netzwerk gesendet hat, aktualisieren die anderen Miner einfach ihre eigenen Mempools, um die jetzt bestätigten Transaktionen zu entfernen, die im letzten Block enthalten waren (genauso wie jeder andere Knoten Wille). Dann beginnt der Prozess von vorne, wobei alle versuchen, den nächsten Block abzubauen, wobei wiederum die unbestätigten Transaktionen verwendet werden, die sie in ihren lokalen Mempools haben.