Recursos para el bootcamp de Web3Makers
Nos permiten crear sistemas que faciliten acuerdos donde la necesidad de confianza es minimizada.
- Inmutabilidad: una vez desplegados en una blockchain, no pueden ser cambiados.
- Transparencia: todas las interacciones quedan almacenadas en una blockchain, lo que nos da trazabilidad.
- Resiliencia: mientras funcione la blockchain, funcionan los contratos. Heredan la seguridad y resiliencia de la blockchain sobre la que corren.
- Costo: debido al alto nivel de redundancia que poseen las blockchains más seguras
- Transparencia: todas las interacciones quedan almacenadas en una blockchain, haciendo casos de uso donde la privacidad es necesaria más difíciles de implementar
- Madurez tecnológica: es una tecnología que se encuentra en desarrollo activo y muchas de las herramientas y prácticas experimentan cambios frequentes
Como mencionamos previamente los Smart Contracts se alojan sobre una blockchain. No todas las blockchains (Bitcoin por ejemplo) tiene soporte para Smart Contracts. Ethereum fue la primera red en implementarlos a través de la Ethereum Virtual Machine (EVM) que maneja todas las transacciones de la red y tiene funciones especiales que permiten que sus transacciones no solo transmitan ETH, si no que tambíen permite subir programas, los cuales tienen su propia dirección y pueden recibir transacciones conteniendo datos para llamar a las funciones del programa.
La forma más común de clasificar los tokes es según su fungibilidad:
Tokens Fungibles: cada unidad de un token fungible tiene el mismo valor y las mismas características que cualquier otra unidad del token.
Son comúnmente utilizados como medios de intercambio. Algúnos ejemplos pueden ser ETH, BTC, USDT, DOGE, UNI.
Para implementar este tipo de tokens se suele usar un estandar llamado ERC-20 que es un contrato que implementa las funciones definidas en el estandard.
Tokens No Fungibles (NFT): en cambio, para los NFTs, cada unidad puede tener un valor distinto y caraterísticas unicas.
Normalmente suelen estar agrupados en colecciones, como por ejemplo los Crypto Kitties, Bored Apes Yatch Club y Cryptopunks. Pero también pueden existir colecciones de una sola unidad.
El estandar para estos tokens es el ERC-721.
Uniswap: Intercambio de tokens fungibles decentralizado. Funciona con un Automated Market Maker (AMM) que determina las relaciones de precios entre pares de tokens a base de los balances de cada token depositados en el contrato. No solo facilita el servicio de intercambio, si no que también permite que cualquier usuario deposite tokens en el contrato para aumentar la liquidez del intercambio y a cambio de eso es recompensado con parte de las tarifas cobradas a los usuarios que intercambian tokens.
AAVE: Protocolo para prestar y tomar prestado tokens. Los prestamistas pueden ganar interés sobre su capital prestado. Mientras tanto, permite que otros usuarios depositen capital en la plataforma en un token como colateral para luego tomar prestamos en otros tokens.
Lens Protocol: es un conjunto de Smart Contracts que representan perfiles de usuarios e interacciones entre usuarios como seguir un usuario, hacer una publicación, referenciar una publicación y hasta crear un NFT a partir de una publicación. Todas estas interacciones forman una estructura de datos de grafos que puede ser leída por todos y cualquier persona con un perfil puede interactuar. Esto permite que se puedan construir una multitud de aplicaciones sobre la misma estructura de datos, a diferencia de lo que pasa con las redes sociales tradicionales en el que solo los dueños de la plataforma tienen acceso y control sobre los datos.
Tornado Cash: es una plataforma que a través de criptografía de cero conocimiento permite a los usuarios mandar tokens de una dirección a otra sin que ambas direcciones queden vinculadas por la transacción. Es una herramienta que provee de anonimato a sus usuarios, pero debido a su uso en operaciones de lavado de dinero fue sancionada y uno de sus desarrolladores se encuentra actualmente bajo custodia de autoridades del gobierno.
Dark Forest: basado en la saga de "Remembrance of Earth Past" y el concepto de los bosques oscuros como solución a la paradoja de Fermi, este juego utiliza criptografía de cero conocimiento para ser un juego de estragía en tiempo real que corre sobre una blockchain pública.
Ahora que pasamos de la introducción básica y casos de usos
Para interactuar con las diversas blockchains necesitamos tener una dirección. Y para probar que somos los dueños de esa dirección necesitamos una llave privada. Metamask es una aplicación que se encarga de almacenar tu llave privada y a la vez facilitar la interacción con múltiple blockchains.
Para el primer día del bootcamp, teniendo en cuenta la variedad de niveles, proponemos múltiples rutas de familiaridad con la programación y el lenguaje solidity. Presentamos los materiales en este documento y les sugerimos que si pueden comenzar a verlos y probarlos durante la semana, lo hagan. Después, durante el bootcamp van a poder continuar y tener a los mentores para despejar dudas.
Si no sos programador, o recién estás arrancando con Solidity, podés comenzar por aca.
Crypto Zombies es una plataforma interactiva en la que podés aprender a programar en Solidity a través de pequeñas lecciones escribiendo código en el Navegador. Recomendamos completar las primeras dos lecciones antes del bootcamp.
Si ya tenés experiencia con Solidity y haz escrito un par de Smart contracts te proponemos el desafío de comenzar a aprender más sobre seguridad utilizando Ethernaut.
Tip: antes del evento buscá un poco de Ether de prueba en la red Goerli con los siguientes faucets:
Si estás aca, ya sabés bastante y nuesta única recomendación es que aproveches este tiempo para probar cosas nuevas con la ayuda de los mentores.
Para ver y escribir Smart Contracts en este Bootcamp vamos a utilizar el IDE de Remix, el cual es Mantenido por la Ethereum Foundation
Ejemplo de integración con React y wagmi hooks
- Remix: Editor de Solidity online.
- Hardhat: Framework para desarrollo de Smart Contracs usando javascript para escribir scripts y pruebas.
- Etherscan: Explorador de bloques de Ethereum.
- Tenderly: Debuggeador y simulador de Smart Contracts.
Una excelente plataforma para aprender a programar en solidity a través de ejercios en un editor de código online. Todo alrededor del objetivo de crear un videojuego de zombies utilizando Smart Contracts.
Colección de Smart Contracts mantenidos por OpenZeppelin, una de las principales empresas de seguridad en Smart Contracts. Pueden encontrar los contratos en la capeta contracts
, ahí pueden entrar a alguna de las subcarpetas como token
para ver los contratos de la categoría.
Uno de los más grandes educadores de la comunidad blockchain, hace años que hace contenido sobre programación en su canal de YouTube y además de eso ha hecho dos colaboraciones ENORMES con FreeCodeCamp:
Una serie de desafíos para desafiar y profundizar tu conocimiento sobre el funcionamiento interno de Solidity y como identificar, prevenir (o explotar) fallas de seguridad en Smart Contracts.
A list of recommendations written by ConsenSys, the team behind Metamask.
Ahora que ya estás equipado con un buen punto de partida y muchos recursos, te sugerimos que tomes el siguiente paso y comiences a poner en práctica tus conocimientos.
Participar de hackathones es una experiencia maravillosa para aprender y poner a prueba tu conocimiento y habilidades. A continuación encontrarás una lista de lugares donde puedes encontrar hackathones online para participar junto con personas de todo el mundo.
Luego de participar en hackathones y adquirir un poco de experiencia se abrirán muchas puertas.
¿Alguna de las herramientas que usaste tenía bugs o no se ajustaba a tu caso de uso? Entonces esto es una oportunidad perfecta para intentar hacer el cambio y mejorar esta herramienta y hacer una Pull Request para que se incorpore. En este proceso, aunque no logres resolver el problema o tu solucion no sea aceptada, lograrás profundizar tu entendimiento de como funciona la herramienta y el problema que resuleve y mejoraras tus habilidades para trabajar en conjunto con otras personas.
Otra opción es también buscar algún proyecto que esté buscando desarrolladores e intentar incorporarte. Estos proyectos pueden ser de amigos, start-ups, empresas, DAOs y hasta ONG. Lo importante es seguir aprendiendo y dedicarse a aplicar ese conocimiento.
Pueden entrar a este link para darnos feedback del bootcamp.