typestar

Lenguajes

Solidity

El lenguaje principal para contratos inteligentes en Ethereum y las blockchains compatibles.

Practica Solidity

28 pasos en 1 tours, desde lo básico hasta programas completos.

Los tours

Primera versión
2015
Creado por
Gavin Wood, Christian Reitwiessner, and the Ethereum team
Tipado
Estático y dimensionado; el entorno adversarial moldea cada idioma
Los fragmentos siguen
0.8
Extensiones de archivo
.sol

Para qué sirve

Solidity es el lenguaje dominante de la Ethereum Virtual Machine y sus muchas cadenas compatibles: el código de tokens, exchanges, pools de préstamo, DAOs y registros de NFT. Lo inusual no es la sintaxis — se lee como un JavaScript compacto con tipos — sino la consecuencia: los contratos desplegados son inmutables y guardan fondos reales, así que un bug es una pérdida, a veces de nueve cifras, y cada operación cuesta gas que quien llama paga. El lenguaje es chico; la disciplina alrededor no.

Ese entorno produjo idiomas que no existen en otra parte. Pagos por retiro en vez de envío, porque mandar dinero a una dirección desconocida le entrega el control. El orden checks-effects-interactions, porque la reentrada vació la DAO original. Errores tipados sobre strings de mensaje, topics indexados en los eventos, bloques unchecked y palabras de ubicación de datos, todo porque los bytes y el cómputo van con taxímetro. Las revisiones de seguridad son un oficio propio, y mucho código de producción ensambla componentes auditados de OpenZeppelin en vez de reinventarlos.

La cadena de herramientas es su propio mundo: Foundry y Hardhat para pruebas (a menudo con fuzzing), solc compilando a bytecode de la EVM, y testnets haciendo de staging. En lo profesional es un lenguaje de especialistas — una comunidad chica frente a las mayores, inusualmente bien paga, donde leer importa tanto como escribir porque buena parte del trabajo es auditar contratos ajenos.

De dónde viene

Solidity fue propuesto por Gavin Wood en 2014 y desarrollado bajo Christian Reitwiessner en el proyecto Ethereum, saliendo en 2015 junto a la red para la que se construyó. Las inspiraciones tempranas fueron la accesibilidad de JavaScript y la disciplina de tipos de C++; el modelo orientado a contratos — código más almacenamiento viviendo en una dirección — vino del diseño mismo de Ethereum.

El hackeo de la DAO en 2016, un exploit de reentrada que vació un tesoro entonces enorme y partió Ethereum en dos cadenas, le enseñó al ecosistema su lección definitoria: los usuarios del lenguaje son adversarios. Los años siguientes trajeron endurecimiento constante — ubicaciones de datos explícitas y visibilidad más estricta en 0.5, ABIEncoderV2, y la aritmética verificada por defecto de 0.8, que retiró la biblioteca SafeMath de la que dependió una generación entera de contratos.

Desde 0.8 el lenguaje evoluciona con cuidado — errores tipados, tipos de valor definidos por el usuario, soporte de almacenamiento transitorio — mientras el centro de gravedad se movió a las cadenas de capa 2 que conservan la EVM y por lo tanto Solidity. Existen Vyper y otros lenguajes de EVM, pero los efectos de red, la familiaridad de los auditores y el ecosistema OpenZeppelin mantienen a Solidity como el defecto.

Cómo se siente teclearlo

Solidity se escribe como una lista de verificación de seguridad: palabras largas y exactas — uint256, external, immutable, calldata — repetidas hasta el reflejo, con constantes en SCREAMING_CASE y funciones en camelCase. La ceremonia es constante (línea SPDX, pragma, llaves de contract) y el vocabulario es compacto pero denso: require y revert y emit abren líneas, msg.sender aparece en todas partes, y mapping(address => uint256) es prácticamente una palabra. Los identificadores largos rinden menos tokens por pulsación que la mayoría de los lenguajes, así que la métrica de ritmo corre más baja aquí — tipeo deliberado para un lenguaje deliberado.

Practica Solidity

28 pasos en 1 tours, desde lo básico hasta programas completos.

Documentación oficial

Otros lenguajes