Move Language

⚡ Definición Rápida
Move es un lenguaje de programación diseñado específicamente para smart contracts que prioriza la seguridad, la verificabilidad formal y la gestión de activos. Fue creado por Meta (anteriormente Facebook) para la blockchain Diem (anteriormente Libra). Su característica más distintiva es el concepto de recursos lineales (resources): los activos solo pueden ser movidos, nunca copiados o destruidos implícitamente. Move es el lenguaje nativo de blockchains como Sui, Aptos, Movement Labs, y Starcoin.
Términos relacionados: Sui Blockchain • Aptos • resource-oriented programming • Rust • formal verification
❓ ¿Qué es Move Language y por qué está redefiniendo la seguridad en smart contracts?
Imagina un lenguaje de programación donde los tokens no pueden ser copiados accidentalmente, donde no pueden ser destruidos por error, y donde cada transferencia de activo deja una traza verificable matemáticamente. Un lenguaje donde la seguridad no es una preocupación secundaria, sino un principio fundamental en el diseño. Ese lenguaje es Move.
Move nació en 2019 dentro de Meta (entonces Facebook) como parte del proyecto Diem (inicialmente Libra), una ambiciosa iniciativa para crear una blockchain global y una stablecoin respaldada por monedas fiduciarias. Aunque Diem fue finalmente descontinuado en 2022 debido a presiones regulatorias, el lenguaje Move sobrevivió y fue adoptado por blockchains de nueva generación como Sui y Aptos, fundadas por exingenieros del equipo de Diem.
Lo que hace a Move especial es su modelo de recursos (resource-oriented programming). A diferencia de Solidity, donde cualquier variable puede ser copiada o destruida si el programador comete un error, Move trata los activos (tokens, NFTs, etc.) como recursos lineales: solo pueden ser movidos de una ubicación a otra, nunca duplicados. Esta propiedad, combinada con el verificador formal Move Prover, hace que los smart contracts escritos en Move sean inherentemente más seguros que sus contrapartes en EVM.
Para entender el contexto de la seguridad en smart contracts, te recomendamos leer nuestro artículo sobre Guía de Seguridad Crypto. Para comparar con otras blockchains de alto rendimiento, consulta nuestra guía sobre Sui Blockchain.
📖 Definición Técnica
Move es un lenguaje de programación de bytecode diseñado específicamente para la implementación de smart contracts seguros y verificables formalmente. Se basa en el concepto de recursos lineales (resource-oriented programming), donde los tipos de datos que representan activos financieros (Move resources) poseen la propiedad de «linearidad»: no pueden ser copiados ni descartados implícitamente; solo pueden ser movidos entre ubicaciones de almacenamiento o destruidos explícitamente mediante procedimientos definidos por el programador. La arquitectura de Move se compone de módulos (que contienen estructuras de datos y procedimientos), scripts (transacciones que pueden llamar a múltiples módulos), y transacciones.
Move incluye un verificador de bytecode que se ejecuta antes de la publicación, garantizando propiedades como: ausencia de doble gasto, protección contra reentrancy, y seguridad de tipos. Además, cuenta con el Move Prover (también llamado Move Spec Language), una herramienta de verificación formal que permite a los desarrolladores especificar invariantes y propiedades de sus contratos, que el verificador comprueba matemáticamente.
📦 Recursos (Resources): La innovación central de Move
La característica más distintiva de Move es su sistema de tipos de recursos. En la mayoría de lenguajes de smart contracts (como Solidity), los tokens son simplemente números en un balance. En Move, los activos son tipos de primera clase.
¿Qué es un recurso en Move?
- Un recurso es un tipo de dato que no puede ser copiado (no tiene copia implícita).
- Un recurso no puede ser destruido implícitamente.
- Un recurso solo puede ser movido entre ubicaciones de almacenamiento.
Esto significa que, si defines un tipo Coin como recurso, el compilador de Move previene que alguien accidentalmente clone un token (haciendo un «copy») o lo pierda (ignorando el valor). Solo puede ser movido (move) o explícitamente destruido (drop) dentro de procedimientos autorizados.
Ejemplo de definición de un recurso
module MyModule::Coin {
use std::signer;
// Un recurso que representa una moneda
struct Coin has key {
value: u64,
}
// Crear una nueva moneda (solo puede llamar el creador)
public fun mint(account: &signer, amount: u64) {
let coin = Coin { value: amount };
move_to(account, coin);
}
// Transferir una moneda (el recurso se mueve, no se copia)
public fun transfer(from: &signer, to: address, amount: u64) {
let from_coin = borrow_global_mut<Coin>(signer::address_of(from));
from_coin.value = from_coin.value - amount;
let to_coin = borrow_global_mut<Coin>(to);
to_coin.value = to_coin.value + amount;
}
}🔍 Move Prover: Verificación formal integrada
Move Prover es una herramienta de verificación formal que permite a los desarrolladores especificar propiedades matemáticas sobre sus contratos y demostrar automáticamente que se cumplen.
Ejemplo de especificación con Move Prover
module MyModule::Counter {
struct Counter has key {
value: u64,
}
public fun increment(account: &signer) acquires Counter {
let counter = borrow_global_mut<Counter>(signer::address_of(account));
counter.value = counter.value + 1;
}
spec increment {
ensures counter.value == old(counter.value) + 1;
}
}Propiedades que se pueden verificar
- Invariantes de estado (ej: «el total supply nunca decrece»).
- Precondiciones y postcondiciones de funciones.
- Ausencia de desbordamiento aritmético.
- Acceso correcto al almacenamiento.
🏗️ Dialectos de Move: Sui Move vs. Aptos Move vs. Move original
Desde la descontinuación de Diem, Move ha evolucionado en diferentes direcciones según las necesidades de cada blockchain. Los dos dialectos principales son Sui Move y Aptos Move.
| Característica | Move original (Diem) | Sui Move | Aptos Move |
|---|---|---|---|
| Modelo de almacenamiento | Cuentas | Objetos (Object model) | Cuentas |
| Transacciones paralelas | Limitada | Sí (por objeto) | Limitada (Block-STM) |
| Capacidades de objeto | No | Sí (key, store, drop, copy) | No |
| Ownership | Por cuenta | Por objeto (dueño único o compartido) | Por cuenta |
| Estructura de datos | Global storage | Objetos con ID único | Global storage con capacidad de tabla |
| Framework estándar | Diem Framework | Sui Framework | Aptos Framework |
⛓️ Blockchains que utilizan Move
| Blockchain | Dialecto Move | Característica distintiva |
|---|---|---|
| Sui | Sui Move (objetos) | Modelo de objetos con transacciones paralelas |
| Aptos | Aptos Move (cuentas) | Block-STM para ejecución paralela optimista |
| Movement Labs | Move VM modular | Framework modular para rollups Move |
| Starcoin | Move original | Una de las primeras adopciones post-Diem |
| 0L (Zerolib) | Move original | Blockchain comunitaria con moneda social |
🆚 Move vs. Solidity vs. Rust: Comparativa de seguridad
| Característica | Move | Solidity | Rust (para smart contracts) |
|---|---|---|---|
| Modelo de seguridad | Recursos lineales + verificador formal | Responsabilidad del desarrollador | Ownership + borrow checker |
| Protección contra doble gasto | Garantizada (por diseño) | Manual (requiere implementación correcta) | Garantizada (con tipos correctos) |
| Verificación formal | Sí (Move Prover) | Limitada (herramientas externas) | Limitada |
| Curva de aprendizaje | Moderada | Baja | Alta |
| Reentrancy protection | Nativa (sin llamadas externas por defecto) | Manual (patrones checks-effects-interactions) | Depende del framework |
✅ Ventajas de Move para smart contracts
- Seguridad por diseño: El modelo de recursos lineales previene errores comunes como copiar tokens accidentalmente o perder fondos.
- Verificación formal integrada: Move Prover permite probar matemáticamente propiedades críticas del contrato.
- Protección nativa contra reentrancy: Move no permite llamadas externas arbitrarias durante la ejecución, eliminando una clase completa de vulnerabilidades.
- Modularidad y reutilización: El sistema de módulos publicados permite compartir librerías estandarizadas (como el framework de Sui).
- Ejecución paralela: Especialmente en Sui Move, el modelo de objetos permite transacciones paralelas masivas.
⚠️ Desventajas y desafíos de Move
- Efecto de red limitado: Comparado con Solidity (Ethereum), Move tiene un ecosistema de desarrolladores y herramientas mucho más pequeño.
- Curva de aprendizaje: El concepto de recursos lineales y el modelo de memoria Move son diferentes a lo que los desarrolladores web están acostumbrados.
- Dialectos fragmentados: Sui Move y Aptos Move son incompatibles entre sí. Un contrato escrito para Sui no funciona en Aptos sin modificaciones.
- Madurez del ecosistema: Las herramientas (SDKs, debuggers, IDEs) están menos maduras que las de Solidity o Rust.
🚀 El futuro de Move: Movement Labs y la Move Virtual Machine
Movement Labs está construyendo una Move Virtual Machine (Move VM) modular que puede integrarse en cualquier blockchain (incluyendo Ethereum como L2). Su objetivo es permitir que los desarrolladores de Move desplieguen sus contratos en el ecosistema Ethereum, aprovechando la seguridad de Move con la liquidez de EVM.
- M1 y M2: Las dos primeras redes de Movement, diseñadas para soportar contratos Move con finalidad rápida y comisiones bajas.
- Fractal (la «Move Virtual Machine»): Un intérprete de Move escrito en Rust, que permite ejecutar bytecode Move en cualquier entorno.
- Pontem Network: Otro proyecto que está construyendo infraestructura Move en Polkadot.
Para desarrolladores, Move representa una oportunidad de especializarse en un lenguaje de nicho pero de alto valor. La demanda de ingenieros Move (especialmente en Sui y Aptos) supera a la oferta, y se espera que la tendencia continúe a medida que más proyectos adopten Move por sus ventajas de seguridad.
Para quienes quieran empezar a programar en Move, te recomendamos explorar nuestra guía sobre Sui Blockchain y el desarrollo en Sui Move.
🎯 Conclusión: Move, el lenguaje que pone la seguridad en primer lugar
Move nació en el laboratorio de Meta con una misión ambiciosa: hacer que los smart contracts sean tan seguros como el sistema bancario tradicional. Aunque Diem no prosperó, su legado perdura en Move, un lenguaje que ha aprendido de los errores de Solidity y ha incorporado la seguridad en su diseño fundamental.
Para los desarrolladores de smart contracts, aprender Move no es solo aprender una nueva sintaxis; es adoptar una filosofía de programación diferente, donde los activos digitales son tratados como recursos físicos que no pueden ser duplicados ni destruidos accidentalmente. La combinación de recursos lineales, verificador formal y protección nativa contra reentrancy hace de Move el lenguaje más seguro disponible para smart contracts en la actualidad.
Si el futuro de blockchain pasa por la seguridad y la adopción institucional, Move tiene un papel central que desempeñar.
❓ Preguntas Frecuentes sobre Move
📚 Recursos para profundizar en Move
📖 Sui Blockchain – Desarrollo en Sui Move
🏗️ Aptos move language – Desarrollo en Aptos Move
🦀 Rust – El lenguaje en el que está implementado Move
🛡️ Guía de Seguridad Crypto – Prácticas de seguridad en smart contracts
🔧 Tutorial de wallets – Wallets para Sui (Sui Wallet) y Aptos (Petra, Martian)
📋 ¿Por qué confiar en esta definición? Cada término de la Cryptopedia sigue una metodología de verificación con fuentes primarias, whitepapers y legislación oficial. Conoce nuestro proceso →
⚠️ Disclaimer: Este artículo es exclusivamente educativo e informativo. Move es un lenguaje joven y en evolución; los dialectos (Sui Move, Aptos Move) son incompatibles entre sí. La información aquí presentada refleja el estado del ecosistema en mayo de 2026. No constituye asesoramiento de desarrollo ni financiero. Siempre audita tus contratos y sigue las mejores prácticas de seguridad.
📅 Actualizado: Mayo 2026
📖 Categoría: Infraestructura Blockchain / Ejecución y EVM
