El mundo de desarrollo sobre blockchain es amplio. Exploremos una serie de conceptos y tecnologías que tienes que conocer para encontrar tu lugar en el desarrollo web3.
Ecosistema de desarrollo blockchain
Cada blockchain es un mundo. Tiene sus propias redes y características, utiliza diferentes lenguajes de programación, frameworks o librerías. Al desarrollar sobre blockchain, podrás encontrarte diversos tipos de profesionales y dependiendo tu interés podrás especializarte en uno u otro.
Tipos blockchain
En el mundo descentralizado, la gran mayoría de las blockchains importantes como Ethereum o Bitcoin son públicas. Cualquiera puede desplegar un nodo, desplegar un contrato inteligente o interactuar con la red. Todo es abierto y transparente.
Pero existe otra categoría de blockchains privadas como Hyperledger, ideales para cumplir con ciertos casos de uso para resguardar información de empresas o datos que no puedan ser guardados en una blockchain pública. No cualquier usuario puede interactuar con este tipo de blockchain, es necesario solicitar permisos y, obviamente, la centralización es alta.
Una tercer categoría, son las blockchains híbridas entre públicas y privadas. Las mismas poseen características tanto de blockchains públicas como de las privadas. El acceso es limitado hasta cierto punto, ya sea para desplegar nodos, contratos o interactuar con la red.
Tipos redes
Podríamos dividir los cientos de blockchains que existen en el mercado en dos categorías. Las basadas en EVM y las que no.
EVM son las siglas de Ethereum Virtual Machine. En pocas palabras, la EVM es la encargada de la ejecución de contratos inteligentes en cada nodo de la red de Ethereum, del cumplimiento de los protocolos, la comunicación entre nodos y de todo el funcionamiento de la red.
Entre las blockchains compatibles con EVM, además de Ethereum, podemos encontrar BNB Chain, Avalanche o Algorand. También existen segundas capas de Ethereum compatibles con EVM como Polygon, Arbitrum u Optimism. En todas estas blockchains suele utilizarse el mismo stack tecnológico, siendo Solidity el lenguaje principal de programación.
Otras blockchains que no están basadas en EVM, como Solana, Tron o Cardano, utilizan otros lenguajes de programación, siendo Rust el más adoptado por este tipo de blockchains alternativas.
A lo largo de este curso, trabajaremos con la blockchain de Ethereum utilizando Solidity como lenguaje de programación.
Blockchain core developer vs. blockchain dapps developer
Los profesionales del desarrollo blockchain se dividen en dos tipos, los core developer, o backend; y los dapps developer, o front-end.
Por un lado, los core developers, son aquellos especialistas en desarrollar contratos inteligentes. Tienen conocimientos de criptografía, de diseño de protocolos y, sobre todo, de seguridad para resguardar la información en el contrato y evitar robos de fondos.
Por otro lado, los dapps developer. Las siglas "DAPPS" hace referencia a decentralize apps, o aplicaciones descentralizadas. Son especialistas en tecnologías front-end como HTML, CSS y Javascript; pero, a ese stack tecnológico, se le añade el conocimiento sobre conexión con wallets e interacción con contratos inteligentes desde la aplicación.
Así como en web2 puedes ser un desarrollador backend, front-end o full-stack, lo mismo ocurre en web3. Si es de tu interés profesional, puedes ser un core developer y dapps developer al mismo tiempo, lo que te convertiría en un "full-stack blockchains developer".
Lenguajes, frameworks y librerías
Los diferentes tipos de profesionales blockchain tienen a su disposición un amplio abanico de tecnologías que puedes utilizar para hacer su trabajo.
- Lenguajes de programación: Solidity es el lenguaje de programación por excelencia para las blockchains basadas en EVM. Rust es otro lenguaje que ha sido ampliamente adoptado para el desarrollo de smart contracts. Ya sea backend o front-end, conocer Javascript es indispensable. Go es otro lenguaje tradicional que se utiliza mucho en proyectos descentralizados.
Toma el Curso Básico de Programación en Go.
-
Frameworks de desarrollo: Si trabajas con Javascript, herramientas como HardHat o Truffe son entornos de desarrollo excelentes para desarrollar pruebas o automatizar el despliegue de contratos. Si conoces Python, Brownie será el framework ideal para ti.
-
Librerías: Ya hemos dicho que Javascript es crucial en el desarrollo blockchain. Tecnologías como React predominan en el mercado a la hora de desarrollar aplicaciones descentralizadas. Librerías como Web3.js o Ether.js son excelentes para conectarte con un contrato desde un front-end. Cada blockchain tiene sus propias librerías; Solana, por ejemplo, posee @solana/web3.js como principal dependencia para interactuar con la red.
-
CLI: Como devs, ¡amamos los CLI! Encontrarás muchas herramientas que funcionan a través de terminales de línea de comandos que te permitirán ejecutar tareas mucho más rápido. Web3 CLI, Thirdweb o Create Web3 dApp son algunas de ellas. Solana también tiene su propio CLI o casi cualquier blockchain lo tiene. De ahí la importancia de ser amigo de las terminales.
Proceso de desarrollo
Las etapas del desarrollo de software web3 tiene sus diferencias con respecto al software tradicional.
Puedes comenzar desarrollando el smart contract. Cuando consideres que el mismo está listo, deberás interactuar con algún proveedor para el despliegue del mismo a blockchains como Ethereum. Los más conocidos son Infura o Alchemy. A diferencia del software web2 donde utilizamos AWS, Azure o algún proveedor cloud similar para desplegar aplicaciones backend.
Interactuar con ese contrato desde un front-end, requerirá de una wallet, siendo Metamask la principal para blockchains basadas en EVM. En el desarrollo del propio front-end, deberás programar la lógica de conexión con la wallet e interacción con los datos del contrato inteligente.
El proceso de desarrollo posee varias etapas que debes conocer. Ya sea que quieras ser backend o front-end, es recomendable tener un mínimo de experiencia en todo el stack. A lo largo de las siguientes clases, explorarás cada uno de estos pasos para desarrollar tu primera aplicación descentralizada.
Conclusión
Muchísimas tecnologías y conceptos se mencionaron a lo largo de esta clase. Bastante abrumador, seguramente, sobre todo si aún no tienes experiencia en desarrollo. Si te sientes perdido, no te preocupes. En este curso descubrirás poco a poco tu camino como desarrollador web3. Solo se requiere de muchas ganas de aprender.
Contribución creada por: Kevin Fiorentino (Platzi Contributor).
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?