費用是比特幣費用估算計劃。與比特幣核心的費用估計不同,費用利用了當前的MEMPOOL狀態和交易到達率,從而使其能夠響應交通潮流。收費估計值可以在這裡看到。
費用的費用估計是基於模型的;估計是從比特幣網絡排隊模型的蒙特卡洛模擬獲得的。從本質上講,我們找到了一個問題的解決方案:“如果我們假設礦工按費用率優先考慮交易的優先級,則需要最大塊規模和最小費用,並且交易的價格與過去一小時相同,然後給定當前的MEMPOOL規模,在X塊中確認交易需要什麼費用(成功概率P)?”
這允許估計算法適應網絡條件下的變化。例如,如果在一個小時內沒有發現一個塊,並且有大量的孟買積壓,則該算法應認識到這一點並提高費用估算。或者,如果每天都在交易到達率中拖延,則費用估計也應反映出這一點,從而使用戶可以在休息期間支付較低的費用。
Feesim通過比特幣Core JSON-RPC API收集比特幣網絡數據,併計算出:
(txFeerate, txSize)*請參閱提交D895E64
與當前的MEMPOOL狀態一起,它們用於執行模擬並獲得費用估算。可以在此處看到採礦政策估計,並且可以在此處看到交易到達字節率隨費率的函數。
在正常運行期間,Feesim將預測每次交易的確認時間,並保留滿足預測的交易比例。如果模型準確,則該比例應接近成功概率(默認為90%)。這些分數可以在這裡看到。
使用至少1.6從源安裝:
$ go get github.com/bitcoinfees/feesim Feesim使用GO 1.5供應商實驗,因此,您可以通過設置環境變量GO15VENDOREXPERIMENT=1來安裝GO 1.5。
Feesim需要JSON-RPC訪問比特幣核心節點(版本> 0.13.0,可以修剪)。 RPC設置應在config.yml中指定:
bitcoinrpc :
username : myusername
password : mypassword
# host: localhost
# port: 8332配置文件應放在數據目錄中:
~/.feesim~/Library/Application Support/Feesim%LOCALAPPDATA%Feesim運行feesim start後,程序將啟動數據收集,然後一旦有足夠的數據開始運行模擬。它需要一直在線,因為它收集了無法通過離線分析獲得的mempool數據。
feesim status顯示程序狀態:
$ 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表明費用估算是否可用。默認情況下,費用估計需要至少10分鐘的交易數據,以及來自最後一個2016年塊的1008個數據。
一旦有足夠的數據,模擬將開始運行並產生費用估算。該界面反映了bitcoin-cli estimatefee的接口:
$ feesim estimatefee 1
0.00030112這顯示了要在1塊中確認的交易的最低費用率,概率為90%(可配置)。
與bitcoin-cli不同,如果輸入參數是命令或0,則返回所有確認時間的估計值:
$ 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基本的JSON-RPC API與比特幣核心兼容,因此Feesim可以用作estimatefee API的倒入替換:
$ bitcoin-cli -rpcport=8350 estimatefee 1
0.00030138Feesim當前假設礦工的Minrelaytxfee與您的節點相同,因此不要將其設置得太低,否則低費用的等待時間估算將是不准確的。與默認值保持聯繫應該可以。有關詳細信息,請參見COMMIT D895E64。
您可能需要將比特幣核心的maxmempool配置為低於默認值,因為這將使模擬更快並需要更少的內存。如果您堅持使用默認費用設置(特別是MaxBlockConfirms),則maxmempool=100可以。缺點是擁有較不全面的孟買數據。
模擬是CPU密集型的,而數據收集不是,因此您可能不想一直在收集數據時一直運行SIM。為此,請使用feesim pause來暫停模擬,而feesim unpause才能恢復。
默認情況下,每分鐘更新費用估算。但是,由於CPU資源不足或交易流量不足,單個模擬運行可能需要長達一分鐘。通常,這不會引起任何重大問題。它僅導致費用估計的定期更新。但是,通過降低配置中的maxblocksconfirms或numiters來減少模擬運行時間。
您可以使用feesim metrics監視模擬運行時間; sim.X是納秒中的運行時間統計信息,大約是最後一個X模擬運行。
請參閱此存儲庫中的config.yml有關示例配置文件。
如前所述,默認情況下,Feesim需要從過去1008個塊中的數據(必須在發現塊時在線時進行在線數據才能記錄數據時)。這大約是1週;如果您不想等待那麼長時間,則可以與我聯繫以獲取塊數據的副本。