Curso de blockchain y smart contracts con Solidity y Vyper. Usando Cyfrin Updraft como referencia y guía de estudio. Enfocado a capas 2 de Ethereum como Polygon o Base.
Según preferencia se eligirá entre Solidity o Vyper como lenguaje de programación para desarrollar smart contracts. Con Solidity el enfoque será el desarrollo de apps mientras que con Vyper (y Python) además de apps se aplicará análisis de datos.
Los cursos de Cyfrin Updraft que usaremos como guía de estudio son gratuitos y se pueden completar en cualquier momento.
Es recomendable entender los conceptos de "Blockchain Basics" para el correcto aprovechamiento de los cursos de Solidity y Vyper. Este es el contenido que se dictará semanalmente en las lectures para tener fundamentos teóricos sólidos al momento de desarrollar los proyectos. Se le dará prioridad a programar desde el primer día (ver cursos de Solidity o Vyper en orden) mientras que progresivamente dominaremos los fundamentos semana a semana.
Otra recomendación es saber usar Git y GitHub para llevar el control de versiones en los proyectos, especialmente cuando se usen frameworks como Foundry o Moccasin.
La línea de comandos, especialmente con Linux, es también necesaria para desarrollar software.
Blockchain Basics [ 3hrs + 23 lessons + 1 project ]
Introductory blockchain developer course. Learn how blockchains and smart contracts work, and how to sign your first transaction. Whether you're new or are a seasoned developer, there's something here for you.
Si no sabes por dónde empezar, tomar esta ruta. Se dominará el desarrollo de apps decentralizadas para la web3.
Solidity Smart Contract Development [ 5hrs + 65 lessons + 3 projects ]
Start here if you're new to writing smart contracts! Learn Solidity programming language and smart contract development from industry-leading experts. Kickstart your career as a web3 developer.
Foundry Fundamentals [ 10hrs + 112 lessons + 3 projects ]
Learn Foundry for Solidity and level up your Solidity developer skills. Discover advanced web3 development concepts and tools in the Foundry Fundamentals course. Learn Foundry Forge and Anvil, Chainlink Blockchain oracles, smart contract testing, and how to spin up local networks.
Advanced Foundry [ 13hrs + 154 lessons + 4 projects ]
Learn advanced Foundry for Solidity smart contract development. Master web3 development techniques to write, deploy, test, optimize, and interact with your smart contracts using industry-standard tools. Lessons taught by the top smart contracts engineers in web3.
Para mejor integración con data science diseñamos el curso de Vyper y Python.
Introduction to Python and Vyper [ 6hrs + 75 lessons + 4 projects ]
Start your journey as a Python and Vyper smart contract developer. Learn how to write, deploy, and interact with Python based smart contracts using the Vyper programming language. Learn how to build your decentralized applications and kickstart your career as a web3 developer.
Intermediate Python and Vyper [ 14hrs + 174 lessons + 6 projects ]
Learn intermediated Python smart contract development using Vyper and level up your skills as a smart contract developer. This course will teach you how to test your Python based Vyper smart contracts, how to deploy contracts on ZKsync using Moccasin, the first web3 development framework to natively support ZKsync ERA, and launch your first cryptocurrency!
- Fundamentos: Comienza con Solidity Smart Contract Development para aprender la sintaxis básica y conceptos fundamentales.
- Desarrollo Avanzado: Continúa con Foundry Fundamentals y Advanced Foundry para dominar patrones de diseño y optimización.
- Recursos Adicionales:
- Conceptos Lógicos Aplicados a Solidity:
- Lógica Proposicional en Smart Contracts:
- Uso de operadores lógicos (
&&
,||
,!
) para construir condiciones de seguridad en modificadores - Simplificación de expresiones booleanas para reducir costos de gas en validaciones
- Aplicación de leyes de De Morgan para optimizar condiciones complejas en funciones
require()
- Manejo de precedencia de operadores en expresiones condicionales para evitar bugs de seguridad
- Uso de operadores lógicos (
- Razonamiento Algorítmico en la EVM:
- Análisis del flujo de ejecución en funciones para prevenir reentrancy attacks
- Modelado de transiciones de estado en mappings y estructuras de datos complejas
- Verificación formal de invariantes en bucles para evitar desbordamientos y underflows
- Optimización de operaciones de almacenamiento (SSTORE/SLOAD) mediante análisis lógico
- Lógica Proposicional en Smart Contracts:
- Ejercicios de Pensamiento Lógico para Solidity:
- Escenarios Prácticos de Contratos:
- Implementación de mecanismos de votación con validación de quórum usando
mapping(address => bool)
y contadores - Diseño de sistemas de control de acceso con roles jerárquicos usando herencia y modificadores
- Creación de esquemas de vesting de tokens con bloqueos temporales usando timestamps y bloques
- Desarrollo de circuitos de pausa de emergencia con múltiples condiciones de activación
- Implementación de mecanismos de votación con validación de quórum usando
- Patrones de Resolución en Solidity:
- Refactorización de condiciones anidadas (
if
dentro deif
) en expresiones más eficientes - Identificación de dependencias circulares entre contratos que pueden causar deadlocks
- Eliminación de comprobaciones redundantes para optimizar gas en funciones frecuentemente llamadas
- Análisis de casos extremos en operaciones matemáticas para prevenir vulnerabilidades de overflow
- Refactorización de condiciones anidadas (
- Escenarios Prácticos de Contratos:
- Metodología de Desarrollo Seguro:
- Técnicas de Análisis Lógico:
- Descomposición de funciones complejas en funciones más pequeñas y verificables
- Aplicación de técnicas de optimización de gas mediante simplificación lógica de condiciones
- Identificación de race conditions a través del análisis de flujo de transacciones
- Modelado de ataques mediante árboles de decisión para identificar vulnerabilidades
- Ejercicios Prácticos de Seguridad:
- Implementación de sistemas de votación resistentes a ataques de flash loans
- Desarrollo de mecanismos de control de acceso con timelock para operaciones críticas
- Diseño de circuitos de pausa con múltiples signatarios y condiciones de activación
- Optimización de verificaciones en bucles para reducir costos de gas sin comprometer seguridad
- Técnicas de Análisis Lógico:
Nota para Desarrolladores: En Solidity, la lógica no es solo una herramienta teórica sino una necesidad práctica. Cada operación tiene un costo de gas, y cada error lógico puede resultar en pérdidas financieras reales. Desarrollar la capacidad de descomponer problemas complejos en pasos lógicos verificables no solo mejora la calidad del código, sino que es esencial para la seguridad de los fondos gestionados por los contratos. Las vulnerabilidades más costosas en la historia de Ethereum han sido resultado de fallos lógicos aparentemente simples.
- Conceptos Básicos: Estudia los fundamentos de gobernanza en blockchain y votación on-chain.
- Frameworks:
- Proyectos Prácticos:
- Implementa un sistema de votación simple
- Crea una DAO con tesorería y propuestas
- Estudia el código de Nouns DAO
- Arquitectura: Comprende el funcionamiento de la EVM (Ethereum Virtual Machine).
- Transacciones y Gas: Aprende sobre el modelo de ejecución y optimización de gas.
- Recursos:
- Herramientas:
- Fundamentos de Escalabilidad: Comprende los desafíos de escalabilidad en Ethereum.
- Tipos de Soluciones L2:
- Rollups (Optimistic y ZK)
- Sidechains
- State channels
- Base (L2 de Coinbase):
- Documentación oficial de Base
- Base Camp - Programa de aprendizaje
- Onboarding para desarrolladores
- Polygon:
- Problema del Oráculo: Entiende por qué los smart contracts necesitan oráculos.
- Chainlink:
- Documentación de Chainlink
- Chainlink Data Feeds
- Chainlink VRF para aleatoriedad verificable
- Chainlink Automation para tareas programadas
- Proyectos Prácticos:
- Implementa un contrato que use feeds de precios
- Crea una aplicación con aleatoriedad verificable
- Automatiza la ejecución de funciones en tus contratos
- Interoperabilidad Blockchain:
- Comprende los desafíos de comunicación entre blockchains
- Estudia los diferentes modelos de puentes (bridges)
- Chainlink CCIP (Cross-Chain Interoperability Protocol):
- Seguridad en Bridges:
- Estudia casos de hacks en bridges (Wormhole, Ronin, etc.)
- Mejores prácticas de seguridad
- Proyectos Prácticos:
- Implementa un token que pueda moverse entre redes
- Crea una aplicación que lea datos de múltiples blockchains
- Desarrolla un sistema de mensajería cross-chain
Talleres ("office hours") de lunes a viernes en Discord. Se trabajará los proyectos de los cursos de Cyfrin Updraft, con Solidty o Vyper respectivamente.
Clases magistrales ("lectures") los sábados en Discord. Se explicará temas fundamentales de blockchain aplicados a smart contracts y los proyectos a desarrollar.
Se hará seguimiento semanalmente tanto al avance en los cursos (indiviualmente) como al desarrollo de los proyectos (grupalmente).
¡No duden preguntar lo que sea en Discord o WhatsApp!
Documentación de Nouns Builder
- Nouns DAO
- The Panama DAO
- Developer DAO
- MakerDAO/Sky Protocol
- Aave
- The Graph
- Ocean Protocol
- ASI Alliance