Resumen de la clase:
Web 3 stack:
- Blockchain
- Ambientes de desarrollo para blockchain
- Almacenamiento de archivos
- API (indexing y querying)
- Identidad
- Client-side (frontend) frameworks y librerías
- Oráculos
Graduación
Proyectos desarrollados por los estudiantes
Introducción al Ethereum Developer Program
¿Cómo convertirse en blockchain developer?
¿Qué es el Ethereum Developer Program?
Ethereum Developer Program: Plan de Contenido
Ethereum Developer Program: Guía de estudio
Semana 1: Importancia del Manejo de Memoria
Importancia del Manejo de Memoria
Importancia del Manejo de Memoria: Actividades
Cómo se almacenan los datos en Ethereum
Semana 2: Web3-react
Salto de Web2 a Web3: React
Salto de Web2 a Web3: Actividades
Web3 Stack
¿Qué es Web3-React y cómo usarlo en tu próximo proyecto?
Semana 3: Ethereum Virtual Machine y Criptografía
Infraestructura y Funcionamiento de la Ethereum Virtual Machine
Fundamentos de Criptografía y EVM
Criptografía y Funcionamiento de la Ethereum Virtual Machine: Actividades
Semana 4: Creando tu primer Smart Contract
Crea tu primer smart contract
Crea tu primer smart contract: Actividades
Semana 5: Solidity
Aprendiendo Solidity desde cero
Superando la primera etapa del Ethereum Developer Program
RETO: NFT dinámicos con datos Off Chain
Semana 6: Tokens y Tokenización
Tokens y Tokenización
Semana 7: Testing Tools y Despliegue
Testing Tools y Despliegue: Actividades de la semana
Testing Tools y Despliegue
Semana 9: Auditoría y Seguridad de Smart Contracts
Auditoría y Seguridad de Smart Contracts
Auditoria y Seguridad de Smart Contracts: Resumen y actividades
Semana 10: Integraciones en Web3: Web3.js vs. Ether.js
Integraciones en Web3: Web3.js Vs Ether.js
Semana 11: Monetización para Blockchain Developers
Monetización para Blockchain Developers
Recursos Adicionales
Consideraciones de seguridad para smart contracts
Memory vs. Storage en Solidity
When building an app there is usually a set of services and tools that are used to do the job and make the app work, this set is known as stack. 🧱
For most traditional apps -or what we can call web2- the necessary components are:
In web3, on the other hand, things are not the same, since it represents a totally different paradigm and the ecosystem is still in an initial phase and in constant evolution.
First let's try to understand what the heck is web3. On the Internet you can find many definitions, each one from a different perspective, but focused on development you can understand that....
"Web3 is the set of protocols that make it possible to build fully decentralized applications".
Decentralized applications have their own characteristics, such as:
This new type of apps gives rise to a different development paradigm, with which you can create better solutions that can come to replace current applications. Now everything will be web3? 🤔 . Not really; web3 and decentralized applications is very useful in certain use cases, but not in all, so it depends on what you are building.
OK, you know what web3 is. It's time to get to know that set of tools that help you develop. The web3 stack can be divided into the following categories.
Let's look at each of them in detail. 🧐
There are a large number of blockchains on which you can build. There is not one that is the best, rather each has its own characteristics and ecosystem. In the current state of the ecosystem, the best place to start may be by learning Solidity, Ethereum and the Ethereum Virtual Machine (EVM).
Solidity allows you to start developing not only for Ethereum, but also for layer 2 solutions or sidechains such as Polygon andOptimism, as well as other EVM-compatible blockchains such as Avalanche, Celo, among others.
Another popular option is Rust. This language is used in blockchains such as Solana, NEAR and Polkadot.
But as mentioned above, there are many blockchains that have a good community, technology and usability. Some examples are:
Once you have decided which blockchain to use you will need an RPC endpoint to be able to receive and transmit information to the blockchain. The ways you can accomplish this are:
The first 2 options are not widely used. Public endpoints are usually not stable and can represent a breaking point for your app. Running your own node requires the use of a dedicated team and maintenance is often not easy.
The most common option is to use a service that works as a provider. Among the most common options we can find:
And another less used option, but also valid, is to use a decentralized provider.
For the Ethereum ecosystem and EVM, there are several development environments you can use.
On the other hand, if you are interested in the Solana ecosystem, a good choice of development environment is Anchor. Anchor offers the necessary tools to build, deploy and test your programs that you write for Solana.
When developing in web3 you need a place to store images, videos and other files used by your app. And at this point you may be thinking, "isn't data supposed to be stored on blockchain?" 🤔 , well no, at least not everything. Storing large files on-chain can be expensive and is usually not the best option.
Instead, there are protocols that allow us to do this data storage.
Other options that allow you to store data off-chain are:
These options are not yet fully established and face challenges such as providing real-time data, conflict resolution, documentation and improving the development experience. But they are platforms that could become more relevant in the future.
The way an application interacts with blockchain is very different from how it would interact with a traditional database. Most blockchains are optimized for write operations, but reading your information, on the other hand, is a bit complicated.
In a traditional application you have a database with indexed and efficiently organized information for sorting, filtering, searching and other types of queries.
In web3 you cannot do this directly from the blockchain, but you can do it from a specific protocol: The Graph. This protocol allows you to index and query, as well as build APIs, called subgraphs, from the blockchain data for easy consumption.
In web2 applications authentication is almost always based on the user's personal information. This information is usually collected through a form or an OAuth provider that asks the user to hand it over in exchange for access to the application.
In web3, the paradigm is totally different, identity is defined in relation to the concept of wallets. For a crypto user your wallet is a key -cryptographic- that gives you access to blockchain.
As a developer you must learn how to interact with the user's wallet, as well as request access to sign transactions to blockchain.
For web applications and if the user has installed the browser extension of any wallet you can find the element within the browser context as window.ethereum
or window.solana
depending on the blockchain.
One of the main tools to interact with wallets is WalletConnect.
Ethereum Name Service is another popular identity management system. To interact with it you can use the ens.js library.
Solana's Wallet Adapter in case you are in the Solana ecosystem.
For the creation of a frontend most JavaScript frameworks and/or libraries are compatible with blockchain development tools. However, most of the projects are developed with React.
Among the most used libraries to interact with Ethereum are web3.js and ethers.js.
In Solana you can use Solana-Web3.js or Anchor. Anchor has seen the most recent adoption.
Oracles allow developers access to read real-world data and external systems from a smart contract.
For example, most financial applications require knowledge of real-world data and events occurring off-chain, so oracles are especially important in DeFi.
Chainlink enables access to real-world data and off-chain computation while maintaining the security and reliability guarantees inherent in blockchain technology.
Flux is another oracle that provides smart contracts with access to economically secure data sources.
💡 For further reference, visit Nader Dabit's original text: Defining the web3 stack.
Contributions 1
Questions 1
Resumen de la clase:
Web 3 stack:
Want to see more contributions, questions and answers from the community?