Estoy tratando de calcular externamente el hashrate de un minero determinado basado solo en un objetivo definido arbitrariamente que asigno, luego calculo la probabilidad de que se encuentre. Una vez que se calcula esta probabilidad, quiero estimar cuánto tiempo debería (en promedio) tomar encontrar un bloque.
¿Es esto algo factible de hacer?
¿Cuál es la matemática requerida para determinar el hashrate?
Ejemplo: Dado que el objetivo es 1, y el minero envió el bloque en 10 minutos.
Según tengo entendido, su pregunta tiene dos partes. Una es cómo calcular una aproximación de la tasa de hash de alguien externamente, como desde un servidor o proxy que puede ver sus resultados de minería pero no su proceso de hash o tasa de hash real. La otra parte es cómo calcular la probabilidad de que se encuentre un bloque después de una determinada cantidad de trabajo, o una determinada cantidad de tiempo y tasa de hash.
Escribiré las fórmulas como código javascript, con X elevado a Y escrito como Math.pow(X, Y). Puede ejecutarlos en su navegador escribiéndolos en la barra de direcciones como por ejemplo javascript:alert((Math.pow(2, 32) * 27939) / 600)
.
Aproximación de la tasa de hash:
Con un objetivo arbitrario, cuente una acción en dificultad X igual que X acciones en dificultad 1. Así es como los grupos manejan la dificultad variable.
hashrate = (Math.pow(2, 32) * acciones ) / segundos transcurridos
Se encuentra un promedio de una acción (en dificultad 1) para cada hash Math.pow(2,32). Esto es solo un promedio y es por eso que las tasas de hash que se muestran en los sitios web del grupo son solo aproximaciones.
Probabilidad de solución de bloques:
La probabilidad de que se generen uno o más bloques a partir de un número determinado de acciones (pruebas de trabajo):
prob = 1 - Math.pow (1 - 1.0 / dificultad , acciones )
Eso es de 0 a 1. Multiplica por 100 si quieres un porcentaje.
Digamos que la dificultad es 4367876 y alguien ha estado minando con un hashrate de 200 Ghps durante 10 minutos. Eso es 200 * Math.pow(10, 9) hashes por segundo durante 600 segundos, con un promedio de una acción (a dificultad 1) por cada Math.pow(2,32) hashes. Esto nos da lo siguiente:
acciones = (200 * Math.pow(10, 9) * 600) / Math.pow(2,32) = 27939 acciones
prob = 1 - Math.pow(1 - 1.0 / dificultad, acciones) = 1 - Math.pow(1 - 1.0 / 4367876, 27939) = 0.00637...
En otras palabras, la probabilidad de que alguien haga uno o más bloques con la tasa de hash y la dificultad dadas en 10 minutos es de aproximadamente 0,64 %.
Nota: si ve cuántas acciones (pruebas de trabajo) envían, por supuesto, no calcula primero su tasa de hash solo para volver a calcularla en una cantidad de acciones. Simplemente conéctelo a la fórmula.
No es necesario especificar la dificultad para determinar el hashrate: Es independiente de la dificultad:
¿Quizás te refieres a la probabilidad de encontrar un bloque?
Existen varias calculadoras de rentabilidad, pruebe esta, por ejemplo: http://www.bitcoinx.com/profit/
fabricante de cosas7
9
, o32
. ¿Podría dar más detalles sobre la selección de esos números?Dr. Haribo
Dr. Haribo
Timo Huovinen
Dr. Haribo