Actualmente estoy escribiendo una herramienta de estimación de tiempo para Bitcoin, y me da estimaciones incorrectas, por lo que no estoy seguro de si es precisa y si no estoy cometiendo algún error en la lógica.
Por ejemplo, tengo esta transacción.
https://blockchain.info/tx/388f99d51cfce4f18f0c76257fff7666ffd272394ee0316df529383c6d22ed66
Dispone de 10 sat/B (tanto en tamaño virtual como en tamaño real). Tiene 0 ancestros en mempool, todas sus entradas están confirmadas. (todo de getmempoolentry
la llamada)
Quotesmartfee devuelve 11.089 sat/B para 192 bloques, es decir, 1 día y 8 horas.
La transacción se vio hace unos 4 días (nuevamente, según time
su entrada en mempool) y aún no está confirmada.
Eso significa que debería haber sido confirmado hace 3 días. Por lo que su tiempo estimado de confirmación es de -3 días, lo cual es imposible.
¿Qué estoy haciendo mal?
La estimación de tarifas es en su mayoría libre de progreso, de la misma manera que esperar bloques de Bitcoin, es decir, la estimación de cuánto tiempo llevará confirmarse a partir de ahora no está relacionada con cuánto tiempo ha estado esperando. Digo principalmente, porque claramente hay ciclos diarios y semanales en la actividad de transacciones que resultan en el hecho de que durante la noche o durante el fin de semana hay mayores posibilidades de ser confirmado.
Aparte de eso, la estimación de tarifas en Core es puramente retrospectiva y solo puede decirle lo que sucedió en el pasado reciente con las transacciones de una tarifa determinada. No puede predecir el futuro. Si 2/3 de la tasa de hash desaparece, como es el caso de la transacción que presentó, entonces es de esperar que podría tomar muchos más bloques de los que la estimación había predicho previamente.
Además, la estimación de la tarifa principal intenta dar una estimación bastante conservadora, por lo que, en teoría, la mayoría de las veces debería confirmarse en menos del número objetivo de bloques. Por lo tanto, puede solicitar estimaciones actuales hasta que encuentre una que sea más baja que la tarifa en cuestión y esto debería darle una idea de cuánto tiempo más podría necesitar esperar, pero nuevamente no puede predecir el futuro.
Lo único definitivo que podría obtener es si sabe que realizó la transacción hace X bloques y si solicita una tarifa estimada para X/2 bloques ahora y la respuesta es menor que la tasa de tarifa que puso en el transacción, entonces es razonable preguntarse por qué su transacción aún no ha sido confirmada.
Karel Bilek
estimatesmartfee
, o mirandotime
en la entrada de mempool