Este artículo se centra en Aptos, profundizando en las características de Move/MoveVM que utiliza y cómo se compara con lenguajes de programación y máquinas de estado establecidos como Solidity/EVM y Rust/WASM.

Escrito por: DongHyun Kang, Xangle

Compilado por: Peng SUN, la versión china de Foresight News está autorizada exclusivamente para compilar y publicar

1. Introducción

En Web3, una experiencia de usuario perfecta es extremadamente importante. Hasta cierto punto, garantizar que los usuarios experimenten una interoperabilidad fluida entre diferentes cadenas de bloques es mucho más importante que la cadena de bloques en la que se construye la DApp. En 2021 y 2022, existe un feroz debate en la industria en torno a las cadenas de bloques monolíticas y las cadenas múltiples. Vale la pena señalar que Solana y Luna adquirieron prominencia pero luego disminuyeron, allanando el camino para que Aptos y Sui atrajeran la atención del mercado.

Aptos y Sui se originaron en el proyecto Meta blockchain Diem (anteriormente Libra) y tienen una cosa en común: ambos usan el lenguaje de programación Move. Este artículo se centrará en Aptos, profundizará en las características de su lenguaje Move y su máquina de estado MoveVM, y lo comparará con lenguajes de programación y máquinas de estado maduros como Solidity/EVM y Rust/WASM.

2. ¿Qué es Mover?

(1) ¿De dónde viene Move?

El equipo de Diem en Facebook (ahora Meta) descubrió dos limitaciones del lenguaje de programación Solidity ampliamente adoptado por la industria blockchain. En primer lugar, Solidity tiene vulnerabilidades como ataques de reentrada y ataques de doble gasto. Si bien las redes blockchain que utilizan Solidity, como Ethereum, mitigan estos ataques mediante algoritmos de consenso, es innegable que existen vectores de ataque potenciales en el propio lenguaje.

En segundo lugar, Solidity enfrenta cuellos de botella debido a su incapacidad para procesar transacciones en paralelo. Para evitar el doble gasto, Solidity requiere que transacciones como los contratos inteligentes se ejecuten en orden. Esto limita la velocidad de procesamiento de las transacciones, lo que a su vez dificulta la escalabilidad de la cadena de bloques.

En base a esto, el equipo de Diem desarrolló el lenguaje Move influenciado por Rust para resolver los problemas anteriores. El lenguaje de programación Rust es fantástico, pero puede generar un código detallado cuando se utiliza para escribir contratos inteligentes. Posteriormente, Aptos conservó el lenguaje Move original e incorporó un modelo de programación orientado a objetos, evolucionándolo a Aptos Move. Mientras tanto, Sui utiliza un lenguaje orientado a objetos llamado Sui Move.

(2) ¿Qué funciones tiene Aptos Move/MoveVM?

Move/MoveVM de Aptos ha sido cuidadosamente diseñado con un enfoque principal en la seguridad. Además, Aptos simplifica el código del contrato Move y permite el procesamiento paralelo, minimizando la posibilidad de ataques blockchain y aumentando la escalabilidad. En esta sección, veremos más de cerca cómo Move implementa estas características.

Mejore la seguridad con Move Prover y Resource Model

La verificación formal implica demostrar matemáticamente que el código de software se ajusta a reglas o propiedades específicas. Aptos aprovecha la verificación formal a través de la herramienta Move Prover para verificar la seguridad de sus contratos inteligentes. Move Prover puede defenderse contra posibles vectores de ataque en contratos inteligentes, como ataques de doble gasto y reentrada, mediante la aplicación de verificación formal, al mismo tiempo que identifica otros errores de código y garantiza la estabilidad. A diferencia de otras cadenas de bloques que se basan en algoritmos de consenso para evitar ataques de doble gasto y reentrada, el lenguaje de Move y sus herramientas abordan directamente estos problemas.

Además, MoveVM adopta una programación estática para llamar a funciones y evitar ataques de reentrada en llamadas a funciones. Por el contrario, la EVM tradicional utiliza programación dinámica. Estos dos métodos difieren en el tiempo de las llamadas a funciones en la secuencia de ejecución del programa. La secuencia habitual es: Compilar → Enlace → Cargar → Ejecutar → Terminar. La programación estática implica llamar a funciones en tiempo de compilación, etapa en la que se puede realizar la verificación de errores inicial del contrato inteligente. Por lo tanto, en MoveVM, los contratos inteligentes entrarán en la fase de verificación por adelantado, evitando así eficazmente ataques de reentrada desde la fuente.

Procesamiento paralelo de transacciones

Aptos MoveVM mejora la escalabilidad a través del procesamiento paralelo de transacciones. Para lograr este objetivo, MoveVM utiliza Block-STM (Memoria de transacciones de software a nivel de bloque), que distribuye las transacciones de la base de datos en múltiples subprocesos para su ejecución en paralelo. Una mirada más cercana a Block-STM revela las siguientes características clave:

  • Block-STM utiliza el Control de Concurrencia Optimista (OCC) para ejecutar transacciones en paralelo, que luego se verifican y las transacciones que encuentran conflictos se vuelven a ejecutar.

  • Block-STM utiliza una estructura de datos de múltiples versiones para evitar conflictos de escritura. Todas las escrituras se almacenan en la misma ubicación junto con el ID de la transacción y el recuento de reejecuciones. Esto garantiza que incluso si las transacciones se vuelven a ejecutar, se procesen en el orden previsto.

  • Block-STM introduce un programador colaborativo para la ejecución prioritaria y la verificación de subtransacciones, especificando así el orden de procesamiento entre los subprocesos de transacciones. Move emplea este programador cooperativo para evitar conflictos entre transacciones y evitar que dejen de ser válidas.

  • Finalmente, la estimación dinámica de dependencia agrupa las transacciones estimando sus dependencias e identificando transacciones relacionadas.

A través de Block-STM, Aptos puede lograr el procesamiento de transacciones en paralelo de las siguientes maneras. Además, si bien la verificación está unificada entre los validadores, la ejecución se paraleliza entre cada validador, lo que mejora aún más la escalabilidad. El procesamiento paralelo de transacciones de Aptos se resume a continuación:

  • Los usuarios generan transacciones y las envían a la red.

  • Los validadores validan las transacciones.

  • Las transacciones validadas se agrupan de acuerdo con estimaciones de dependencia dinámica, mientras que el validador procesa cada grupo de transacciones en paralelo.

  • Las transacciones procesadas se compilan en bloques y se propagan por toda la red.

Mejore la comodidad para desarrolladores y usuarios con el estándar de token Aptos

Aptos también utiliza Move para crear su propio estándar de token, Aptos Coin Standard, que mejora las limitaciones asociadas con los EVM tradicionales. MoveVM no necesita publicar contratos inteligentes separados para la emisión de tokens y solo necesita pagar una pequeña tarifa de gas para emitir tokens. Pero dado que las cadenas de bloques que no son EVM, como Solana y Algorand, también tienen sus propios estándares de tokens, esta característica no es particularmente sobresaliente.

Sin embargo, en agosto de 2023, Aptos lanzó dos nuevos estándares, FT y NFT. En particular, el nuevo estándar FT permite a los desarrolladores elegir y emitir uno de los siguientes según sus objetivos de desarrollo: activos simbólicos regulares, RWA tokenizados o tokens en el juego. Esto parece coincidir con la estrategia de Aptos de aprovechar el creciente mercado relacionado con RWA. Específicamente, las empresas Web 2.0 a menudo buscan controlar los activos al tokenizar RWA, pero esto no se logra fácilmente en Ethereum, por lo que muchas empresas están comenzando a construir sus propias cadenas de bloques. Por el contrario, Aptos permite esto a nivel de protocolo a través de la configuración estándar del token.

3. Comparación con otros lenguajes y VM

(一)Movimiento vs Solidez

Move/MoveVM se creó para compensar las limitaciones de Solidity, haciéndolo más seguro y escalable que Solidity. Como se mencionó anteriormente, las funciones Move/MoveVM mejoran la seguridad y escalabilidad de Aptos. MoveVM previene ataques de reentrada y de doble gasto en la etapa del lenguaje, y Solidity/EVM ha visto múltiples ataques de reentrada. El ataque DAO a Ethereum en 2016 es el mejor ejemplo. Aunque la Fundación Ethereum ha realizado muchas medidas de prevención, todavía hay una gran cantidad de ataques de reentrada en DeFi. Los piratas informáticos nunca dejan de buscar implementar contratos defectuosos en DeFi dentro del ecosistema EVM.

El ecosistema <EVM aún sufre ataques de reentrada. Fuente: Google>

Como se mencionó anteriormente, Move/MoveVM también es altamente escalable. Debido a su capacidad para procesar transacciones en paralelo, teóricamente puede alcanzar hasta 160.000 TPS, lo que significa que la eficiencia del procesamiento de transacciones no está limitada. Al mismo tiempo, la EVM debe procesar las transacciones en orden debido al riesgo de doble gasto y ataques de reentrada. Por lo tanto, la cadena EVM está muy restringida por esto. Cuando se envía una gran cantidad de transacciones al mismo tiempo, el costo del gas aumenta rápidamente y las transacciones se ponen en cola y se detiene.

En términos de flexibilidad, Solidity/EVM tiene una ventaja sobre Move/MoveVM. Solidity/EVM usa programación dinámica, mientras que Move/MoveVM usa programación estática. En comparación con Solidity, Move utiliza programación estática para mejorar la seguridad de los contratos inteligentes pero limita su funcionalidad. Además, Solidity permite actualizar el protocolo y el código del contrato en cualquier momento, mientras que Move tiene algunas limitaciones al respecto. En términos de interoperabilidad entre blockchains, Solidity es más flexible y escalable que Move. Esto se debe principalmente a que los equipos de EVM como Ethereum prefieren blockchains modulares, mientras que el equipo de Move prefiere áreas monolíticas.

(2) Mover frente a oxidarse

Move se deriva de Rust y tiene muchas similitudes con Rust en términos de rendimiento y funcionalidad, como eficiencia y seguridad. La diferencia clave radica en su propósito: Rust es un lenguaje de programación de propósito general, mientras que Move se centra en el desarrollo de contratos inteligentes. Rust está diseñado para una gama más amplia de aplicaciones y se utiliza en una amplia variedad de entornos de desarrollo, incluidos aquellos que no están relacionados con blockchain. Por lo tanto, escribir código de contrato inteligente en Rust puede resultar en un código más largo y complejo. Por el contrario, Move es un lenguaje específico de blockchain diseñado específicamente para contratos inteligentes. Si bien esto limita su uso en el desarrollo de blockchain, da como resultado un código relativamente conciso y menos complejo al escribir contratos inteligentes.

<Mover vs. Rust: Comparación de contratos inteligentes, Fuente: Krešimir Klas>

Arriba se muestran los tokens de longitud del código para Solana y Sui cuando desarrollan el mismo contrato inteligente. Obviamente, un código más largo significa que los contratos inteligentes tienen más probabilidades de ser atacados y los desarrolladores tienen más probabilidades de cometer errores, que también pueden pasarse por alto durante la inspección del código. Por el contrario, la ventaja de Move es que el desarrollo del código es más simple, puede reducir la probabilidad de que los desarrolladores cometan errores y la inspección del código será más efectiva.

(3) Aptos Move frente a Sui Move

Aptos Move y Sui Move provienen del equipo Diem, por lo que tienen muchas similitudes. Ambos se basan originalmente en Rust, por lo que tienen una sintaxis y funcionalidad similares. Además, ambos proyectos utilizan Move Prover para verificar contratos inteligentes.

Sin embargo, Aptos Move conserva la cadena de bloques Diem original y adopta un modelo de programación orientado a objetos, mientras que Sui Move lanza la cadena de bloques Sui orientada a objetos como una versión evolucionada de Diem. La transición de Sui a una cadena de bloques orientada a objetos es admitir el paralelismo, que depende de conocer los datos que se leerán y escribirán. Por lo tanto, Aptos adopta un modelo de recursos que divide los componentes básicos de la aplicación en tres unidades distintas: identificadores únicos, propiedades y métodos. Sui, por otro lado, utiliza un modelo orientado a objetos que divide los componentes de la aplicación en estados y comportamientos. Esto da como resultado que Aptos Move brinde a los desarrolladores una flexibilidad considerable que Sui Move no tiene.

También existen diferencias en cómo operan Aptos Move y Sui Move en la cadena de bloques. En primer lugar, ambas cadenas de bloques admiten el procesamiento paralelo, aunque de diferentes maneras. Como se mencionó anteriormente, Aptos implementa el procesamiento de transacciones paralelas a través de Block-STM, mientras que Sui usa una estructura de gráfico acíclico dirigido (DAG) para almacenar transacciones. La estructura DAG corta las interconexiones entre transacciones, permitiendo así el procesamiento de transacciones en paralelo.

Otra diferencia es cómo se previenen los ataques de reentrada. Como se mencionó anteriormente, Aptos utiliza el envío estático para verificar el estado de los contratos inteligentes antes de su ejecución para evitar ataques de reentrada. Por el contrario, Sui previene los ataques de reentrada actualizando el estado de un contrato inteligente solo una vez durante la ejecución de la transacción, asegurando que el estado no cambie incluso si un atacante interrumpe la transacción. Además, debido a que la estructura DAG de Sui no depende del orden de las transacciones, la interrupción de una transacción no afectará el procesamiento independiente de otras transacciones, brindando así protección adicional contra ataques de reentrada.

4. Siguiente paso: establecer un ecosistema de desarrolladores sólido y una DApp excelente

Move/MoveVM es una plataforma de desarrollo blockchain prometedora, pero también enfrenta dos desafíos importantes. (1) Move aún no tiene un ecosistema de desarrolladores maduro y no se puede comparar con Solidity en este sentido. Aptos existe desde hace casi un año, mientras que Sui lanzó recientemente la red principal. Por lo tanto, Move todavía tiene un largo camino por recorrer en comparación con Solidity, que cuenta con una comunidad de desarrolladores madura. Solidity tiene una historia de ocho años y ofrece una amplia gama de herramientas de desarrollo y programas de capacitación específicos. Es fundamental que los desarrolladores cuenten con una comunidad de apoyo que brinde comentarios sobre su trabajo, y Solidity ya cuenta con una gran comunidad de desarrolladores y organiza hackatones en todo el mundo. Turing estima que la comunidad de desarrolladores de Solidity ronda las 200.000 personas.

Move, por el contrario, ha estado en desarrollo desde el lanzamiento de Facebook, pero ha sido principalmente un esfuerzo interno del equipo de Diem. Como resultado, el ecosistema de desarrolladores de Move no es tan maduro ni tan extendido como el de Solidity. Si bien ahora existe una comunidad de desarrolladores de Aptos, incluido el Foro Aptos, carece de los programas de capacitación estructurados, las herramientas para desarrolladores y los mecanismos abiertos de retroalimentación del ecosistema Solidity. La empresa de desarrollo Sui, Mysten Labs, estima que el número de desarrolladores de Move es de 10.000, pero Aptos no proporciona estadísticas oficiales.

En segundo lugar, (2) Move carece de una DApp excelente. Hay una gran cantidad de DApps en muchas cadenas EVM (como Ethereum y Arbitrum) y los usuarios las utilizan ampliamente. Sin embargo, el ecosistema Move aún tiene que producir aplicaciones similares. Al 26 de septiembre, el TVL de Aptos Network era de 43,5 millones de dólares, significativamente menor que el Layer2 convencional.

Tutorial de <Aptos Move creado por la Fundación Aptos. Fuente: Aptos Move Github>

La Fundación Aptos reconoce los desafíos que enfrentamos actualmente y está tomando medidas activamente para superarlos. En primer lugar, la Fundación Aptos otorga alta prioridad a las herramientas de desarrollo para fomentar un ecosistema de desarrollo próspero. Lanzaron el Tutorial de Aptos para ayudar a los primeros desarrolladores a comenzar y están creando proyectos educativos como Move Spider. Además, la Fundación Aptos fortalece aún más el ecosistema de desarrolladores al promover el desarrollo de la comunidad de desarrolladores mediante la organización de Meetups a nivel mundial, incluidos Estados Unidos, Corea del Sur y China.

En el aspecto empresarial, Aptos está estableciendo activamente asociaciones con empresas de renombre y empresas con grandes canales de distribución en diversas industrias, como BBCUniversal, Microsoft, Google, Netmarble (Marblex), Neowiz y Chingari, etc. Por otro lado, Aptos está implementando Onchain Randomness a través de AIP-41 para facilitar la integración de las empresas de juego. Aptos utiliza AIP-41 para proporcionar a las empresas de juegos una alternativa de middleware rentable, como Chainlink VRF, que garantiza la aleatoriedad de los proyectos EVM, atrayendo más proyectos para crear productos en Aptos.

5. Conclusión

<Una ilustración que compara los lenguajes de desarrollo de blockchain con la evolución. Fuente: Krešimir Klas>

Este artículo se centra en Move/MoveVM de Aptos y realiza una comparación funcional con los lenguajes de desarrollo blockchain existentes. Los resultados de la investigación muestran que Move está diseñado específicamente para desarrollar contratos inteligentes de blockchain y tiene claras ventajas técnicas sobre los lenguajes existentes. Sin embargo, Move aún se encuentra en sus primeras etapas en términos de desarrolladores y ecosistema DApp. Actualmente, Solidity tiene aproximadamente 20 veces más desarrolladores que Move, y su posición es más sólida en términos de TVL y DApps excelentes. Sin embargo, Move tiene solo un año y es uno de los pocos lenguajes de programación dedicados al desarrollo de blockchain, lo que demuestra que todavía tiene un enorme potencial sin explotar.

Además, Move es desarrollado por el equipo Diem de Facebook, lo que también aumenta las perspectivas de desarrollo del ecosistema Move. Por lo tanto, como se muestra en la figura anterior, como lenguaje de programación blockchain integral, merece nuestra atención si Move puede competir con Solidity en el futuro.