Feesimはビットコイン料金の見積もりプログラムです。 Bitcoin Coreの料金の見積もりとは異なり、Feesimは現在のMempool Stateおよび取引の到着率を利用して、交通量の急増に対応できるようにします。料金の見積もりはここで見ることができます。
FEESIMの料金見積もりはモデルベースです。推定値は、ビットコインネットワークのキューイングモデルのモンテカルロシミュレーションから取得されます。本質的に、私たちは質問の解決策を見つけます:「鉱山労働者が最大ブロックのサイズと最小料金の対象となる料金率でトランザクションを優先し、トランザクションが過去1時間と同じレートに到達し、その後、取引が到着し、その後、トランザクションが到着し、現在のMempoolサイズ、Xブロック内でトランザクションを確認するために必要な料金料金(成功確率P)?」
これにより、推定アルゴリズムがネットワーク条件の変動に対応できるようになります。たとえば、ブロックが1時間以内に見つからず、大規模なMempoolのバックログがある場合、アルゴリズムはそれを認識し、料金の見積もりを上げる必要があります。あるいは、トランザクションの到着率に毎日の小康状態がある場合、料金の見積もりもそれを反映している必要があります。
Veesimは、Bitcoin 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これは、90%の確率(設定可能)で、トランザクションが1ブロックで確認される最低料金率を示しています。
bitcoin-cliとは異なり、入力引数がOMMITEDまたは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はビットコインコアと互換性があるため、 estimatefee APIのドロップイン置換としてFeesimを使用できます。
$ bitcoin-cli -rpcport=8350 estimatefee 1
0.00030138現在、Feesimは、鉱山労働者がノードと同じminrelaytxfeeを持っていると想定しているため、設定しすぎないでください。そうしないと、低料金の待ち時間の見積もりは不正確です。デフォルトにとどまることは問題ありません。詳細については、コミットD895E64を参照してください。
Bitcoin Coreのmaxmempoolデフォルトよりも低くするように構成することをお勧めします。これにより、シミュレーションが速くなり、メモリが必要になるためです。 maxmempool=100デフォルトのFEESIM設定(特にMaxBlockConfirms)に固執する場合は問題ありません。マイナス面は、包括的なメンバーデータを持たないことです。
シミュレーションはCPU集中的ですが、データ収集はそうではないため、データを収集しながら常にSIMを実行したくない場合があります。これを行うには、シミュレーションを一時停止するためにfeesim pauseを使用し、再開するためにfeesim unpause使用します。
デフォルトでは、料金の見積もりは毎分更新されます。ただし、CPUリソースが不十分または非常に高いトランザクショントラフィックのために、単一のシミュレーションの実行に1分以上かかることがあります。一般に、これは大きな問題を引き起こしません。料金の見積もりは、定期的に更新されるだけではありません。それにもかかわらず、構成内のmaxblocksconfirmsまたはnumitersを下げることにより、シミュレーションの実行時間を短縮することが可能です。
シミュレーションの実行時間をfeesim metricsで監視できます。 sim.X 、ほぼ最後のXシミュレーションが実行される場合、ナノ秒単位での実行時間統計です。
config.ymlのサンプルconfigファイルについては、 config.yml参照してください。
前述のように、FeESIMは、デフォルトでは、過去の2016年ブロックの1008からのデータを必要とします(データを記録するためにブロックを発見する場合はオンラインでなければなりません)。これは約1週間です。それほど長く待たない場合は、ブロックデータのコピーについて私に連絡できます。