Protocolo Mina - Una Blockchain Ligera

From Mina Wiki
Jump to navigation Jump to search

Originalmente publicado en medium

Se puede considerar que Mina es "una cartera que cabe en su bolsillo":

  • La primera criptomoneda con una blockchain ligera.
  • Blockchain comprimido desde cientos de GB (como se ve en protocolos existentes) hasta KBs de tamaño.
  • Escalable, seguro y descentralizado.
  • Permite la verificación de la blockchain en un teléfono móvil.


La blockchain de Mina siempre tiene un tamaño constante: el tamaño de unos pocos tweets, sin importar cuántas transacciones se realicen en la red.


VIDEO: hack.summit ("blockchain") 2018 - Izaak Meckler - cofundador y CTO, Protocolo Mina


En la 'criptoesfera', a menudo se nos anima a seguir el lema: "No confíe, verifique" y, a pesar de comprender la necesidad de ser un usuario activo de la red, los usuarios finales en las blockchains de hoy en día tienen menos probabilidades de operar nodos completos debido a los continuos y crecientes requisitos para hacerlo.


https://images.ctfassets.net/737jygdrovm3/51HSJhHwIYGbRYzUeEvnOv/84d8e98240ca09a711f8645109168ae6/1-1.png

Tasa de crecimiento de la blockchain Bitcoin en megabytes entre '09 –'18


Prefacio

¿Por qué no todo el mundo puede tener un nodo completo? Antes de adentrarnos, primero debemos tener los conocimientos sobre la configuración básica de un protocolo típico de criptomoneda: un procesador, también conocido como minero o staker (PoW vs PoS respectivamente), introduce una transacción en la base de datos. Luego, un nodo completo observa estas transacciones para garantizar que actúan de forma honesta. Por regla general, los usuarios finales no realizan estas comprobaciones de forma independiente; en cambio, delegan su confianza en otros participantes activos de la red. ¿Por qué lo hacen?

  • Los requisitos en materia de recursos necesarios y la complejidad de ejecutar un nodo completo desalienta a los usuarios finales.
  • Ejecutar un nodo completo en un ordenador es una tarea intensiva, imposible de llevar a cabo en un teléfono móvil.
  • Es más fácil confiar en terceros para llevar a cabo este proceso de validación.


https://images.ctfassets.net/737jygdrovm3/3ewGt5gWgDChBi0ksKYZpq/94f13bfbccbb9cda25815caa3639456b/1-2.png


En las primeras etapas de cualquier criptomoneda en particular, es relativamente fácil operar un nodo completo, ya que la blockchain es pequeña — tal vez unos pocos megabytes. Sin embargo, a medida que pasa el tiempo y se registran más transacciones, su tamaño aumenta hasta cientos de gigabytes (como se ve en el gráfico anterior). Esto a su vez, hace que sea menos realista operar un nodo completo sin un ordenador dedicado únicamente a ese propósito, y mucho menos en un teléfono móvil.


¿Cómo podemos conocer el estado actual de la blockchain, sin ver toda su historia?


Introducción a Mina

“Mina es un nuevo protocolo de criptomonedas que hace posible que cualquiera pueda sincronizarse con la red [desde cualquier dispositivo] con un nivel de seguridad de nodo completo tan solo descargando unos pocos kilobytes de datos y completando unos pocos milisegundos de computación, en lugar de los gigabytes y gigabytes de los protocolos tradicionales de criptomonedas ".


VIDEO: #243 Izaak Meckler y Evan Shapiro: Mina - Una Blockchain Ligera - Epicenter


O(1) Labs está desarrollando el Protocolo Mina abordando el problema del tamaño de su blockchain, creando la primera cadena de bloques ligera o comprimida — del tamaño de unos pocos tweets. Esto facilita la accesibilidad de los usuarios finales, reduciendo la barrera de entrada a que validen transacciones.

¿Qué lo hace posible?

  • La utilización de zk-SNARKs: comprime eficazmente los bloques en una sola demostración o certificado.
  • Los usuarios finales verifican esta demostración en lugar de verificar todo el historial de transacciones de un bloque.
  • Composición recurrente de estos SNARKs / certificados — haciendo posible una blockchain de tamaño constante.


Los zk-SNARKs son una iteración de demostraciones con conocimiento cero: un esquema criptográfico donde el conocimiento cero se retransmite a un verificador cuando aporta la demostración de un cálculo computacional.


Cómo funciona Mina

zk-SNARKs en Mina

En el núcleo del Protocolo Mina se encuentra el uso de zk-SNARKs. Estos pueden utilizarse para certificar cualquier cálculo computacional.

Los zk-SNARKs funcionan como certificados infalsificables para demostrar que un cálculo se realizó correctamente, sin necesidad de comprobar todos los cálculos previos. Como hemos mencionado, podemos tomar cualquier cálculo, como el de verificar las transacciones de un bloque, y crear un SNARK a partir de él. Este SNARK demuestra la precisión del historial de transacciones de un bloque, sin tener que demostrar todas las transacciones previas. Esto disminuye de forma efectiva el tamaño de un bloque a un solo SNARK (~ 1kB).

El SNARK verifica TODAS las reglas de consenso.

Asegura que:

  • Todas las transacciones están firmadas.
  • Todas son válidas.
  • Reglas de consenso (potencia total de hash + fuerza de la cadena para aplicar PoW, y la Función Aleatoria Variable / otras reglas para PoS).


Si el SNARK no se genera de forma honesta, éste no es válido. Cualquiera en la red podría detectarlo de forma prácticamente instantánea desde dispositivos tan ‘ligeros’ como una Raspberry Pi o un smartphone.


Mantener los requerimientos de recursos suficientemente bajos para poder verificar las transacciones de un bloque sin confiar en terceros es el primer paso para crear una solución sostenible y escalable para el problema en cuestión.


https://images.ctfassets.net/737jygdrovm3/4nTxxsmVHxTqXO7mRRKs8H/0c919c3d488edd7572c3bb965eaf1f8f/1-3.png


un procesador de SNARKs crea un SNARK / certificado de la validez de un bloque que puede retransmitirse como demostración, sin necesidad de incluir todo el histórico de transacciones.


Una conversación muy real entre un procesador Mina y un usuario final:

    "Hola verificador / usuario final! Creé un certificado para que puedas verificar fácilmente el historial de transacciones de un bloque. Este proceso requirió de mucha potencia de procesado, por lo que soy recompensado por este trabajo. Puedes comprobar la precisión de esta demostración verificando el SNARK, que solamente necesitará de unos pocos kilobytes de espacio libre. De esta manera, ¡no tendrás que descargar cientos de gigabytes para verificar la blockchain! "- Procesador SNARK.
    “MUCHAS gracias, procesador. ¡Verificaré este certificado! Y como es tan ligero, no tengo que confiar en un tercero para que verifique la blockchain en mi lugar, por fin puedo operar un nodo de validación y una cartera en un dispositivo como mi teléfono móvil. ¡Gracias! La vida es maravillosa.”- Usuario final.


Reemplazar cada bloque con un SNARK no es una solución completa.


Inicialmente, se estimó que podríamos crear fácilmente un SNARK para cada bloque, comprimiendo cada bloque a aproximadamente un kilobyte, y listos. Sin embargo, a lo largo del tiempo esto provocaría un crecimiento lineal a medida que los SNARKs se fueran acumulando, aunque en un grado mucho menor que en las blockchain existentes.

¿Cómo podemos arreglarlo?

Bueno, sabemos que un SNARK puede utilizarse para certificar cualquier cálculo. Crear un SNARK es un cálculo en sí mismo, entonces, ¿qué ocurre si creamos un SNARK de múltiples SNARK?


https://images.ctfassets.net/737jygdrovm3/5Lqet9vwUNcoPA7cITKgSn/bd27f3eb4fed88ebcc2b67a3c30e15e3/1-4.png

Múltiples certificados / SNARKs, cada uno verificado por un usuario final.


Una composición recursiva de SNARKs en Mina

Como se mencionó anteriormente, podemos encadenar estos certificados juntos en una composición recursiva y permitir que la blockchain mantenga un tamaño constante de ~20kB (SNARK + final de la ruta de Merkle).

Cada vez que se genera un nuevo bloque se crea un nuevo SNARK/certificado. Al generar un único SNARK compuesto por los certificados anteriores, en cierto sentido estamos generando un “mega” SNARK que demuestra la validez de todo el historial de transacciones de la blockchain, permitiéndonos saltar desde bloque génesis al estado actual manteniendo el tamaño de un solo certificado.


https://images.ctfassets.net/737jygdrovm3/3m5TprmPl8RP0EG7IQC4Eu/c2579a593d3b3d5cabfd0180439c090a/1-5.png

Múltiples certificados/SNARKs dentro de un solo certificado/SNARK.


Simplificando la idea, supongamos que tenemos:

  • Un certificado que indica que podemos pasar del Bloque 0 al Bloque 2.
  • Un certificado adicional que indica que podemos pasar del Bloque 2 al Bloque 4.


Entonces, podemos combinar estos SNARKs en un solo SNARK que indica que podemos pasar del Bloque 0 al Bloque 4.

El nuevo SNARK / certificado mantiene el tamaño de ~ 1kB. En una escala mayor, podemos crear un certificado englobando todo el historial de transacciones de la blockchain que además mantenga el tamaño constante, a pesar de la cantidad de certificados "embutidos" en el SNARK más reciente.

Un nodo de validación en Mina estará compuesto de:

Un zk-SNARK compuesto de forma recursiva (1kB) que demuestra la validez de todo el histórico de la blockchain y la ruta de la raíz de merkle del estado actual (20kB); juntos demuestran la validez del saldo de la cartera de un usuario. Todo sincronizado en unos milisegundos.


https://images.ctfassets.net/737jygdrovm3/193WcCJaGJkFueHcfIlJTM/9fe6f0eada2bf3948d9ed0df3b54af64/1-6.png


El Usuario final verifica un SNARK con el estado actual que incluye todos los certificados anteriores, así como la ruta de Merkle. Todo combinado permite al usuario validar su saldo.


Aplicaciones, Descentralización y Escalabilidad

Aplicaciones

La construcción del protocolo Mina permite que la blockchain sea fácilmente accesible para los usuarios finales a través de su navegador y aplicaciones sin necesidad de descargar cientos de gigabytes y sin delegar su confianza.

Imagine una aplicación como por ejemplo una cartera súper ligera en la que no está obligado a confiar en que el desarrollador esté realizando el proceso de verificación correctamente. Los usuarios finales podrían completar este proceso de validación sin necesidad de disponer de hardware dedicado para ello.

'Cualquier dispositivo podría operar un nodo de validación', incluidos, entre otros, 'smartphones, el propio navegador o en teléfonos móviles antiguos' (sí, su antiguo e indestructible Nokia).

Descentralización

Como hemos comentado, los usuarios finales de los protocolos de criptomonedas actuales terminan delegando su confianza en servicios como carteras online o clientes ligeros en el caso de la minería. Esto podría resultar problemático en el caso de un ataque del 51%, ya que el deber de verificar las transacciones a menudo se concentra en manos de estos proveedores de servicios.

Al proporcionar a los participantes de la red una forma fácil de operar nodos de validación, 'la descentralización se incrementa' a medida que las transacciones son validadas por un conjunto más amplio de participantes: 'los usuarios finales'.

Escalabilidad

En términos de mejora de escalabilidad, aumentar el rendimiento a miles de transacciones/segundo en los protocolos existentes produciría una mayor volumen de datos para verificar. Inevitablemente, esto terminaría con una blockchain que crece más rápido de lo que puede ser verificada.

Sin embargo, dado que Mina mantiene su blockchain en un tamaño constante, somos capaces de mitigar el volumen de datos necesarios para la verificación de las transacciones. Esto nos permite alcanzar cotas altas de rendimiento ya que los datos a verificar se encuentran comprimidos varios órdenes de magnitud.


Conclusiones

Al crear una blockchain que mantiene un tamaño constante, Mina reduce la barrera de entrada permitiendo que los propios usuarios finales verifiquen las transacciones directamente.

  • No es necesario delegar la confianza en aquellos participantes dispuestos a operar un nodo completo, como es el caso de las blockchains tradicionales.
  • Conseguir una seguridad equivalente a un nodo completo prácticamente en cualquier dispositivo descargando un solo SNARK que actúa como un certificado de la validez de toda la blockchain y su ruta de merkle.
  • Utilizando una composición recursiva de SNARKs, el tamaño de la blockchain puede mantenerse en ~ 20kB.
  • Disponer de una amplia red de nodos de validación aumenta la descentralización a medida que más usuarios finales están equipados para participar en el proceso de verificación de la red.


Bonus:

Puedes pensar en Mina como una blockchain comprimida en una PokéBall. En lugar de meter un Snorlax en una Pokéball, Mina comprime la blockchain en un solo SNARK.


https://images.ctfassets.net/737jygdrovm3/5hPenGpbRl77zBrshJalqT/23d945def0625fa4156adc90b050c2af/1-7.png

De la presentación de ZCon0 - Izaak Meckler