O TEESIM é um programa de estimativa de taxas Bitcoin. Diferentemente da estimativa de taxas no núcleo do Bitcoin, o TEESIM faz uso do estado atual do Mempool e da taxa de chegada da transação, permitindo que ele responda aos surtos de tráfego. As estimativas de taxa podem ser vistas aqui.
A estimativa de taxas no TEESIM é baseada em modelo; As estimativas são obtidas na simulação de Monte Carlo de um modelo de fila da rede Bitcoin. Em essência, encontramos a solução para a pergunta: "Se assumirmos que os mineradores priorizam as transações por taxa de taxa, sujeitas a um tamanho máximo do bloco e taxa de taxa mínima, e que as transações chegam à mesma taxa da última hora e, em seguida, dado o Tamanho atual do Mempool, que taxa de taxas é necessária para que uma transação seja confirmada em blocos X (com probabilidade de sucesso P)? "
Isso permite que o algoritmo de estimativa acomoda variações nas condições da rede. Por exemplo, se um bloco não tiver sido encontrado em uma hora e há um grande backlog de mempool, o algoritmo deve reconhecer isso e aumentar as estimativas de taxa. Como alternativa, se houver intervalos diários na taxa de chegada da transação, as estimativas das taxas também devem refletir isso, permitindo que o usuário pague taxas mais baixas durante os períodos de calm.
O TEESIM coleta dados de rede Bitcoin através da API JSON-RPC do Bitcoin Core e calcula estimativas para:
(txFeerate, txSize)*Veja Commit D895E64
Juntamente com o estado atual do Mempool, eles são usados para executar a simulação e obter as estimativas de taxa. As estimativas da política de mineração podem ser vistas aqui, e as taxas de bytes de chegada à transação em função da taxa de taxas podem ser vistas aqui.
Durante a operação normal, o TEESIM preverá o tempo de confirmação de cada transação e manterá uma contagem da proporção de transações que atenderam à previsão. Essa proporção deve estar próxima da probabilidade de sucesso (padrão 90%), se o modelo for preciso. Essas pontuações podem ser vistas aqui.
Instale a partir da fonte usando pelo menos ir 1.6:
$ go get github.com/bitcoinfees/feesim O TEESIM usa o experimento GO 1.5 do fornecedor; portanto, alternativamente, você pode instalar com Go 1.5 definindo a variável de ambiente GO15VENDOREXPERIMENT=1 .
O TEESIM requer acesso JSON-RPC a um nó Bitcoin Core (versão> 0.13.0, que pode ser podado). As configurações de RPC devem ser especificadas em config.yml , como tal:
bitcoinrpc :
username : myusername
password : mypassword
# host: localhost
# port: 8332O arquivo de configuração deve ser colocado no diretório de dados:
~/.feesim~/Library/Application Support/Feesim%LOCALAPPDATA%Feesim Após a execução feesim start , o programa iniciará a coleta de dados e começará a executar a simulação assim que houver dados suficientes. Ele precisa estar online o tempo todo, pois coleta dados do Mempool que não podem ser obtidos por análise offline.
feesim status mostra o status do programa:
$ 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 mostra se as estimativas de taxas estão ou não disponíveis. Por padrão, as estimativas das taxas exigem pelo menos 10 minutos de dados de transação e dados de 1008 dos últimos 2016.
Uma vez que houver dados suficientes, a simulação começará a executar e produzir estimativas de taxas. A interface reflete a do bitcoin-cli estimatefee :
$ feesim estimatefee 1
0.00030112Isso mostra a taxa mínima de taxa para que uma transação seja confirmada em 1 bloco, com 90% de probabilidade (configurável).
Ao contrário bitcoin-cli , se o argumento de entrada for omitido ou for 0, as estimativas para todos os tempos de confirmação serão retornados:
$ 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 A API JSON-RPC subjacente é compatível com o Bitcoin Core's, para que o Taesim possa ser usado como substituição da API estimatefee :
$ bitcoin-cli -rpcport=8350 estimatefee 1
0.00030138Atualmente, o TEESIM pressupõe que os mineradores tenham o mesmo MinRelaytxfee que o seu nó, portanto, não o defina muito baixo, ou as estimativas de tempo de espera para taxas baixas serão imprecisas. Ficar com os padrões deve estar bem. Consulte Commit D895E64 para obter detalhes.
Você pode configurar maxmempool do Bitcoin Core para ser menor que o padrão, pois isso tornará a simulação mais rapidamente e exigirá menos memória. maxmempool=100 é bom se você seguir as configurações padrão do Teesim (especificamente MaxBlockConfirms). A desvantagem é ter dados de mempool menos abrangentes.
A simulação é intensiva na CPU, enquanto a coleta de dados não é, então você pode não querer executar o SIM o tempo todo, enquanto ainda coleta dados. Para fazer isso, use feesim pause para pausar a simulação e feesim unpause para retomar.
Por padrão, as estimativas das taxas são atualizadas a cada minuto. É possível, no entanto, que uma única execução de simulação leva mais de um minuto, devido a recursos insuficientes da CPU ou tráfego de transações excepcionalmente alto. Em geral, isso não causará grandes problemas; Isso faz com que as estimativas de taxa sejam atualizadas com menos regularidade. É possível, no entanto, reduzir o tempo de execução da simulação reduzindo maxblocksconfirms ou numiters na configuração.
Você pode monitorar o tempo de execução da simulação com feesim metrics ; sim.X são as estatísticas de tempo de execução, em nanossegundos, por aproximadamente a última simulação X é executada.
Consulte config.yml neste repositório para obter um arquivo de configuração de exemplo.
Como mencionado anteriormente, o TEESIM exige, por padrão, dados de 1008 dos últimos blocos de 2016 (deve estar online quando os blocos forem descobertos para que os dados sejam registrados). Isso é cerca de 1 semana; Se você não quiser esperar tanto tempo, entre em contato comigo para uma cópia dos dados do bloco.