Actualmente existen muchas propuestas de proyectos relacionadas a la tecnologia Blockchain. Y en donde hay proyectos se necesitan desarrolladores que puedan crear estos proyectos. Así que voy a darles un resumen básico de lo que conlleva ser un Desarrollador Blockchain en el año 2022.
2 Tipos de Desarrolladores Blockchain
Una Blockchain es una red computadoras en los que estos ejecutan programas para ser parte de una red, estos programas son llamados Blockchain Clients, y es comun que estos esten escritos en lenguajes de bajo nivel como C, C++, Rust o Golang. Aunque a parte de saber programar en estos lenguajes se debe saber tambien sobre conceptos de Redes, Sistemas operativos, Sistema de Archivos, Algoritmos, criptografia y entender como funcion los sistemas distribuidos en general.
Basicamente el trabajo de este tipo de desarrolladores es crear o mantener Blockchains, y se les denomina Blockchain Core Developers.
Y aunque son bastante requeridos y muy bien remunerado, no es nada sencillo y tampoco es comun encontrar a este tipo de desarrollador por todos lados. haciendo un simil con el desarrollo de aplicaciones tipico, este tipo de desarrolldaores es equivalente a encontrar programadores de software de nivel bajo como compiladores o kernels. existen, son bien pagados, pero probablemente la gran mayoria de desarrolladores no se va a dedicar a esto.
A lo que la mayoria si se va a dedicar es a crear aplicaciones que esten basadas en Blockchains ya existentes. Este tipo de desarrolladores se les denomina Blockchain app developers. y de manera habitual, cuando muchos hablan de un desarrollador blockchain por lo general estan hablando de este tipo de desarrollador. De hecho, a estos desarrolladores coloquialmente se les esta llamando Desarrolladores de la Web 3.0. ya saben la web 1.0, fue la que nos permitio crear documentos, la web 2.0 nos permitio crear aplicaciones y la web 3.0 permite usar un modelo decentralizado en nuestras aplicaciones. Y justamente de este tipo de desarrollos es al que me voy a referir en el video.
Blockchain para Desarrolladores
Este es coinmarketCap, una sitio en donde se listan la mayor cantidad de proyectos Blockchain, Y en donde justo ahora existen más de 10000 proyectos crypto. La pregunta es, ¿Todos estas blockchains importan?, La respuestsa simple es No.
No son muchos los proyectos que realmente valen la pena estar pendientes de ellos, y es que muchas personas les dan bastante importancia a bastantes de estos proyectos, pero la mayoria de las veces es debido a la espucalacion del precio de su criptomoneda y no a su tecnología. esto quiere decir que el precio de una criptomoneda y su importancia no siempre estan relacionadas. El ejemplo de esto es DogeCoin, una moneda que se volvio popular gracias a memes de Elon Musk, pero no propone nada relevante a nivel tecnológico. En otras palabras la capitalización de mercado de un proyecto no significa que sea un buen proyecto.
Y es que no es tan complicado crear uno de estos proyectos crypto. Las blockchains por lo general son proyectos abiertos en donde puedes ver el codigo e incluso copiarlos para poder alterarlos, lo que se le conoce como un fork en desarrollo tipico. De esta forma es como han sido creados tantos de estos proyectos al dia de hoy.
De hecho muchos de estos proyecots incluso no tienen su propia blockchain sino que estan creados encima de otras blockchains existentes.
Por lo general los proyectos serios o que proponen algo nuevo los puedes encontrar en la lista de los primeros 100, en donde los primeros 10 son los mas populares como Bitcoin, Ethereum, Binance Smart Chain, y asi.
Entonces ¿ debemos desarrollar aplicacones para la blockchain de bitcoin? No realmente. La red Bitcoin, es a lo que se le denomica una blockchain de primera generacion, es decir que su proposito es solo ser una red para transferir dinero. es decir transferir su moneda digital que tambien se llama bitcoin.
Pero lo que necesitamos para desarrollar aplicaciones son Blockchains de segunda generacion, es decir blockchains que permitan ejecutar código. Es aqui donde entran blockchaisn como Ethereum.
Si bitcoin es la red del dinero decentralizado mas imporante, Ethereum es la red de las aplicaciones decentralizadas más importante. Ethereum trajo al mundo blockchain la posiblidad de crear aplicaciones que se ejecutan en su red, a los cuales llama Smart Contracts,
Muchos tratan de explicar a los smart contracts como acuerdos entre dos partes sin la necesidad de un tercero, pero desde el punto de vista de un desarrollador, los Smart contractos no son mas que código escrito en un lenguaje de programacion que al final se sube a la blockchain para que sean ejecutados.
Para enterarse mas de esto pueden revisar DApp Radar para tener una idea de las distintas Blockchains que existen en este momento. En donde podran ver que Ethereum es de las Blockchains más usadas para desarrollar aplicaciones. Aunque tambien hay otras que serian su competencia, por ejemplo BInance Smart Chain, la blockchain de binance la cual es más escalable y el costo de transaccion es mas bajo; Aunque Ethereum plantea formas de resolver sus problemas de escalabilidad usando Layer 2 Chains como Polygon, y otras mejoras que se veran en ethereum 2.0
Blockchasins como BSC o Tron usan una maquina virtual de Ethereum o Ethereum VIrtual Machine. Cada vez que escuches que hay una Blockchain que use EVM (Ethereum Virtual Machine) significa que sta basada en Ethereum. Y para todas estas blockchains basadas en EVM se usan el mismo Stack o conjunto de herramientas de Desarrollo. Esto quiere decir que si aprendes a desarrollar aplicaciones en Ethereum, podras desarrollar en todas estas otras blockchains.
Ahora, las caracteristicas de una Red Blockchain, como el numero de usuarios, aplicaciones, e inversores, es importante porque una vez una red alcanza cierto tamaño, es practiacmente imposible cambiarla. Y en todas estas metricas Ethereum ha alcazando un tamaño critico. Asi que esta blockchain es la que deberias considerar empezar a aprender inicialmnete.
¿Que necesito saber antes de empezar?
Ok ya tienes la red, ahora que conceptos o herramientas de software necesitas estudiar? antes de empezar a estudiar desarrollo blockchain es necesario haber usado alguna blockchain, para que puedas aprneder lo siguiente temas:
- conocer como funciona el Algoritmo de Prueba de Trabajo, del Proof of Work (PoW), que es usado por Blockchains como BItcoin por ejemplo para poder validar las transacciones
- cuales son las estructuras de datos de la blockchain de Ethereum
- como se usan las llaves publicas y privadas
- como las direcciones son generadas,
- ¿Qué es y como funciona una billetera crypto?
- que es una transaccion,
- los tipos de cuentas de ethereum
- y que es un Smart Contract de forma basica.
Es decir para ser un desarrollador Blockchain, primero debes usar alguna algunas blockchain y familiarizarte con los termisno que usa la mayoria, luego puedes indagar en cada uno de estos temas para poder profundizar. Mi conjeo en este caso es que investigues algunas proyectos crypto, inviertas en alguno y lo empieces a usar para que puedas familiarizarte con las aplicaciones, y los terminos.
Desarrollo Web
Un error muy comun de personas interesadas en ell de desarrollo blockchain, es empezar a aprendiendo directamente Smart Contracts, cuando no han programado antes alguna otra aplicacion. Deben saber que el desarrollo Blockchain se basa en muchas tecnologías web, por lo tanto debes conocer como funciona la web actual para poder usar esta tecnología correctamente.
y como en el desarollo web actual hay muchas herramientas, no es necesario que las aprendas todas, lo que necesitas saber mayormente son conceptos de backend y frontend.
En el frontend necesitas saber conceptos como HTML, para poder crear interfaces en el navegador, CSS para estilizar estas interfaces y javascript para poder conectarse con la blockchain, la billetera crypto y el poder interactuar con smart contracts. Adicionalmente tambien necesitaras conocer algun framework Frontend como React, Vue, Angular o Svelte, que te ayudara a desarrollar aplicaciones para el navegador.
Ya que cuando se desarrollan Smart contracts la forma de interactuar con ellos es a traves de algun programa de consola, pero para nuestros usuarios no es adecuado usar este tipo de programas, asi que necesitamos crear aplicaciones que puedan usar y acceder facilmente como aplicaciones web o aplicaciones moviles.
En otras palabras en la pracicar crear una aplicacion blockchain es muy similar a crear un frontend que se comnique con un backend, solo que en lugar de usar un servidor centralizado y una base de datos, se usa una red blockchain.
y a la union de una aplicacion Frontend (o Movil) más una Blockchain es a lo que se le llama Dapp o Decentralized Aplication, o Aplicacion Decentralizada
Ahora, en el frontend lo primero que deberias aprender practicamente es:
1, es comunicar tu aplicacion con una blockckahin, para esto hay una biblioteca de javascript como Web3.js, o Ethers.js, aunque tambien hay bibliotecas en otros lenguajes como web3.py, que es una biblioteca en Python.
- la integracion con una billetera. esto es importante porque es la forma en la que tus usuarios podran autenticarse y usar tu aplicación.
En las Dapps la administracion de un usuario es decentralizado lo que significa, que las aplicaciones no guardan las contraseñas de los usuarios en una base de datos. De hecho no usamos contraseñas en DApps, sino lo que se usa practicamente, son llaves privadas o Private Keys, que practicamente son 12 palabras que debes memorizar o guardar en un lugar seguro, para poder acceder a tu cuenta de nuevo, Y, si las pierdes ya no podras volver a entrar, ya que de nuevo la aplicación no almacena esta información. con estas llaves privadas un usuario puede firmar transacciones, lo que es tan solo un paquete de datos, que describe una acción o lo que el usuario quiere hacer.
Estas claves son creadas por billeteras Cripto, y como hablamos de Dapps, me refiero a billeteras de Ethereum principalmente. y hay muchas de estas billeteras, pero la mayoria usa Metamask. así que para empezar puedes enfocarte en integrar metamask y eventualmente puedas aprender como integrar la otras billeteras en tus DApps. **
En cuanto al backend necesitaras aprender Nodejs, este básicamente es un interprete de javascript que te permite usar JavaScript para interactuar con tu sistema operativo y crear aplicaciones de servidor. Y también usar npm, el cual te permitira instalar paquetes para el desarrollo Blockchain. Pero veamos que instalariamos con estos programas
Desarrollo de Smart Contracts
Cuando Desarrollas aplicaciones Blockchain, la parte más importante son los Smart Contracts, estos son programas pequeños que se ejecutan en una Blockchain, y son muy distintos de los programas típicos que podemos encontrar en nuestro día a día.
Estos programas no son muy extensos, constan de unos cientos de líneas de código habitualmente. Y una vez subidos a una Blockchain, el programa ya no puede ser modificado, en otras palabras el código es inmutable. Sin embargo los datos de estos Smart Contracts si pueden ser actualizados. Y otra diferencia es que estos programas cuestan dinero para poder ser actualizados, es decir la moneda de la red, en caso de Ethereum cuestan Ethers.
La razón del costo, viene de la misma Blockchain. es decir Leer datos en una Blockchain es gratuito, pero para poder guardar o actualizar un registro, la Blockchain tiene que ejecutar una validación en miles de computadores o nodos de la red, y esto no es gratis. De hecho a mas complejo sea el código, este puede necesitar usar más poder de computo de la red, y por ende cuesta más Ethers, y a mas suba el precio de los Ethers, mas dinero cuesta.
Esto hace que los desarrolladores replanteen la escritura de código para que el precio no se eleve, a esto se le conoce como Gas Optimization se llama así porque el Gas, es lo que cuesta ejecutar una transacción en la red Ethereum.
La utilidad de un Smart Contract
En un Smart Contract puedes mover dinero de forma nativa, esta es su principal utilidad. En una aplicación normal, tendrías que integrar algún metodo de pago como Paypal o Stripe, pero necesitas cumplir con algunas reglas de la empresa que provee el método de pago y siempre estas limitado a lo que la API te ofrece. Con un Smart Contract puedes escribir la lógica que quieras y los pagos son globales, es decir no están limitados a algunos países que tan solo soporte el método pago. Sin embargo, el costo de las transacciones no es baratos aun, así que no son usados para todo tipo de transacciones, al día de hoy es mucho más común usarlos para considerables cantidades de dinero. De hecho actualmente su uso habitual esta en el sector financiero, quizas has escuchado de Defi o los NFTs, bueno esos funcionan gracias a smart contracts. Incluso algunos bancos tambien usan tecnologia blockchain, pero al no tender todas las caracteristicas de una blockchain como el minado, o la oferta, a estas redes se les llama simplemente Distributed Ledger Technology, a futuro ahondaré el tema.
En cuanto a la seguridad, es casi imposible Hackear una Blockchain. para poder alterar los datos deberías tener el control de mas del 51% de la red lo que de forma practica es imposible. a esto se le conoce como el ataque del 51%. Aunque esto es así porque solo se consideran computadores clásicos, es por esto que se presume que un computador cuántico puede llegar a romper la seguridad de esta red, pero es un tema que tratare aparte.
Esto quiere decir que si envías dinero de una dirección a otra, es extremadamente complicado alterar la dirección de envió.
Sin embargo, en una DApp es posible que un desarrollador pueda introducir bugs en el código de su Smart Contract, y algunos hackers puedan tomar ventaja de esto, así que si bien la red en segura, desarrolladores inexpertos todavía pueden escribir código inseguro en sus aplicaciones.
Hay algunos lenguajes de programación dedicas a la creación de contratos inteligentes, y dependiendo de la Blockchain pueden ser distintos, por ejemplo hay una blockchain llamada Cardano en donde el lengujae de programacion que usa se llama plutus y esta basado en Haskell, mientras que existe otra blockchain llamada Solana en donde usa lenguajes como Rust, C o C++.
Pero de todos estos el lenguaje más popular para la creacion de contratos inteligentes es Solidty.
Este es el mas popular porque de todas las blockchains que ofrecen contratos inteligentes, la red de Ethereum es la mas desarrollada, y Ethereum usa Solidity. Basicamente este es un lenguaje orientado a objetos que tiene un parecido a JavaScript, pero su propósito es complemente distinto, y es mucho más limitado en comparación. ya que no es un lenguaje de propósito general.
Una buena forma de experimentar con Solidity es usar un IDE online llamado Remix. Con remix no tienes que instalar nada, solo entras en un sitio web y puedes ejecutar código de Solidity allí.
Este IDE para empezar esta bien, pero para tener un entorno mas cómodo y robusto para desarrollar smart contract reales, probablemente vas a querer usar software instlado en tu computador o de manera local
Para esto hay dos framworks de desarrollo populares: Truffle y HardHat.
Por ejemplo Truffle es uno de los framworks más populares para smart contracts de solidity, Esta escrito en Nodejs, y se puede instalar tanto en Linux, Mac y Windows.
Ambos ofrece una Red de Ethereum local, tanto desde consola como con una interfaz grafica llamada Ganache, con Ganache puedes desplegar un Smart Contract en red de forma local para hacer pruebas. Es decir no es la red real de ethereum, a la que se le conoce como Mainnet, simplemente sirve para desarrollar.
es decir Gnache puedes tener ethers infitnito, para que puedas hacer transacciones, subir cuantas veces quieras, y probar lo que quieras. Con Hardahat es muy similar pero es un framework más moderno y trae todo includo para compilar, debugear, testear y desplegar contratos inteligentes.
Luego tambien hay Redes publicas de Prueba de Ethereum, o tambien llamadas Public Testnets, en donde puedes subir tus smart contracts, estas son mas realistas comparadas a la red locales, pero son un poco mas complicadas de usar, ya que tu no eres el que monitorea la red, es una red publica mantenido pro otras computadoras, y si quieres Ethers falsos, no puedes crearlos tu mismo, pero puedes solicitarlos usando herramientas como Faucet, aunque algunas veces este simplemente no funciona.
Cuando empieces a usar testnets, vas a necesitar herramientas como EtherScan, la cual te permite verificar que tus transacciones hayan sido minados en la blockchain. Es decir muchas Blockchains cuenta con estas páginas para poder estar al tanto del estado de tus transacciones dentro de esa blockchain.
Otro servicio que probablemente usaras es Infura, el cual es una API que te permite ejecutar clientes de ethereum. no es facil ejecutar clientes de ethereum asi que infura es muy util cuando quieras usar una testnet o mainnet. Aunque las forma de enviar transacciones en una testnet o mainet es distinta de como se hace usando localmente. asi que hay una curva de aprendizaje para usarlas correctamente.
Testing de DApps
En el desarrollo de aplicaciones normales, es común realizar tests de nuestros programas, hay frameworks de testing que nos permiten comprarobar el funcionamiento de codigo de la aplicacion de Servidor, de Aplicaciones Frontend y aplicaciones movil.
Los Smart contracts no son distintos, porque una vez despliegues codigo de tu smart contract el codigo de este no puede ser modificado, asi que es muy importante escribir tus test antes del depliegue de tus smart contracts.
Para testear tus smart contracts puedes usar el mismo lenguajes Solidity o tanto ganache como harhat usan el framework de testing de Javascript llamado Mocha.
Especializacion
una vez sepas como crear DApps lo ideal seria que te especialices en un area, hay muchas, algunas son estas:
- Ethereum Smart contrat specialist, es un rol importante en este ambito al ser los Smart contract codigo critico en una aplicaicon decentralizada, Esto conllevar a ecsribir codigo de calidad en SOlidity, Gas optimization y conceptos basicos de Seguridad. esto te volvera eventaualmente en un Experto en Smart Contracts
- Especialista DeFI, Las finanzas decentralizas o Defi, son en su gran mayoria el uso principal de las Blockchains al día de hoy, puedes encontrar proeyctoc relacionados como Exchange Decentralizados, es decir Exchanges que no requieren un intermediario como Binance o Coinbase, sino basados en Smart Contracts, como Uniswap; otros tambien son Lending Protocols, o Yield Aggregators. Compund, por ejemplo te permite ganar intereses por las cripto que deposites, ademas de poder otorgar prestamos. para aprender de defi primero debes concoer los conceptos basicos como los diferentes tipos de tokens, liquidity pools, stacking, liquidition, flash loans; y luego podras pasar a aprender las APIs de distintos proyectos. Aqui tambien hay muchos, y no todos importan, muchos son copias de otros y no plantean nada nuevo, asi que los que podrias considerar estudiar aqui son Uniswap y compound.
Y este año blockchain se ha dado a conocer como algo mas que tan solo una alternativa al sistemas bancario. Quizas este año has escuchado del Metaverso y los NFTs. Bueno tambien puedes enfocarte en este tipo de Desarrollos:
estas areas serian:
- Blockchain Game Developers
- Metaverse Developers
Los juegos blockchains de estos dias estan relacionados a los NFts, lo que ofrecen basicamente es el poder pasar tiempo en un juego y ganar dinero.
Hay varias formas, hay juegos que te permiten obtener una moneda a medida que juegas, como Mines of Dalarnia.
Otros te permiten comprar Personajes coleccionables, combinarlos y obtener nuevos a medida que jeugas, aqui estaria juegos como Axe Infinitiy, o kriptokitties, pero tambien estan apareciendo muchos juegos basadas en esta misma idea, asi que tienen puede tomarlo en cuenta para aprender a desarrollar este tipo de proyectos.
Y en cuanto a los metaversos, basicamente aqui hace falta todo tipo de desarrolladores, que asu vez sepan como usar blockchains, por un mencionarles un proyecto serio aqui estaria Decentraland, un mundo virtual en el que puedes comprar tierras para hacer lo que quieras, colocar negocios, vivir incluso. Y aumento su populridad con el anuncio de Facebook y Microsoft en cuanto a sus metaversos. Incluso se plantea a traves de un protocolo, la interoperabilidad e metaversos, y obviamente en estos mundo virtuales se usan cryptos como moneda, y las tierras y objetos son NFTs.
Y no queda aqui hay muchos trabajos por empresas que desde el primer dia son globales, asi que muchas ofrecen puestos remotos, esto lleva a que en tu dia a dia puedas encotnrar puestos para desarrollar:
- bots de trading
- desarrolladores backend, frontend y movil que trabajen en exchanges
Blockchain es una tecnología que esta muy lejos de estar terminada como se piensa, a diario veo como estan apareciendo proyectos scam, malainterpretaciones de conceptos, y sobretodo mucho entusiasmo y excepticismo tambien de muchas personas al potencial de esta tecnologías.
Ahrora, muchas se debn estar preguntando:
- No es web3 simplemente un Hype actual?
- deberia tomarte el tiempo de estudiarla?
y para ambas preguntas la respuesta es Si. Claro hay mucho mencion, de web 3, muchas veces veo personas creen que es un reemplazo a toda la web, he visto como muchos intentan crear blogs o aplicaciones sencillas en web3, lo que no tiene mucho sentido.
Actualmete su uso más real esta en DeFI, pero se espera que ha futuro se pueda usar en otros sectores, como el gubernamental, de salud, etc. pero esto no es instantaneo, debido a que hay muchos problemas aun por resolver, como
- como el hecho que existen muchas organizaciones de proyectos blockchains que tienen el mayor control de la red, lo que se asemeja mas un diseño centralizado que uno decentralizado
- Muchas blockchains no se pueden comunicar entre si
- Y el mas pesado, es que el Escalar redes decentralizadas es aun un problema sin resolver, esta redes aun no tienen un gran poder computacional , ni un buen ancho de banda o almacenaje escalable, esta es una de las razones por las que las transacciones en ethereum cuesten tanto y aun se sigan usando partes de aplicaciones centralizadas para resolver problemas. De hecho muchos pueden pensar que blockchain es una nueva internet, pero en realidad las redes blcockahsins esta creadas encima de la red actua, asi que a mi parecer es mas una nueva forma de crear aplicaciones que se veran de formas mas comun conforme pasen los años.
Finalmente, Es muy prometedor el darle el control a los mismos usuarios de sus datos, pero en la realidad hay muchas dificultades par que este tipo de redes lleguen a la misma escala de las redes centralizadas, y sobre todo a muchos gobiernos no les gustara que se empiecen a usar redes y monedas que estan fuera de su control, asi que los siguientes años se veran leyes y mas controversias relacionadas a estas tecnologias.