GithubHelp home page GithubHelp logo

workshop-ethargentina-2023's Introduction

Intro a la seguridad de smart contracts en Foundry @ EthereumArgentina

standard-readme compliant

Repositorio del taller "Intro a la seguridad de smart contracts en Foundry" dictado presencialmente el 19 de Agosto del 2023 para EthereumArgentina.

Tabla de Contenidos

Introducción

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.

Recorrido

  1. Breve introducción al taller
    • Presentación y objetivos
    • Qué pasa si no testeas tus smart contracts.
  2. Comentarios iniciales sobre Foundry
    • ¿Qué es? ¿Para qué se usa? ¿Por qué es tan bueno? ¿Y Hardhat?
  3. Instalación de Foundry
  4. Creación de un proyecto de Foundry
  5. Creación de un contrato simple de NFT
  6. Troubleshooting e instalación de dependencias
  7. 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.

Requisitos preliminares

  • 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.

Preparación

Si querés adelantar algunos pasos previo al taller, te recomendamos:

  1. Descargar Foundry con el comando:
curl -L https://foundry.paradigm.xyz | bash
  1. Ejecutar el commando foundryup
  2. Verificar la instalación de las tres herramientas más importantes de Foundry (forge, cast y chisel) 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)
  1. Clonar este repositorio a tu ambiente de desarrollo
git clone https://github.com/theredguild/workshop-ethargentina-2023.git

Probando el setup

Asegurarse de estar en el directorio del proyecto

cd workshop-ethargentina-2023

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.

Recursos adicionales

Aviso importante

Este repositorio ha sido creado para ser utilizado con fines educacionales, como acompañamiento de un taller dictado en la edición 2023 de EthereumArgentina.

No debe ser considerado ni reproducido sin el contexto brindado durante el taller. Todo el código incluido tiene errores y vulnerabilidades de seguridad.

workshop-ethargentina-2023's People

Contributors

mattaereal avatar tinchoabbate avatar

Stargazers

 avatar raa avatar Dmitry avatar

Watchers

 avatar

Forkers

abettucci

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.