Repositorio del taller "Intro a testing y seguridad de smart contracts con Foundry" dictado el 30 de Marzo del 2023 para HackIT/BA> por miembros de The Red Guild.
- Introducción
- Recorrido
- Requisitos preliminares
- Preparación
- Probando el setup
- Recursos adicionales
- Aviso importante
Durante el workshop vas a aprender, desde cero, los pasos fundamentales para usar Foundry, un framework de testing de contratos inteligentes.
Crearemos nuestro propio contrato para mintear NFTs, y veremos paso a paso como Foundry nos permite ponerlo a prueba para encontrar fallas y vulnerabilidades de seguridad.
Por si acaso aclaramos que el taller NO se trata de cómo construir tu propio NFT. Sólo utilizaremos un simple contrato de NFTs para mostrar las características de Foundry como una excelente herramienta de testing de smart contracts.
- Breve introducción al taller
- Presentación y objetivos
- Qué pasa si no testeas tus smart contracts.
- Comentarios iniciales sobre Foundry
- ¿Qué es? ¿Para qué se usa? ¿Por qué es tan bueno? ¿Y Hardhat?
- Instalación de Foundry
- Creación de un proyecto de Foundry
- Comandos básicos.
- Estructura.
- Standard library para testing.
- Creación de un contrato simple de NFT
- Vistazo general del wizard de OpenZeppelin Contracts
- Cómo armar un contrato de NFTs en 10 segundos.
- Cómo importar el contrato en Foundry.
- Troubleshooting e instalación de dependencias
- Testing, testing, testing
- Constructores.
- Cheatcodes de Foundry.
- Tests para verificar funcionalidad.
- Tests de seguridad para evitar mal manejo de fondos, reentrancy, errores de aritmética, logging incorrecto.
- Entorno local de programación con las utilidaded de línea de comandos curl y bash
- Tener instalado un IDE como VSCode.
- Si usás VSCode, instalá la extensión para Solidity.
- Conocimientos básicos de programación de contratos inteligentes en Solidity.
- Conocimientos básicos sobre NFTs (Non-Fungible Tokens), y estar familiarizado con su implementación tecnológica siguiendo el estándar ERC721.
Si querés adelantar algunos pasos previo al taller, te recomendamos:
- Descargar Foundry con el comando:
curl -L https://foundry.paradigm.xyz | bash
- Ejecutar el commando
foundryup
- Verificar la instalación de las tres herramientas más importantes de Foundry (
forge
,cast
ychisel
) ejecutando los comandos:
forge --version
> forge 0.2.0 (5182f43 2023-03-24T00:12:06.292809241Z)
chisel --version
> chisel 0.1.1 (5182f43 2023-03-24T00:12:34.566977743Z)
cast --version
> cast 0.2.0 (5182f43 2023-03-24T00:12:06.292809241Z)
- Clonar este repositorio a tu ambiente de desarrollo
git clone https://github.com/theredguild/workshop-hackitba-2023.git ws-hackitba
Asegurarse de estar en el directorio del proyecto
cd ws-hackitba
Podés ejecutar los tests con el comando:
forge test
Si bien vas a ver que ya hay código dentro de este repositorio, NO está completo. Iremos explicándolo y mejorándolo durante el taller.
Para saber más sobre el comando forge test
, podés referirte a la documentación.
- Foundry book
- How to Foundry 2.0 by Brock Elmore
- Wizard de OpenZeppelin Contracts
- ERC721: Non-Fungible Token Standard
- Roadmap into Ethereum security
- Lista de recursos de introducción a seguridad en Ethereum
Este repositorio ha sido creado para ser utilizado con fines educacionales, como acompañamiento de un taller dictado en la edición 2023 de HackIT/BA.
No debe ser considerado ni reproducido sin el contexto brindado durante el taller. Todo el código incluido tiene errores y vulnerabilidades de seguridad.