Gebühr ist ein Bitcoin -Gebührenschätzungsprogramm. Im Gegensatz zur Gebührenschätzung im Bitcoin -Kern nutzt Boysim den aktuellen Mempool -Status und die Ankunftsrate der Transaktion, sodass er auf Verkehrsstaaten reagiert. Die Gebührenschätzungen sind hier zu sehen.
Die Gebührenschätzung der Gebühren ist modellbasiert. Schätzungen werden aus der Monte -Carlo -Simulation eines Warteschlangenmodells des Bitcoin -Netzwerks erhalten. Im Wesentlichen finden wir die Lösung für die Frage: "Wenn wir davon ausgehen, dass Bergleute Transaktionen nach Gebührenprior priorisieren, vorbehaltlich einer maximalen Blockgröße und der min Aktuelle Mempool -Größe, welcher Gebührenquote ist erforderlich, damit eine Transaktion innerhalb von x Blöcken (mit Erfolgswahrscheinlichkeit p) bestätigt wird? "
Auf diese Weise kann der Schätzalgorithmus Variationen unter den Netzwerkbedingungen berücksichtigen. Wenn beispielsweise ein Block seit einer Stunde nicht mehr gefunden wurde und ein großer Mempool -Rückstand vorliegt, sollte der Algorithmus dies erkennen und die Gebührenschätzungen erhöhen. Wenn die Transaktionsankunftsrate tägliche Flaute gibt, sollten die Gebührenschätzungen auch dies widerspiegeln, sodass der Benutzer während der Flautenperioden niedrigere Gebühren zahlen kann.
Boysim sammelt Bitcoin-Netzwerkdaten über die Bitcoin Core JSON-RPC-API und berechnet Schätzungen für:
(txFeerate, txSize)*Siehe Commit D895E64
Zusammen mit dem aktuellen Mempool -Zustand werden diese verwendet, um die Simulation durchzuführen und die Gebührenschätzungen zu erhalten. Die Schätzungen der Bergbaurichtlinien sind hier zu sehen, und hier sind die Byte -Tarife der Transaktionsankunft in Abhängigkeit von der Gebührenquote zu sehen.
Während des Normalbetriebs prognostiziert die Gebühren die Bestätigungszeit jeder Transaktion und behält eine Bilanz des Anteils der Transaktionen, die die Vorhersage erfüllen. Dieser Anteil sollte nahe an der Erfolgwahrscheinlichkeit liegen (Standard 90%), wenn das Modell korrekt ist. Diese Ergebnisse sind hier zu sehen.
Installieren Sie von der Quelle mit mindestens 1,6:
$ go get github.com/bitcoinfees/feesim Gebühren verwendet das GO 1.5 -Anbieter -Experiment, sodass Sie alternativ mit GO 1.5 installieren können, indem Sie die Umgebungsvariable GO15VENDOREXPERIMENT=1 festlegen.
Gebühren benötigen JSON-RPC-Zugriff auf einen Bitcoin-Kernknoten (Version> 0,13.0, die beschnitten werden können). Die RPC -Einstellungen sollten in config.yml als solche angegeben werden:
bitcoinrpc :
username : myusername
password : mypassword
# host: localhost
# port: 8332Die Konfigurationsdatei sollte im Datenverzeichnis platziert werden:
~/.feesim~/Library/Application Support/Feesim%LOCALAPPDATA%Feesim Beim Ausführen feesim start wird das Programm mit der Datenerfassung gestartet und dann die Simulation ausführen, sobald ausreichende Daten vorhanden sind. Es muss ständig online sein, da es Mempool -Daten sammelt, die nicht durch Offline -Analyse erhalten werden können.
feesim status zeigt den Programmstatus:
$ feesim status
result : Tx estimation window size was 0s, should be at least 600s
txsource : Tx estimation window size was 0s, should be at least 600s
blocksource : Block coverage was only 0/2016, should be at least 1008/2016.
mempool : OK result zeigt, ob Gebührenschätzungen verfügbar sind oder nicht. Standardmäßig erfordern Gebührenschätzungen mindestens 10 Minuten Transaktionsdaten und Daten aus 1008 der letzten Blöcke 2016.
Sobald ausreichende Daten vorliegen, beginnt die Simulation zu leiten und Gebührenschätzungen zu erstellen. Die Schnittstelle spiegelt die von bitcoin-cli estimatefee wider:
$ feesim estimatefee 1
0.00030112Dies zeigt die Mindestgebühr, damit eine Transaktion in 1 Block mit einer Wahrscheinlichkeit von 90% (konfigurierbar) bestätigt wird.
Im Gegensatz zu bitcoin-cli werden die Schätzungen für alle Bestätigungszeiten zurückgegeben:
$ feesim estimatefee
1: 0.00030138
2: 0.00026738
3: 0.00020492
4: 0.00015988
5: 0.00012805
6: 0.00011478
7: 0.00010616
8: 0.00010001
9: 0.00007519
10: 0.00005020
11: 0.00005000
12: 0.00005000 Die zugrunde liegende JSON-RPC-API ist mit den Bitcoin-Kern kompatibel, sodass Gebühren als Drop-In-Ersatz für die estimatefee API verwendet werden können:
$ bitcoin-cli -rpcport=8350 estimatefee 1
0.00030138BEEEMIM wird derzeit angenommen, dass Bergleute das gleiche Minrelaytxfee wie Ihr Knoten haben. Setzen Sie es also nicht zu niedrig, oder die Wartezeitschätzungen für niedrige Gebühren sind ungenau. Wenn Sie bei den Standardeinstellungen bleiben, sollte dies in Ordnung sein. Weitere Informationen finden Sie unter D895E64.
Möglicherweise möchten Sie maxmempool von Bitcoin Core so konfigurieren, dass sie niedriger als die Standardeinstellung sind, da dies die Simulation schneller macht und weniger Speicher benötigt. maxmempool=100 ist in Ordnung, wenn Sie sich an die Standardeinstellungen für Gebühren halten (insbesondere bei MaxBlockConfirms). Der Nachteil ist weniger umfassende Mempool -Daten.
Die Simulation ist CPU -intensiv, während die Datenerfassung nicht der Fall ist, sodass Sie die SIM möglicherweise nicht ständig ausführen möchten, während Sie dennoch Daten sammeln. Verwenden Sie dazu feesim pause , um die Simulation zu pausieren, und feesim unpause zur Wiederaufnahme.
Standardmäßig werden Gebührenschätzungen jede Minute aktualisiert. Es ist jedoch möglich, dass ein einziger Simulationslauf aufgrund unzureichender CPU -Ressourcen oder außergewöhnlich hoher Transaktionsverkehr länger als eine Minute dauert. Im Allgemeinen wird dies keine größeren Probleme verursachen. Es führt nur dazu, dass die Gebührenschätzungen weniger regelmäßig aktualisiert werden. Es ist jedoch möglich, die Simulationslaufzeit zu verkürzen, indem maxblocksconfirms oder numiters in der Konfiguration gesenkt werden.
Sie können die Simulationslaufzeit mit feesim metrics überwachen. sim.X sind die Laufzeitstatistik in Nanosekunden für ungefähr die letzten X -Simulationsläufe.
In diesem Repository finden Sie eine Beispiel config.yml .
Wie bereits erwähnt, verlangt birtensim standardmäßig Daten aus 1008 der letzten Blöcke 2016 (es muss online sein, wenn die Blöcke entdeckt werden, damit die Daten protokolliert werden). Dies ist ungefähr 1 Woche; Wenn Sie nicht so lange warten möchten, können Sie mich für eine Kopie der Blockdaten kontaktieren.