Graduación

1

Proyectos desarrollados por los estudiantes

Introducción al Ethereum Developer Program

2

¿Cómo convertirse en blockchain developer?

3

¿Qué es el Ethereum Developer Program?

4

Ethereum Developer Program: Plan de Contenido

5

Ethereum Developer Program: Guía de estudio

Semana 1: Importancia del Manejo de Memoria

6

Importancia del Manejo de Memoria

7

Importancia del Manejo de Memoria: Actividades

8

Cómo se almacenan los datos en Ethereum

Semana 2: Web3-react

9

Salto de Web2 a Web3: React

10

Salto de Web2 a Web3: Actividades

11

Web3 Stack

12

¿Qué es Web3-React y cómo usarlo en tu próximo proyecto?

Semana 3: Ethereum Virtual Machine y Criptografía

13

Infraestructura y Funcionamiento de la Ethereum Virtual Machine

14

Fundamentos de Criptografía y EVM

15

Criptografía y Funcionamiento de la Ethereum Virtual Machine: Actividades

Semana 4: Creando tu primer Smart Contract

16

Crea tu primer smart contract

17

Crea tu primer smart contract: Actividades

Semana 5: Solidity

18

Aprendiendo Solidity desde cero

Superando la primera etapa del Ethereum Developer Program

19

RETO: NFT dinámicos con datos Off Chain

Semana 6: Tokens y Tokenización

20

Tokens y Tokenización

Semana 7: Testing Tools y Despliegue

21

Testing Tools y Despliegue: Actividades de la semana

22

Testing Tools y Despliegue

Semana 9: Auditoría y Seguridad de Smart Contracts

23

Auditoría y Seguridad de Smart Contracts

24

Auditoria y Seguridad de Smart Contracts: Resumen y actividades

Semana 10: Integraciones en Web3: Web3.js vs. Ether.js

25

Integraciones en Web3: Web3.js Vs Ether.js

Semana 11: Monetización para Blockchain Developers

26

Monetización para Blockchain Developers

Recursos Adicionales

27

Consideraciones de seguridad para smart contracts

28

Memory vs. Storage en Solidity

Testing Tools y Despliegue

22/28
Recursos
Transcripción

¿Por qué es crucial el testing y despliegue en Web3?

La transición hacia la Web3 exige implementar prácticas robustas de testing y despliegue para garantizar la seguridad y eficacia de aplicaciones que lidian con activos digitales de gran valor. La complejidad inherente de los contratos inteligentes y las soluciones blockchain demanda metodologías precisas y exhaustivas para prevenir problemas que puedan comprometer tanto los proyectos como la confianza de los usuarios.

Entre los puntos clave a considerar en este entorno se encuentra el uso de herramientas como Foundry, que permiten una verificación más eficiente de contratos. En palabras de Franco Valencia, Security Researcher en OpenZeppelin, las pruebas y auditorías son pasos críticos para identificar y corregir fallas antes de la implementación.

¿Qué es testing en el contexto de la blockchain?

Realizar pruebas de software, o testing, en blockchain implica validar la correcta ejecución de los procesos automatizados por contratos inteligentes. Esto asegura que las interacciones y transacciones funcionen exactamente como se espera, minimizando los riesgos de fallas o vulnerabilidades.

¿Cómo implementa OpenZeppelin el testing?

En OpenZeppelin, el proceso de auditoría implica analizar de cerca el código de los contratos, buscando fallas con la misma minuciosidad de un hacker, pero con intenciones constructivas. Su labor consiste en "romper" el sistema bajo condiciones controladas, para que los desarrolladores puedan corregir los errores antes de hacer el despliegue real.

La importancia de este proceso radica en que, al tratar con criptomonedas o NFTs, un error puede tener consecuencias financieras serias tanto para los desarrolladores como para los usuarios.

¿Qué son Foundry y Hardhat, y cómo nos ayudan?

Foundry es una herramienta emergente en el ecosistema Ethereum que ha ganado popularidad por su eficiencia y la posibilidad de escribir pruebas directamente en Solidity, permitiendo a los desarrolladores unificar el lenguaje de programación usado tanto para el desarrollo como para el testing. Esto no solo simplifica el proceso, sino que también reduce la posibilidad de errores relacionados con cambios de contexto.

¿Cuáles son las características distintivas de Foundry?

  • Velocidad y eficiencia: Foundry está implementado en Rust, lo que lo hace más rápido que otras herramientas como Hardhat.
  • Pruebas en Solidity: Permite escribir y ejecutar pruebas directamente en Solidity, evitando la necesidad de cambiar a Javascript.
  • Experiencia de usuario: Su diseño y funcionalidad ofrecen una experiencia más integrada y simplificada para los desarrolladores.

Por otro lado, Hardhat ha sido una de las librerías más populares durante años para escribir y desplegar contratos de Ethereum debido a su amplia documentación y comunidad de soporte. Aunque Foundry está ganando terreno, Hardhat sigue siendo una alternativa válida para quienes prefieren su ecosistema.

¿Cómo se realiza el deployment de un contrato en Ethereum?

Una vez que las pruebas preliminares han sido exitosas, el siguiente paso es el despliegue del contrato en la red Ethereum. Este proceso puede parecer complejo, pero Franco Valencia aclara que herramientas como Foundry facilitan enormemente el proceder mediante comandos que automatizan muchos pasos.

Pasos básicos para el deployment

  1. Compilación del contrato: El código en Solidity se compila a bytecode, que es la forma comprensible por la Ethereum Virtual Machine.
  2. Transacción hacia Ethereum: Se usa un nodo de Ethereum, como Infura o Alchemy, para propagar la transacción que desplegará el contrato.
  3. Uso de claves privadas: Se requieren para autorizar la transacción y deben manejarse cuidadosamente.
  4. Verificación en Etherscan: Una vez desplegado, la verificación en plataformas como Etherscan asegura transparencia, permitiendo a cualquier usuario ver y verificar el código del contrato.

Importancia de la transparencia

La verificación pública es fundamental en el ecosistema blockchain. Proporciona confianza al permitir que cualquier usuario revise el código fuente directamente, lo cual es crucial en un escenario donde la confianza y la seguridad son primordiales.

¿Por qué el testing y las auditorías son esenciales?

Franco destaca que, sin pruebas y auditorías exhaustivas, la mayoría de los contratos están propensos a fallas serias, particularmente aquellas que pueden comprometer activos financiers. La transición de Web2 a Web3 requiere no solo traducir modelos de programación, sino también aumentar los estándares de seguridad dado el valor intrínseco involucrado.

Las auditorías por profesionales aumentan la seguridad de los contratos al proporcionar un tercer vistazo que detecta fallas que quizás el equipo de desarrollo interno no pudo considerar.

En conclusión, implementar un enfoque integral que combine testing, auditoría y despliegue seguro no es solo una buena práctica, es esencial para el éxito en el dinámico y valioso ecosistema de la Web3.

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hola! 🙂
Dejo un resumen con apuntes de la clase:

  • Exploit: programa informático, parte de un software o secuencia de comandos que se aprovecha de un error o vulnerabilidad para provocar un comportamiento no intencionado o imprevisto de un software, hardware o cualquier dispositivo electrónico
  • Todo protocolo debe cumplir con un estándar de seguridad. Debemos dar por sentado que intentarán generar un exploit.
  • Es importante auditar el código porque es muy difícil que un developer o un grupo de developers tenga todas las cuestiones de seguridad cubiertas al primer lanzamiento.
  • Aquí es donde se vuelve relevante el testing, porque mediante su uso podemos disminuir el riesgo de sufrir exploits en el protocolo.
  • Cuando Remix compila, transforma el código Solidity en Bytecode legible por la EVM.
  • Es muy graves al deployar un contrato la falta de pruebas. Si no existe un archivo de pruebas en el repositorio, debemos dar por sentado que hay vulnerabilidades en el protocolo. Cada contrato (del conjunto de contratos del protocolo) debe tener un test propio. Se deben probar todas y cada una de las funciones.
  • En remix es difícil testear. Se puede compilar en Remix, Hardhat, Foundry.
  • Para deployar un contrato, se puede:
    • Tener un nodo propio. Es muy dificultoso por distintas razones.
    • Usar un nodo en Infura o Alchemy, para realizar la transacción del contrato y estas lo emiten a la red de Ethereum. Además, verifican el contrato en Etherscan automáticamente para las transacciones.
  • Vulnerabilidades usuales en Contratos:

Chicos por acá les dejo el enlace al repo de GitHub

https://github.com/Vanclief/foundry-tutorial