Cómo funciona un smart contract (contrato inteligente en blockchain)

Blockchain · Contratos inteligentes · Actualizado 2026 · Lectura: ~11 min

Un smart contract no es un documento legal en PDF ni una persona. Es un programa informático que se ejecuta en una blockchain (como Ethereum) y que se activa automáticamente cuando se cumplen unas condiciones predefinidas. Una vez desplegado, es inmutable, transparente y no necesita intermediarios (como un notario o un abogado). Las reglas se escriben en código (normalmente en Solidity), la red de nodos ejecuta el código y el resultado (por ejemplo, transferir dinero) se registra en la blockchain. Te explico cómo funciona la Máquina Virtual de Ethereum (EVM), qué es el gas, cómo se escriben y despliegan, y por qué los oráculos son necesarios para traer datos externos.

01 / Definición

¿Qué es un smart contract? Diferencias con un contrato tradicional

Un contrato inteligente fue conceptualizado por Nick Szabo en 1994 (mucho antes de Bitcoin). La idea es un protocolo de transacción informatizado que ejecuta los términos de un contrato automáticamente. La blockchain, especialmente Ethereum, hizo posible esta idea al proporcionar una máquina virtual descentralizada donde el código se ejecuta sin censura ni intermediarios.

Diferencias con el contrato tradicional en papel:

  • Ejecución automática: no hace falta que un juez o un abogado lo ejecute. Si se cumplen las condiciones, el código se ejecuta (transfiere tokens, emite un NFT, etc.).
  • Inmutable: una vez desplegado en la blockchain, no se puede modificar (salvo que el propio contrato prevea mecanismos de actualización).
  • Transparente: cualquier persona puede ver el código fuente verificado en el explorador de bloques (Etherscan).
  • Sin confianza (trustless): no necesitas confiar en la otra parte; confías en el código (siempre que esté bien escrito).

Un ejemplo típico: un contrato de depósito en garantía (escrow). Ana quiere comprar un NFT por 1 ETH a Ben. El contrato recibe el ETH de Ana, lo retiene, y cuando Ben envía el NFT a la dirección de Ana (demostrado mediante una firma o verificación en la blockchain), el contrato libera el ETH a Ben. No necesita un intermediario.

Ethereum: la primera blockchain con smart contracts programables

Bitcoin tiene un lenguaje de scripting muy limitado (no Turing completo). Ethereum (lanzado en 2015) fue diseñado expresamente como “computadora mundial” descentralizada con un lenguaje Turing completo (Solidity). Actualmente otras blockchains (Solana, BNB Chain, Cardano, Avalanche, Polkadot) también soportan smart contracts.


02 / EVM y Solidity

La Máquina Virtual de Ethereum (EVM) y el lenguaje Solidity

La Ethereum Virtual Machine (EVM) es un entorno de ejecución descentralizado que corre en cada nodo de la red Ethereum. Cada operación (sumar, almacenar, transferir) tiene un coste en gas (medido en gwei). El código fuente de un smart contract suele escribirse en Solidity (lenguaje de alto nivel similar a JavaScript o C++).

Ejemplo de contrato simple (almacenar y recuperar un número):

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MiPrimerContrato {
    uint256 numero;
    function guardar(uint256 _numero) public {
        numero = _numero;
    }
    function leer() public view returns (uint256) {
        return numero;
    }
}

El código se compila a bytecode interpretable por la EVM y se despliega pagando una fee (gas) por el despliegue. Una vez desplegado, el contrato tiene una dirección en la blockchain. Los usuarios interactúan enviando transacciones a esa dirección con los datos de la función (guardar, leer).

Solidity soporta herencia, librerías, eventos (logs), y tipos complejos (arrays, mappings, structs). Alternativas a Solidity: Vyper (similar a Python), Rust (para Solana) y otros.


03 / Gas fees

Gas fees: por qué ejecutar un smart contract cuesta dinero (ETH)

El gas es la unidad que mide el trabajo computacional necesario para ejecutar una operación en la EVM. Cada operación elemental (suma, acceso a almacenamiento, creación de contrato) consume una cantidad fija de gas. El usuario paga el gas con ETH (la moneda nativa de Ethereum) a un precio en gwei (1 gwei = 10⁻⁹ ETH).

Factores que afectan el gas:

  • Complejidad del código: un contrato que escribe en almacenamiento (SSTORE) consume mucho más gas que uno que solo lee (SLOAD).
  • Congestión de la red: si muchos usuarios quieren ejecutar transacciones, el precio base del gas (base fee) sube (EIP-1559).
  • Propina (priority fee): los usuarios pueden añadir una propina para que los validadores incluyan su transacción antes.

Si el gas proporcionado es insuficiente, la transacción se revierte (no tiene efecto) pero se cobra el gas consumido hasta el fallo. Siempre es recomendable simular transacciones en testnet primero.

Las blockchains alternativas (Solana, BNB Chain, Polygon, Arbitrum) tienen gas mucho más barato, pero con diferentes modelos de seguridad y descentralización.


04 / Ciclo de vida

Ciclo de vida de un smart contract: desarrollo, despliegue e interacción

1
Escritura del código Se escribe en Solidity (u otro lenguaje) usando herramientas como Remix IDE (web), Hardhat o Foundry.
2
Pruebas (unitarias y testnet) Se ejecutan tests en red local o en testnet (Goerli, Sepolia) con ETH falso para asegurar que no haya bugs o vulnerabilidades de seguridad.
3
Auditoría (opcional pero recomendada para fondos grandes) Empresas como Trail of Bits, ConsenSys Diligence o CertiK revisan el código en busca de fallos de seguridad.
4
Despliegue en la red principal (mainnet) Se crea una transacción especial que incluye el bytecode del contrato. El minero/validador ejecuta el código constructor, y si todo es correcto, asigna una dirección al contrato.
5
Interacción Los usuarios envían transacciones a la dirección del contrato llamando a sus funciones (públicas/externas). Cada llamada consume gas. El contrato actualiza su estado (variables) y emite eventos registrados en los logs de la blockchain.

Un contrato puede tener funciones de solo lectura (view/pure) que no modifican el estado y por lo tanto no cuestan gas si se ejecutan localmente (llamada estática).

Los contratos también pueden autodestruirse (selfdestruct) enviando su saldo de ETH a una dirección, aunque esta operación está en desuso por motivos de seguridad en nuevas versiones.


05 / Oráculos (Chainlink)

Oráculos (Chainlink): cómo un smart contract obtiene datos del mundo real (precios, clima, resultados deportivos)

Los smart contracts son deterministas y no pueden acceder directamente a datos externos (como el precio del Bitcoin en dólares o la temperatura de Madrid) porque eso rompería el consenso: cada nodo podría tener una fuente diferente. Para solucionarlo, se usan oráculos descentralizados. El más conocido es Chainlink.

Un oráculo es un servicio que obtiene datos del mundo real (a través de APIs) y los entrega a la blockchain mediante una transacción firmada. Chainlink agrega datos de múltiples fuentes (intercambios, sensores) para proporcionar un resultado confiable y resistente a la manipulación.

Ejemplo de uso de Chainlink Price Feeds en Ethereum:

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
contract PrecioETH {
    AggregatorV3Interface internal priceFeed;
    constructor() {
        priceFeed = AggregatorV3Interface(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419);
    }
    function obtenerPrecio() public view returns (int) {
        (,int price,,,) = priceFeed.latestRoundData();
        return price;
    }
}

Sin oráculos, los contratos DeFi (Uniswap, Aave, Compound) no podrían conocer los precios de los activos para liquidar posiciones.

Tipos de oráculos

  • Oráculos de software: recuperan datos de APIs de internet (Chainlink, API3).
  • Oráculos de hardware: sensores IoT (temperatura, humedad) que firman datos criptográficamente.
  • Oráculos de consenso: múltiples nodos acuerdan un valor (ej. median price).

Un oráculo malicioso puede arruinar contratos (ataque de oráculo). Por eso Chainlink utiliza múltiples nodos y fuentes para mitigar el riesgo.


06 / Casos de uso

Casos de uso principales: DeFi (Uniswap, Aave), NFTs (ERC-721), DAOs, juegos blockchain

Los smart contracts impulsan la economía descentralizada:

  • DeFi (Finanzas Descentralizadas):
    • Uniswap: exchange descentralizado (DEX) que permite intercambiar tokens sin intermediarios usando “pools de liquidez”.
    • Aave: préstamos/endeudamiento con colateral (sobrecolateralización). Las tasas se determinan por algoritmos.
    • MakerDAO: emisión de DAI (stablecoin) con colateral.
  • NFTs (Non-Fungible Tokens): estándares ERC-721 o ERC-1155. Cada token es único y su metadata (imagen, atributos) se vincula mediante una URL o IPFS. Los contratos de mercado (OpenSea, Blur) permiten listar y vender NFTs.
  • DAOs (Organizaciones Autónomas Descentralizadas): contratos que gestionan tesorería y votaciones con tokens de gobernanza. Ej. Uniswap DAO, MakerDAO. Los holders de tokens votan propuestas, y el contrato ejecuta automáticamente las decisiones (transferencias, parametrizaciones).
  • Juegos blockchain (GameFi): Axie Infinity (descentralizado), The Sandbox; los smart contracts registran la propiedad de personajes y skins, y distribuyen recompensas.

07 / Seguridad y riesgos

Seguridad y riesgos: bugs, reentrancy attacks, hacks famosos (The DAO, Poly Network)

Un smart contract es inmutable; si tiene un error, no se puede parchear fácilmente (a menos que tenga mecanismo de actualización tipo proxy). Los errores se traducen en pérdidas millonarias de fondos. Algunos famosos:

  • The DAO (2016): un ataque de reentrancia (reentrancy attack) drenó 3,6 millones de ETH (60 millones USD en ese momento). Ethereum tuvo que hacer un hard fork para revertir el robo, dando lugar a Ethereum (ETH) y Ethereum Classic (ETC).
  • Parity Wallet (2017): un bug en una librería provocó que 500.000 ETH quedaran bloqueados indefinidamente.
  • Poly Network (2021): un error de lógica permitió robar 600 millones en múltiples activos (luego devueltos por el hacker).

Prácticas para minimizar riesgos:

  • Auditorías externas (múltiples empresas).
  • Blocos de pruebas con Bug Bounties.
  • Uso de estándares seguros (OpenZeppelin).
  • Contratos de actualización con patrón de proxy (UUPS, transparent proxy).
  • Limitación de permisos (multifirma para funciones críticas).

Ataque de reentrancia: cómo funciona

Un contrato atacante llama a una función del contrato víctima que transfiere fondos antes de actualizar el estado interno (balance). Si el atacante en su función de recepción (receive) vuelve a llamar a la misma función víctima, se puede drenar varias veces el balance. La solución: actualizar el estado antes de transferir (checks-effects-interactions pattern) o usar modificadores de bloqueo (nonReentrant de OpenZeppelin).


08 / FAQ

Preguntas frecuentes sobre smart contracts

¿Un smart contract puede ser modificado después de desplegado?
Por defecto, no. Es inmutable. Para permitir actualizaciones, se utiliza el patrón de contrato proxy donde la lógica está en un contrato aparte y el proxy redirecciona las llamadas. El dueño del proxy puede cambiar el contrato de lógica si está programado. Pero si el contrato no tiene mecanismo de actualización, no se puede modificar. Por eso es crucial auditar bien antes de desplegar.
¿Necesito saber programar para usar smart contracts?
Para interactuar con contratos existentes (DeFi, NFT) solo necesitas un monedero (MetaMask) y conectarte a la DApp. No necesitas programar. Para crear smart contracts, sí necesitas saber Solidity (o Rust, etc.) y tener conocimientos de blockchain.
¿Cuánto cuesta desplegar un smart contract en Ethereum?
Depende del tamaño del bytecode y de la complejidad del constructor. Un contrato simple puede costar 0.01–0.05 ETH (30–150 USD en febrero 2025 con ETH ~3000 USD). En épocas de congestión puede subir a 0.5 ETH. Alternativas: Polygon (centavos), Arbitrum (menos de 1 USD).
¿Puedo ejecutar un smart contract en Bitcoin?
Sí, pero con limitaciones. Bitcoin tiene un lenguaje de scripting simple (no Turing completo). Proyectos como Stacks, Rootstock (RSK) y Liquid permiten smart contracts más avanzados sobre Bitcoin, pero no son nativos como Ethereum.
¿Dónde se almacena el código de un smart contract?
En la propia blockchain, en el “almacenamiento” de una dirección. Puedes verlo en exploradores de bloques (Etherscan) si el contrato ha verificado su código fuente (verificación automática).

Sigue aprendiendo sobre tecnología

Fuentes y referencias técnicas

Szabo, N. (1994). Smart Contracts: Building Blocks for Digital Markets.
Wood, G. (2014). Ethereum: A Secure Decentralised Generalised Transaction Ledger. (Ethereum Yellow Paper).
Solidity Documentation – Ethereum Foundation. (2025). Solidity 0.8.x Guide.
Chainlink Labs. (2024). Decentralized Oracle Networks: Chainlink 2.0 Whitepaper.
ConsenSys Diligence. (2025). Smart Contract Security Best Practices.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio