Ethereum Developer Program

Tokens y oráculos con OpenZeppelin y Chainlink

Ethereum Developer Program

Contenido del curso

Tokens y oráculos con OpenZeppelin y Chainlink

Resumen

Si quieres construir aplicaciones descentralizadas confiables, necesitas dominar dos piezas clave: los estándares de smart contracts con OpenZeppelin y el uso de oráculos con Chainlink para conectar tu contrato con el mundo real. Aquí te explico cómo encajan ambas herramientas y por qué te ahorran tiempo, dinero y errores costosos.

¿Qué son los estándares de smart contracts y por qué importan?

Solidity es el lenguaje más usado para crear contratos inteligentes en Ethereum, y con el tiempo la comunidad definió estándares para que esos contratos sean seguros, interoperables y fáciles de usar. Cuando sigues un estándar, cualquier desarrollador o aplicación reconoce de inmediato cómo interactuar con tu contrato.

Estos estándares se dividen en tres grupos: los ERC, que definen interfaces de comportamiento; los de codificación, que dictan cómo escribir Solidity legible; y los de seguridad, que documentan vulnerabilidades comunes y cómo mitigarlas [4:30].

¿Cuáles son los ERC más comunes en Ethereum?

Los Ethereum Request for Comments más usados resuelven casos concretos de tokenización [6:20]:

  • ERC-20: el estándar de tokens fungibles. Define cómo transferirlos, consultar saldos y mantener balances. Todos sus tokens valen lo mismo.
  • ERC-721: el estándar de NFTs o tokens no fungibles. Cada token es único, puede tener un valor distinto y registra su historial de propietarios.
  • ERC-1155: permite manejar tokens fungibles y no fungibles dentro de un mismo contrato, con un uso más eficiente de recursos.
  • ERC-777: una mejora del ERC-20 con transferencias más flexibles e integración más eficiente con otros contratos.

¿Qué diferencia hay entre ERC-20 y ERC-721? El ERC-20 crea tokens idénticos entre sí, como una moneda. El ERC-721 crea tokens únicos, como una obra de arte digital, donde cada unidad puede tener atributos y precios distintos.

¿Cómo te ayuda OpenZeppelin a escribir contratos seguros?

OpenZeppelin es una librería open source de contratos inteligentes que ya están auditados y probados por expertos. En lugar de escribir desde cero un ERC-20 o un ERC-721, importas la librería y heredas la implementación oficial [15:40].

La librería se organiza en cinco grandes grupos:

  • Access control: roles, permisos y listas blancas o negras.
  • Token contracts: implementaciones listas de ERC-20, ERC-721, ERC-1155 y ERC-777, con funciones extra como burning.
  • Payment: contratos para dividir pagos, programarlos o condicionarlos.
  • Governance: todo lo necesario para crear una DAO, definir cómo se vota y qué peso tiene cada voto.
  • Upgradeable contracts: contratos proxy y administración de actualizaciones.

¿Cómo se ve un contrato ERC-20 con OpenZeppelin?

En un proyecto con Hardhat instalas la librería con npm install @openzeppelin/contracts y la importas en tu archivo Solidity. Tu contrato hereda de ERC20 y de Ownable, y con eso ya tienes toda la funcionalidad de un token fungible más un modificador que restringe ciertas funciones al dueño del contrato [21:30].

solidity import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol";

contract MyToken is ERC20, Ownable { constructor() ERC20("MyToken", "MTK") { _mint(msg.sender, 100 * 10**decimals()); }

function mint(address to, uint256 amount) public onlyOwner { _mint(to, amount); }

}

La ventaja económica es directa: solo auditas tu contrato principal, no la implementación base del estándar. Eso reduce costos de auditoría considerablemente.

¿Por qué los smart contracts necesitan oráculos?

Los contratos inteligentes tienen una limitación fuerte: no pueden conectarse directamente con datos fuera de la blockchain. Si un contrato llamara a una API externa, cada nodo validador podría recibir un resultado distinto, y eso rompe la naturaleza determinista de la red [27:10].

La solución son los oráculos: dispositivos que traen datos externos o ejecutan cómputos pesados fuera de la cadena y entregan el resultado verificado. Pueden traer precios, clima, datos deportivos, satelitales o financieros.

¿Qué es un oráculo descentralizado? Es una red de nodos independientes que verifican un dato externo, llegan a un consenso y lo escriben en la blockchain. Evita que un solo proveedor sea un punto de falla.

¿Qué servicios ofrece Chainlink?

Chainlink es una red de oráculos descentralizada y blockchain agnostic, con nodos en distintas cadenas. Sus servicios principales son:

  • Data Feeds: muy usados en DeFi, agregan precios de múltiples nodos y descartan valores con discrepancias grandes. Un feed típico exige un mínimo de 21 nodos activos [33:50].
  • Automation: red descentralizada que verifica condiciones y dispara funciones en tu contrato cuando se cumplen, sin depender de un servidor centralizado.
  • VRF (Verifiable Random Function): genera números aleatorios verificables, imposibles de manipular por un validador. Útil en juegos y NFTs con atributos aleatorios.
  • Functions: anunciado recientemente, permite ejecutar código JavaScript fuera de la cadena con consenso descentralizado y devolver el resultado a tu contrato [41:20].

¿Cómo funciona Chainlink Functions en la práctica?

Tu smart contract envía un código JavaScript a una red de oráculos descentralizada, los nodos lo ejecutan en entornos separados, agregan los resultados, aplican consenso y devuelven el valor final mediante una callback function. Puedes llamar APIs con autenticación, pasar argumentos y recibir el resultado verificado.

En una demo en Remix sobre la testnet Sepolia, una función simple devuelve Hello, Platzi enviando Platzi como argumento, con un gas limit de 300 millones y una suscripción activa al servicio.

¿Por dónde empezar a desarrollar en Web3?

Si vas iniciando, arranca con el curso de Solidity y luego avanza al curso específico de OpenZeppelin para entender cómo heredar y combinar contratos. Acompáñalo con la documentación de Chainlink Education para sumar oráculos cuando tu proyecto necesite datos externos.

Dos hábitos que marcan diferencia: escribe tests para toda la funcionalidad de tus contratos, porque ni los contratos auditados son infalibles cuando los combinas con tu lógica; y construye en público, documentando lo que aprendes en GitHub, blogs o Twitter. Eso te abre oportunidades reales en el ecosistema.

¿Cuál de estos servicios planeas usar primero en tu próximo proyecto? Cuéntame en los comentarios.