No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Lenguajes y herramientas para el desarrollo blockchain

6/27
Recursos

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

Aportes 3

Preguntas 1

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Creo que este modelo de desarrollo de una Dapp es muy importante, por eso les muestro un breve resumen.

Soy una apasionado por el blockchain, amo los contratos inteligentes y precisamente por eso quiero desarrollar mi perfil en este lado, inicie la carrera de blockchain en platzi y ahora busco iniciar a escribir mis primera línea de código para mi proyecto personal. Ya en su momento escribir mis primeras líneas de código en remix. generando mi primer smart contract, pero realmente deseo fortalecer y madurar mi perfil en este punto como desarrollar blockchain enfatizado en smart contract.

Las principales diferencias entre el desarrollo Web2 y Web3 son los lenguajes que se utilizan en el back principalmente (Solidity, Rust, C++). Tambi√©n cambian los protocolos de comunicaci√≥n, en lugar de utilizar HTTP se utiliza JSON RPC. El t√≠pico logueo por usuario y contrase√Īa ya no se suele utilizar, en su lugar identificamos al usuario a trav√©s de su wallet. Con respecto al store de la informaci√≥n, ya no se utiliza MySQL o Mongo, la propia blockchain guarda los datos o en su defecto servicios descentralizados como IPFS.
Las tecnolog√≠as front-end son las √ļnicas que no cambian, se sigue utilizando React, Angular o Vue o simplemente JS. Si cambian las librer√≠as para conectarnos a cada blockchain, en lugar de clientes HTTP.