Dada la probabilidad de encontrar un bloque y el tiempo necesario, ¿puedo inferir el hashrate?

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.

Respuestas (2)

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.

He leído esto varias veces, pero no entiendo dónde aparece cada instancia de 9, o 32. ¿Podría dar más detalles sobre la selección de esos números?
Math.pow(10,9) es 1000000000. Son 9 ceros para el giga en Ghps. Pensé que sería más legible escribir 200 Ghps de esta manera en lugar de 200000000000.
Math.pow(2,32) hashes generarán en promedio 1 prueba de trabajo en dificultad 1. En realidad, es una dificultad de 0.999 y algo, pero está lo suficientemente cerca. En esta diferencia, desea que los primeros 32 bits del hash sean cero. Este es un resultado de 2^32 valores posibles de esos 32 bits. Entonces, un hash tiene una probabilidad de 1 en 2 ^ 32.
¿De dónde vienen los 32? ¿Pensé que bitcoin usa sha256? ¿No se supone que es pow(2, 256)?
2 elevado a 32 es el número medio de hashes para encontrar una prueba de trabajo de dificultad 1. Hay 2 elevado a 32 permutaciones posibles de 1 y 0 en los 32 primeros bits del hash sha-256. Todos deben ser cero.

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/

Gracias, sí, por ejemplo, me gustaría encontrar la probabilidad de encontrar un bloque en 10 minutos a 100 GH/s y un objetivo relativamente fácil.