Mempool und Auswahl der Transaktionen für einen Block

Willkommen im Forum! :slight_smile:

Bitcoin ist eben ein dezentrales Netzwerk, also gibt es auch keinen zentralen Mempool, genauso wenig wie es eine zentrale Blockchain gibt.

Wenn du eine Bitcoin Transaktion „ins Netzwerk“ schickst, landet sie erst einmal bei einer Node (bzw. den Nodes mit denen deine Wallet verbunden ist). Dort wird sie validiert und anschließend an alle Nodes weiter geschickt mit denen die jeweilige Node verbunden ist. Die machen dann genau das selbe: Validieren und weiter sagen.

Das nennt man Flood propagation, irgendwann ist deine Transaktion einmal durchs komplette Netzwerk gewandert. Das Netzwerk wird mit deiner Transaktion „geflutet“. Erst dann ist sie auch in jedem Mempool und damit auch in den Mempools der Miner (das sind schließlich auch nur Nodes) enthalten. Der Empfänger deiner Transaktion sieht diese auch erst wenn die Node mit der seine Wallet verbunden ist sie im Mempool liegen hat.

Weil das Timing und die Verbreitung nicht unendlich schnell ablaufen kann wird niemals jeder Mempool auf jeder Node exakt gleich sein. Das sind natürlich minimale Unterscheide die sich innerhalb von Sekunden immer ausgleichen. Alle Mempools stimmen wahrscheinlich zu über 99% immer miteinander überein, weswegen man trotzdem Umgangssprachlich von dem Mempool sprechen kann.

Genau das selbe gilt für die Blockchain selbst. Wenn ein neuer Block gefunden wird kann das Netzwerk das erstmal gar nicht wissen. Die Node des Miners muss den Block, ähnlich wie eine Transaktion, ins Netzwerk schicken, wo der Block wieder sorgfältig validiert wird und weiter geschickt wird. Wenn der Block dann bei anderen Minern landet und diese ihn validiert haben wissen sie dass sie mit dem nächsten Block weiter machen können. Auch das läuft natürlich sehr schnell ab, trotzdem ist kurzeitig die Blockchain bei manchen Teilnehmern im Netzwerk länger (in dem Fall um einen Block) als bei anderen.

Wie du schon richtig sagst: Der Miner.

Theoretisch könnte dieser auch einfach gar keine Transaktion auswählen und einen leeren Block minen. Das ist völlig legitim, ergibt aber für den Miner nicht wirklich Sinn da er auf die Netzwerkgebühren der Transaktionen im Block verzichten würde.

Deshalb wird eigentlich immer so ausgewählt, dass der Block die höchstmögliche Belohnung für den Miner abwirft. Daher wird ein Block, noch während ein gültiges Proof of Work gesucht wird, auch andauernd verändert, z.B. kommen Transaktionen mit höherer Gebühr rein und andere werden wieder raus geschmissen.

Die Visualisierung mit den Mempool Blöcken die du auf mempool.space siehst versucht diese Auswahl halt möglichst akkurat abzubilden. Das ist aber nicht in Stein gemeißelt, sondern nur eine Vermutung der Webseite welche Transaktionen die Miner wahrscheinlich zuerst dran nehmen werden.

Das kannst du auch beobachten wenn du eine Transaktion mal auf der Seite im Mempool verfolgst, es kann sein dass sie durch mehrere Blöcke „nach hinten“ durchwandert. Das soll einfach nur eine Warteschlange veranschaulichen.

Natürlich, genau so funktioniert doch Mining. Wenn du nichts am Block änderst, ändert sich auch der Hashwert nicht. Nicht nur die Nonce wird angepasst, sondern auch z.B. die Reihenfolge der Transaktionen im Block, bzw. neue Transaktionen die in den Block reinkommen - alles beinflusst auch den Hashwert. Das ist logischerweise extrem wichtig da durch das verändern einer Transaktion im Block dieser ungültig werden muss! (d.h. der Hashwert verändert sich und das Proof of Work geht verloren)

Probier es doch mal selbst aus:

7 „Gefällt mir“