Was ist der Bitcoin Mempool
Der Bitcoin Mempool ist ein faszinierendes und zentrales Element im Ökosystem von Bitcoin, welches sowohl für Anfänger als auch für erfahrene Nutzer von Interesse ist. Mit dem Mempool habt ihr tiefen Einblick in das Bitcoinnetzwerk, ihr könnt eure Transaktionen verfolgen, die Funktionsweise und Zusammensetzung selbiger visuell begutachten, euch die aktuellen Blöcke und Gebühren anschauen und vieles mehr! Lasst uns also tiefer in dieses Thema eintauchen!
Was ist der Bitcoin Mempool?
Der mempool (kurz für Memory Pool) ist eine Art Wartezimmer oder Sammelstelle für alle unbestätigten Bitcoin-Transaktionen. Jedes Mal, wenn jemand eine Bitcoin-Transaktion sendet, landet diese zunächst im mempool, bevor sie in einen Block aufgenommen und von den Minern bestätigt wird. Wichtig zu verstehen: der mempool ist keine zentrale Sammelstelle aller Transaktionen, sondern ein Abbild aller aktuelle Transaktionen die im mempool des jeweiligen Knotenpunktes vorliegen. Jeder Miner, und jeden Full Node Betreiber hat seinen eigenen mempool, dieser kann vom mempool von der Seite https://mempool.space, ein öffentlich einsehbarer mempool, abweichen.
Funktion des Mempools
Kommen wir zu den wichtigsten Funktionen des mempools un seinem Nutzen:
- Sammelstelle für Transaktionen: Der Mempool sammelt alle Transaktionen, die noch nicht in einen Block aufgenommen wurden. Diese Transaktionen warten darauf, von Minern ausgewählt und in den nächsten Block der Blockchain eingefügt zu werden.
- Priorisierung nach Gebühren: Miner wählen Transaktionen aus dem Mempool basierend auf den angehängten Gebühren. Höhere Gebühren können eine schnellere Bestätigung bedeuten, da Miner natürlich daran interessiert sind, die rentabelsten Transaktionen zuerst zu bearbeiten.
- Verwaltung des Netzwerkverkehrs: In Zeiten hoher Netzwerkaktivität kann der Mempool überfüllt sein, was zu Verzögerungen führt. Dieser Stau zeigt, wie das Netzwerk mit großem Transaktionsaufkommen umgeht.
Nutzen des Mempools
- Transparenz: Jeder kann den Mempool einsehen, um den Status einer Transaktion zu überprüfen. Das bietet Transparenz und ermöglicht es Nutzern, angemessene Transaktionsgebühren festzulegen.
- Netzwerkauslastung: Der Zustand des Mempools gibt Aufschluss über die Auslastung und Effizienz des Bitcoin-Netzwerks. Ein überfüllter Mempool kann auf einen ein sehr hohes Transaktionsvolumen hinweisen.
Verbindung mit Bitcoin-Wallets und Lightning Network
Bitcoin-Wallets:
- Gebührenschätzung: Moderne Wallets analysieren den Mempool, um eine Schätzung der erforderlichen Transaktionsgebühren vorzunehmen.
- Transaktionsstatus: Wallets nutzen den Mempool, um Nutzern Informationen über den Status ihrer Transaktion zu liefern (z.B. ob sie noch unbestätigt ist). Viele Apps lassen euch den mempool selber festlegen. Es kann z.B auch der eigene verwendet werden, der auf der eigenen Fullnode läuft.
Lightning Network (LN) und LND (Lightning Network Daemon):
- off-Chain-Transaktionen: Das Lightning Netzwerk ermöglicht Off-Chain-Transaktionen, die nicht direkt im Mempool erscheinen. LN-Transaktionen werden erst dann an den Mempool gesendet, wenn Kanäle geöffnet oder geschlossen werden.
- mempool Entlastung: Durch das Ausführen von Transaktionen außerhalb der Blockchain hilft LN, den Mempool zu entlasten und onchain Transaktionen im Bitcoin-Netzwerk zu reduzieren.
Verwendung des Mempools auf mempool.space
Auf der offziellen Webseite mempool.space gibts es einen öffentlich einsehbaren mempool. Dieser muss wie gesagt, nicht zu 100% mit dem mempool andere Netzwerknoten, oder mit eurem eigenem übereinstimmen. Es kann sein, dass ein Miner andere Blöcke validiert und bestimmte Transaktionen priorisiert, weil es dafür einen bestimmten Grund gibt. Ein Miner kann selber entscheiden, welche Transaktionen er validieren möchte, und welche nicht. ViaBTC führt z.B einen LowFee Accelerator. Sie bestätigen bestimmte Transaktion, die eine sehr niedrige Fee haben, obwohl die Gebühren eigentlich deutlich höher sind. Das soll helfen, stecken gebliebene Transaktionen zu bestätigen, wenn die Gebühren über längere Zeit stark ansteigen. Wir schauen uns nun im nachfolgenden den mempool etwas genauer an.
Die Übersicht
Schauen wir uns den Mempool in der Übersicht an, seid beruhigt, es gibt viele Zahlen, Informationen, viele Felder und Graphen, im Grunde funktioniert der mempool aber relativ einfach.
Ganz oben seht ihr die aktuelle Blockchain visualiert dargestellt. Links seht ihr die unbestätigten Transaktionen, rechts die bestätigten Transaktionen. Sobald ein Block validiert wurden ist, wandert er nach rechts, und ist nicht mehr veränderbar oder im Nachhinein anzupassen, ausser, es kommt zu einem Fall, in der 2 Miner genau zur gleichen Zeit einen gültigen Blocken finden, dann wird der Block der kürzeren Kette verworfen, ein sogenannter Chain Reorg kommt vor.
Genau genommen, gehört der bestätigte Teil nicht zum mempool sondern ist ein sogenannter Blockexplorer.
Auf der linken Seite kommen ständig neue Transaktionen hinzu, die Blöcke verändern sich, die Gebühren können steigen oder gar Transaktionen verschoben werden: dies ist der eigentliche mempool, beziehungsweise der Wartebereich, in dem sich die unbestätigten Transaktionen befinden. Die Transaktionen in den Blöcken werden in der Regel der Gebühr nach geordnet.
Die Gebühren
Hier seht ihr die aktuellen Gebühren des Netzwerkes. Die Einteilung geschieht in Prioritäten. Zahlungen mit Gebühren höher als das Minimum der höchsten Priotität haben die höchsten Chancen im ersten Block zu landen. Hier könnt ihr also die Gebühren abschätzen, zum Beispiel welche Gebühr ihr am besten für eure Transaktionen nehmen sollt. Bitte merkt euch, dass es hier zu Schwankungen nach oben kommen kann. Es ist also Möglich, das bei vielen einkommenden Transaktionen, die Minimalgebühr von 13 Sats pro Virtualbyte hier in diesem exemplarischen Beispiel nicht mehr ausreichen könnten, um in den ersten Block zu kommen. Bezahlt also lieber etwas mehr, um wirklich im ersten Block zu landen. Eine Zahlung mit zu niedrigen Gebühren, kann unter Umständen also lange im Mempool verhaaren, bis sie bestätigt wird.
Die Blockzusammensetzung
Unter den Gebühren seht ihr, wie der aktuelle Block aussieht. Dieser ändert sich quasi im Sekundentakt.
Es kommen neue Transaktionen hinzu, werden ersetzt, oder fallen aus dem Block heraus, da die Gebühren möglicherweise nicht mehr ausreichen.
Im markierten Bereich können wir die Transaktionen etwas genauner analysieren. Es kann zwischen der Normalansicht, also All, Consolidation, Coinjoins und Data gefiltert werden. Consolidation sind Transaktionen, die kleinere UTXOs in einen einzigen zusammen fassen, um zum Beispiel Gebühren zu sparen. Coinjoins sind Transaktionen, die er Erhöhung der Anonymität im Netzwerk dienlich sind. Wie ihr seht, sobald ihr darauf klickt, ist die Anzahl der Coinsjoins sehr gering. Data Transaktionen sind möglicherweise Ordinals, beziehungszweise Transaktionen, auf denen Affenbildchen und so ein Kram gespeichert sind.
Klickt ihr auf einen unbestätigen Block, seht ihr dessen Aufbau im Detail:
Mit der kleinen Brille bekommt Ihr noch weitere Einsichten zum aktuellen Block, und es lässt sich weiter nuancieren, welche Transaktionen enthalten sind. Links seht ihr die Gebührenverteilung im ausgewählten Block.
Klickt ihr einen bestätigten Block, seht etwas anderes:
Links seht ihr den Exptect Block, also den erwarteten Block, rechts den Actual Block, als so wie er vom Miner schlussendlich gemint wurden ist. Hier kann und darf es zu Unterschieden kommen. Jeder Miner darf einen Block so bauen, wie er es möchte. Manche Miner nehmen z.B. Blöcke auf mit niedriger Fee (siehe oben: Low Fee Accelerator) oder lehnen bestimmte Data Transaktionen (Ordinals, NFTs etc) ab. Der Ursprung ist hier das jeder Miner frei über seinen Mempool bestimmen darf und seine eigene Version des Mempool hat.
Ihr seht links auch die Healthangabe. Diese stellt da, inwiefern der Block vom Miner sich vom Expected Block unterscheidet. Ist die Zahl 100% hat der Miner keine eigens priorisierten Transaktionen mit in den Block aufgenommen, Ist die Zahl nicht 100%, hat der Miner eigens ausgewählte Transaktionen, die auch zum Beispiel von den Gebühren her stark vom aktuellen Blockdurschnitt abweichen, mit in den Block aufgenommen.
Die Difficulty beziehungsweise die aktuelle Schwierigkeitsanpassung
Rechts unter den Bestätigten Block seht ihr die voraussichtliche Schwierigkeitsanpassung. Hier findet ihr Angaben darüber, wie schnell ein Block im Durschnitt aktuell gemint wird, und in wiefern die Difficulty nach der Periode von 2 Wochen, oder genau 2016 Blöcken angepasst wird. Läuft die Blockchain schneller als 10 Minuten Blockzeit, wird die Schwierigkeit entsprechend erhöht, läuft die Blockchain langsamer als 10 Minuten Blockzeit, wird sie entsprechend gesenkt, damit anschliessend die 10 Minuten Blockzeit erreicht wird. Dies geschieht vollautomatisch, und benötigt keiner Steuerung seitens irgendeiner Entität.
Unter der Schwierigkeitsanpassung seht ihr die aktuelle Anzahl eingehender Transaktionen. Die gestrichelte Linie stellt die Transaktionsgeschwindigkeit dar. Die ist in der Regel fest. Das Bitcoincoin Netzwerk kann in der Regel ca 6000-7000 Transaktionen pro 10 Minuten Blockzeit abarbeiten. Die schwankende farbige Linie, sind die eingehenenden Transaktionen. Ist diese deutlich über der gestrichelten weissen Linie, kommen mehr Blöcke hinzu, als das Netzwerk verarbeiten kann. Das bedeutet auch, dasd die Gebühren tendienziell steigen könnten. Ist die Linie lange unter der gestrichelten, bedeutet dies, dass eher weniger Transaktionen hinzukommen, und dass die Gebühren eher fallen werden.
Transaktionen verfolgen
Habt ihr eine Transaktion, z.B aus einer Überweissung, könnt ihr die TxID oben rechts im Suchfeld eingeben. Danach zeigt euch der Blockexplorer die Transaktion an, und wo diese sich in der Warteschlange befindet aber natürlich auch wenn diese Transaktion bereits bestätigt worden ist:
Im oberen Feld seht ihr eine Übersicht, also zum Beispiel die aktivierten Features wie RBF, Segwit oder Taproot. Ausserdem, der Gebührensatz, die Gebühr selber und wer den Block gemint hat. Unten findet ihr das Flussdiagram. Rechts der Input, welcher aus einem UTXO eurer Wallet besteht, und links die Zieladressen. Wenn rechts mehrere Flüsse dargstellt sind, besteht die Transaktion aus mehreren UTXOs! Das heisst also, um die Bezahlung zu ermöglichen, wurden mehreren UTXOs verwendet, weil es keinen gab, der Überweissung vollständig decken konnte. Links findet ihr also die Outputs der Transaktion. Sie besteht in der Regel aus der Gebühr für den Miner (erster Outflow, der eigentlichen Zahlung für die Transaktion (zweiter Fluss) und dem Wechselgeld aus der Transaktion (dritter Outflow). Das Wechselgeld geht in der Regel auf die eigene Wallet zurück.
Die Transaktion mit der TxID faf4902204dd792428c4d65a1d5e9e4771f247659a2d3ec3511a8f014e319002 hat also 2 Outputs:
faf4902204dd792428c4d65a1d5e9e4771f247659a2d3ec3511a8f014e319002:0
und
faf4902204dd792428c4d65a1d5e9e4771f247659a2d3ec3511a8f014e319002:1
Die Zahl hinter der TxID ist der Output Index oder auch TxOut genannt. Der Outputindex hilft dabei, jeden einzelnen Output innerhalb einer Transaktion eindeutig zu identifizieren.
Das Feld unter den Flow gibt Angaben von wo, und wohin die Outputs gesendet werden:
Die Zahlung kommt von der Adress bc1430jx... mit einem UTXO der 0.09471465 BTC gross ist, und geht an die Adress bc1qhc... Die zweite Adresse darunter ist der Change, also das Wechselgeld der Zahlung, weil die Zahlung nur 4 Millionen Sats betrug.
Ein weiteres Beispiel, die Konsolidierung
Hier sehen wir kurz das Flussdiagram einer Konsolidierung:
Die Inputs sind viele kleine UTXOs, die zusammen in einen einzigen gebündelt werden. Rechts oben die Gebühr, links unten, der neue zusammengefasste UTXO. Das spart Gebühren, den die Gebühr erhöht sich mit der Anzahl an Inputs, und Outputs.
Verwendung des eigenen mempools
CLI Variante
Um euren eigenen Mempool im Bitcoin-Netzwerk zu nutzen, müsst ihr mit bitcoind
, dem Bitcoin-Daemon, arbeiten. bitcoind
ist das Programm, das im Hintergrund auf eurer Fullnode läuft und das Bitcoin-Protokoll implementiert. Es hält eine vollständige Kopie der Blockchain vor und verwaltet den Mempool, eine Sammlung von Transaktionen, die von anderen Knoten im Netzwerk empfangen wurden, aber noch nicht in einem Block enthalten sind.
Wenn ihr bitcoind
verwendet, gibt es verschiedene Befehle und Konfigurationsoptionen, die euch helfen, euren eigenen Mempool zu verwalten und zu inspizieren. Hier einige der wichtigsten Befehle, die über die Bitcoin Core RPC-Schnittstelle verfügbar sind:
getmempoolinfo
: Dieser Befehl gibt euch Basisinformationen über euren Mempool. Er zeigt unter anderem die aktuelle Größe des Mempools, die Anzahl der Transaktionen darin und den Speicherplatz, den sie verbrauchen.
bitcoin-cli getmempoolinfo
getrawmempool
: Dieser Befehl liefert eine Liste aller Transaktions-IDs, die derzeit in deinem Mempool sind. Ihr könnt zusätzliche Details zu jeder Transaktion erhalten, indem ihr den Befehl mit dem true
-Parameter für detaillierte Informationen ausführt.
bitcoin-cli getrawmempool true
getmempoolentry <txid>
: Mit diesem Befehl könnt ihr spezifische Informationen zu einer Transaktion in eurem Mempool abfragen, indem ihr die Transaktions-ID (txid
) angebt. Dies ist nützlich, um den Status und die Details einer bestimmten Transaktion zu überprüfen.
bitcoin-cli getmempoolentry <txid>
Mempool-Konfigurationsoptionen: Beim Starten von bitcoind
könnt ihr verschiedene Optionen angeben, um das Verhalten eures Mempools anzupassen. Zum Beispiel:
maxmempool=<n>
: Legt die maximale Größe des Mempools in Megabytes fest.mempoolexpiry=<n>
: Setzt die Zeitdauer (in Stunden), nach der eine Transaktion aus dem Mempool entfernt wird, falls sie nicht in einen Block aufgenommen wird.minrelaytxfee=<amt>
: Definiert die minimale Gebühr in BTC/kB, die eine Transaktion zahlen muss, um von deinem Knoten angenommen zu werden.
Diese Optionen können in der Konfigurationsdatei bitcoin.conf
festgelegt oder direkt beim Start von bitcoind
als Befehlszeilenargumente angegeben werden.
bitcoind -maxmempool=300 -mempoolexpiry=72 -minrelaytxfee=0.00001
Diese Befehle und Optionen sind zentral, wenn es darum geht, euren eigenen Mempool im Bitcoin-Netzwerk via der Kommandozeile zu verwalten und zu überwachen. Sie können euch helfen, bitcoin besser, auf der ebene des Terminals, zu verstehen.
Visualisierter Mempool
Der mempool auf der eigenen Fullnode kann natürlich auch visualisiert verwendet werden, um Transaktionen zu analysieren oder zu begutachten. Für Anfänger empfiehlt sich deshalb, den visuallsierten Mempool auf der eigenen Fullnode zu installieren. Auf Umbrel und dem Raspiblitz zum Beispiel gibt es dafür Apps. Habt ihr diese installiert, so könnt ihr den internen Mempool der eigenen Fullnode visualisieren, und wie auf der Seite von mempool.space verwenden.
Der Mempool ist auf dem Raspi bei mir bereits installiert, deshalb steht bei mir Open. Bei einem nicht installiertem mempool, wird dort natürlich Install stehen.
Abschließende Gedanken
Ihr habt nun einen tieferen Einblick in die funktionsweise des mempools erhalten. Das macht die Benutzung der Seite doch gleich viel verständlicher. Benutzt ihr euren eigenen Mempool, so werdet ihr sogar noch einen Schritt unabhängiger, den ihr müsst der Seite mempool.space nicht mehr vertrauen, sondern verifziert eure Daten selber! Der Bitcoin Mempool spielt eine wichtige Rolle für die Funktionsweise und dem Verständnis von Bitcoin. Er ist nicht nur ein notwendiger Bestandteil für die Verarbeitung und Bestätigung von Transaktionen, sondern bietet auch Einblicke in die Netzwerkdynamik und -leistung.