Ejecución Paralela: La Siguiente Generación de Cadenas de Bloques

Avanzado5/20/2024, 4:55:29 AM
El artículo explora la aplicación de la tecnología de ejecución paralela en el ámbito de la cadena de bloques, particularmente cómo mejora la eficiencia de las transacciones, reduce los costos y mejora la experiencia del usuario. Solana, como pionera de la ejecución paralela, demuestra sus ventajas en velocidad de procesamiento y rendimiento. El artículo proporciona una explicación detallada de cómo funcionan las transacciones en la cadena de bloques, incluido el ciclo de vida de la transacción, el papel del mempool y la operación de cadenas de bloques sin un mempool. La ejecución paralela permite a las cadenas de bloques procesar múltiples transacciones no conflictivas simultáneamente, aumentando así el rendimiento y la escalabilidad de la red. El artículo también analiza diferentes modelos de ejecución paralela, incluidos los modelos deterministas y optimistas, y analiza los equipos y proyectos que impulsan la ejecución paralela en el mercado, como Solana, Parallel EVM, Sei Network, Monad, Move language, Ap

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 que es extremadamente difícil de controlar para cualquier entidad única. El concepto de una cadena de bloques fue escrito por primera vez en el infame libro blanco de Bitcoin de Satoshi Nakomoto 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.

¡Gracias por leer Shoal Research! Suscríbete gratis para recibir nuevas publicaciones y apoyar mi trabajo.

Suscribir

Pero ¿qué es exactamente una transacción?

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


Un ejemplo de una transacción que cualquiera puede observar en un explorador 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 comienzan a 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 forma parte de un libro mayor seguro y transparente, y tanto él como Alice pueden verificar el contenido.

Hablando en términos generales, todas las transacciones de la cadena de bloques contienen metadatos que ayudan a los nodos que operan y aseguran la red a 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 varios 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 transacciones varían según el diseño de la cadena de bloques.

1.1.1 Mempool

Una piscina de memoria, 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 comprender 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 los contenidos de la transacción sean legítimos y contengan parámetros apropiados.
  3. Una vez verificada, la transacción se dirige al mempool público junto con otras transacciones pendientes.
  4. Finalmente, dependiendo de la tarifa de gas pagada por la transacción en comparación con otras transacciones en el mempool, la transacción pendiente de nuestro usuario se selecciona con un grupo de otras transacciones pendientes para formar el próximo bloque en la cadena de bloques. En esta etapa, el estado de nuestra transacción dirá "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 transacciones directamente al productor de bloques como un medio para habilitar alta velocidad y rendimiento a través de una producción continua de bloques.

Vamos a recorrer el ciclo de vida de una transacción en una cadena de bloques que no utiliza 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 de 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 calendario de líder de espacio que ayuda a las RPC a enrutarse 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 devuelve 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 transacciones. Cada transacción agregada a la cadena de bloques invoca un cambio en el estado de la red, y la Máquina Virtual está estructurada para procesar solo un cambio de estado a la vez por razones de seguridad.

Esto ha provocado cuellos de botella significativos para el rendimiento de la red subyacente, ya que la cantidad de transacciones que se pueden agregar al bloque se limita, lo que conlleva tiempos de espera más largos y picos sin precedentes en los costos de transacción que a veces pueden hacer que la red sea inutilizable. 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 informática cuyos orígenes se remontan a la década de 1990. finales de la década de 1950, aunque su ideación y teoría incluso se ha rastreado hasta 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 manera serial.

Originalmente implementada solo en sistemas de computación de alto rendimiento, la computación paralela ha evolucionado para convertirse en el paradigma dominante en la arquitectura informática actual, 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 en serie, una cadena de bloques puede procesar múltiples transacciones no conflictivas simultáneamente. Esto puede aumentar considerablemente la capacidad de una red de cadena de bloques, lo que la hace más escalable y eficiente para manejar cargas de actividad y demanda de espacio en bloque más altas.

Para una analogía más simple. considera la eficiencia de un supermercado 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 el rendimiento de una red, especialmente cuando la red experimenta 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 memecoin favorito, 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 interpretarse simplemente como una característica intuitiva de calidad de vida, las 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 los altos volúmenes, lo que 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 en paralelo es relativamente sencilla, los matices en los diseños de las cadenas de bloques subyacentes afectan cómo se desarrolla el proceso de ejecución en paralelo en sí. La característica más relevante para diseñar cadenas de bloques con ejecución en paralelo es la capacidad de las transacciones de acceder al estado de su red subyacente, incluidos los saldos de cuentas, el almacenamiento y los contratos inteligentes.

La ejecución paralela en las cadenas de bloques puede clasificarse como determinista u optimista. La ejecución paralela determinista, empleada por cadenas de bloques 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, de manera más amplia 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 la suposición inherente de que no hay conflictos. Esto permite que la cadena de bloques 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 paralela a través del prisma de los equipos que empujan la frontera de la ejecución paralela hoy en día.

Estado de Ejecución Paralela Hoy

Para comprender 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 empujan 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 blockchain diseñada en torno a la ejecución en paralelo, inspirada por 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 que la velocidad y eficiencia desbloqueadas por la computación en paralelo fue una elección de diseño simple e intuitiva.

En entornos basados en SM, Sealevel emplea una arquitectura multinúcleo, lo que significa que puede procesar múltiples transacciones simultáneamente hasta el límite de 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 facturado en los aeropuertos.

Solana también utiliza Cloudbreak, su propia base de datos de cuentas personalizada, para almacenar y gestionar datos de estado y permitir lecturas y escrituras concurrentes de transacciones. Cloudbreak, optimizado para la ejecución en paralelo, 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 ejecutarlas rápidamente, lo que proporciona a las transacciones una finalidad casi instantánea. Solana maneja entre 2,000 y 10,000 transacciones por segundo (TPS) en promedio hoy en día. Además, los casos de uso para el SVM se están expandiendo lentamente, ya que equipos como Eclipse están implementando infraestructuras de Capa 2 que buscan aprovechar el SVM como entorno de ejecución.

3.2 EVM Paralelo

El EVM Paralelo describe un nuevo entorno de ejecución para cadenas de bloques que tiene como objetivo llevar lo mejor de ambos mundos de los diseños de Solana y Ethereum, con la velocidad y 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 del EVM, los EVM paralelos permiten a los desarrolladores construir aplicaciones en una red altamente eficiente mientras pueden aprovechar las conexiones a la liquidez del EVM y las herramientas de desarrollo.

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 en torno a la entrega de velocidades rápidas a costos bajos para usuarios y desarrolladores, y la ejecución en paralelo es un componente clave para habilitar este rendimiento y experiencia de usuario. Actualmente, Sei ofrece tiempos de confirmación de bloque de 390ms y ha procesado más de 1.9 mil millones de transacciones en su red principal del Pacífico.

Inicialmente, Sei empleaba un modelo de ejecución paralela determinista, en el que los contratos inteligentes declaran su acceso de estado requerido con anticipación para que el sistema ejecute transacciones no conflictivas simultáneamente. Con el inicio de su actualización V2, Sei está haciendo la transición a un modelo paralelo optimista, lo que significa que todas las transacciones se procesarán en paralelo una vez enviadas 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 en 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 el seguimiento y almacenamiento, y habilita un registro de escritura anticipada 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 cadena de bloques paralela Layer 1 de próxima aparición que ofrece compatibilidad total 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 de rendimiento y portabilidad, con tiempos de bloque de 1 segundo y finalidad con hasta 10,000 TPS.

Monad implementa la ejecución paralela y el encauzamiento superescalar 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 reejecutar según corresponda, con el objetivo final de que el resultado sea idéntico al de haber ejecutado las transacciones 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 de forma secuencial.

Con el fin de mantener y acceder a los datos de la cadena de bloques de manera más eficiente que lo que ofrecen los clientes actuales de Ethereum, Monad creó su propia MonadDB personalizada, construida nativamente para cadenas de bloques. Monad DB aprovecha las funciones avanzadas del kernel de Linux para operaciones de disco asincrónicas eficientes, eliminando las limitaciones del acceso de entrada/salida síncrono. MonadDB ofrece acceso asincrónico de entrada/salida (E/S asincrónica), una característica clave para habilitar la ejecución en paralelo, donde el sistema puede comenzar a procesar la siguiente transacción mientras espera leer el estado de una transacción anterior.

Para una simple analogía, 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 empezaría por hervir agua para la pasta, luego preparar los ingredientes para la salsa, luego echar la pasta en el agua hirviendo, luego cocinar 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 Diem, ahora desaparecido. Move fue diseñado para manejar contratos inteligentes y datos de transacciones de manera segura, eliminando vectores de ataque nativos de otros idiomas como los ataques de reentrancia.

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 la Memoria Transaccional de Software (STM).

Block-STM es un motor de ejecución paralela multi-hilos que permite la ejecución paralela optimista. Las transacciones están preordenadas y secuenciadas estratégicamente dentro de los bloques, lo que es clave para resolver eficientemente conflictos y volver a ejecutar esas transacciones. La investigación realizada por Aptos ha encontrado que se pueden soportar teóricamente hasta 160K TPS 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 ex 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 determinista, lo que requiere que las transacciones indiquen de antemano a qué cuentas necesitan acceder.

3.3.3 Movement Labs

¿Qué es Movimiento?

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 desarrollar 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 una mayor capacidad de procesamiento 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

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

Pensamientos de cierre

4.1 Desafíos Para 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 en paralelo?
    • Menos validadores asegurando la red permite una verificación y ejecución más rápida, pero ¿esto compromete la seguridad de la cadena de bloques en el sentido de que se vuelve más fácil para los validadores conspirar contra la red?
    • ¿Hay un número significativo de validadores ubicados en el mismo lugar? Esta es una estrategia común para minimizar la latencia en sistemas tanto criptográficos como no criptográficos, pero ¿qué sucede en la red en caso de que ese centro de datos en particular se vea comprometido?
  • Para sistemas paralelos optimistas, ¿el proceso de volver a ejecutar transacciones inválidas crea un cuello de botella a medida que la red escala? ¿Cómo se está probando y evaluando esta eficiencia?

A un alto nivel, las cadenas de bloques paralelas se enfrentan al riesgo de inconsistencias en el libro mayor, es decir, 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 mediante la creación de un sistema de etiquetado interno para las transacciones en la cadena de bloques subyacente. Las cadenas de bloques que implementan un procesamiento optimista deben garantizar que los mecanismos que utilizan para validar y volver a ejecutar transacciones sean seguros y funcionales, y que las compensaciones realizadas para el 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 posibles soluciones clave para mejorar la escalabilidad de los rollups de EVM recientemente. En términos generales, el crecimiento de la adopción de cripto/cadena de bloques requiere sistemas que sean más óptimos que los disponibles hoy en día, incluyendo cadenas de bloques paralelas. Las recientes dificultades de la red de Solana han destacado que hay mucho margen de mejora en el desarrollo de cadenas de bloques paralelas. A medida que más equipos buscan ampliar los límites de la frontera en cadena y captar la próxima cohorte masiva de usuarios y adopción de aplicaciones y ecosistemas nativos de la cadena de bloques, los modelos de ejecución paralela proporcionan un marco intuitivo para construir sistemas que puedan manejar eficientemente magnitudes de actividad en la red a una escala que coincida con la de las empresas Web2 con facilidad.

No es un consejo financiero o fiscal. El propósito de este boletín es puramente educativo y no debe considerarse como un consejo de inversión, asesoramiento legal, una solicitud para comprar o vender activos, o una sugerencia para tomar decisiones financieras. No es un sustituto del asesoramiento fiscal. Consulte con su contador y realice su propia investigación.

Divulgaciones. Todas las publicaciones son propias de los autores, no representan las opiniones de su empleador. Esta publicación ha sido patrocinada por la Fundación Aster. Si bien Shoal Research ha recibido financiamiento para esta iniciativa, los patrocinadores no influyen en el contenido analítico. En Shoal Research, nuestro objetivo es garantizar que todo el contenido sea objetivo e independiente. Nuestros procesos de revisión interna mantienen los más altos estándares de integridad, y todos los posibles conflictos de interés se divulgan y se gestionan rigurosamente para mantener la credibilidad y la imparcialidad de nuestra investigación.

Descargo de responsabilidad:

  1. Este artículo es reimpreso de [Investigación de Cardumen]. Todos los derechos de autor pertenecen al autor original [PAUL TIMOFEEV, MIKE JIN, Y GABE TRAMBLE]. Si hay objeciones a esta reimpresión, por favor póngase en contacto con el Gate Learnequipo y lo manejarán rápidamente.
  2. Descargo de responsabilidad por responsabilidad: Las opiniones y puntos de vista expresados en este artículo son únicamente los 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 Siguiente Generación de Cadenas de Bloques

Avanzado5/20/2024, 4:55:29 AM
El artículo explora la aplicación de la tecnología de ejecución paralela en el ámbito de la cadena de bloques, particularmente cómo mejora la eficiencia de las transacciones, reduce los costos y mejora la experiencia del usuario. Solana, como pionera de la ejecución paralela, demuestra sus ventajas en velocidad de procesamiento y rendimiento. El artículo proporciona una explicación detallada de cómo funcionan las transacciones en la cadena de bloques, incluido el ciclo de vida de la transacción, el papel del mempool y la operación de cadenas de bloques sin un mempool. La ejecución paralela permite a las cadenas de bloques procesar múltiples transacciones no conflictivas simultáneamente, aumentando así el rendimiento y la escalabilidad de la red. El artículo también analiza diferentes modelos de ejecución paralela, incluidos los modelos deterministas y optimistas, y analiza los equipos y proyectos que impulsan la ejecución paralela en el mercado, como Solana, Parallel EVM, Sei Network, Monad, Move language, Ap

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 que es extremadamente difícil de controlar para cualquier entidad única. El concepto de una cadena de bloques fue escrito por primera vez en el infame libro blanco de Bitcoin de Satoshi Nakomoto 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.

¡Gracias por leer Shoal Research! Suscríbete gratis para recibir nuevas publicaciones y apoyar mi trabajo.

Suscribir

Pero ¿qué es exactamente una transacción?

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


Un ejemplo de una transacción que cualquiera puede observar en un explorador 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 comienzan a 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 forma parte de un libro mayor seguro y transparente, y tanto él como Alice pueden verificar el contenido.

Hablando en términos generales, todas las transacciones de la cadena de bloques contienen metadatos que ayudan a los nodos que operan y aseguran la red a 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 varios 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 transacciones varían según el diseño de la cadena de bloques.

1.1.1 Mempool

Una piscina de memoria, 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 comprender 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 los contenidos de la transacción sean legítimos y contengan parámetros apropiados.
  3. Una vez verificada, la transacción se dirige al mempool público junto con otras transacciones pendientes.
  4. Finalmente, dependiendo de la tarifa de gas pagada por la transacción en comparación con otras transacciones en el mempool, la transacción pendiente de nuestro usuario se selecciona con un grupo de otras transacciones pendientes para formar el próximo bloque en la cadena de bloques. En esta etapa, el estado de nuestra transacción dirá "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 transacciones directamente al productor de bloques como un medio para habilitar alta velocidad y rendimiento a través de una producción continua de bloques.

Vamos a recorrer el ciclo de vida de una transacción en una cadena de bloques que no utiliza 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 de 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 calendario de líder de espacio que ayuda a las RPC a enrutarse 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 devuelve 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 transacciones. Cada transacción agregada a la cadena de bloques invoca un cambio en el estado de la red, y la Máquina Virtual está estructurada para procesar solo un cambio de estado a la vez por razones de seguridad.

Esto ha provocado cuellos de botella significativos para el rendimiento de la red subyacente, ya que la cantidad de transacciones que se pueden agregar al bloque se limita, lo que conlleva tiempos de espera más largos y picos sin precedentes en los costos de transacción que a veces pueden hacer que la red sea inutilizable. 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 informática cuyos orígenes se remontan a la década de 1990. finales de la década de 1950, aunque su ideación y teoría incluso se ha rastreado hasta 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 manera serial.

Originalmente implementada solo en sistemas de computación de alto rendimiento, la computación paralela ha evolucionado para convertirse en el paradigma dominante en la arquitectura informática actual, 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 en serie, una cadena de bloques puede procesar múltiples transacciones no conflictivas simultáneamente. Esto puede aumentar considerablemente la capacidad de una red de cadena de bloques, lo que la hace más escalable y eficiente para manejar cargas de actividad y demanda de espacio en bloque más altas.

Para una analogía más simple. considera la eficiencia de un supermercado 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 el rendimiento de una red, especialmente cuando la red experimenta 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 memecoin favorito, 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 interpretarse simplemente como una característica intuitiva de calidad de vida, las 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 los altos volúmenes, lo que 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 en paralelo es relativamente sencilla, los matices en los diseños de las cadenas de bloques subyacentes afectan cómo se desarrolla el proceso de ejecución en paralelo en sí. La característica más relevante para diseñar cadenas de bloques con ejecución en paralelo es la capacidad de las transacciones de acceder al estado de su red subyacente, incluidos los saldos de cuentas, el almacenamiento y los contratos inteligentes.

La ejecución paralela en las cadenas de bloques puede clasificarse como determinista u optimista. La ejecución paralela determinista, empleada por cadenas de bloques 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, de manera más amplia 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 la suposición inherente de que no hay conflictos. Esto permite que la cadena de bloques 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 paralela a través del prisma de los equipos que empujan la frontera de la ejecución paralela hoy en día.

Estado de Ejecución Paralela Hoy

Para comprender 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 empujan 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 blockchain diseñada en torno a la ejecución en paralelo, inspirada por 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 que la velocidad y eficiencia desbloqueadas por la computación en paralelo fue una elección de diseño simple e intuitiva.

En entornos basados en SM, Sealevel emplea una arquitectura multinúcleo, lo que significa que puede procesar múltiples transacciones simultáneamente hasta el límite de 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 facturado en los aeropuertos.

Solana también utiliza Cloudbreak, su propia base de datos de cuentas personalizada, para almacenar y gestionar datos de estado y permitir lecturas y escrituras concurrentes de transacciones. Cloudbreak, optimizado para la ejecución en paralelo, 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 ejecutarlas rápidamente, lo que proporciona a las transacciones una finalidad casi instantánea. Solana maneja entre 2,000 y 10,000 transacciones por segundo (TPS) en promedio hoy en día. Además, los casos de uso para el SVM se están expandiendo lentamente, ya que equipos como Eclipse están implementando infraestructuras de Capa 2 que buscan aprovechar el SVM como entorno de ejecución.

3.2 EVM Paralelo

El EVM Paralelo describe un nuevo entorno de ejecución para cadenas de bloques que tiene como objetivo llevar lo mejor de ambos mundos de los diseños de Solana y Ethereum, con la velocidad y 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 del EVM, los EVM paralelos permiten a los desarrolladores construir aplicaciones en una red altamente eficiente mientras pueden aprovechar las conexiones a la liquidez del EVM y las herramientas de desarrollo.

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 en torno a la entrega de velocidades rápidas a costos bajos para usuarios y desarrolladores, y la ejecución en paralelo es un componente clave para habilitar este rendimiento y experiencia de usuario. Actualmente, Sei ofrece tiempos de confirmación de bloque de 390ms y ha procesado más de 1.9 mil millones de transacciones en su red principal del Pacífico.

Inicialmente, Sei empleaba un modelo de ejecución paralela determinista, en el que los contratos inteligentes declaran su acceso de estado requerido con anticipación para que el sistema ejecute transacciones no conflictivas simultáneamente. Con el inicio de su actualización V2, Sei está haciendo la transición a un modelo paralelo optimista, lo que significa que todas las transacciones se procesarán en paralelo una vez enviadas 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 en 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 el seguimiento y almacenamiento, y habilita un registro de escritura anticipada 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 cadena de bloques paralela Layer 1 de próxima aparición que ofrece compatibilidad total 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 de rendimiento y portabilidad, con tiempos de bloque de 1 segundo y finalidad con hasta 10,000 TPS.

Monad implementa la ejecución paralela y el encauzamiento superescalar 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 reejecutar según corresponda, con el objetivo final de que el resultado sea idéntico al de haber ejecutado las transacciones 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 de forma secuencial.

Con el fin de mantener y acceder a los datos de la cadena de bloques de manera más eficiente que lo que ofrecen los clientes actuales de Ethereum, Monad creó su propia MonadDB personalizada, construida nativamente para cadenas de bloques. Monad DB aprovecha las funciones avanzadas del kernel de Linux para operaciones de disco asincrónicas eficientes, eliminando las limitaciones del acceso de entrada/salida síncrono. MonadDB ofrece acceso asincrónico de entrada/salida (E/S asincrónica), una característica clave para habilitar la ejecución en paralelo, donde el sistema puede comenzar a procesar la siguiente transacción mientras espera leer el estado de una transacción anterior.

Para una simple analogía, 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 empezaría por hervir agua para la pasta, luego preparar los ingredientes para la salsa, luego echar la pasta en el agua hirviendo, luego cocinar 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 Diem, ahora desaparecido. Move fue diseñado para manejar contratos inteligentes y datos de transacciones de manera segura, eliminando vectores de ataque nativos de otros idiomas como los ataques de reentrancia.

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 la Memoria Transaccional de Software (STM).

Block-STM es un motor de ejecución paralela multi-hilos que permite la ejecución paralela optimista. Las transacciones están preordenadas y secuenciadas estratégicamente dentro de los bloques, lo que es clave para resolver eficientemente conflictos y volver a ejecutar esas transacciones. La investigación realizada por Aptos ha encontrado que se pueden soportar teóricamente hasta 160K TPS 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 ex 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 determinista, lo que requiere que las transacciones indiquen de antemano a qué cuentas necesitan acceder.

3.3.3 Movement Labs

¿Qué es Movimiento?

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 desarrollar 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 una mayor capacidad de procesamiento 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

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

Pensamientos de cierre

4.1 Desafíos Para 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 en paralelo?
    • Menos validadores asegurando la red permite una verificación y ejecución más rápida, pero ¿esto compromete la seguridad de la cadena de bloques en el sentido de que se vuelve más fácil para los validadores conspirar contra la red?
    • ¿Hay un número significativo de validadores ubicados en el mismo lugar? Esta es una estrategia común para minimizar la latencia en sistemas tanto criptográficos como no criptográficos, pero ¿qué sucede en la red en caso de que ese centro de datos en particular se vea comprometido?
  • Para sistemas paralelos optimistas, ¿el proceso de volver a ejecutar transacciones inválidas crea un cuello de botella a medida que la red escala? ¿Cómo se está probando y evaluando esta eficiencia?

A un alto nivel, las cadenas de bloques paralelas se enfrentan al riesgo de inconsistencias en el libro mayor, es decir, 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 mediante la creación de un sistema de etiquetado interno para las transacciones en la cadena de bloques subyacente. Las cadenas de bloques que implementan un procesamiento optimista deben garantizar que los mecanismos que utilizan para validar y volver a ejecutar transacciones sean seguros y funcionales, y que las compensaciones realizadas para el 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 posibles soluciones clave para mejorar la escalabilidad de los rollups de EVM recientemente. En términos generales, el crecimiento de la adopción de cripto/cadena de bloques requiere sistemas que sean más óptimos que los disponibles hoy en día, incluyendo cadenas de bloques paralelas. Las recientes dificultades de la red de Solana han destacado que hay mucho margen de mejora en el desarrollo de cadenas de bloques paralelas. A medida que más equipos buscan ampliar los límites de la frontera en cadena y captar la próxima cohorte masiva de usuarios y adopción de aplicaciones y ecosistemas nativos de la cadena de bloques, los modelos de ejecución paralela proporcionan un marco intuitivo para construir sistemas que puedan manejar eficientemente magnitudes de actividad en la red a una escala que coincida con la de las empresas Web2 con facilidad.

No es un consejo financiero o fiscal. El propósito de este boletín es puramente educativo y no debe considerarse como un consejo de inversión, asesoramiento legal, una solicitud para comprar o vender activos, o una sugerencia para tomar decisiones financieras. No es un sustituto del asesoramiento fiscal. Consulte con su contador y realice su propia investigación.

Divulgaciones. Todas las publicaciones son propias de los autores, no representan las opiniones de su empleador. Esta publicación ha sido patrocinada por la Fundación Aster. Si bien Shoal Research ha recibido financiamiento para esta iniciativa, los patrocinadores no influyen en el contenido analítico. En Shoal Research, nuestro objetivo es garantizar que todo el contenido sea objetivo e independiente. Nuestros procesos de revisión interna mantienen los más altos estándares de integridad, y todos los posibles conflictos de interés se divulgan y se gestionan rigurosamente para mantener la credibilidad y la imparcialidad de nuestra investigación.

Descargo de responsabilidad:

  1. Este artículo es reimpreso de [Investigación de Cardumen]. Todos los derechos de autor pertenecen al autor original [PAUL TIMOFEEV, MIKE JIN, Y GABE TRAMBLE]. Si hay objeciones a esta reimpresión, por favor póngase en contacto con el Gate Learnequipo y lo manejarán rápidamente.
  2. Descargo de responsabilidad por responsabilidad: Las opiniones y puntos de vista expresados en este artículo son únicamente los 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.
Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!