Recientemente comencé a prestar atención a lo que sucede en los criptomercados y, siendo desarrollador durante mucho tiempo, decidí echar un vistazo al software que tenemos disponible para el acceso público.
Así que tengo una pregunta para todos los cripto-gurús aquí: como parece de la especificación del protocolo Bitcoin, Bitcoin aceptará CUALQUIER nonce que satisfaga la condición de bits de destino (bloque). Cada minero que he visto hecho público está usando un bucle secuencial sobre nonce1 y nonce2. pregunta real: ¿por qué la gente implementa +1 para el nonce en cada hilo, en cambio, digamos, tener 2 hilos uno va +1 desde el principio; ¿El segundo está contando -1 desde el final del intervalo de nonces?
En mi humilde opinión, sería más rápido si está ejecutando varios subprocesos en el mismo intervalo... o, en el mundo perfecto, divida el intervalo completo en N subintervalos dejando que cada subproceso haga su propia parte. Desde el punto de vista matemático, parece que obtendremos una mayor probabilidad de alcanzar el 'nonce dorado' con este enfoque, en lugar de +1 en todo el intervalo. ¿Estoy equivocado aquí?
Dicho todo esto, descargué la cadena de bloques y realicé un par de pruebas para ver la distribución nonce en el intervalo uint32_t. los resultados no me sorprendieron... Tengo una distribución de nonce bastante uniforme como: nonce impar: 49.997 nonce par: 50.003
divida uint32_t en 1024 intervalos idénticos y vea cuántos nonces de la cadena de bloques existente se encuentran en cada intervalo. los resultados son los mismos: distribución uniforme.
de nuevo, ¿por qué es +1 en el ciclo del minero? aunque, (+3), (-2) habría dado (en teoría) mejores posibilidades (más rápido) de encontrar golden nonce frente a otros (+1).
La distribución de nonces ganadores está sesgada hacia 0 porque se trata de un efecto de selección : la mayoría comienza a buscar nonces a partir de 0, por lo que los nonces más bajos se encuentran primero, aunque también puede haber nonces más altos que podrían producir un bloque ganador:
Esto ilustra muy bien que la distribución de nonces es uniforme:
fuente: https://en.bitcoin.it/wiki/Distribution_of_nonces_and_hashes
Por lo tanto, +1 en el bucle minero es la forma más sencilla de cambiar el nonce, y funciona porque la distribución de nonce válida es uniforme. Los ASIC a menudo se ocupan de los nonces de manera muy diferente. Además, los ASIC pueden escanear todo el rango de nonce muy rápidamente, por lo que realmente no importa dónde comience a buscar un nonce válido.
Si usa cuatro subprocesos y divide el rango entre los cuatro subprocesos, eso significa que cada subproceso termina su rango y comienza uno nuevo cuatro veces más a menudo. Esa es claramente una propuesta perdedora sobre darle a cada hilo su propio rango completo.
Nick ODell
mago de ozzie
alex d
alex d
Janes
alex d
alex d
alex d