Feesim은 비트 코인 수수료 추정 프로그램입니다. Bitcoin Core의 수수료 추정과 달리 Feesim은 현재 Mempool 상태 및 거래 도착률을 사용하여 트래픽 급증에 응답 할 수 있습니다. 수수료 추정치는 여기에서 볼 수 있습니다.
Feesim의 수수료 추정은 모델 기반입니다. 비트 코인 네트워크의 대기열 모델의 Monte Carlo 시뮬레이션에서 추정치를 얻습니다. 본질적으로, 우리는 "광부가 최대 블록 크기 및 최소 수수료 요금에 따라 수수료로 거래를 우선 순위로 정하고 지난 시간과 동일한 속도로 도착한 다음 다음과 같은 질문에 대한 해결책을 찾습니다. 현재 Mempool 크기, 거래가 X 블록 내에서 확인되기 위해서는 어떤 수수료가 필요합니까 (성공 확률 p). "
이를 통해 추정 알고리즘은 네트워크 조건의 변화를 수용 할 수 있습니다. 예를 들어, 블록이 한 시간 안에 발견되지 않았고 큰 Mempool 백 로그가있는 경우 알고리즘은이를 인식하고 수수료 추정치를 높여야합니다. 또는 거래 도착률에 매일 Lull이있는 경우, 수수료 추정치에도이를 반영해야하므로 사용자가 Lull 기간 동안 더 낮은 수수료를 지불 할 수 있습니다.
Feesim은 Bitcoin Core JSON-RPC API를 통해 비트 코인 네트워크 데이터를 수집하고 다음에 대한 추정치를 계산합니다.
(txFeerate, txSize)
*커밋 D895E64를 참조하십시오
현재 Mempool 상태와 함께 시뮬레이션을 수행하고 수수료 추정치를 얻는 데 사용됩니다. 광업 정책 추정치는 여기에서 볼 수 있으며, 수수료 비율의 함수로서 거래 도착 바이트 요금을 여기에서 볼 수 있습니다.
정상 운영 중에 Feesim은 각 거래의 확인 시간을 예측하고 예측을 충족하는 거래 비율을 유지합니다. 모델이 정확한 경우이 비율은 성공 확률 (기본 90%)에 가깝습니다. 이 점수는 여기에서 볼 수 있습니다.
최소한 GO 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
실행하면 프로그램이 데이터 수집을 시작한 다음 충분한 데이터가 있으면 시뮬레이션을 시작합니다. 오프라인 분석으로 얻을 수없는 멤버 데이터를 수집하므로 항상 온라인 상태가되어야합니다.
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
와 달리 입력 인수가 uMMITED 또는 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는 Bitcoin Core와 호환되므로 Feesim은 estimatefee
API를위한 드롭 인 교체로 사용할 수 있습니다.
$ bitcoin-cli -rpcport=8350 estimatefee 1
0.00030138
Feesim은 현재 광부가 노드와 동일한 Minrelaytxfee를 가지고 있다고 가정하므로 너무 낮게 설정하지 마십시오. 그렇지 않으면 낮은 수수료에 대한 대기 시간 추정치가 부정확합니다. 기본값을 유지하는 것은 괜찮을 것입니다. 자세한 내용은 Commit D895E64를 참조하십시오.
Bitcoin Core의 maxmempool
이 기본값보다 낮게 구성되도록 구성 할 수 있습니다. 따라서 시뮬레이션이 더 빨라지고 메모리가 줄어 듭니다. 기본 Feesim 설정 (특히 MaxBlockConfirms)을 고수하면 maxmempool=100
이 괜찮습니다. 단점은 덜 포괄적 인 Mempool 데이터를 가지고 있습니다.
시뮬레이션은 CPU 집중적이지만 데이터 수집은 그렇지 않으므로 데이터를 수집하면서 항상 SIM을 실행하고 싶지 않을 수 있습니다. 이렇게하려면 feesim pause
사용하여 시뮬레이션을 일시 중지하고 feesim unpause
.
기본적으로 수수료 추정치는 1 분마다 업데이트됩니다. 그러나 CPU 리소스가 충분하지 않거나 매우 높은 트래픽 트래픽으로 인해 단일 시뮬레이션 실행이 1 분 이상 걸릴 수 있습니다. 일반적으로 이것은 큰 문제를 일으키지 않을 것입니다. 수수료 추정치 만 덜 정기적으로 업데이트됩니다. 그럼에도 불구하고 구성에서 maxblocksconfirms
또는 numiters
낮추어 시뮬레이션 실행 시간을 줄일 수 있습니다.
feesim metrics
으로 시뮬레이션 실행 시간을 모니터링 할 수 있습니다. sim.X
마지막 X
시뮬레이션 실행에 대한 실행 시간 통계, 나노 초의 실행 시간 통계입니다.
예제 구성 파일 은이 저장소의 config.yml
참조하십시오.
앞에서 언급했듯이 FEESIM은 기본적으로 지난 2016 년 블록의 1008 개 데이터를 요구합니다 (데이터를 기록하기 위해 블록을 발견 할 때 온라인 상태 여야합니다). 이것은 약 1 주입니다. 오래 기다리지 않으려면 블록 데이터 사본을 보려면 저에게 연락 할 수 있습니다.