Qué es y cómo funciona una DApp
Precisiones sobre la pieza clave de la web3
Ethereum nació como una blockchain multipropósito con la posibilidad de ser programada para una enorme variedad de usos, convirtiéndose luego en lo que es hoy principalmente: una plataforma para programar DApps.
Las DApps dan acceso a personas, aplicaciones y sistemas que no necesariamente se conocen, brindándoles la capacidad de realizar transacciones P2P. Podemos pensar en apps web o mobile similares a MercadoLibre, Uber, Airbnb que también permitan hacer transacciones entre usuarios pero de manera descentralizada. Estas transacciones invocan las funciones de un smart contract y nos permiten hacer cosas mucho más complejas que una simple transferencia de ether. Una DApp puede brindar infinidad de servicios, desde los mencionados anteriormente hasta servicios de cloud, VPN, exchange, videojuegos y más. Las más utilizadas al día de hoy son Uniswap (protocolo de intercambio de tokens ERC-20) y Rarible (para el comercio de NFTs).
En su forma más sencilla, una DApp tiene una interfaz de cliente como front-end, y un back-end que incluye una blockchain y un smart contract. También puede incluir otros componentes descentralizados tales como un protocolo de almacenamiento descentralizado o un protocolo de mensajería. El front-end web está fuera del protocolo blockchain y se vincula al smart contract mediante un código que oficia de puente.
Ventajas de un DApp
Las DApps presentan muchas ventajas respecto a las apps no centralizadas. Sería resistente a caídas ya que la lógica del negocio estaría controlada por un smart contract y por ende el backend distribuido y administrado por toda la blockchain. Mientras la blockchain esté operativa, la aplicación estaría disponible.
La naturaleza de la blockchain también asegura que todos inspeccionen el código para asegurarse de su función. En un smart contract ninguna función queda libre a interpretación de un humano, sino que es ejecutada en el mismo orden en que fue dispuesta por el programador. Esto brinda una transparencia inédita que permite a las partes conocer y confiar en el código.
Otro punto importante es que mientras un usuario tenga acceso a un nodo Ethereum, es imposible la censura. Ningún ente centralizado puede decidir lo que está bien y lo que está mal, ni siquiera el dueño de un contrato puede alterar el código de un contrato ya deployeado.
Hay muy pocas apps que son puramente descentralizadas, muchas de ellas utilizan servicios descentralizados y acuden a la blockchain solo para proporcionar algún servicio clave. Esto también ocurre porque no siempre la blockchain es de uso imprescindible y porque los desarrollos de ciertos servicios todavía no alcanzaron su mejor estado como para dejar de lado todos los centralizados.
El puente hacia la Web3
En 2004 se acuñó el término 2.0 para describir a una web que evolucionó con el contenido generado por el usuario, las interfaces receptivas y la interactividad. El concepto de DApps tiene en sus manos la capacidad de llevar a la World Wide Web a su próxima estancia evolutiva, introduciendo los protocolos de descentralización P2P en cada aspecto de una web app. El término que se utiliza para esta web y que por primera vez propuso el Dr. Gavin Wood (confundador de Ethereum y creador de Polkadot y del lenguaje Solidity) es web3.
Cuando tratamos con una DApp, si bien el front-end está compuesto por las mismas bases que la Web 2.0 (HTML, CSS, Javascript, algún Framework, etc), además cuenta con un script llamado web3.js, que incrustado tiene la posibilidad de comunicarse con la blockchain usando JSON a través de llamadas de procedimiento remoto (RPC). El script consiste en una colección de librerías que permiten que el usuario interactúe con un nodo local o remoto de Ethereum mediante HTTP, IPC or WebSocket. En otras palabras, gracias al script web3.js el desarrollador web es capaz de generar sin demasiado trabajo una interfaz de interacción usuario-blockchain. No es la única colección de librerías que existe, también tenemos versiones similares para Java, Python y otros lenguajes que necesitemos comunicar con la blockchain.
Como hicimos antes con nuestro smart contract en Remix, al compilarlo, tendremos acceso al script para pegarlo directamente en nuestro HTML.
Un framework recomendado para el desarrollo integral de DApps es Truffle, allí podremos testear y poner a funcionar nuestra DApp de prueba de principio a fin.
Fuentes:
Curso de la Universidad de Buffalo, Coursera: “Decentralized Applications (DApps)” (2018)
Mastering Ethereum, Andreas M. Antonopoulos y Dr. Gavin Wood (2019)
Blockchain Revolution, Don Tapscott y Alex Tapscott (2018)