Ejecución Paralela: La Próxima Generación de Cadenas de Bloques

Avanzado5/10/2024, 10:43:24 AM
Shoal Research, una institución de investigación en criptografía, analizó los proyectos relacionados actuales en el campo paralelo de la cadena de bloques, incluyendo el progreso de Solana (SVM), EVM paralelo (Sei, Monad) y MoveVM (Aptos, Sui, Movement), y analizó los desafíos enfrentados en este campo y las oportunidades.

Preludio

1.0 Transacciones de Cadena de bloques

Las cadenas de bloques son máquinas virtuales, un modelo de computación basado en software que se ejecuta en una red distribuida de computadoras físicas a la que cualquiera puede unirse, pero es extremadamente difícil para cualquier entidad única controlar. El concepto de una cadena de bloques fue descrito por primera vez por Satoshi Nakomoto en el infame libro blanco de Bitcoin en 2008, como la infraestructura principal que permite pagos entre pares criptográficamente seguros en Bitcoin. Las transacciones son para las cadenas de bloques lo que los registros son para las empresas de redes sociales e internet; sirven como registros de actividad para esa red en particular, siendo la diferencia clave que las transacciones en una cadena de bloques son inmutables y a menudo públicamente observables.

Pero ¿qué es exactamente una transacción?

Las transacciones en cadenas de bloques implican la transferencia de activos digitales desde una dirección en el libro mayor distribuido a otra, aseguradas por el uso de criptografía de clave pública. Las transacciones se pueden utilizar para transferencias descentralizadas de igual a igual, o para diversos procesos de autenticación y verificación también.

Un ejemplo de una transacción que cualquiera puede observar en un explorador de cadenas de bloques como SeiTrace

1.1 Cómo funcionan las transacciones de la Cadena de bloques

Cuando se inicia una transacción, es decir, Bob envía algunos tokens a Alice, la transacción de Bob se transmite a la red de cadena de bloques subyacente. Posteriormente, grupos de nodos especializados en la red se encargan de verificar y validar la transacción como legítima. Una vez que suficientes de estos nodos han verificado el contenido de la transacción, la transacción se agrega a un bloque junto con otras transacciones de usuarios. Una vez que un bloque está lleno, se agrega a la cadena, de ahí el nombre 'cadena de bloques'. La transacción de Bob ahora es parte de un libro mayor seguro y transparente, y tanto él como Alice pueden verificar el contenido.

En términos generales, todas las transacciones de la cadena de bloques contienen metadatos que ayudan a los nodos a operar y asegurar la red para identificar y ejecutar un conjunto dado de instrucciones y parámetros. Cada transacción tendrá datos de alto nivel ingresados por el remitente original, como la cantidad a transferir, la dirección de destino y la firma digital para confirmar la transacción, así como diversos datos de bajo nivel que se crean y adjuntan automáticamente, aunque estos datos varían según la red y el diseño.

En última instancia, sin embargo, los procesos involucrados detrás de escena en la capa de red antes de la ejecución de la transacción varían según el diseño de la cadena de bloques.

1.1.1 Mempool

Una memoria compartida, o mempool, es una característica común de los diseños de cadenas de bloques, implementada por redes de cadenas de bloques tradicionales como Bitcoin y Ethereum. Los mempools son simplemente zonas de búfer, o 'salas de espera', para transacciones pendientes que aún no se han agregado a un bloque y ejecutado.

Para entender mejor, podemos describir el ciclo de vida de una transacción en una cadena de bloques que utiliza un mempool;

  1. El usuario inicia y firma una transacción.
  2. Nodos especializados que participan en la red de cadena de bloques verifican que el contenido de la transacción sea legítimo y contenga parámetros apropiados.
  3. Una vez verificada, la transacción se dirige al mempool público junto con otras transacciones pendientes.
  4. Eventualmente, dependiendo de la tarifa de gas pagada por la transacción en relación con otras transacciones en la mempool, la transacción pendiente de nuestro usuario se selecciona con un grupo de otras transacciones pendientes para formar el siguiente bloque en la cadena de bloques. En esta etapa, el estado de nuestra transacción leerá "Exitoso".
  5. Después de que haya pasado cierto tiempo o umbral basado en bloques, el bloque en sí se finaliza y la transacción se convierte en un registro inmutable registrado en la cadena de bloques, que solo podría comprometerse en caso de un ataque del 51%, una tarea extremadamente difícil de realizar de otra manera.

1.1.2. No Mempool (Solana)

Es importante tener en cuenta que algunas cadenas de bloques, como Solana, no utilizan un mempool y en su lugar pueden enviar las transacciones directamente al productor de bloques como un medio para permitir una alta velocidad y rendimiento a través de una producción de bloques continua.

Recorramos el ciclo de vida de una transacción en una blockchain sin mempool:

  1. El usuario inicia y firma una transacción para una aplicación que está utilizando.
  2. La aplicación enruta la información de la transacción al servidor de Llamada a Procedimiento Remoto (RPC).
  3. El proveedor de RPC envía la transacción al productor de bloques designado actual, y a los tres productores siguientes; este es un paso de precaución en caso de que el líder actual no pueda ejecutar la transacción a tiempo. Solana emplea un programa de líder de ranura que ayuda a los RPC a enrutar las transacciones más fácilmente.
  4. El productor de bloques luego envía la transacción firmada a los nodos de consenso para su verificación.
  5. Los nodos de consenso votan para verificar el contenido de la transacción, y una vez completada, el estado de la transacción se envía de vuelta a RPC > aplicación > usuario como 'éxito' o 'fallido'.
  6. Similar to mempool-based blockchains, the block itself is finalized after a certain time or block-based threshold has passed.

1.2 Ejecución Secuencial

Las cadenas de bloques más antiguas, a saber, Bitcoin y Ethereum, utilizan un mecanismo de ejecución secuencial para las transacciones. Cada transacción agregada a la cadena de bloques invoca un cambio en el estado de la red, y la VM está estructurada para procesar solo un cambio de estado a la vez con fines de seguridad.

Esto ha provocado cuellos de botella significativos para el rendimiento de la red subyacente, ya que el número de transacciones que se pueden agregar al bloque se limita, lo que conduce a tiempos de espera más largos y picos sin precedentes en los costos de transacción que pueden hacer que la red sea inutilizable en ocasiones. Además, los modelos de ejecución secuencial utilizan componentes de hardware de manera bastante ineficiente y, por lo tanto, no se benefician de los avances en computación, es decir, múltiples núcleos de procesador.

Ejecución paralela

2.0 ¿Qué es la Ejecución Paralela?

La computación paralela es un componente clave de la arquitectura de computadoras cuyos orígenes se remontan tan lejos como elfinales de la década de 1950, aunque su ideación y teoría incluso se remontan a 1837. Por definición, la computación paralela se refiere al acto de utilizar múltiples elementos de procesamiento simultáneamente para resolver una operación, en la cual una tarea más grande y compleja se divide en tareas más pequeñas para completarse de manera más eficiente que de forma serial.

Originalmente implementado solo en sistemas de computación de alto rendimiento, la computación paralela ha evolucionado para convertirse en el paradigma dominante en la arquitectura de computadoras hoy en día, ya que la demanda de cálculo ha aumentado exponencialmente en la era de internet, exacerbada por las limitaciones de la escala de frecuencia en décadas anteriores.

Este estándar arquitectónico se aplica a las cadenas de bloques de la misma manera, solo que la tarea principal que resuelven las computadoras es el procesamiento y ejecución de transacciones, o la transferencia de valor del contrato inteligente A al contrato inteligente B, de ahí el término ejecución paralela.

La ejecución paralela significa que en lugar de procesar transacciones de forma serial, una cadena de bloques puede procesar múltiples transacciones no conflictivas simultáneamente. Esto puede aumentar enormemente el rendimiento de una red de cadena de bloques, haciéndola más escalable y eficiente para manejar cargas de actividad más altas y demanda de espacio de bloque.

Para una analogía más simple. considera la eficiencia de una tienda de comestibles con múltiples carriles para que los compradores paguen. frente a solo uno para todos.

¿Por qué es importante la ejecución paralela?

La ejecución paralela en las cadenas de bloques está diseñada para desbloquear eficiencias en la velocidad y rendimiento de una red, especialmente a medida que la red ve un mayor tráfico y demanda de recursos. En el contexto de los ecosistemas criptográficos, la ejecución paralela significa que si Bob quiere acuñar la última colección popular de NFT, y Alice quiere comprar su memedivisa favorita, la red servirá a ambos usuarios sin comprometer la calidad en el rendimiento y, por lo tanto, la experiencia del usuario.

Si bien esto puede parecer simplemente una característica intuitiva de calidad de vida, los desbloqueos en el rendimiento de la red habilitados por la ejecución paralela abren paso al desarrollo de nuevos e innovadores casos de uso y aplicaciones que pueden aprovechar la baja latencia y altos volúmenes, lo que en sí mismo sienta las bases para incorporar a la próxima cohorte masiva de usuarios a los ecosistemas criptográficos.

¿Cómo funciona la ejecución paralela?

Aunque la premisa de la ejecución paralela es bastante sencilla, los matices en los diseños de las cadenas de bloques subyacentes afectan cómo se desarrolla el proceso de ejecución paralela en sí. La característica más relevante para diseñar cadenas de bloques con ejecución paralela es la capacidad de las transacciones de acceder al estado de su red subyacente, incluidos los saldos de las cuentas, el almacenamiento y los contratos inteligentes.

La ejecución paralela en blockchains se puede categorizar como determinista u optimista. La ejecución paralela determinista, empleada por blockchains como Solana, requiere inherentemente que las transacciones declaren todas las dependencias de memoria por adelantado, es decir, qué partes del estado global desean acceder por adelantado. Si bien este paso crea una sobrecarga adicional para los desarrolladores, más ampliamente permite a la red ordenar e identificar transacciones no conflictivas antes de la ejecución, creando un sistema optimizado que es predecible y eficiente. Por otro lado, la ejecución paralela optimista está estructurada para procesar todas las transacciones en paralelo, operando bajo el supuesto inherente de que no hay conflictos. Esto permite que la blockchain subyacente entregue una ejecución de transacciones más rápida, aunque a costa de una posible reejecución posterior en caso de conflicto. Si se encuentran dos transacciones en conflicto, el sistema puede volver a procesarlas y reejecutarlas ya sea en paralelo o secuencialmente.

Para comprender mejor las implicaciones de estas sutilezas de diseño, puede ser útil analizar la ejecución en paralelo a través del prisma de los equipos que están empujando la frontera de la ejecución en paralelo hoy en día.

Estado de la Ejecución Paralela Hoy

Para entender mejor las implicaciones de estas complejidades de diseño, puede ser útil analizar la ejecución en paralelo a través del prisma de los equipos que están empujando la frontera de la ejecución en paralelo hoy en día.

3.1 Máquina Virtual Solana (SVM)

Solana fue la primera red de cadena de bloques diseñada en torno a la ejecución paralela, inspirada en la experiencia previa del fundador Anatoly Yakovenko en la industria de las telecomunicaciones. Solana tiene como objetivo proporcionar una plataforma para desarrolladores que funcione tan rápido como lo permite la física, por lo tanto, la velocidad y la eficiencia desbloqueadas por la computación paralela fueron una elección de diseño simple e intuitiva.

Un componente crítico para habilitar la velocidad y el alto rendimiento de Solana es Sealevel, el entorno de ejecución de contratos inteligentes en paralelo de la red. A diferencia de los entornos basados en EVM y WASM, Sealevel emplea una arquitectura multi-threaded, lo que significa que puede procesar múltiples transacciones simultáneamente hasta la capacidad del núcleo del validador.

La clave para habilitar la ejecución paralela de Solana es que cuando se habilita una transacción, la red asignará una lista de instrucciones para que esa transacción se ejecute, específicamente qué cuentas y estado acceder y qué cambios hacer, esto es clave para determinar qué transacciones no son conflictivas y pueden ejecutarse simultáneamente, así como habilitar transacciones que intentan acceder al mismo estado para hacerlo concurrentemente.

Considere la eficiencia que proporcionan las etiquetas a los sistemas de equipaje registrado en los aeropuertos.

Solana también utiliza Cloudbreak, su propio accountsDB personalizado, para almacenar y gestionar datos de estado y permitir lecturas y escrituras concurrentes de transacciones. Cloudbreak, optimizado para ejecución paralela, escala horizontalmente para distribuir y gestionar datos de estado en múltiples nodos.

Gracias a su arquitectura paralela, Solana puede manejar un gran número de transacciones y aún así ejecutarse rápidamente, lo que proporciona transacciones con una finalidad casi instantánea. Solana maneja entre 2,000 y 10,000 transacciones por segundo (TPS) en promedio hoy. Además, los casos de uso para el SVM se están expandiendo lentamente pero con seguridad, ya que equipos como Eclipse están implementando infraestructuras de Capa 2 que tienen como objetivo aprovechar el SVM como entorno de ejecución.

3.2 EVM Paralelo

El EVM Paralelo describe un nuevo entorno de ejecución para blockchains que tiene como objetivo llevar lo mejor de los diseños de Solana y Ethereum, con la velocidad y el rendimiento de Solana, y la seguridad y liquidez de Ethereum. Al procesar transacciones en paralelo en lugar de secuencialmente según el diseño tradicional de EVM, los EVM paralelos permiten a los desarrolladores construir aplicaciones en una red altamente eficiente al poder aprovechar las conexiones a la liquidez y las herramientas de desarrollo de EVM.

3.2.1 Sei Network

Sei Network es una cadena de bloques de capa 1 de código abierto compatible con EVM, que alberga una variedad de aplicaciones descentralizadas construidas en torno a un alto rendimiento. Sei fue construido para ofrecer velocidades rápidas a costos bajos para usuarios y desarrolladores, y la ejecución paralela es un componente clave para habilitar este rendimiento y UX. Actualmente, Sei ofrece tiempos de confirmación de bloque de 390ms y ha procesado más de 1.9B transacciones en su mainnet del Pacífico.

Originalmente, Sei empleaba un modelo determinista de ejecución paralela, en el cual los contratos inteligentes declaraban su acceso al estado requerido con antelación para que el sistema pudiera ejecutar transacciones no conflictivas simultáneamente. Con el inicio de su actualización V2, Sei está realizando la transición a un modelo paralelo optimista, lo que significa que todas las transacciones se procesarán en paralelo una vez que se envíen a la red (la etapa de ejecución), y luego se revisarán en busca de información conflictiva con transacciones anteriores (la etapa de validación). En caso de dos o más transacciones conflictivas, es decir, transacciones que intentan acceder al mismo estado de red, Sei identifica este punto de conflicto y luego vuelve a ejecutar las transacciones ya sea en paralelo o secuencialmente dependiendo de la naturaleza del conflicto.

Para almacenar y mantener los datos de transacción, Sei también introducirá SeiDB, una base de datos personalizada que tiene como objetivo mejorar las deficiencias de la v1 optimizando la ejecución en paralelo. SeiDB busca reducir la sobrecarga de almacenar datos redundantes y mantener un uso eficiente del disco para mejorar el rendimiento de la red. La V2 reduce la cantidad de metadatos necesarios para seguimiento y almacenamiento, y habilita un registro de escritura previa para ayudar con la recuperación de datos en caso de un fallo.

Por último, Sei también ha anunciado recientemente el lanzamiento de su Parallel Stack, un marco de código abierto para permitir que las soluciones de escalado de Capa 2, es decir, rollups, utilicen y se beneficien de la ejecución paralela.

3.2.2 Monad

Monad es una próxima cadena de bloques paralela de capa 1 que ofrece compatibilidad completa de bytecode y RPC para aplicaciones e infraestructura de Ethereum. A través de una serie de implementaciones técnicas innovadoras, Monad tiene como objetivo ofrecer experiencias más interactivas que las cadenas de bloques existentes, al tiempo que mantiene costos de transacción más bajos mediante la optimización del rendimiento y la portabilidad, con tiempos de bloque de 1 segundo y finalidad con hasta 10,000 TPS.

Monad implementa la ejecución paralela y el pipeline superscalar para optimizar la velocidad y el rendimiento de las transacciones. Similar a Sei v2, Monad empleará un modelo de ejecución optimista, lo que significa que la red comienza a ejecutar todas las transacciones entrantes simultáneamente, y luego analiza y valida las transacciones para buscar conflictos y volver a ejecutarlas en consecuencia, con el objetivo final de que el resultado sea idéntico a si las transacciones se hubieran ejecutado secuencialmente.

Es importante tener en cuenta que para mantener la sincronización con Ethereum, Monad ordena las transacciones en un bloque en orden lineal, con cada transacción actualizada secuencialmente.

Para mantener y acceder a los datos de la cadena de bloques de manera más eficiente que el estado actual que ofrecen los clientes de Ethereum, Monad creó su propio MonadDB personalizado, construido nativamente para cadenas de bloques. Monad DB aprovecha las características avanzadas del kernel de Linux para operaciones eficientes de disco asíncronas, eliminando las limitaciones del acceso síncrono de entrada/salida. MonadDB ofrece acceso de entrada/salida asíncrono (E/S asíncrona), una característica clave para habilitar la ejecución en paralelo, donde el sistema puede comenzar a procesar la siguiente transacción mientras espera para leer el estado de una transacción anterior.

Para una analogía simple, considera cocinar una comida multifacética (espaguetis con albóndigas). Los pasos involucrados son 1) preparar una salsa, 2) cocinar las albóndigas y c) cocinar la pasta. Un chef eficiente comenzaría hirviendo agua para la pasta, luego preparando los ingredientes para la salsa, luego lanzando la pasta en el agua hirviendo, luego cocinando la salsa y, finalmente, las albóndigas, en lugar de hacer cada paso uno por uno, completando una tarea en su totalidad antes de pasar a la siguiente.

3.3 Mover

Move es un lenguaje de programación desarrollado originalmente por el equipo de Facebook en 2019 para su proyecto ahora desaparecido Diem. Move fue diseñado para manejar contratos inteligentes y datos de transacciones de manera segura, eliminando vectores de ataque nativos de otros idiomas como ataques de reentrada.

El MoveVM sirve como el entorno de ejecución nativo para cadenas de bloques basadas en Move, aprovechando la paralelización para ofrecer velocidades de ejecución de transacciones más rápidas y una mayor eficiencia general.

3.3.1 Aptos

Aptos es una cadena de bloques basada en Move de la Capa 1 desarrollada por miembros del antiguo proyecto Diem, que implementa la ejecución paralela para ofrecer un entorno de alto rendimiento para los desarrolladores de aplicaciones. Aptos utiliza Block-STM, una implementación modificada del mecanismo de control de concurrencia de Memoria Transaccional de Software (STM).

Block-STM es un motor de ejecución paralela multinúcleo que permite la ejecución paralela optimista. Las transacciones están preordenadas y secuenciadas estratégicamente dentro de bloques, lo cual es clave para resolver conflictos eficientemente y reejecutar esas transacciones. La investigación realizada por Aptos ha encontrado que hasta 160K TPS pueden ser teóricamente soportados utilizando la paralelización de Block-STM.

3.3.2 Sui

Similar to Aptos, Sui es una cadena de bloques de capa 1 desarrollada por antiguos miembros del proyecto Diem, que utiliza el lenguaje Move. Sin embargo, Sui utiliza una implementación personalizada de Move que cambia el modelo de almacenamiento y los permisos de activos del diseño original de Diem. En particular, esto permite que Sui utilice un modelo de almacenamiento de estado para representar transacciones independientes como objetos. Cada objeto tiene un ID único dentro del entorno de ejecución de Sui, y al hacerlo, esto permite que el sistema identifique fácilmente transacciones no conflictivas y las procese en paralelo.

Similar a Solana, Sui implementa ejecución paralela determinística, lo que requiere que las transacciones indiquen de antemano a qué cuentas necesitan acceder.

3.3.3 Laboratorios de Movimiento

¿Qué es Movement?

Movement está construyendo un conjunto de herramientas para desarrolladores y servicios de infraestructura de cadena de bloques para permitir que los desarrolladores accedan fácilmente a los beneficios de construir en Move. Operando como un proveedor de ejecución como servicio similar a AWS para los desarrolladores de Move, Movement implementa la paralelización como una característica de diseño central para permitir un mayor rendimiento y una mayor eficiencia general de la red. El MoveVM es un entorno de ejecución modular que permite a las redes de cadena de bloques expandir y ajustar sus capacidades de procesamiento de transacciones según sea necesario para poder soportar un volumen creciente de transacciones, fortaleciendo sus capacidades para procesar y ejecutar transacciones en paralelo.

Arquitectura MoveVM

El movimiento también lanzará M2, un ZK-rollup que será interoperable tanto con clientes EVM como Move. M2 heredará el motor de paralelización Block-STM y se espera que entregue decenas de miles de TPS como resultado.

Pensamientos finales

4.1 Desafíos para los sistemas paralelos hoy

Algunas preguntas importantes y consideraciones que deben ser reflexionadas con respecto al desarrollo de cadenas de bloques paralelas;

  • ¿Qué compensaciones está haciendo la red para permitir un mejor rendimiento a través de la ejecución paralela?
    • Menos validadores asegurando la red permite velocidades de verificación y ejecución más rápidas, pero ¿esto compromete la seguridad de la cadena de bloques en el sentido de que se vuelve más fácil para los validadores coludir contra la red?
    • ¿Hay un número significativo de validadores co-localizados? Esta es una estrategia común para minimizar la latencia en sistemas tanto criptográficos como no criptográficos, pero ¿qué sucede con la red en caso de que ese centro de datos en particular sea comprometido?
  • Para sistemas paralelos optimistas, ¿el proceso de volver a ejecutar transacciones inválidas crea un cuello de botella a medida que la red se expande? ¿Cómo se está probando y evaluando esta eficiencia?

A un alto nivel, las cadenas de bloques paralelas enfrentan el riesgo de inconsistencias en el libro mayor, es decir, el doble gasto y cambios en el orden de las transacciones (de hecho, este es el beneficio clave de la ejecución secuencial). La paralelización determinista aborda esto creando un sistema de etiquetado interno para las transacciones en la cadena de bloques subyacente. Las cadenas de bloques que implementan procesamiento optimista deben garantizar que los mecanismos que utilizan para validar y volver a ejecutar transacciones sean seguros y funcionales, y que los compromisos realizados en términos de rendimiento puedan implementarse razonablemente.

4.2 Perspectivas futuras / Oportunidades

La historia de las computadoras nos ha enseñado que los sistemas paralelos tienden a ser más eficientes y escalables con el tiempo que los sistemas secuenciales. El surgimiento de las cadenas de bloques paralelas post-Solana enfatiza que esta noción también se aplica a la infraestructura criptográfica. Incluso Vitalik ha insinuado paralelizacióncomo una de las soluciones clave potenciales para mejorar la escalabilidad de los rollups de EVM recientemente. En términos generales, el crecimiento de la adopción de criptomonedas/cadenas de bloques exige sistemas que sean más óptimos que los disponibles hoy en día, incluidas las blockchains paralelas. Las recientes dificultades de la red de Solana han destacado que hay mucho margen de mejora en el desarrollo de blockchains paralelas. A medida que más equipos buscan empujar los límites de la frontera onchain y atraer a la próxima cohorte masiva de usuarios y adopción a aplicaciones y ecosistemas nativos de cadenas de bloques, los modelos de ejecución paralela proporcionan un marco intuitivo para construir sistemas que puedan manejar eficientemente magnitudes de actividad en red a una escala que se equipare con la de las empresas Web2 con facilidad.

Obras citadas

Descargo de responsabilidad:

  1. Este artículo es una reimpresión de [bajío], Reenviar el Título Original 'Ejecución Paralela: La Próxima Generación de Cadenas de Bloques', Todos los derechos de autor pertenecen al autor original [PAUL TIMOFEEV, MIKE JINYGABE TRAMBLE]. Si hay objeciones a esta reimpresión, por favor contacta al Gate Aprenderequipo y lo resolverán rápidamente.

  2. Renuncia de responsabilidad: Las opiniones expresadas en este artículo son únicamente las del autor y no constituyen ningún consejo de inversión.

  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.

Ejecución Paralela: La Próxima Generación de Cadenas de Bloques

Avanzado5/10/2024, 10:43:24 AM
Shoal Research, una institución de investigación en criptografía, analizó los proyectos relacionados actuales en el campo paralelo de la cadena de bloques, incluyendo el progreso de Solana (SVM), EVM paralelo (Sei, Monad) y MoveVM (Aptos, Sui, Movement), y analizó los desafíos enfrentados en este campo y las oportunidades.

Preludio

1.0 Transacciones de Cadena de bloques

Las cadenas de bloques son máquinas virtuales, un modelo de computación basado en software que se ejecuta en una red distribuida de computadoras físicas a la que cualquiera puede unirse, pero es extremadamente difícil para cualquier entidad única controlar. El concepto de una cadena de bloques fue descrito por primera vez por Satoshi Nakomoto en el infame libro blanco de Bitcoin en 2008, como la infraestructura principal que permite pagos entre pares criptográficamente seguros en Bitcoin. Las transacciones son para las cadenas de bloques lo que los registros son para las empresas de redes sociales e internet; sirven como registros de actividad para esa red en particular, siendo la diferencia clave que las transacciones en una cadena de bloques son inmutables y a menudo públicamente observables.

Pero ¿qué es exactamente una transacción?

Las transacciones en cadenas de bloques implican la transferencia de activos digitales desde una dirección en el libro mayor distribuido a otra, aseguradas por el uso de criptografía de clave pública. Las transacciones se pueden utilizar para transferencias descentralizadas de igual a igual, o para diversos procesos de autenticación y verificación también.

Un ejemplo de una transacción que cualquiera puede observar en un explorador de cadenas de bloques como SeiTrace

1.1 Cómo funcionan las transacciones de la Cadena de bloques

Cuando se inicia una transacción, es decir, Bob envía algunos tokens a Alice, la transacción de Bob se transmite a la red de cadena de bloques subyacente. Posteriormente, grupos de nodos especializados en la red se encargan de verificar y validar la transacción como legítima. Una vez que suficientes de estos nodos han verificado el contenido de la transacción, la transacción se agrega a un bloque junto con otras transacciones de usuarios. Una vez que un bloque está lleno, se agrega a la cadena, de ahí el nombre 'cadena de bloques'. La transacción de Bob ahora es parte de un libro mayor seguro y transparente, y tanto él como Alice pueden verificar el contenido.

En términos generales, todas las transacciones de la cadena de bloques contienen metadatos que ayudan a los nodos a operar y asegurar la red para identificar y ejecutar un conjunto dado de instrucciones y parámetros. Cada transacción tendrá datos de alto nivel ingresados por el remitente original, como la cantidad a transferir, la dirección de destino y la firma digital para confirmar la transacción, así como diversos datos de bajo nivel que se crean y adjuntan automáticamente, aunque estos datos varían según la red y el diseño.

En última instancia, sin embargo, los procesos involucrados detrás de escena en la capa de red antes de la ejecución de la transacción varían según el diseño de la cadena de bloques.

1.1.1 Mempool

Una memoria compartida, o mempool, es una característica común de los diseños de cadenas de bloques, implementada por redes de cadenas de bloques tradicionales como Bitcoin y Ethereum. Los mempools son simplemente zonas de búfer, o 'salas de espera', para transacciones pendientes que aún no se han agregado a un bloque y ejecutado.

Para entender mejor, podemos describir el ciclo de vida de una transacción en una cadena de bloques que utiliza un mempool;

  1. El usuario inicia y firma una transacción.
  2. Nodos especializados que participan en la red de cadena de bloques verifican que el contenido de la transacción sea legítimo y contenga parámetros apropiados.
  3. Una vez verificada, la transacción se dirige al mempool público junto con otras transacciones pendientes.
  4. Eventualmente, dependiendo de la tarifa de gas pagada por la transacción en relación con otras transacciones en la mempool, la transacción pendiente de nuestro usuario se selecciona con un grupo de otras transacciones pendientes para formar el siguiente bloque en la cadena de bloques. En esta etapa, el estado de nuestra transacción leerá "Exitoso".
  5. Después de que haya pasado cierto tiempo o umbral basado en bloques, el bloque en sí se finaliza y la transacción se convierte en un registro inmutable registrado en la cadena de bloques, que solo podría comprometerse en caso de un ataque del 51%, una tarea extremadamente difícil de realizar de otra manera.

1.1.2. No Mempool (Solana)

Es importante tener en cuenta que algunas cadenas de bloques, como Solana, no utilizan un mempool y en su lugar pueden enviar las transacciones directamente al productor de bloques como un medio para permitir una alta velocidad y rendimiento a través de una producción de bloques continua.

Recorramos el ciclo de vida de una transacción en una blockchain sin mempool:

  1. El usuario inicia y firma una transacción para una aplicación que está utilizando.
  2. La aplicación enruta la información de la transacción al servidor de Llamada a Procedimiento Remoto (RPC).
  3. El proveedor de RPC envía la transacción al productor de bloques designado actual, y a los tres productores siguientes; este es un paso de precaución en caso de que el líder actual no pueda ejecutar la transacción a tiempo. Solana emplea un programa de líder de ranura que ayuda a los RPC a enrutar las transacciones más fácilmente.
  4. El productor de bloques luego envía la transacción firmada a los nodos de consenso para su verificación.
  5. Los nodos de consenso votan para verificar el contenido de la transacción, y una vez completada, el estado de la transacción se envía de vuelta a RPC > aplicación > usuario como 'éxito' o 'fallido'.
  6. Similar to mempool-based blockchains, the block itself is finalized after a certain time or block-based threshold has passed.

1.2 Ejecución Secuencial

Las cadenas de bloques más antiguas, a saber, Bitcoin y Ethereum, utilizan un mecanismo de ejecución secuencial para las transacciones. Cada transacción agregada a la cadena de bloques invoca un cambio en el estado de la red, y la VM está estructurada para procesar solo un cambio de estado a la vez con fines de seguridad.

Esto ha provocado cuellos de botella significativos para el rendimiento de la red subyacente, ya que el número de transacciones que se pueden agregar al bloque se limita, lo que conduce a tiempos de espera más largos y picos sin precedentes en los costos de transacción que pueden hacer que la red sea inutilizable en ocasiones. Además, los modelos de ejecución secuencial utilizan componentes de hardware de manera bastante ineficiente y, por lo tanto, no se benefician de los avances en computación, es decir, múltiples núcleos de procesador.

Ejecución paralela

2.0 ¿Qué es la Ejecución Paralela?

La computación paralela es un componente clave de la arquitectura de computadoras cuyos orígenes se remontan tan lejos como elfinales de la década de 1950, aunque su ideación y teoría incluso se remontan a 1837. Por definición, la computación paralela se refiere al acto de utilizar múltiples elementos de procesamiento simultáneamente para resolver una operación, en la cual una tarea más grande y compleja se divide en tareas más pequeñas para completarse de manera más eficiente que de forma serial.

Originalmente implementado solo en sistemas de computación de alto rendimiento, la computación paralela ha evolucionado para convertirse en el paradigma dominante en la arquitectura de computadoras hoy en día, ya que la demanda de cálculo ha aumentado exponencialmente en la era de internet, exacerbada por las limitaciones de la escala de frecuencia en décadas anteriores.

Este estándar arquitectónico se aplica a las cadenas de bloques de la misma manera, solo que la tarea principal que resuelven las computadoras es el procesamiento y ejecución de transacciones, o la transferencia de valor del contrato inteligente A al contrato inteligente B, de ahí el término ejecución paralela.

La ejecución paralela significa que en lugar de procesar transacciones de forma serial, una cadena de bloques puede procesar múltiples transacciones no conflictivas simultáneamente. Esto puede aumentar enormemente el rendimiento de una red de cadena de bloques, haciéndola más escalable y eficiente para manejar cargas de actividad más altas y demanda de espacio de bloque.

Para una analogía más simple. considera la eficiencia de una tienda de comestibles con múltiples carriles para que los compradores paguen. frente a solo uno para todos.

¿Por qué es importante la ejecución paralela?

La ejecución paralela en las cadenas de bloques está diseñada para desbloquear eficiencias en la velocidad y rendimiento de una red, especialmente a medida que la red ve un mayor tráfico y demanda de recursos. En el contexto de los ecosistemas criptográficos, la ejecución paralela significa que si Bob quiere acuñar la última colección popular de NFT, y Alice quiere comprar su memedivisa favorita, la red servirá a ambos usuarios sin comprometer la calidad en el rendimiento y, por lo tanto, la experiencia del usuario.

Si bien esto puede parecer simplemente una característica intuitiva de calidad de vida, los desbloqueos en el rendimiento de la red habilitados por la ejecución paralela abren paso al desarrollo de nuevos e innovadores casos de uso y aplicaciones que pueden aprovechar la baja latencia y altos volúmenes, lo que en sí mismo sienta las bases para incorporar a la próxima cohorte masiva de usuarios a los ecosistemas criptográficos.

¿Cómo funciona la ejecución paralela?

Aunque la premisa de la ejecución paralela es bastante sencilla, los matices en los diseños de las cadenas de bloques subyacentes afectan cómo se desarrolla el proceso de ejecución paralela en sí. La característica más relevante para diseñar cadenas de bloques con ejecución paralela es la capacidad de las transacciones de acceder al estado de su red subyacente, incluidos los saldos de las cuentas, el almacenamiento y los contratos inteligentes.

La ejecución paralela en blockchains se puede categorizar como determinista u optimista. La ejecución paralela determinista, empleada por blockchains como Solana, requiere inherentemente que las transacciones declaren todas las dependencias de memoria por adelantado, es decir, qué partes del estado global desean acceder por adelantado. Si bien este paso crea una sobrecarga adicional para los desarrolladores, más ampliamente permite a la red ordenar e identificar transacciones no conflictivas antes de la ejecución, creando un sistema optimizado que es predecible y eficiente. Por otro lado, la ejecución paralela optimista está estructurada para procesar todas las transacciones en paralelo, operando bajo el supuesto inherente de que no hay conflictos. Esto permite que la blockchain subyacente entregue una ejecución de transacciones más rápida, aunque a costa de una posible reejecución posterior en caso de conflicto. Si se encuentran dos transacciones en conflicto, el sistema puede volver a procesarlas y reejecutarlas ya sea en paralelo o secuencialmente.

Para comprender mejor las implicaciones de estas sutilezas de diseño, puede ser útil analizar la ejecución en paralelo a través del prisma de los equipos que están empujando la frontera de la ejecución en paralelo hoy en día.

Estado de la Ejecución Paralela Hoy

Para entender mejor las implicaciones de estas complejidades de diseño, puede ser útil analizar la ejecución en paralelo a través del prisma de los equipos que están empujando la frontera de la ejecución en paralelo hoy en día.

3.1 Máquina Virtual Solana (SVM)

Solana fue la primera red de cadena de bloques diseñada en torno a la ejecución paralela, inspirada en la experiencia previa del fundador Anatoly Yakovenko en la industria de las telecomunicaciones. Solana tiene como objetivo proporcionar una plataforma para desarrolladores que funcione tan rápido como lo permite la física, por lo tanto, la velocidad y la eficiencia desbloqueadas por la computación paralela fueron una elección de diseño simple e intuitiva.

Un componente crítico para habilitar la velocidad y el alto rendimiento de Solana es Sealevel, el entorno de ejecución de contratos inteligentes en paralelo de la red. A diferencia de los entornos basados en EVM y WASM, Sealevel emplea una arquitectura multi-threaded, lo que significa que puede procesar múltiples transacciones simultáneamente hasta la capacidad del núcleo del validador.

La clave para habilitar la ejecución paralela de Solana es que cuando se habilita una transacción, la red asignará una lista de instrucciones para que esa transacción se ejecute, específicamente qué cuentas y estado acceder y qué cambios hacer, esto es clave para determinar qué transacciones no son conflictivas y pueden ejecutarse simultáneamente, así como habilitar transacciones que intentan acceder al mismo estado para hacerlo concurrentemente.

Considere la eficiencia que proporcionan las etiquetas a los sistemas de equipaje registrado en los aeropuertos.

Solana también utiliza Cloudbreak, su propio accountsDB personalizado, para almacenar y gestionar datos de estado y permitir lecturas y escrituras concurrentes de transacciones. Cloudbreak, optimizado para ejecución paralela, escala horizontalmente para distribuir y gestionar datos de estado en múltiples nodos.

Gracias a su arquitectura paralela, Solana puede manejar un gran número de transacciones y aún así ejecutarse rápidamente, lo que proporciona transacciones con una finalidad casi instantánea. Solana maneja entre 2,000 y 10,000 transacciones por segundo (TPS) en promedio hoy. Además, los casos de uso para el SVM se están expandiendo lentamente pero con seguridad, ya que equipos como Eclipse están implementando infraestructuras de Capa 2 que tienen como objetivo aprovechar el SVM como entorno de ejecución.

3.2 EVM Paralelo

El EVM Paralelo describe un nuevo entorno de ejecución para blockchains que tiene como objetivo llevar lo mejor de los diseños de Solana y Ethereum, con la velocidad y el rendimiento de Solana, y la seguridad y liquidez de Ethereum. Al procesar transacciones en paralelo en lugar de secuencialmente según el diseño tradicional de EVM, los EVM paralelos permiten a los desarrolladores construir aplicaciones en una red altamente eficiente al poder aprovechar las conexiones a la liquidez y las herramientas de desarrollo de EVM.

3.2.1 Sei Network

Sei Network es una cadena de bloques de capa 1 de código abierto compatible con EVM, que alberga una variedad de aplicaciones descentralizadas construidas en torno a un alto rendimiento. Sei fue construido para ofrecer velocidades rápidas a costos bajos para usuarios y desarrolladores, y la ejecución paralela es un componente clave para habilitar este rendimiento y UX. Actualmente, Sei ofrece tiempos de confirmación de bloque de 390ms y ha procesado más de 1.9B transacciones en su mainnet del Pacífico.

Originalmente, Sei empleaba un modelo determinista de ejecución paralela, en el cual los contratos inteligentes declaraban su acceso al estado requerido con antelación para que el sistema pudiera ejecutar transacciones no conflictivas simultáneamente. Con el inicio de su actualización V2, Sei está realizando la transición a un modelo paralelo optimista, lo que significa que todas las transacciones se procesarán en paralelo una vez que se envíen a la red (la etapa de ejecución), y luego se revisarán en busca de información conflictiva con transacciones anteriores (la etapa de validación). En caso de dos o más transacciones conflictivas, es decir, transacciones que intentan acceder al mismo estado de red, Sei identifica este punto de conflicto y luego vuelve a ejecutar las transacciones ya sea en paralelo o secuencialmente dependiendo de la naturaleza del conflicto.

Para almacenar y mantener los datos de transacción, Sei también introducirá SeiDB, una base de datos personalizada que tiene como objetivo mejorar las deficiencias de la v1 optimizando la ejecución en paralelo. SeiDB busca reducir la sobrecarga de almacenar datos redundantes y mantener un uso eficiente del disco para mejorar el rendimiento de la red. La V2 reduce la cantidad de metadatos necesarios para seguimiento y almacenamiento, y habilita un registro de escritura previa para ayudar con la recuperación de datos en caso de un fallo.

Por último, Sei también ha anunciado recientemente el lanzamiento de su Parallel Stack, un marco de código abierto para permitir que las soluciones de escalado de Capa 2, es decir, rollups, utilicen y se beneficien de la ejecución paralela.

3.2.2 Monad

Monad es una próxima cadena de bloques paralela de capa 1 que ofrece compatibilidad completa de bytecode y RPC para aplicaciones e infraestructura de Ethereum. A través de una serie de implementaciones técnicas innovadoras, Monad tiene como objetivo ofrecer experiencias más interactivas que las cadenas de bloques existentes, al tiempo que mantiene costos de transacción más bajos mediante la optimización del rendimiento y la portabilidad, con tiempos de bloque de 1 segundo y finalidad con hasta 10,000 TPS.

Monad implementa la ejecución paralela y el pipeline superscalar para optimizar la velocidad y el rendimiento de las transacciones. Similar a Sei v2, Monad empleará un modelo de ejecución optimista, lo que significa que la red comienza a ejecutar todas las transacciones entrantes simultáneamente, y luego analiza y valida las transacciones para buscar conflictos y volver a ejecutarlas en consecuencia, con el objetivo final de que el resultado sea idéntico a si las transacciones se hubieran ejecutado secuencialmente.

Es importante tener en cuenta que para mantener la sincronización con Ethereum, Monad ordena las transacciones en un bloque en orden lineal, con cada transacción actualizada secuencialmente.

Para mantener y acceder a los datos de la cadena de bloques de manera más eficiente que el estado actual que ofrecen los clientes de Ethereum, Monad creó su propio MonadDB personalizado, construido nativamente para cadenas de bloques. Monad DB aprovecha las características avanzadas del kernel de Linux para operaciones eficientes de disco asíncronas, eliminando las limitaciones del acceso síncrono de entrada/salida. MonadDB ofrece acceso de entrada/salida asíncrono (E/S asíncrona), una característica clave para habilitar la ejecución en paralelo, donde el sistema puede comenzar a procesar la siguiente transacción mientras espera para leer el estado de una transacción anterior.

Para una analogía simple, considera cocinar una comida multifacética (espaguetis con albóndigas). Los pasos involucrados son 1) preparar una salsa, 2) cocinar las albóndigas y c) cocinar la pasta. Un chef eficiente comenzaría hirviendo agua para la pasta, luego preparando los ingredientes para la salsa, luego lanzando la pasta en el agua hirviendo, luego cocinando la salsa y, finalmente, las albóndigas, en lugar de hacer cada paso uno por uno, completando una tarea en su totalidad antes de pasar a la siguiente.

3.3 Mover

Move es un lenguaje de programación desarrollado originalmente por el equipo de Facebook en 2019 para su proyecto ahora desaparecido Diem. Move fue diseñado para manejar contratos inteligentes y datos de transacciones de manera segura, eliminando vectores de ataque nativos de otros idiomas como ataques de reentrada.

El MoveVM sirve como el entorno de ejecución nativo para cadenas de bloques basadas en Move, aprovechando la paralelización para ofrecer velocidades de ejecución de transacciones más rápidas y una mayor eficiencia general.

3.3.1 Aptos

Aptos es una cadena de bloques basada en Move de la Capa 1 desarrollada por miembros del antiguo proyecto Diem, que implementa la ejecución paralela para ofrecer un entorno de alto rendimiento para los desarrolladores de aplicaciones. Aptos utiliza Block-STM, una implementación modificada del mecanismo de control de concurrencia de Memoria Transaccional de Software (STM).

Block-STM es un motor de ejecución paralela multinúcleo que permite la ejecución paralela optimista. Las transacciones están preordenadas y secuenciadas estratégicamente dentro de bloques, lo cual es clave para resolver conflictos eficientemente y reejecutar esas transacciones. La investigación realizada por Aptos ha encontrado que hasta 160K TPS pueden ser teóricamente soportados utilizando la paralelización de Block-STM.

3.3.2 Sui

Similar to Aptos, Sui es una cadena de bloques de capa 1 desarrollada por antiguos miembros del proyecto Diem, que utiliza el lenguaje Move. Sin embargo, Sui utiliza una implementación personalizada de Move que cambia el modelo de almacenamiento y los permisos de activos del diseño original de Diem. En particular, esto permite que Sui utilice un modelo de almacenamiento de estado para representar transacciones independientes como objetos. Cada objeto tiene un ID único dentro del entorno de ejecución de Sui, y al hacerlo, esto permite que el sistema identifique fácilmente transacciones no conflictivas y las procese en paralelo.

Similar a Solana, Sui implementa ejecución paralela determinística, lo que requiere que las transacciones indiquen de antemano a qué cuentas necesitan acceder.

3.3.3 Laboratorios de Movimiento

¿Qué es Movement?

Movement está construyendo un conjunto de herramientas para desarrolladores y servicios de infraestructura de cadena de bloques para permitir que los desarrolladores accedan fácilmente a los beneficios de construir en Move. Operando como un proveedor de ejecución como servicio similar a AWS para los desarrolladores de Move, Movement implementa la paralelización como una característica de diseño central para permitir un mayor rendimiento y una mayor eficiencia general de la red. El MoveVM es un entorno de ejecución modular que permite a las redes de cadena de bloques expandir y ajustar sus capacidades de procesamiento de transacciones según sea necesario para poder soportar un volumen creciente de transacciones, fortaleciendo sus capacidades para procesar y ejecutar transacciones en paralelo.

Arquitectura MoveVM

El movimiento también lanzará M2, un ZK-rollup que será interoperable tanto con clientes EVM como Move. M2 heredará el motor de paralelización Block-STM y se espera que entregue decenas de miles de TPS como resultado.

Pensamientos finales

4.1 Desafíos para los sistemas paralelos hoy

Algunas preguntas importantes y consideraciones que deben ser reflexionadas con respecto al desarrollo de cadenas de bloques paralelas;

  • ¿Qué compensaciones está haciendo la red para permitir un mejor rendimiento a través de la ejecución paralela?
    • Menos validadores asegurando la red permite velocidades de verificación y ejecución más rápidas, pero ¿esto compromete la seguridad de la cadena de bloques en el sentido de que se vuelve más fácil para los validadores coludir contra la red?
    • ¿Hay un número significativo de validadores co-localizados? Esta es una estrategia común para minimizar la latencia en sistemas tanto criptográficos como no criptográficos, pero ¿qué sucede con la red en caso de que ese centro de datos en particular sea comprometido?
  • Para sistemas paralelos optimistas, ¿el proceso de volver a ejecutar transacciones inválidas crea un cuello de botella a medida que la red se expande? ¿Cómo se está probando y evaluando esta eficiencia?

A un alto nivel, las cadenas de bloques paralelas enfrentan el riesgo de inconsistencias en el libro mayor, es decir, el doble gasto y cambios en el orden de las transacciones (de hecho, este es el beneficio clave de la ejecución secuencial). La paralelización determinista aborda esto creando un sistema de etiquetado interno para las transacciones en la cadena de bloques subyacente. Las cadenas de bloques que implementan procesamiento optimista deben garantizar que los mecanismos que utilizan para validar y volver a ejecutar transacciones sean seguros y funcionales, y que los compromisos realizados en términos de rendimiento puedan implementarse razonablemente.

4.2 Perspectivas futuras / Oportunidades

La historia de las computadoras nos ha enseñado que los sistemas paralelos tienden a ser más eficientes y escalables con el tiempo que los sistemas secuenciales. El surgimiento de las cadenas de bloques paralelas post-Solana enfatiza que esta noción también se aplica a la infraestructura criptográfica. Incluso Vitalik ha insinuado paralelizacióncomo una de las soluciones clave potenciales para mejorar la escalabilidad de los rollups de EVM recientemente. En términos generales, el crecimiento de la adopción de criptomonedas/cadenas de bloques exige sistemas que sean más óptimos que los disponibles hoy en día, incluidas las blockchains paralelas. Las recientes dificultades de la red de Solana han destacado que hay mucho margen de mejora en el desarrollo de blockchains paralelas. A medida que más equipos buscan empujar los límites de la frontera onchain y atraer a la próxima cohorte masiva de usuarios y adopción a aplicaciones y ecosistemas nativos de cadenas de bloques, los modelos de ejecución paralela proporcionan un marco intuitivo para construir sistemas que puedan manejar eficientemente magnitudes de actividad en red a una escala que se equipare con la de las empresas Web2 con facilidad.

Obras citadas

Descargo de responsabilidad:

  1. Este artículo es una reimpresión de [bajío], Reenviar el Título Original 'Ejecución Paralela: La Próxima Generación de Cadenas de Bloques', Todos los derechos de autor pertenecen al autor original [PAUL TIMOFEEV, MIKE JINYGABE TRAMBLE]. Si hay objeciones a esta reimpresión, por favor contacta al Gate Aprenderequipo y lo resolverán rápidamente.

  2. Renuncia de responsabilidad: Las opiniones expresadas en este artículo son únicamente las del autor y no constituyen ningún consejo de inversión.

  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.

Start Now
Sign up and get a
$100
Voucher!