Saltar al contenido principal
Change page

Lenguajes de contrato inteligente

Un gran aspecto de Ethereum es que los contratos inteligentes pueden programarse utilizando lenguajes relativamente fáciles para el programador. Si tienes experiencia con Python o con cualquier lenguaje de llaves (opens in a new tab), puedes encontrar un lenguaje con una sintaxis familiar.

Los dos lenguajes más activos y soportados son:

  • Solidity
  • Vyper

Remix IDE proporciona un entorno de desarrollo integral para crear y probar contratos tanto en Solidity como en Vyper. Prueba el IDE Remix en el navegador (opens in a new tab) para empezar a programar.

Es posible que los desarrolladores con más experiencia quieran utilizar Yul, un lenguaje intermedio para la Máquina Virtual de Ethereum, o Yul+, una extensión de Yul.

Si es curioso y le gustaría ayudar a testear nuevos lenguajes que aún se encuentran en gran desarrollo, puede experimentar con Fe, un lenguaje emergente de contratos inteligentes que aún está en sus inicios.

Requisitos previos

El conocimiento previo de lenguajes de programación, especialmente de JavaScript o Python, puede ayudarlo a entender las diferencias en los lenguajes de los contratos inteligentes. También recomendamos que entienda los lenguajes de los contratos inteligentes como concepto antes de profundizar en las comparaciones de lenguajes. Introducción a los contratos inteligentes.

Solidity

  • Lenguaje orientado a objeto de alto nivel para implementar contratos inteligentes.
  • Lenguaje de llaves más influenciado por C++.
  • Escrito estáticamente (el tipo de una variable se conoce en el momento de compilación).
  • Admite:
    • Herencia (puede extende otros contratos).
    • Bibliotecas (puede crear código reutilizable que puede invocar de diferentes contratos, como funciones estáticas en una clase estática en otros lenguajes de programación orientados a objetos).
    • Tipos complejos definidos por el usuario.

Contrato de ejemplo

Este ejemplo debería darle una idea de cómo es la sintaxis de un contrato Solidity. Para una descripción más detallada de las funciones y variables, consulta la documentación (opens in a new tab).

Vyper

  • Lenguaje de programación Pythonic
  • Escritura fuerte
  • Código de compilador pequeño y comprensible
  • Generación eficiente de bytecode
  • Deliberadamente tiene menos funciones que Solidity con el objetivo de hacer que los contratos sean más seguros y más fáciles de auditar. Vyper no admite:
    • Modificadores
    • Herencia
    • Ensamblado en línea
    • Sobrecarga de funciones
    • Sobrecarga de operadores
    • Llamadas recurrentes
    • Bucles de longitud infinita
    • Puntos fijos binarios

Para obtener más información, lee los fundamentos de Vyper (opens in a new tab).

Ejemplo

Este ejemplo debería darle una idea de cómo es la sintaxis de contratos de Vyper. Para una descripción más detallada de las funciones y variables, consulta la documentación (opens in a new tab).

Yul y Yul+

Si es nuevo en Ethereum y aún no ha hecho ninguna codificación con lenguajes de contrato inteligente, le recomendamos empezar con Solidity o Vyper. Solo póngase con Yul o Yul+ una vez que esté familiarizado con las prácticas recomendadas de seguridad de los contratos inteligentes y los detalles de trabajar con la EVM.

Yul

  • Lenguaje intermedio para Ethereum.
  • Admite la EVM y Ewasm (opens in a new tab), un WebAssembly con sabor a Ethereum, y está diseñado para ser un denominador común utilizable de ambas plataformas.
  • Buen objetivo para etapas de optimización de alto nivel que pueden beneficiar a las plataformas EVM y Ewasm por igual.

Yul+

  • Una extensión de bajo nivel y alta eficiencia para Yul.
  • Diseñado inicialmente para un contrato de paquetes acumulativos optimistas.
  • Yul+ se puede considerar una propuesta de actualización experimental de Yul, que le añade nuevas funciones.

Contrato de ejemplo

El siguiente ejemplo sencillo implementa una power function. Se puede compilar usando solc --strict-assembly --bin input.yul. El ejemplo debe almacenarse en el archivo input.yul.

Si ya tiene mucha experiencia con los contratos inteligentes, puede encontrar una implementación completa de ERC20 en Yul aquí (opens in a new tab).

Fe

  • Lenguaje escrito estáticamente para la Máquina Virtual de Ethereum (EVM).
  • Inspirado en Python y Rust.
  • Pretende ser fácil de aprender, incluso para desarrolladores que son nuevos en el ecosistema de Ethereum.
  • El desarrollo de Fe se encuentra aún en sus inicios; el lenguaje tuvo su lanzamiento alpha en enero de 2021.

Contrato de ejemplo

El siguiente es un contrato simple implementado en Fe.

Cómo elegir

Como sucede con cualquier otro lenguaje de programación, se trata principalmente de elegir la herramienta adecuada para el trabajo correcto, así como las preferencias personales.

Estas son algunas cosas que debe tener en cuenta si aún no ha probado ninguno de los lenguajes:

¿Qué tiene de genial Solidity?

  • Si es principiante, encontrará muchos tutoriales y herramientas de aprendizaje por ahí. Obtén más información sobre esto en la sección Aprende programando.
  • Buenas herramientas de desarrollador disponibles.
  • Solidity tiene una gran comunidad de desarrolladores, lo que significa que muy probablemente encontrará rápidamente las respuestas a sus preguntas.

¿Qué tiene de genial Vyper?

  • Es una fantástica forma de comenzar para aquellos desarrolladores de Python que deseen escribir contratos inteligentes.
  • Vyper dispone de una menor cantidad de funciones que lo convierten en la opción ideal para elaborar prototipos de ideas rápidamente.
  • Vyper pretende ser una herramienta fácil de auditar y ofrecer el nivel máximo de legibilidad para las personas.

¿Qué tienen de genial Yul y Yul+?

  • Lenguaje simple y funcional de bajo nivel.
  • Le permite aproximarse mucho más a la EVM sin procesar, lo que puede ayudarlo a optimizar el uso de gas en los contratos.

Comparaciones de lenguajes

Para comparaciones de sintaxis básica, el ciclo de vida del contrato, interfaces, operadores, estructuras de datos, funciones, flujo de control y más, consulta esta hoja de referencia de Auditless (opens in a new tab)

Lecturas adicionales

Última actualización de la página: 25 de febrero de 2026

¿Te resultó útil este artículo?