DApps. Aplicaciones descentralizadas. Conceptos básicos.

Publicado el 17 febrero 2019 por Blockchainiotnews
Tiempo de lectura: 9 minutos
El mercado de las DApps o aplicaciones descentralizadas  ha evolucionado rápidamente en un sector de constante cambio como es Blockchain. En este post intentamos aclarar los conceptos básicos para ponerse al día. Lo primero:

¿Por que se llaman aplicaciones descentralizadas y en qué se diferencian de las tradicionales centralizadas? 

Vamos por partes: las aplicaciones centralizadas se ejecutan en servidores centralizados, pertenecientes generalmente a una sola organización. 

Por ejemplo, si accedo vía Web a mi banco para realizar una transacción, actuaré sobre la información de saldo inicial, importe a transferir y destino al que transferir ese importe. Esa ejecución de código y operación sobre los datos se realiza en los servidores del banco.  Podéis pensar que se ejecuta alguna aplicación en el navegador web de mi propio PC, pero ... en realidad sólo se trata de un interfaz de usuario. Es lo que se llama el front-end del sistema. Incluso si accedo con un cliente más pesado que instalo en mi ordenador, no un mero navegador Web, seguiremos en un  paradigma de aplicación centralizada porque el código que de verdad modifica los datos reales está en el banco (en el banco está el back-end del sistema).Por supuesto, si mi banco cierra, o falla el acceso, o sus servidores no funcionan no habrá manera de conseguir que se realice la operación. Decimos entonces que el back-end está indisponible.Las Dapps no se ejecutan sobre unos recursos centralizados (no hay un "sistema informático del banco"), sino que su back-end está implementado sobre redes Peer-to-Peer o P2P. En las redes P2P la información está distribuida y replicada en multitud de nodos diferentes y ninguno es el principal, todos son iguales en jerarquía. De ahí su denominación de redes "entre iguales".Si un nodo falla, todo sigue funcionando porque la información sigue estando localizable en otros muchos nodos. Y hoy en día, la red P2P por excelencia es una red blockchain


Photo by Markus Spiske on Unsplash

Definiremos los conceptos de blockchain, API, Ethereum y Smart Contract para poder sintetizar en dos frases qué es una Dapp (no está mal para un solo post)

Una D-app es una aplicación de front-end que interactúa con un blockchain a través de una API. En Ethereum, a través de la API Web3 la D-app puede interactuar con el blockchain, realizar transacciones y ejecutar acciones programadas.

En esta imagen se muestra visualmente la idea:



¿Qué es un blockchain explicado de manera sencilla?

Una cadena de bloques, o Blockchain, es un almacén de información que garantiza por medios criptográficos que los datos almacenados se mantienen inalterados y falsificarlos exige tan ingente cantidad de esfuerzo que en la práctica no merece la pena intentarlo.

Aun incurriendo en una flagrante perogruyada, decimos que se llama así porque la información se va añadiendo en bloques encadenados. ¿Cómo funciona?

  1. Se toma un conjunto de transacciones (los datos a guardar), se les aplican técnicas criptográficas y se forma con ellos un bloque de información. 
  2. Se añade el bloque a la cadena de bloques anteriormente existente (transacciones ocurridas en el pasado)
  3. Por criptografía, se certifica que este bloque queda añadido justo detrás del bloque anterior y que no se puede variar su posición.
  4. El resto de nodos de la red son capaces de verificar que la posición y contenidos del bloque añadido son correctos. 

Diagrama conceptual de un Blockchain

Si alguien intenta cambiar información en un bloque (por ejemplo, intento escribir en el bloque "transferí 10 bitcoins en un pago" cuando en realidad transferí mucho menos), los otros nodos de la red descubrirán que está pasando algo. Para engañar al blockchain deberé engañar a más del 50% de los nodos, ya que la definición de verdad se realiza por consenso. Esto supone un gasto en energía tan desmesurado para el cálculo, que no hay probabilidad de conseguirlo con medios reales.

¿Qué es Ethereum?

Ethereum es la implementación de un blockchain que junto con Bitcoin ha alcanzado la mayor popularidad. Al igual que Bitcoin, se ha implementado sobre esta arquitectura una criptomoneda, el Ether. Pero su mayor aportación diferencial es la posibilidad de programar Smart Contracts.

¿Qué es un Smart Contract?

Más sencillo de lo que creéis: es un programa cuyo código se almacena en el blockchain y se ejecuta cuando se cumplen ciertas condiciones.

El código se escribe en lenguaje de programación Solidity.

Un contrato inteligente es tan inmutable como el resto de datos almacenados en el blockchain, así que podemos estar seguros de que si las condiciones se cumplen, ese código se ejecutará. Seguro. Eso sí, puede ponérsele fecha de caducidad.

Un caso de uso habitual de los Smart Contracts es realizar una transferencia de fondos (en Ethers) de una cuenta a otra ante una condición: que se alcance un precio de un producto, o un valor de una variable. Pensad por ejemplo en  penalizaciones automáticas por incumplimiento de un contrato o una compra de acciones al alcanzar un valor de mercado.


Ejemplo del código de un Smart Contact


¿Qué caracteriza a una DApp?

Las DApps deben cumplir cuatro características:
  1. Obviamente, ser descentralizadas como se exponía anteriormente. No hay una autoridad que controle la "versión verdadera" de la información. La comunidad de usuarios por consenso determina esta verdad apoyándose en las capacidades de la red y los algoritmos. 
  2. Deben ser escritas en Código Abierto. El código de una Dapp debe ser público como garantía de seguridad para los usuarios. Frecuentemente antes de introducir cambios en un protocolo o aplicación sucede un intenso debate que involucra a desarrolladores y usuarios (recordemos el célebre fork de Ethereum).
  3. Debe estar enfocadas a la conexión a un blockchain, donde se almacenan los datos con técnicas criptográficas.
  4. Debe utilizar (a veces implementar) un protocolo que incluya operaciones para la gestión de la información en los bloques. Estos bloques han de ser verificados y añadidos de una manera segura y eficiente. En próximos posts hablaremos sobre protocolos Proof of Work, Proof of Stake y minería.

¿Qué tipos de DApp existen?

Existen 3 tipos de DApp:

  • DApp Tipo I  

Estas aplicaciones disponen de su propio blockchain independiente. Un ejemplo típico son las criptomonedas como Bitcoin, Ethereum, Litecoin, etc. Ojo, decimos que estas DApps disponen de su propia cadena de bloques, pero una DApp no es solamente un blockchain: para conformar una DApp hace falta código abierto, protocolos de consenso y verificación, que la cadena de bloques sea de dominio público, etc, como vimos más arriba. 

  • DApp Tipo II

Estas DApps no disponen de su propio blockchain. Implementan un protocolo sobre la cadena de bloques de una Dapp de tipo I. Como ejemplo puede pensarse en DApps que aporten funcionalidades de pago especiales a una criptomoneda que ya existe. En próximos posts expondremos varios ejemplos si lo véis de interés (comentarios, por favor).

  • DApp Tipo III

Estas DApps utilizan el protocolo de una DApp de tipo II. Rizan el rizo ofreciendo servicios específicos basados en otra DApp.
Para aclarar la idea se puede usar la analogía de que el tipo I se puede comparar con un sistema operativo, el tipo II con una aplicación y el Tipo III con un plug-in para una aplicación concreta.

Hasta aquí este post de introducción. Dejad por favor comentarios si quedan conceptos que deben aclararse mejor, y en breve profundizaremos y aclararemos.  

Si te ha gustado este artículo tienes más sobre Internet of Things y Blockchain en el Blog: Descifrando BlockChainY si quieres un mínimo de 2 actualizaciones diarias sobre tecnología, únete al canal Telegram:https://t.me/IoT_blockchain