¿Qué es NTime rodante/rango nonce? ¿Y qué mineros lo apoyan?

De la página de inicio de la piscina de Slush:

Pool ahora es compatible con el sondeo largo y el balanceo de NTime. Los mineros más antiguos tienen muchos problemas con esas nuevas funciones, lo que puede afectar negativamente a sus recompensas. ¡Actualice sus mineros a la última versión!

¿Qué significa NTime rolling y nonce range para mí como minero? ¿Y qué mineros lo apoyan? (+versiones)

Respuestas (1)

NTime es la marca de tiempo entera en segundos. Es un elemento en el encabezado del bloque. Cada segundo NTime aumenta en uno. "NTime rolling" es un parámetro de getwork que indica cuántos segundos adelante un minero aún puede considerar válido este getwork (incrementando NTime localmente).

Para entender cómo se usa esto, primero echemos un vistazo a Bitcoin Block Header.

Para un conjunto dado de transacciones, solo dos elementos en el encabezado del bloque cambian entre intentos de hash.

  • NTime - marca de tiempo actual (cambia cada segundo)
  • Nonce - número 2^32 (cambia cada hash)

Entonces, para construir un encabezado válido, un minero debe tener el valor actual de estos dos elementos que cambian rápidamente. Los otros elementos del encabezado del bloque también son necesarios, pero los cambios ocurren con mucha menos frecuencia y son triviales para que los maneje el grupo.

El método básico (ineficiente) para manejar estas dos variables en una solicitud de trabajo es que el grupo proporcione explícitamente ambos valores en cada encabezado. El grupo proporcionará un getwork cada segundo. Sin embargo, un minero con menos de 4,2 GH/s encontrará en promedio < 1 nonce por getwork. Como ejemplo, un minero que puede ejecutar 100MH/s cubrirá el rango de nonce (2^32) en 40 segundos. El grupo deberá emitir 40 getworks por acción. El número promedio de getworks por acción dependerá de la velocidad de los mineros individuales, sin embargo, se está produciendo una cantidad significativa de exceso de comunicación.

Ahora, tanto el rango de nonce como el NTime son altamente predecibles , por lo que a un minero simplemente se le puede dar un punto de partida y cambiar localmente ambos valores. Hacer esto reduce significativamente la cantidad de solicitudes getwork necesarias para cubrir la misma cantidad de hashes.

Al permitir que el minero haga avanzar el NTime durante 10 segundos, el grupo puede reducir la cantidad de getworks de 40 a 4 segundos.

También hay un beneficio para los mineros rápidos que ya son eficientes.

Un minero de 2 GH/s encontrará en promedio un nonce cada 2 segundos. Con un valor rodante de NTime de 10 segundos. El mismo getwork permitirá que el grupo logre 4 nonces por getwork.

El valor rodante de NTime le indica al minero cuánto puede incrementar NTime (en segundos) antes de necesitar solicitar un nuevo trabajo. Entonces, un valor rodante de NTime de 4 significa que el minero puede usar este encabezado durante 4 segundos antes de considerarlo obsoleto y, del mismo modo, un valor de 40 le indica al minero que puede usar el mismo encabezado durante los próximos 40 segundos. Los grupos pueden usar valores de NTime cada vez más grandes, sin embargo, hay rendimientos decrecientes. Se encuentra un bloque en promedio cada 600 segundos, y periódicamente se deben incluir transacciones.

Aún así, un valor continuo óptimo de Ntime garantiza que el grupo solo actualice getworks cuando el trabajo se haya actualizado de manera significativa (elementos cambiados que no sean nonce o time).

Un ejemplo: un grupo proporciona a un minero de 100 MH un encabezado de bloque que contiene el ntime actual, un rango de nonce de 0 a 2 ^ 32 (nonce completo) y un valor de NTime Rolling de 40. El minero haría hash hasta que la hora local aumente 1 segundo ( aproximadamente 100 millones de hashes), luego incrementaría el valor de NTime y continuaría con el hash durante otro 1 segundo (aproximadamente 100 millones de hashes más). Una vez que haya incrementado NTime 40 veces, debe solicitar un nuevo getwork.

El uso adecuado de NTime rolling mejora la eficiencia del grupo al reducir la cantidad de getworks por acción. En su ejemplo, especulo que Slush miró los registros del grupo y determinó que algunos mineros solicitaban trabajo "con demasiada frecuencia", lo que indica que estaban ignorando o usando incorrectamente el valor de NTime Rolling. Obviamente, un operador de grupo querría que todos los mineros usaran los últimos protocolos, como NTime rolling y Long Polling, ya que permite que un servidor de grupo maneje un mayor rendimiento con la misma cantidad de hardware, ancho de banda y otros recursos.

No tengo una lista exhaustiva, pero que yo sepa, cualquier minero "relativamente reciente" es compatible con NTime rolling (como se lanzó en los últimos 6 meses).

Según su descripción, parece que normalmente un minero debe descartar su trabajo después de un segundo y obtener una nueva asignación, pero el NTime rolling le permite usar el mismo trabajo durante más de 1 segundo. ¿No debería funcionar de una manera que permitiera a un minero no solo incrementar nonce, sino también incrementar la marca de tiempo? Es decir, después de pasar por todo el rango de nonce, establecería la marca de tiempo en un tiempo diferente dentro de NTime Rolling y trabajaría en los nonces previamente verificados, ya que el cambio de marca de tiempo haría que los hashes fueran diferentes a los calculados para la marca de tiempo anterior.