-
Los algoritmos de minería están diseñados para mantener la seguridad de una red de criptomonedas.
-
El tipo de algoritmo de minería utilizado puede influir significativamente en la centralización.
-
El algoritmo de minería determina qué tipo de hardware es más eficiente.
-
Los algoritmos de minería incluyen mecanismos para ajustar la dificultad de la minería.
-
La elección del algoritmo de minería tiene implicaciones directas en el consumo energético.
Los algoritmos de minería son conjuntos de reglas y procedimientos que los mineros de criptomonedas siguen para verificar transacciones, registrar nuevos bloques en la red y emitir monedas. Estos algoritmos son la piedra angular de los sistemas de consenso de Bitcoin y otras redes basadas en Prueba de Trabajo (PoW), las cuales se basan en la competencia de poder computacional para procesar operaciones y resguardar su seguridad. Asimismo, los algoritmos de minería ajustan de manera automática la dificultad de minería de redes como Bitcoin.
¿Cuál es la diferencia entre un algoritmo de minería y la función hash?
Aunque se trata de conceptos que son comúnmente confundidos o unificados, existe una diferencia clave entre un algoritmo de minería y la función hash. Podríamos decir que los algoritmos de minería arropan la función hash, la cual permite encriptar toda información dentro de Bitcoin, y la incorporan con otras funciones como el consenso, la Prueba de Trabajo, el ajuste de dificultad y hasta las recompensas que reciben los mineros por sus actividades. El algoritmo de minería es intrínseco de las redes de criptomonedas, mientras que la función hash es un elemento que puede estar presente en una red como Bitcoin, pero también en otro tipo de sistemas criptográficos que no tienen que ver con dinero.
¿Cuáles son las funciones de un algoritmo de minería?
En una red de criptomonedas, los algoritmos de minería cumplen diversas funciones que van desde definir el hash que se utilizará en consenso para la minería, pasando por ser un elemento fundamental para la validación de transacciones e, incluso, se encarga de ajustar la dificultad para que los mineros den con el nonce o número que permite la creación de un nuevo bloque.
A continuación, veamos algunos de los factores que determinan los algoritmos de minería:
- Validación de transacciones:
Los algoritmos de minería, operado por los mineros, se encargan de verificar que todas las transacciones de una red de criptomonedas son legítimas.
En este sentido, comprueban la firma digital de cada transacción para confirmar que el remitente tiene los fondos necesarios y que no se está intentando gastar dos veces la misma cantidad. Es decir, que esté haciendo un ataque de doble gasto.
- Creación de Bloques
Estos algoritmos se encargan de organizar las transacciones en los bloques, asegurándose de que están en el orden correcto y que no hay conflictos entre ellas. Esto lo hacen con base en su programación, evitando un trabajo adicional a los mineros o pools de minería que se encargan de seleccionar las transacciones que más les convengan por comisión o tamaño.
Asimismo, cada bloque tiene un hash único que se genera a partir del algoritmo de minería . Este hash de identificación contiene información del contenido del bloque, tales como las transacciones y el hash del bloque anterior. Esto es lo que crea una cadena entrelazada de bloques, o también conocida como blockchain.
- Prueba de Trabajo (PoW) y consenso:
En las redes de criptomonedas, el consenso entre todas las partes involucradas resulta ser la espina dorsal para la pervivencia de un proyecto. Los miembros de una red acuerdan tácitamente respetar una política monetaria especifica, una función hash única para la encriptación de la información y hasta la serie de reglas y procedimientos que deben llevar a cabo los nodos/mineros para procesar transacciones.
En cada uno de estos componentes, el algoritmo de minería hace presencia. Por ejemplo, es gracias a él que se puede llevar a cabo la minería de Bitcoin. Los usuarios, por un lado, hacen hashing del algoritmo SHA-256 para que calcule una serie de respuestas o números al azar (nonce) que harán posible el registro de un nuevo bloque.
¿Qué es el hashing?
El hashing es un proceso en informática y criptografía que convierte datos de cualquier tamaño en una cadena de longitud fija, conocida como hash o valor de hash. Este proceso es fundamental en varias aplicaciones de seguridad y manejo de datos.
A su vez, la misma función hash SHA-256 hace posible la identificación de nuevos bloques de transacciones, información que se usa en el hashing y también para el registro de nuevos bloques. Por si fuera poco, SHA-256 es el encargado de gestionar la dificultad de minería, una información que también resulta clave para los mineros al momento de tratar de calcular el nonce o número ganador para llevarse la recompensa.
¿Cuáles son las diferencias entre el algoritmo de consenso y el algoritmo de minería?
La diferencia entre un algoritmo de consenso y otro de minería se basa, principalmente, en sus roles. El algoritmo de consenso está centrado en el protocolo de la red, desde la información que comparten los nodos, pasando por la política monetaria y los procedimientos que hacen posible la validación de transacciones. En este sentido, existen algoritmos de consenso como los de Bitcoin, que es de Prueba de Trabajo (PoW), y otros como el de Ethereum, que es la Prueba de Participación (PoS), determinando la manera en que se trabaja para validar bloques de transacciones. Los algoritmos de minería, por otro lado, están presentes únicamente en las redes que hacen minería, es decir, en aquellas que tienen por algoritmo de consenso la Prueba de Trabajo.
- Ajuste de Dificultad:
Otra de las funciones de los algoritmos de minería es la dificultad de minería. Este se trata de un parámetro que se ajusta automáticamente para controlar la tasa a la que se generan nuevos bloques, evitando que se emita todo el circulante de criptomonedas en unos pocos meses o años o que se tarde demasiado en minar un nuevo bloque.
Esto se hace por medio de una serie de pasos. Primero, el algoritmo mide el tiempo que han tardado en minarse los últimos 2016 bloques (aproximadamente dos semanas, si cada bloque se mina cada 10 minutos). Este tiempo, luego, se compara con el tiempo esperado (20160 minutos para 2016 bloques a 10 minutos por bloque).
Si los bloques se minaron más rápido, la dificultad debe aumentar; si más lento, debe disminuir. La nueva dificultad se calcula para ajustar el tiempo de minado hacia el objetivo, para luego ser actualizada en todos los nodos (cada dos semanas) para obligar a los mineros a re-calcular sus operaciones.
De esta manera, si aumenta la dificultad, se requerirá más poder computacional para dar con el número nonce que activaría la posibilidad de añadir un nuevo bloque. Esto significa que menos mineros con hardware menos potente pueden competir con estas condiciones.
Sin embargo, cuando la dificultad disminuye, hace que sea más fácil para los mineros resolver el puzzle criptográfico, lo que puede atraer más participación en la minería si el costo de entrada en términos de hardware y energía es menor.
- Recompensa por Minado:
El resultado óptimo del uso del algoritmo de minería es la obtención de la recompensa. Cuando los mineros ponen a procesar esta herramienta criptográfica junto con la información que permite la creación de nuevos bloques, tendrán como resultados múltiples números al azar. No será, hasta que alcancen el nonce adecuado (que es el mismo de la dificultad), cuando el minero ganador pueda registrar el bloque y, por ende, reclamar la recompensa.
En el caso de Bitcoin, las recompensas se encuentran bloqueadas en los nuevos bloques en una transacción llamada Coinbase. La recompensa varía cada cuatro años debido a un mecanismo llamado halving, el cual reduce la cantidad de BTC que reciben los mineros por cada bloque minado. En la actualidad, la recompensa es de 3,125 BTC.
¿Cuáles son los algoritmos de minería más comunes?
Existen tantos algoritmos de minería como redes de Prueba de Trabajo (PoW) en el mercado. Sin embargo, algunos destacan por la popularidad de las criptomonedas que los usan o por sus peculiaridades.
A continuación, mencionaremos a los más usados en el ecosistema:
- SHA-256 (Secure Hash Algorithm 256-bit): usado por Bitcoin, Bitcoin Cash, Bitcoin SV y PeerCoin.
- Scrypt: usado por Litecoin, Dogecoin, Monacoin, Syscoin y Viacoin.
- Ethash (Dagger-Hashimoto): usado por Ethereum antes de su transición a Prueba de Participación, por Ethereum Classic, MOAC y UBQ.
- Equihash: usado por Zcash y Bitcoin Gold.
- X11: usado por la criptomoneda Dash, Memetic y Marscoin.
- RandomX: usado por Monero.
¿Qué es SHA-256?
SHA-256 (Secure Hash Algorithm 256-bit) es el algoritmo de minería que utiliza Bitcoin. Se trata de una función de hash criptográfica diseñada por la Agencia de Seguridad Nacional de los Estados Unidos (NSA) y publicada en el año 2001 por el Instituto Nacional de Estándares y Tecnología (NIST) como parte de la familia de algoritmos SHA (Secure Hash Algorithm).
¿Qué son las familias de algoritmos SHA?
Las familias de algoritmos SHA (Secure Hash Algorithm) son una serie de funciones de hash criptográficas desarrolladas por el Instituto Nacional de Estándares y Tecnología (NIST) de Estados Unidos, con la colaboración de la Agencia de Seguridad Nacional (NSA). Estas funciones están diseñadas para producir un valor hash de longitud fija a partir de datos de entrada de cualquier tamaño. Los algoritmos SHA más conocidos son el SHA-1, SHA-256 y el SHA-384.
SHA-256 toma una entrada de datos de cualquier tamaño y produce un hash fijo de 256 bits (32 bytes). Este hash es una cadena única de caracteres que representa un resumen digital de los datos originales. Es decir, no importa la información que se introduzca a Bitcoin (desde una palabra, hasta la frase de un poema o un ensayo completo), el SHA-256 lo convertirá al azar en una representación alfanumérica que siempre tiene la misma longitud.
Otra característica peculiar del SHA-256 es que es una función hash de un solo sentido. Esto significa que es computacionalmente inviable revertir el proceso para obtener la entrada original a partir del hash generado, esto ofrece una gran privacidad y seguridad ante ataques maliciosos.
En cuanto a sus beneficios más destacados, está el hecho de que el SHA-256 es altamente resistente a colisiones. ¿Qué significa esto? Pues, que es muy improbable que dos entradas diferentes produzcan el mismo hash. Se trata de una propiedad crucial para la seguridad de Bitcoin, ya que garantiza que si cualquier parte de los datos del bloque (como una transacción) se modifica, el hash resultante será completamente diferente, haciendo evidente cualquier alteración.
Asimismo, en Bitcoin, cada bloque contiene el hash del bloque anterior, creando una cadena de hashes que, si se altera, invalidaría todos los hashes subsiguientes, haciendo prácticamente imposible modificar la historia de transacciones sin que los miembros de la red se den cuenta.
¿Qué es el algoritmo Scrypt?
Scrypt es un algoritmo de hash criptográfico diseñado para ser más resistente a la minería con equipos especializados, mejor conocidos como ASICs (Application-Specific Integrated Circuits). Este es usado por criptomonedas como Litecoin y Dogecoin, los cuales tienen una estable comunidad de mineros.
¿Quién creó Scrypt y por qué?
Entre datos curiosos de este algoritmo de minería, está el hecho de que fue propuesto por Colin Percival, informático y científico en el campo de la seguridad computacional de origen canadiense. La primera vez que se habló de Scrypt fue en 2009, planteándolo como un algoritmo capaz de mejorar la seguridad en sistemas de almacenamiento de contraseñas y en la minería de criptomonedas.
Scrypt está diseñado para requerir a los equipos computacionales tanto una gran cantidad de memoria como poder computacional, lo que lo hace menos atractivo para la creación de ASICs específicos debido al coste y la complejidad de diseñar hardware con suficiente memoria para ser eficiente.
Esta característica está desarrollada con el objetivo de mantener la minería de estas criptomonedas más accesible para usuarios, ya que resulta mucho más rentable hacerla con hardware estándar como CPUs o GPUs.
En el contexto de almacenamiento de contraseñas, Scrypt ralentiza considerablemente el proceso de generación de hash, haciendo que los ataques de fuerza bruta sean computacionalmente más caros y menos viables, ya que cada intento de hash requiere no solo tiempo de CPU sino también acceso a memoria.
¿Qué es un ataque de fuerza bruta?
Un ataque de fuerza bruta es una técnica de ataque cibernético en la cual se intenta adivinar contraseñas o claves de cifrado mediante la prueba sistemática de todas las posibles combinaciones hasta encontrar la correcta. Este método se basa en la fuerza computacional y el tiempo, probando cada posibilidad hasta que se consigue acceder al sistema o descifrar el dato protegido.
¿Qué es algoritmo de minería Ethash?
Ethash es el algoritmo de minería utilizado por Ethereum antes de su transición a un sistema de prueba de participación (Proof of Stake, PoS) con Ethereum 2.0. En la actualidad, Ethereum Classic es la criptomoneda más importante que aún utiliza Ethash como su algoritmo de minería, heredando gran parte de la comunidad minera que alguna vez tuvo Ethereum.
Para entender el funcionamiento de Ethash, hay que conocer dos conceptos. El primero es Dagger, una propuesta de hash desarrollada por el profesor Stefan Dziembowski. Este hash depende del acceso aleatorio a una gran estructura de datos, la cual se divide en épocas y se conoce como DAG.
¿Qué es DAG?
En el contexto de Ethash, DAG se refiere a Gráfico Acíclico Dirigido. Se trata de una estructura de datos grande que se genera y se usa en el proceso de hashing para la minería de Ethereum. Este gráfico es «acíclico»; es decir, es una información que no tiene enlaces con el punto de inicio de la red. Esto lo diferencia enormemente con el SHA-256, el cual está diseñado para que genere un encadenamiento de hash que identifican los bloques de la red.
Este DAG se crea a partir de la información de un bloque y es utilizada para que los mineros procesen el hash cuantas veces sea necesario hasta alcanzar con la recompensa. Sin embargo, el DAG no está solo, existe otra pieza en el algoritmo de minería de Ethash que hace posible su funcionamiento. Estamos hablando del hash Hashimoto.
Hashimoto es una propuesta del informático Thaddeus Dryja, el cual plantea un hash que trabaja con una matriz de datos (en este caso, el DAG de Dagger) para hacer múltiples rondas de hashing. Estas varias iteraciones de hashing son el corazón de Ethash, ya que el algoritmo de minería será procesado tantas veces hasta que se cumpla con los criterios de dificultad establecidos por la red.
Todas estas características en conjunto, sumadas a la necesidad de equipos con gran memoria y el constante procesamiento de la función hash, hacen a Ethash un algoritmo altamente resistente a la minería con ASICs. Sobre todo, por los elevados costos de crear y comprar un equipo con estas características.
¿Qué es el algoritmo Equihash?
Equihash es un algoritmo de minería utilizado por criptomonedas como Zcash. Fue diseñado para ser eficiente en el uso de memoria de equipos de computación, tales como las GPU y los CPU. Asimismo, se diseñó para ser resistente a la minería con ASICs y motivar una competencia más descentralizada, aunque con el paso de los años se ha demostrado que los ASIC sí tienen presencia en este mercado.
Las principales características de Equihash como algoritmo de minería es que utiliza una técnica de resolución de problemas de gráficos generalizados. ¿Qué significa esto? Los mineros deben encontrar una respuesta ganadora que cumpla con ciertos criterios de hash, los cuales están mayoritariamente enfocados en la capacidad de memoria que tiene el equipo que hace el hashing.
Para cada intento de minar un bloque, Equihash genera un gráfico acíclico dirigido (DAG) o una estructura similar basada en el contenido del bloque y ciertos parámetros del algoritmo. Este gráfico no es tan grande como el usado en Ethash, pero aun así requiere una cantidad significativa de memoria para su almacenamiento temporal.
Durante el proceso de hashing, Equihash requiere acceso aleatorio a partes del gráfico o estructura de datos que ha generado. Esto significa que el algoritmo no solo es computacionalmente intensivo, sino que también necesita leer y escribir en memoria en patrones impredecibles, lo cual es ideal para hardware con mucha memoria y no para ASICs.
Asimismo, una peculiaridad de este algoritmo es que tiene parámetros modificables por los desarrolladores. Estos parámetros son N, que determina el tamaño del gráfico y, por ende, la cantidad de memoria necesaria; y K afecta la complejidad para alcanzar la respuesta que registre el bloque y libere la recompensa. Modificando cualquiera de estos elementos, la minería de redes como Zcash se hace más o menos difícil.
¿Qué es el algoritmo RandomX?
RandomX es un algoritmo de minería diseñado específicamente para mejorar la resistencia a la minería con ASICs y para ser eficiente en CPUs. Fue adoptado por Monero (XMR) en noviembre de 2019 como parte de una de sus actualizaciones, donde buscaban hacer su minería más accesible y descentralizada.
¿Los ASIC centralizan la minería?
Sí, los ASIC tienen el potencial de centralizar la minería. Estos equipos están diseñados específicamente para realizar una tarea, en este caso, minar una criptomoneda específica de manera mucho más eficiente que los CPUs o GPUs. Esto les da una ventaja significativa en términos de hashrate. Sin embargo, en las redes que usan ASIC (como Bitcoin), existe una enorme competencia entre pools de minería que mantienen cierto equilibrio entre los participantes.
RandomX funciona generando programas de ejecución aleatorios para cada bloque que se va a minar. Estos programas son esencialmente secuencias de instrucciones que se ejecutan en la CPU, y debido a que son aleatorios, es muy difícil para los ASICs optimizar para todas las posibles secuencias de instrucciones.
Para ello, el algoritmo de minería utiliza la memoria de los equipos de computación que lo procesa, llenándola con datos aleatorios basados en el hash del bloque anterior. De esta manera, la memoria se usa de forma dinámica durante todo el proceso de hashing, añadiendo otra capa de resistencia a la optimización por hardware especializado.
¿Cómo se eligen los algoritmos para una nueva criptomoneda?
La elección de un algoritmo para una nueva criptomoneda es un proceso complejo que implica varias consideraciones técnicas, económicas, de seguridad y filosóficas.
Exploremos algunos de los elementos que toman en cuenta los desarrolladores antes de seleccionar un algoritmo de minería:
- Descentralización: Si la meta es mantener una red de minería o validación lo más descentralizada posible, se buscarán algoritmos que sean resistentes a ASICs (como Scrypt, Ethash, Equihash, o RandomX) o que favorezcan el uso de hardware común como CPUs y GPUs.
- Seguridad: La seguridad del algoritmo es fundamental. Se preferirá uno con una larga historia de uso sin vulnerabilidades conocidas, como SHA-256 que es altamente resistente a ataques de colisión y no ha tenido problemas con ataques de fuerza bruta.
- Velocidad y Escalabilidad: Para criptomonedas que buscan ser una solución de pago rápida, se necesitará un algoritmo que permita tiempos de bloque cortos o mecanismos de escalabilidad. En este sentido, algunas redes de criptomonedas, incluso, sacrifican cierta seguridad y descentralización con los modelos de Prueba de Participación (PoS) para permitir tiempos de procesamiento mucho más altos.
- Innovación: Si un equipo de desarrolladores tiene como objetivo presentar una red altamente novedosa, podría experimentar con algoritmos de minería e, incluso, de consenso, que no hayan sido utilizados aún por otras criptomonedas o que sean recientes. Esto les permitiría aportar un valor adicional a las herramientas tecnológicas de su red, lo que a largo plazo puede traducirse en un mayor valor apreciado entre inversionistas.