Una imagen que muestra la naturaleza diversa de criptografía y todo lo que podemos manejar con ella.

Algoritmos criptográficos y de consenso

La tecnología de la cadena de bloques y los avances de las criptomonedas y su implementación están en el punto de mira técnico hoy en día atrayendo mucha atención. Con esa atención, sin embargo, vienen muchos términos populares – descentralización, peer to peer, minería, algoritmos, ledgers distribuidos, criptografía y muchas más. En este artículo vamos a tratar de aclarar uno de esos términos – los algoritmos.

Qué es un Algoritmo Criptográfico?

Los algoritmos criptográficos son los que llevan el cripto a la criptomoneda. Estos algoritmos se utilizan para encriptar y descifrar tu dirección privada a una dirección pública. Un aspecto importante de esos algoritmos es su irreversibilidad. Teniendo tu dirección privada como entrada aplicando el algoritmo criptográfico puedes obtener fácilmente tu dirección pública como salida, pero hacer el cálculo en orden inverso, tener la dirección pública y aplicar el algoritmo para llegar a la dirección privada es una tarea imposible que tomará muchos años para computar. Los algoritmos criptográficos son también los que controlan la dificultad de la cadena de bloques haciendo más difícil o más fácil alcanzar un consenso en la red. Los algoritmos criptográficos se componen de una, dos o más funciones de hash. Veamos ahora qué es una función de Hash (Hashing Function).

Algoritmos criptográficos o algoritmos de consenso?

En los términos más simples, un algoritmo es un conjunto de reglas o pasos a seguir cuando se aborda una tarea de resolución de problemas. Es importante limpiar desde el principio, hay dos tipos de algoritmos – ambos simplemente referidos como algoritmos de donde proviene la confusión – algoritmos criptográficos y algoritmos de consenso. Ambos tipos cumplen una función crucial en la cadena de bloques, pero son muy diferentes entre sí.

Dos gráficos de información que muestran la capacidad de usar cualquiera de las diferentes claves para cifrar datos.

¿Qué son los Algoritmos de Consenso?

Los algoritmos de consenso están en el centro de las criptomonedas y permiten que la red permanezca descentralizada, pero al mismo tiempo siguen siendo justos. Existen varios algoritmos de consenso, todos con diferentes propósitos y, lo que es más importante, con diferentes criterios para decidir cómo llegar a un consenso. Los dos más comunes y ampliamente utilizados en criptografía son la prueba de trabajo (el algoritmo utilizado en la red bitcoin donde todo comenzó) que llega a un acuerdo basado en quién ha hecho un mayor “trabajo” – es decir, resuelto un problema matemático lo más rápido posible – y la prueba de participación que llega a un acuerdo basado en quién tiene más en juego en la cadena de bloques. A estas alturas, puede que te estés preguntando, pero para qué necesitamos algoritmos. Los dos párrafos siguientes responderán a esta pregunta.

Comparación de algoritmos de consenso

Irónicamente, todavía no hay consenso sobre cuál es el mejor algoritmo para llegar a un consenso en una cadena de bloques. Con tantas maneras de hacerlo, desde PoW, DPoS, Proof of Weight, Proof of Authority (Prueba de Autoridad), Directed Acyclic Graphs parece que hay tantos algoritmos para llegar a un acuerdo en una red descentralizada, deberíamos preguntarnos para que es bueno o malo cada uno de ellos. Parece que, dependiendo del objetivo, de los grupos de interés y de la hoja de ruta de una red, los términos “bueno” o “malo” son intercambiables y lo que no era lo suficientemente bueno hace 6 meses, es ahora la mejor opción para esta cadena de bloques y dicha situación.

Algoritmo Desarrollado por Mecanismo de consenso Monedas PoW ASIC AMD GPU NVIDIA GPU INTEL CPU AMD CPU
Sha – 256 Agencia de Seguridad Nacional POW BTC, BCH ASIC miner 8 Nano Pro  N/A N/A N/A N/A
Ethash Vitalik Buterin PoA, PoSpac, PoS, PoW ETH,ETC Innosilicon A10 ETHMaster RX VEGA 64 RTX 2080 Ti No se puede cargar DAG No se puede cargar DAG
Scrypt Colin Percival POW LTC,NLG Innosilicon A6 LTCMaster N/A N/A N/A N/A
CryotoNight v8 Monero team POW XMR Asic – resistente RX VEGA 64 RTX 2080 Ti Xeon E7-8870 v3 Threadripper 2990WX
x11 Evan Duffield POW DASH Spondoolies SPx36 N/A N/A N/A N/A
Equihash Alex Biryukov & Dmitry Khovratovic POW Zcash Spondoolies SPx36 RX VEGA 64 (515 Sol/s) RTX 2080 Ti N/A N/A
Blacke256 R14 J-P Aumasson & Luca Henzen & Willi Meier POW Decred MicroBT Whatsminer D1 N/A N/A N/A N/A
Blake2b NebulousINC POW SIA StrongU STU-U2 N/A N/A N/A N/A

Preguntas frecuentes

  • ¿Qué es una función Hash?

    Un gráfico de información que explica qué es una función de hash y cómo funciona.

    Las funciones Hash son funciones matemáticas que toman cualquier tipo de datos como valor de entrada, independientemente de lo que sean – letras, números, archivos y de los que la entrada deriva y devuelve una salida específica. Por ejemplo, la función de Hash md5 devolverá una salida de 32 caracteres, independientemente de cuál sea la entrada. Si escribes md5 (“hello user”) la función devolverá una salida de 32 caracteres. En el mundo de las criptomonedas, las funciones de hash se combinan en un algoritmo criptográfico. Dos buenos ejemplos son los algoritmos criptográficos SHA-256 de Bitcoin, que sólo consta de una función de Hash SHA-256, que da el nombre del algoritmo, y el algoritmo criptográfico X11 de DASH, que consta de …. lo adivinaste… 11 funciones de Hash criptográfico, con blake, bmw, groestl, keccak siendo algunas de esas 11 funciones.

  • ¿Qué es la Tolerancia a Fallas Bizantinas (BFT) y el Problema de los Generales Bizantinos?

    Un problema común en las cadenas de bloques y las redes descentralizadas es lo que la gente llama el Problema de los Generales Bizantinos. Imagina una situación en la que tenemos un grupo de generales bizantinos parados frente a una ciudad, decidiendo si atacarla o no. Cada general comanda un batallón del ejército y los generales deben llegar a un consenso sobre cuál va a ser el plan de acción: todos atacan o todos se retiran comunicándose a través de mensajeros. Las cosas se complican aún más, cuando introducimos la noción de que algunos generales son traidores y quieren sabotear el consenso y algunos mensajeros – intencionalmente o no – también pueden sabotear el consenso. Para resolver este problema y lograr el consenso mutuo, al menos dos tercios + 1 de los generales deben ser leales para mantener el consenso entre todos. La Tolerancia Bizantina a Fallos significa que un sistema puede funcionar correctamente en caso de fallo o disparidad de información y permanecer en el consenso.

  • ¿Qué es un problema de doble gasto?

    Si nos fijamos en los tiempos en los que el oro se usaba como moneda, si querías más oro tenías que ir a extraerlo de las montañas, e incluso si lo hacías, podrías no resultar en encontrarlo – una buena forma natural de controlar la circulación de la moneda y su valor en la economía. Avanzando rápidamente varios cientos de años en el mundo digital, donde incluso las monedas son digitales. El problema aquí es que no hay ningún mecanismo para controlar la circulación de la moneda, es decir, a diferencia del oro en el que no se podía ir a un amigo y copiar su oro, con la moneda digital se podía copiar un archivo, una carpeta o cualquier cosa digital en cuestión de segundos, lo que resultaba en un problema de doble gasto. Aquí es donde los algoritmos descritos en la sección anterior vienen al rescate, para ayudarnos a controlar artificialmente la circulación de la moneda y nos permiten tener una forma unificada de llegar a un acuerdo. En las redes de prueba de trabajo, por ejemplo, la complejidad del problema matemático se ajusta cada X número de bloques, para asegurarse de que hay un control artificial sobre la oferta de dinero y los participantes en la red no están simplemente copiando y pegando dinero nuevo en circulación.

.