7 Minuten Lesezeit
Übersicht
Bitcoin ist der Vorläufer der Blockchain-Technologie. Mit Bitcoin begann eine neue Ära der Blockchain und der Dezentralisierung. Bitcoin ermöglichte es jedem, die Peer-to-Peer-Transaktionen durchzuführen, die heute so beliebt sind; in diesem Leitfaden erfahren Sie, wie Sie diese Transaktionen aus dem Bitcoin-Mempool abrufen können.
Voraussetzungen:
- Terminal/cmd (CLI).
- Bitcoin-Knoten.
- Die Liebe zur Dezentralisierung.
Was ist der Bitcoin-Mempool?
Die Transaktionen, die im Bitcoin-Netzwerk gesendet werden, werden nicht direkt in die Blockchain aufgenommen. Alle gültigen Transaktionen müssen zunächst in einen Wartbereich gelangen, bevor sie in einen Block aufgenommen werden. Dieser Wartbereich wird als „Mempool“ bezeichnet. Ist der Mempool groß, deutet dies auf ein hohes Datenaufkommen im Netzwerk hin, was zu längeren Transaktionsbestätigungszeiten und höheren Transaktionsgebühren führt.
Hinweis: In der gängigen Praxis bezeichnet „Bitcoin“ das Protokoll bzw. das Netzwerk, während „bitcoin“ oder „BTC“ die Währung ist.
Die Bitcoin-Transaktionsgebühr wird anhand der Anzahl der Satoshis gemessen, die pro Byte der Transaktion gezahlt werden. Satoshi ist die kleinste Einheit der nativen Währung Bitcoin im Bitcoin-Netzwerk, wobei 1 Bitcoin = 100 Millionen Satoshis entspricht. Miner räumen den Transaktionen im Mempool mit hohen Transaktionsgebühren Vorrang ein. Seit dem SegWit-Upgrade haben sich jedoch einige Dinge im Zusammenhang mit Bitcoin-Transaktionen geändert. Es wurde eine neue Transaktionsart eingeführt, die als SegWit-Transaktion bekannt ist, um die Anzahl der Transaktionen pro Bitcoin-Block zu erhöhen. Damit wurden zwei Probleme behoben: 1. Die Anzahl der Transaktionen pro Sekunde im Bitcoin-Netzwerk wurde erhöht, 2. Das Problem der Transaktionsverformbarkeit wurde behoben.
Vor der Einführung von SegWit wurden Blöcke oder Transaktionen in Byte gemessen, und jeder Block war auf 1 MB (Megabyte) bzw. 1 Million Byte begrenzt. Seit der Einführung von SegWit werden Transaktionen und Blöcke in Gewichtseinheiten gemessen; diese Gewichtseinheiten dienen dazu, Bitcoin-Daten zu messen und Transaktionen zu vergleichen.
Als nächstes soll das Konzept des vByte behandelt werden. Ein vByte entspricht vier Gewichtseinheiten. Bei einer herkömmlichen Transaktion belegt ein Byte Daten 1 vByte (4 Gewichtseinheiten). Bei einer SegWit-Transaktion hingegen belegt ein Byte Daten 1/4 vByte (1 Gewichtseinheit). Durch diese Reduzierung können die Blöcke mit viermal mehr Transaktionen gefüllt werden. Die aktuelle Bitcoin-Blockgröße ist auf 1 vMegabyte / 1 Million vByte / 4 Millionen Gewichtseinheiten begrenzt. Die meisten Wallets berechnen Transaktionsgebühren in Satoshis/vByte, die pro verwendetem vByte Daten gezahlt werden.
Anwendungsfälle für die Analyse des Bitcoin-Mempools:
Die Mempool-Analyse hilft uns, die Auslastung bzw. den Datenverkehr im Netzwerk zu verstehen, was uns letztendlich bei der Berechnung der Transaktionsgebühren hilft.
Lassen Sie uns nun auf den Mempool zugreifen und einige Transaktionsdaten aus dem Pool abrufen.
Einrichten eines Quicknode-Bitcoin-Endpunkts
Für unsere heutigen Zwecke benötigen wir einen Bitcoin-Knoten, um auf die Blockchain-Daten zugreifen zu können. Angesichts der großen Datenmenge bei Bitcoin wäre es sehr kostspielig und zeitaufwendig, hier einen eigenen Knoten zu betreiben. Stattdessen werden wir uns hier für ein kostenloses Quicknode-Konto registrieren, über das wir ganz einfach einen Bitcoin-Endpunkt erstellen können.

Kopieren Sie die HTTPS-URL Ihres Knotens und speichern Sie sie, da Sie sie später benötigen werden.
So greifen Sie auf den Bitcoin-Mempool zu / So rufen Sie ausstehende Transaktionen aus Bitcoin ab
Wir werden Bitcoin-RPC-Methoden verwenden, um Daten aus dem Mempool abzurufen – genauer gesagt die Methode „getrawmempool “. Öffnen Sie das Terminal/die Eingabeaufforderung und fügen Sie den folgenden Befehl ein:
curl --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getrawmempool", "params": [true]}' -H 'content-type: application/json' <QUICKNODE_BITCOIN_URL>
Ersetzen Sie „QUICKNODE_BITCOIN_URL“ durch die HTTPS-URL Ihres Bitcoin-Knotens, die wir im letzten Schritt ermittelt haben. Oben sehen Sie eine cURL -Anfrage an unseren Knoten zusammen mit der Methode „getrawmempool“.
Die Ausgabe sollte in etwa so aussehen.

Schauen wir uns nun den Ausgabetext genauer an. Die oben beschriebene Methode gibt eine Liste der derzeit im Mempool befindlichen ausstehenden Transaktionen aus. Wir werden eine einzelne Transaktion herausgreifen und die einzelnen Felder nacheinander durchgehen.
{
"result": {
"2d1228abf06836b1173936061fec0384e82e3b684d7950a27f06a06f587400d3": {
"fees": {
"base": 0.00111999,
"modified": 0.00111999,
"ancestor": 0.00111999,
"descendant": 0.00111999
},
"size": 90826,
"fee": 0.00111999,
"modifiedfee": 0.00111999,
"time": 1629052793,
"height": 695936,
"descendantcount": 1,
"descendantsize": 90826,
"descendantfees": 111999,
"ancestorcount": 1,
"ancestorsize": 90826,
"ancestorfees": 111999,
"wtxid": "b3b49bb3dcae483d579710a2e1f9c7ed585ab35e2a8cb941ff8cb27ea8adec20",
"depends": [],
"spentby": [],
"bip125-replaceable": false
}
}
}
Erläuterung der obigen JSON-Ausgabe:
Zeile 3: Dies ist die Transaktions-ID, anhand derer eine Transaktion in der Blockchain identifiziert wird.
Zeilen 4–9: Aufschlüsselung der Transaktionsgebühren.
Zeile 10: Transaktionsgröße gemäß BIP 141.
Zeile 11: Transaktionsgebühr in BTC (Bitcoin).
Zeile 12: Transaktionsgebühr mit Gebührendifferenzen, die für die Mining-Priorität herangezogen werden.
Zeile 13: Zeitpunkt, zu dem die Transaktion in den Pool aufgenommen wurde, in Sekunden seit dem 1. Januar 1970 (GMT).
Zeile 14: Höhe der Blockchain (neuester Block) zum Zeitpunkt der Aufnahme der Transaktion in den Pool.
Zeile 15: Anzahl der nachgelagerten Transaktionen im Mempool, einschließlich dieser Transaktion.
Zeile 16: Größe aller nachgelagerten Transaktionen im Mempool.
Zeile 17: Angepasste Gebühren aller nachgelagerten Transaktionen im Mempool.
Zeile 18: Anzahl der Vorgänger-Transaktionen im Mempool, einschließlich dieser Transaktion.
Zeile 19: Größe aller Vorgänger-Transaktionen im Mempool.
Zeile 20: Angepasste Gebühren aller Vorgängergeschäfte im Mempool.
Zeile 21: Transaktions-ID zusammen mit den Witness-Daten.
Zeile 22: Wenn eine unbestätigte Transaktion als Eingabe für diese Transaktion verwendet wird, ist sie hier einzutragen.
Zeile 23: Falls eine andere unbestätigte Transaktion Daten aus dieser Transaktion verwendet, muss dies hier eingetragen werden.
Zeile 24: Ein boolescher Wert, der angibt, ob die Transaktion gemäß BIP 125 ersetzt werden kann.
Um nun die eigentlichen Transaktionsdaten abzurufen, müssen wir eine andere Methode verwenden, nämlich „getrawtransaction“, die Informationen zu einer bestimmten Transaktion zurückgibt. Fügen Sie den folgenden Text per Kopieren und Einfügen in Ihr Terminal/die Eingabeaufforderung ein:
curl --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getrawtransaction", "params": ["2d1228abf06836b1173936061fec0384e82e3b684d7950a27f06a06f587400d3", true]}' -H 'content-type: application/json' <QUICKNODE_BITCOIN_URL>
Ersetzen Sie „QUICKNODE_BITCOIN_URL“ durch die HTTPS-URL Ihres Bitcoin-Knotens, die wir im letzten Schritt ermittelt haben. Oben sehen Sie eine cURL -Anfrage an unseren Knoten zusammen mit der Methode „getrawtransaction“. Um diese zu erhalten, werden wir unseren Knoten anpingen, um die Methode aufzulösen. Wir müssen zwei Parameter an diese Methode übergeben. Der erste ist die Transaktions-ID der abzufragenden Transaktion. Der zweite ist ein boolescher Wert, der, wenn er auf „false“ gesetzt ist, eine Zeichenkette zurückgibt; andernfalls gibt er ein JSON-Objekt zurück.
Wir haben den zweiten Parameter auf „true“ gesetzt, daher sollte die Ausgabe wie folgt aussehen.

Erläuterung zum hier eingefügten Transaktionsobjekt:
Zeile 3: Transaktions-ID, anhand derer eine Transaktion in der Blockchain identifiziert wird (entspricht der angegebenen).
Zeile 4: Transaktions-Hash, der aus der TXID für Witness-Transaktionen gebildet wird.
Zeile 5: Transaktionsgröße gemäß BIP 141.
Zeile 6: Virtuelle Größe der Transaktion, die sich aus der Größe der Witness-Transaktionen ergibt.
Zeile 7: Die Versionsnummer der Transaktion, derzeit 1 oder 2. Ist der Wert 2, bedeutet dies, dass BIP 68 gilt.
Zeile 8: Die Sperrzeit wird als Blocknummer angegeben. Wird eine Sperrzeit angegeben, kann die betreffende Transaktion erst dann in einen Block aufgenommen werden, wenn der Block mit der angegebenen Sperrzeit bereits abgebaut wurde. Wenn beispielsweise eine Sperrzeit von 30 angegeben ist, können Miner die Transaktion erst dann aufnehmen, nachdem Block Nummer 30 abgebaut wurde.
Zeilen 9–20: Vin zeigt die Liste der Transaktionen im Mempool an, die diese bestimmte Transaktion als Eingabe verwendet.
Zeilen 21–33: Vout zeigt die Liste der Transaktionen im Mempool an, die diese bestimmte Transaktion als Eingabe verwenden.
Zeile 34: Block-Hash, hier „null“, da die Transaktion noch nicht bestätigt ist.
Zeile 35: Anzahl der Bestätigungen, die die Transaktion bereits erhalten hat.
Zeile 36: Zeitpunkt, zu dem die Transaktion in den Pool aufgenommen wurde, in Sekunden seit dem 1. Januar 1970 (GMT).
Zeile 37: Zeitpunkt, zu dem der Block, in den die Transaktion aufgenommen wurde, gemined wurde; hier null, da die Transaktion noch aussteht.
Zeile 38: Serialisierte, hexadezimal kodierte Daten für „txid“
Durch die Analyse der oben genannten Daten können wir die Einzelheiten einer Bitcoin-Transaktion nachvollziehen. Bitcoin-Transaktionen sind recht komplex, doch die Methode „getrawtransaction“ liefert die Rohdaten der Transaktion, die übersichtlich und leicht verständlich sind.
Fazit
Herzlichen Glückwunsch zum erfolgreichen Verständnis des Bitcoin-Mempools. In diesem Leitfaden haben wir heute gelernt, was der Bitcoin-Mempool ist, wozu er dient, wie man auf den Bitcoin-Mempool zugreift bzw. wie man ausstehende Bitcoin-Transaktionen abruft und wie man Daten zu ausstehenden Bitcoin-Transaktionen erhält.
Abonniere unseren Newsletter, um weitere Artikel und Anleitungen zu Ethereum zu erhalten. Wenn du Feedback hast, kannst du dich gerne über Twitter an uns wenden. Du kannst dich jederzeit auf unserem Discord-Community-Server mit uns unterhalten – dort findest du einige der coolsten Entwickler, die du je treffen wirst :)
