Los algoritmos de minería son las funciones que hacen posible la tarea de realizar la minería de criptomonedas. Existen diversos algoritmos, cada uno con sus características propias adaptadas a las criptomonedas que hacen uso de los mismos.
Los algoritmos de minería son los algoritmos encargados de hacer posible la minería de la criptomoneda. Normalmente estos algoritmos son funciones hash criptografícas muy complejas y que pueden ajustar la dificultad de minería. Un proceso que le sirve para hacer más o menos difícil armar los rompecabezas que deben ser resueltos por los mineros. Esto tiene como finalidad hacer que los mineros realicen un trabajo computacional complejo que una vez resuelto les permite acceder a una recompensa por dicho trabajo.
En este articulo mostraremos algunos de los algoritmos de minería mas usados en el mundo de las criptomonedas, mostrando algunas de sus características y potencialidades.
Algoritmo de minería: ¿cuáles son los más usados?
SHA-256, el algoritmo de Bitcoin
SHA-256 es un algoritmo criptográfico que empezó su historia como un sistema de hashing para datos. Básicamente, lo que hace SHA-256 es tomar una determinada cantidad de información y resumirla en un bloque alfanumérico único con 64 caracteres de extensión que se genera de forma determinista. Esto significa que si introduces un mismo dato infinidad de veces tendrás la misma salida en cada una de las ocasiones.
Esto resulta vital para proteger la integridad de los datos, ya que el mínimo cambio altera en su totalidad la salida del hash SHA-256. Es por este motivo que se usa extensivamente en Internet para proteger documentos y demás información valiosa que se desea mantener íntegra. Cabe destacar que SHA-256 no es un algoritmo de cifrado, sino que solamente es un algoritmo de integridad de datos y la única manera de comprobarlo es introducir la misma información obteniendo el mismo resultado. Asimismo, el proceso contrario es prácticamente imposible de realizar.
SHA-256 fue diseñado por la Agencia de Seguridad Nacional (NSA) de Estados Unidos y publicado por el Instituto Nacional de Estándares y Tecnología (NIST) en el año 2001 como un estándar de integridad de datos. El sistema puede ser implementado para generarse por medio de CPU, GPU, FPGAs y ASIC. De allí que la minería de Bitcoin, la cual usa SHA-256, pueda realizarse sobre todos estos medios sin problemas. Por supuesto, la potencia es distinta en cada caso, siendo la menor aquella que podemos obtener en los CPU, pasando por FPGAs, GPU y finalmente los ASICs, que son los que dominan en la actualidad la minería SHA-256.
Entre los proyectos de criptomonedas que usan SHA-256 como algoritmo de minería están Bitcoin, Bitcoin Cash, Bitcoin SV, Namecoin (usando merged mining), RSK (merged mining) y Stacks (merged mining). Existen muchos otros proyectos que usan SHA-256, pero la mayoría de ellos son proyectos sin ninguna innovación y por tanto de poco valor dentro de la comunidad.
Ethash, «el algoritmo de Ethereum»
Ethash era el algoritmo de minería de Proof of Work de Ethereum. La prueba de trabajo en Ethereum fue completamente desactivada con The Merge, y ahora Ethereum está asegurada utilizando la prueba de participación en su lugar.
Esta era la función hash diseñada para Ethereum y una de sus principales características era su alta exigencia de memoria gracias al uso de un DAG ampliado para la minería. En principio, Ethash fue diseñado para evitar la minería ASIC. Sin embargo, el coste de memoria era tan alto que la minería Ethash aún era posible de realizar con GPUs, donde estas se ven beneficiadas por la gran cantidad de memoria que tienen, lo que facilitaba la creación del DAG para la minería.
Ethash dependía de una función llamada Keccak o SHA-3, además de utilizar versiones de los hashes Dagger-Hashimoto, por lo que de inicio el algoritmo fue conocido como Dagger-Hashimoto para después cambiar su nombre a Ethash.
Scrypt, la más completa función criptográfica
Scrypt es una función de hash/cifrado diseñada por el conocido desarrollador de FreeBSD, Colin Percival. La función fue diseñada para ser parte de un producto comercial que él mismo había creado llamado Tarsnap, cuya finalidad es la de crear respaldos remotos de datos para usuarios y empresas. Tarsnap es un producto conocido por su altísima seguridad y velocidad, algo en lo que Scrypt juega un papel fundamental.
Scrypt es una función hash extremadamente optimizada pensada para procesar gran cantidad de datos, ofrecer garantías criptográficas de integridad y facilitar también recuperación de datos en caso de ser necesario. Su capacidad para hacer un cifrado y descifrado seguro añade una funcionalidad extra que otras funciones hash no poseen, por lo que Scrypt es considerado unas de las funciones más completas y seguras que existen, además de ser una implementación de software libre, gracias a su licencia BSD 2. Scrypt es un algoritmo que puede ser minado usando implementaciones para CPU, GPU, FPGAs y ASIC, siendo estas últimas las más potentes.
Entre las principales criptomonedas que usan Scrypt como función de minería están Litecoin y Dogecoin.
X11, el algoritmo de Dash
El algoritmo de minería X11 en realidad no es un algoritmo hash, sino la unión de 11 de ellos que son aplicados de forma serial para que al final se obtenga el hash final. La idea detrás de su creación es asegurar la completa seguridad de los hashes resultantes y agregar una cierta complejidad que evitará la creación de ASICs que centralicen la minería.
Vale decir que la primera idea es considerada por muchos especialistas criptográficos, como un completo absurdo. Esto se debe a que muchos algoritmos usados en X11 ni siquiera tienen una verificación formal de su funcionamiento. Esto echa por tierra la seguridad del sistema al apostar por un esquema de “seguridad por oscuridad”, siendo que esa oscuridad es la falta de pruebas criptográficas concretas que aseguren que esas funciones son realmente seguras.
Si bien la segunda idea de ofrecer resistencia ASIC fue cierta, los desarrolladores de ASIC no tardaron mucho en superar este reto y comenzar a ofrecer ASIC para X11. En respuesta los desarrolladores comenzaron a crear variaciones en el algoritmo X11 que evitaban la minería ASIC hasta una próxima actualización de firmware que volvía colocar las máquinas en funcionamiento. De esos esfuerzos poco productivos nacieron derivados como X13 (aplicando 13 funciones hash distintas), X15 y hasta X17.
El algoritmo X11 fue diseñado por Evan Duffield, el creador de Dash, siendo la primera criptomoneda que utilizó X11 y la única moneda de cierto valor que lo usa.
Equihash, un algoritmo basado en un problema matemático complejo
Equihash se creó gracias al trabajo de Alex Biryukov y Dmitry Khovratovich, quienes buscaban crear un algoritmo hash que ofreciera resistencia a la minería ASIC. Para lograr esto, Biryukov y Khovratovich usaron un curioso problema matemático sobre el cual diseñaron su función hash: el “Problema del Cumpleaños” y los resultados de su trabajo los presentaron en 2016 en la Universidad de Luxemburgo. Este proyecto fue dirigido por un grupo llamado CryptoLUX, del que formaron parte en el Simposio de Seguridad de Redes y Sistemas Distribuidos 2016 en San Diego.
El “Problema del Cumpleaños” nos dice que:
De un conjunto de 23 personas, hay una probabilidad del 50,7% de que al menos dos personas de ellas cumplan años el mismo día. Para 57 o más personas la probabilidad es mayor del 99,666%. En sentido estricto esto no es una paradoja ya que no es una contradicción lógica.
Sin embargo, es una verdad matemática que contradice la intuición común. Mucha gente piensa que la probabilidad es mucho más baja, y que hacen falta muchas más personas para que se alcance la probabilidad del 50,666%. Si una habitación tuviera 367 personas, por el Principio del Palomar sabemos que habría al menos dos personas cumpliendo años en la misma fecha, ya que un año normal tiene 365 días, y uno bisiesto tiene 366.
En base a esto, la función Equihash lleva a que los equipos realicen operaciones intensivas de memoria que dificultan el cálculo paralelo. Esto se debe a que resulta extremadamente caro crear ASICs con grandes cantidades de memoria de alta velocidad y ancho de banda.
Como resultado, Equihash es uno de los algoritmos resistentes a ASIC más problemáticos. De hecho, aún en la actualidad este algoritmo representa todo un reto para los ASIC (que finalmente lograron vencer la resistencia), ya que no son capaces de alcanzar altas cotas de soluciones al problema, lo que hace que estos equipos sean bastante ineficientes energéticamente, aunque mucho más rápidos que sus contrapartes CPU, FPGA y GPU.
La principal moneda que utiliza este algoritmo es Zcash, aunque también es usado por Bitcoin Gold y Komodo.
Cryptonight, el primer algoritmo para monedas anónimas
CryptoNight es un algoritmo único por una razón bien conocida en la comunidad: está pensado para facilitar la construcción de monedas anónimas. De hecho, la persona (o grupo de personas) que construyó el algoritmo es un completo misterio, al mismo nivel que el de Satoshi Nakamoto. Diferentes usuarios afirman que el creador de CryptoNote (el algoritmo de consenso base para CryptoNight) es el mismo Satoshi Nakamoto actuando bajo un nuevo seudónimo: Nicolas van Saberhagen. Para agregar más misticismo CryptoNote fue presentado el 12/12/12, todo un acertijo que a día de hoy nadie ha podido resolver.
En todo caso, CryptoNight se desarrolló como una función hash para CryptoNote y la primera moneda en implementarlo fue Bytecoin. El algoritmo está diseñado de principio a fin para proveer un altísimo nivel de privacidad, anonimato y resistencia a los ASICs y las GPU. Para proporcionar un alto nivel de seguridad y anonimato, asimismo, una de sus características principales es su alta resistencia a la minería ASIC y GPU, por lo que es sumamente difícil de desarrollar para estos dispositivos.
Sin embargo, con el abandono de Bytecoin, Monero, la segunda moneda en implementar la función para su minería, tomó las riendas del desarrollo gracias a un grupo de desarrollo más nutrido y especializado, junto con una comunidad más activa. Así, Monero se convirtió en el principal desarrollador de CryptoNight y lo actualizó constantemente para evitar que los ASICs hicieran estragos contra el mismo. Pese al esfuerzo, CryptoNight perdió la batalla y entendido este punto, los desarrolladores de Monero anunciaron que estaban trabajando en su sucesor, declarando el pronto abandono de CryptoNight.
En la actualidad, CryptoNight es un algoritmo poco usado y en abandono. De hecho, la mayoría de los proyectos que lo usan están abandonados.
RandomX, la evolución de CryptoNight
La comunidad Monero, viendo que tenía perdida la batalla en CryptoNight entendió la necesidad de desarrollar un nuevo algoritmo desde 0. De esa manera se podría abrir un nuevo frente para las monedas de privacidad.
El resultado de todo ese esfuerzo es RandomX. Este es un algoritmo para monedas de privacidad tan complejo que teóricamente es imposible de implementar en un ASIC. De hecho resulta extremadamente complejo de implementar de forma eficiente para GPUs y FPGAs.
RandomX debe su funcionamiento a una implementación que funciona en base a una máquina virtual de introspección computacional. Básicamente, RandomX crea una máquina virtual con determinadas características criptográficas que se generan de forma aleatoria. Sobre esta máquina virtual se pone en marcha su función criptográfica para la minería de Monero. Todo ello hace que RandomX sea exigente. Exige capacidad de memoria RAM, instrucciones de CPU y caché de los mismos, así como el cálculo criptográfico necesario para su funcionamiento, el cual está basado en AES-256, y también hace uso de las funciones Blake2b y Argon2d.
La implementación ha tenido tal éxito que tras casi 3 años de creado el algoritmo aún no existe una implementación eficiente para GPU y FPGAs. Y, de hecho, la implementación ASCI sigue siendo teóricamente imposible. Todo ello termina haciendo que sea inviable el uso de estas herramientas, llevando a todos a minar con CPU, el objetivo de RandomX.
CuckooCycle, Cuckaroo y Beam, minería para GPUs y monedas privadas
CuckooCycle es un algoritmo de minería de PoW utilizado por el proyecto Aeternity. El algoritmo está pensado para ser usado en GPUs, donde es eficiente y es resistente a la minería ASIC. CuckooCycle hace uso intensivo de memoria requiriendo de al menos 4 GB de memoria RAM en la GPU a fin de comenzar con el proceso de minería. De momento no existe ningún ASIC que opere en este algoritmo y la única moneda de relevancia que lo usa es Aeternity.
Por su parte, Cuckaroo es un algoritmo de minería utilizado por monedas de privacidad como Grin y MimbleWimble. El algoritmo está pensado para ser usado en GPU y resistir la minería en ASIC. Sin embargo, el algoritmo ha sufrido diferentes actualizaciones, ya que muchas de sus viejas iteraciones ya no son consideradas resistentes a ASIC. Esto ha llevado a la creación de variantes como Cuckarood29, Cuckatoo31 o Cuckatoo32, que buscan solucionar este problema.
Finalmente, Beam es el algoritmo de minería usado por la criptomoneda de privacidad Beam. Este algoritmo es un derivado de Equihash y está diseñado para ser usado en GPUs. En términos de minado de Beam, las tarjetas Nvidia muestran los mejores resultados, aunque la diferencia con las GPUs AMD es mínima y la eficiencia energética de las últimas es mucho mayor.