Consenso en criptomonedas con minería híbrida y Multi-PoW

Por casualidad participé en el desarrollo de un mecanismo de minería para la criptomoneda, que le permite utilizar diferentes algoritmos de hash para construir una cadena de bloques. El objetivo es permitir que los mineros con cualquier equipo (ASIC, GPU, CPU) admitan la red, cubriendo a toda la audiencia posible de los participantes de la red. En el artículo, le diré a qué resultados hemos llegado, sobre la minería en bitcoin y algunas otras criptomonedas que usan minería híbrida.



Además del hecho de que la minería es recompensada y la recompensa es la principal fuente de emisión de monedas en la mayoría de las criptomonedas, la función más importante de este mecanismo es lograr el consenso entre los participantes de la red. El consenso está garantizado por una ley simple: cuando se ramifica una cadena de bloques (fork), se considera que la cadena es verdadera, durante la construcción de la cual se realizó el mayor número de hashes (trabajo).

Para construir una minería híbrida múltiple, deben resolverse dos tareas: calcular el objetivo para cada uno de los algoritmos y encontrar un mecanismo de comparación que le permita hacer lo más difícil: comparar cadenas que consisten en bloques con diferentes algoritmos y, como resultado, una magnitud de trabajo muy diferente.


La minería híbrida es un término indefinido, en el artículo se usa para denotar la prueba de minería (POW) en varios algoritmos. En las criptocomunidades de habla inglesa y rusa, el nombre generalmente aceptado es Multi-PoW. Se considerará en el ejemplo de la criptomoneda Verge con cinco algoritmos . La minería híbrida es un término generalmente aceptado que se aplica a las criptomonedas que usan POW y almacenamiento de prueba de depósito / capital (POS). Lo consideraremos en el ejemplo de uno de los pioneros de dicha solución: Novacoin.

Para comprender el mecanismo de minería, debe comprender los siguientes conceptos fundamentales en las criptomonedas: trabajo y propósito (objetivo). El objetivo es un valor numérico que define el límite superior de los hash adecuados para crear un bloque en una cadena. Trabajo: estadísticamente, el número promedio de búsquedas necesarias para encontrar un hash de un objetivo más pequeño o igual.

Trabaja y apunta con los dedos
Considere el ejemplo de un rollo de un cubo D&D de 20 lados. Distribuiremos los dados a cada jugador de D&D en el planeta y les pediremos que rueden. La mitad de los dados tendrá valores del 1 al 10, el segundo del 11 al 20. Suponga que para el evento deseado en el juego el valor debe ser del 1 al 10. Deje que los jugadores continúen tirando hasta que todos arrojen el valor deseado. Con cada lanzamiento, el número de jugadores restantes se reduce a la mitad y resulta que el número promedio de tiradas de dados por jugador se calculará de acuerdo con la siguiente fórmula:

 operatornamecountthrows= frac operatornamecountpossiblevalues operatornamecountadecuadovalores

Suponiendo que 500 millones están jugando en el planeta, los jugadores más "afortunados" tendrán que tirar los dados unas 29 veces, pero el número promedio de disparos por jugador será 2. El número de lanzamientos en la fórmula es idéntico al número de actos de generación de hash y corresponde al trabajo. En consecuencia, el número de valores hash adecuados es igual al valor objetivo + 1. La fórmula completa para trabajar con hashes de 256 bits es:

trabajo= frac2256target+1

Bitcoin lo usa exactamente y el código que usa esta fórmula está aquí . Y aquí, el trabajo se utiliza para llegar a un consenso: comparar las horquillas blockchain y elegir la mejor cadena.

El objetivo principal del objetivo es establecer un valor tal que el tiempo de liberación del bloque ocurra en un intervalo de tiempo dado. Para bitcoin, el intervalo es de 10 minutos. El recuento objetivo en bitcoin se produce cada 2016 bloques. Para establecer un nuevo objetivo, Bitcoin determina la tasa de hash promedio: la cantidad de trabajo de red por unidad de tiempo para los bloques anteriores de 2016. Calcula el trabajo esperado en 10 minutos y tomando un objetivo para él, establece su valor para los próximos bloques de 2016. Para bitcoin, el cálculo del objetivo, en vista de la igualdad del objetivo (y, por lo tanto, el trabajo) de los bloques anteriores de 2016, después de las reducciones y aproximaciones, se da en una fórmula bastante simple.

targetnew= frac2256worknext1= frac225610min cdothashrateaver1= frac2256 frac10min cdotwork2016time20161=

= frac2256 cdottime201610min cdot2016 cdot frac2256targetprev+11= fractime2016 cdot left(targetprev+1 right)10min cdot20161 approx fractime2016 cdottargetprev10min cdot2016



Además de las criptomonedas, la tarea de objetivo, trabajo y tasa de hash (velocidad de generación de hash) se resuelve mediante grupos . El grupo no conoce el valor hash directo de un minero individual. La obtención de todos los hashes es imposible debido a las limitaciones de ancho de banda y no tiene sentido: verificar los costos es igual a la minería. El grupo recibe respuestas de los mineros con un objetivo insuficiente para formar un bloque, determina la participación del minero en el grupo, calcula el hashrate y establece dicho objetivo para cada minero para que las respuestas de ellos no ocupen todo el tráfico.


Gráfico de lanzamiento de 12 dados facetados por un jugador con un hashrate de 1 lanzamiento / segundo en 100 segundos. Cada punto es el valor de la cara dibujada, el eje Y derecho es el número de valores que cayeron en el objetivo. Se puede ver que 20 disparos caen en el objetivo 2: son adecuados los lanzamientos con un valor de 1 y 2. La evaluación del trabajo será 20 * 12/2 = 120 disparos, con el objetivo 6 el trabajo es 53 * 12/2 = 106. La propiedad principal utilizada es para cualquier El objetivo en la condición de estadísticas suficientes recibe cerca del valor exacto del trabajo y el hashrate del participante.

Una criptomoneda con varios algoritmos, como un grupo, debe evaluar el hash del algoritmo participante y seleccionar un objetivo que proporcione el intervalo de tiempo deseado entre bloques. El mecanismo de cálculo de objetivo correcto, además del intervalo, debe proporcionar las partes adecuadas de diferentes bloques en la cadena de bloques.

Vale la pena hacer una digresión en la historia para comprender las características del cálculo del objetivo en las criptomonedas lanzadas después de bitcoin. En los viejos tiempos de la carrera, los valientes pioneros de altcoinstruction tomaron el código de Bitcoin, hicieron cambios mínimos y lanzaron el "asesino de Bitcoin". Incluso hubo generadores en línea de nuevos repositorios de código altcoin. Este enfoque condujo a una serie de problemas, uno de los cuales se refería al cálculo del objetivo y surgió en el siguiente escenario. Un minero cuya tasa de hash era significativamente mayor que los otros participantes estaba conectado a la minería de criptomonedas. Dado que el objetivo rara vez se contaba, un minero de este tipo creó bloques con un intervalo muy corto y logró crear un número semanal de bloques en unas pocas horas, y en consecuencia recaudó una recompensa semanal. Al llegar al bloque en el que se recalculó el objetivo, el minero fue a otra moneda alternativa con una tasa de hash adecuada. Con el aumento del objetivo, los mineros restantes no pudieron generar un bloque en un tiempo razonable, sin mencionar la generación de todos los bloques antes del nuevo recálculo del objetivo y dejaron el altcoin. Las monedas blockchain finalmente se detuvieron. La principal solución a este problema fue volver a calcular el objetivo de cada bloque.

A primera vista, el cálculo del objetivo en Novacoin no es muy diferente del cálculo en bitcoin. Novacoin separó correctamente el cálculo de POS y POW. La fórmula final para calcular el objetivo de los bloques POS en Novacoin es la siguiente

targetnew=targetlast cdot frac7day10min+2 cdottimepos intrerval7day+10min

lo que no tiene ningún sentido en comparación con el cálculo del hash promedio en bitcoin y el pronóstico sobre él. Cualquier estadística en esta fórmula está involucrada indirectamente; de ​​todos modos, el valor objetivo anterior se calcula como el resultado de resultados anteriores en la cadena de bloques. El mecanismo en su conjunto es similar al mantenimiento de una distancia por un automóvil, el intervalo es inferior a 10 minutos (soltamos el acelerador, más), presionamos.

El cálculo de POW es casi el mismo, excepto que Novacoin reclama una frecuencia diferente para los bloques POW y POS y se calcula a intervalos de 10 minutos a 30 dependiendo de la posición en la cadena de bloques. Puede ver que si la red pierde su hash POW o POS bruscamente, el objetivo seguirá siendo válido hasta que aparezca un nuevo bloque en el mecanismo de minería que ha perdido energía.

El cálculo del objetivo en Verge utiliza el mecanismo Dark Gravity Wave, que es un desarrollo de las ideas presentadas por Kimoto Gravity Well. Sin entrar en las matemáticas de todos estos métodos, el objetivo de estos, sin duda mecanismos denominados poéticamente, es uno: asegurar la conversión del objetivo lo suficientemente rápido como para responder a los cambios en la tasa de hash de la red. A pesar de cierto ingenio del código , su matemática se reduce a fórmulas bastante simples. Verge calcula el objetivo promedio de 12 bloques del algoritmo seleccionado, en el que el último bloque se cuenta dos veces:

targetaver= frac2 cdottargetlast+targetlast1+...+targetlast1113

Sin embargo, la pregunta que surge de inmediato sobre la legitimidad de la adición del objetivo tiene una justificación matemática. El objetivo resultante es un objetivo para el trabajo medio armónico.

 frac13 cdot(targetaver+1)2256= frac2 cdot(targetlast+1)2256+ fractargetlast1+12256+...+ fractargetlast11+12256

El resto de los cálculos coinciden exactamente con el cálculo a través de la tasa de hash promedio para bitcoin.

targetnew approx fractime12 cdottargetaver0.5min cdot5 cdot12

Vale la pena señalar que el hashrate en Verge se calcula a partir del trabajo armónico promedio y el tiempo medio aritmético, y como resultado, la desigualdad de las medias tendría un valor menor si el tiempo y el trabajo se tomaran de la misma manera.

La matemática de calcular el objetivo en proyectos con pruebas / algoritmos mixtos difiere notablemente del original en bitcoin. La segunda cara de la moneda del mecanismo objetivo y el trabajo es la solución del problema de consenso: la definición de la rama blockchain que se toma como la verdadera en caso de disputa. El problema fundamental para las cadenas de bloques mixtas es la imposibilidad de elección al usar la comparación de las sumas del trabajo de bloques para todos los algoritmos / pruebas. Obviamente, los algoritmos / pruebas que tienen inherentemente un hashrate más alto con una lógica tan primitiva dominarán la cadena de bloques.

En Novacoin, a pesar del uso de un cierto puntaje de confianza en los comentarios y el nombramiento de variables, un análisis detallado de la lógica no es más que un trabajo. El cálculo para POS coincide exactamente con la fórmula del trabajo, y el cálculo para POW puede considerarse que funciona con algún tipo de coeficiente constante decreciente. El resto de los cálculos adicionales parecen un orden de equilibrio adicional de bloques para el mecanismo objetivo. Cabe señalar que esta no es la mejor solución. Como se mostrará más adelante, solo un objetivo es suficiente para equilibrar bloques. Además, los bloques POS y POW con un padre común pueden ser desiguales, aunque el hecho de la aparición de bloques válidos con un padre común debe definirse como su igualdad.

Antes de considerar el estado actual del mecanismo de consenso, Verge será informativo para analizar su pasado. En la primavera de 2018, Verge sobrevivió a varios ataques. Sin entrar en detalles de la mecánica de ataque, el código de ese tiempo , que fue responsable de elegir una bifurcación, contiene una lógica dudosa. Suponiendo que la función IsProofOfStake () en la criptomoneda POW puede devolver el valor verdadero, la adición de diferentes algoritmos, como se muestra arriba, conducirá al dominio de un algoritmo con un hashrate más alto. De lo contrario, la elección se realiza simplemente por la longitud de la cadena, que con un objetivo calculado correctamente (cuyo propósito es la apariencia uniforme de los bloques) puede conducir a la igualdad de ramas con trabajos muy diferentes realmente realizados.

En el código actual, Verge utiliza coeficientes constantes para la comparación. Suponiendo que estos coeficientes tengan en cuenta cierta relevancia de las capacidades de los equipos de minería, la debilidad obvia de esta elección es la pérdida de relevancia cuando aparecen nuevos equipos.

Las propiedades nativas de las matemáticas y el trabajo objetivo nos permiten construir modelos de cálculo más simples y comprensibles en la cadena de bloques. Considere un modelo y un código que emule un cálculo objetivo para una cadena de bloques con cuatro algoritmos. Deje que dos de ellos ocupen un tercio de los bloques. Por simplicidad de modelado, podemos suponer que el bloque con el intervalo más pequeño del anterior es el mejor para construir un circuito. En las criptomonedas reales, tal elección corresponde al escenario más común. El modelo también prueba el aumento y la disminución en la tasa de hash de uno de los algoritmos.

El cálculo del objetivo se calculará a partir del promedio aritmético de trabajo y tiempo en las estadísticas de los últimos 300 bloques. La fórmula de cálculo final:

target= frac2256k cdot60 cdothashrateaver1

donde k es el número de intervalos para los que debe ser un bloque del algoritmo para el que se calcula el objetivo.

Resumamos en la tabla los valores iniciales y calculados para 10,000 bloques.
algo1234 4
hashrate4080índice <4000: 20
4000> índice <6000: 150
índice> 6000: 20
100
intervalo60 60
bloques3333333316661666
trabajar24000000480000002760000060,000,000
Quiero señalar que el valor calculado del circuito se calcula mediante la fórmula:

workalgo=hashratealgo cdottimeallblock

El cálculo de los hashes en la red se produce a lo largo del tiempo de los bloques de todos los algoritmos, y no solo a intervalos de algoritmos individuales. Como en el ejemplo con un cubo de veinte lados, independientemente del objetivo seleccionado, la evaluación del trabajo será igual. Para los cálculos, es necesario tener esto en cuenta, mediante un coeficiente k para calcular el objetivo de un nuevo bloque a través de una tasa de hash, y tomar todo el tiempo para calcular el trabajo.
algo1234 4
intervalo59595759
bloques3306332016911683
trabajar23847014470854872702827260499076
Como puede ver, los resultados de la emulación coinciden bastante bien con el cálculo de acuerdo con los datos de origen.

Gráfico de bloques 3850-4650

Gráfico de bloques 5599-6399

En los gráficos del cambio en el trabajo a lo largo del tiempo, se observa cómo la densidad de los bloques aumenta y disminuye cuando cambia la tasa de hash. En principio, este es un comportamiento lógico y lógico, pero también es bastante apropiado regularlo utilizando técnicas como la Dark Gravity Wave, lo que aumenta la influencia de los últimos bloques y otros.

Volviendo a la cuestión de determinar el consenso de las horquillas de bloques con diferentes algoritmos, vale la pena señalar la siguiente propiedad básica: los bloques con un bloque anterior común son equivalentes entre sí. Sus objetivos y evaluación del desempeño otorgan los mismos derechos para ocupar un lugar en la cadena. Esta observación conduce inmediatamente a la idea de usar equivalencia: usar la cantidad de trabajo, los coeficientes que varían de la proporción de objetivos, etc. Omitiendo la consideración de las deficiencias de todas esas ideas, procederemos al método que satisfaga más plenamente los requisitos de la cadena de bloques.

Si consideramos las predicciones de la media geométrica del trabajo de todos los algoritmos de bloques, la suma de dichos trabajos equivalentes es la mejor característica para comparar las horquillas.

workequal= sqrt[k1]workalgo1 cdot sqrt[k2]workalgo2 cdot... cdot sqrt[kn]workalgon

Donde k es el número de intervalos en los que debe caer un bloque del algoritmo, para el cual se calcula el objetivo.

Tal trabajo equivalente tiene las siguientes propiedades:

  • cuando la tasa de hash de todos los algoritmos se cambia n veces, la estimación de consenso de la cadena también cambiará n veces
  • Al aumentar el hashrate de uno de los algoritmos y disminuir las otras n veces con partes iguales en la minería, la estimación de consenso de la cadena será igual
  • con proporciones iguales de algoritmos y tasas de hash iguales de estos algoritmos, la operación equivalente y la operación de cualquier algoritmo será igual

El mecanismo de operación equivalente complica significativamente el ataque 51 en la cadena de bloques. La fórmula para el trabajo equivalente, expresada a través de una tasa de hash, le permite estimar la potencia necesaria para un ataque.

workequal= sqrt[k1]k1 cdott cdothashratealgo1 cdot sqrt[k2]k2 cdott c d o t h a s h r a t e a l g o 2 c d o t . . . c d o t s q r t [ k n ] k n c d o t t c d o t h a s h r a t e a l g o n     

Si el atacante decide llevar a cabo el ataque de acuerdo con uno de los algoritmos y no podrá calcular el resto, entonces el hashrate necesario tendrá que superar significativamente el hashrate de la red.
Por ejemplo, en una tabla de ataque, el tiempo entre bloques es de 60. Suponga que un atacante puede proporcionar solo el 50% del hashrate en tres algoritmos.
algo1234 4igual
parte336 66 6
hashrate neto40802010011862
hashrate atacante16040105011862

Para lograr la igualdad con la red, tendrá que tener un hashrate 4 veces mayor que el hashrate de la red según el primer algoritmo.

El siguiente gráfico muestra el resultado de emular un ataque en una cadena de bloques.



El ataque comienza en el bloque 1000. La suma de trabajos equivalentes en emulación para ambas ramas difiere ligeramente y muestra la igualdad de las ramas.

En resumen, se puede observar que los mecanismos de consenso en las criptomonedas con algoritmos / pruebas mixtos pueden estar matemáticamente justificados y tales criptomonedas son más difíciles de atacar 51.

Feliz cadena de bloques para todos y gracias por su atención al tema.

Source: https://habr.com/ru/post/455736/


All Articles