¿Qué elementos del backend de una Dapp se suelen almacenar en una ubicación descentralizada?

No tengo claro qué elementos del código de fondo de una Dapp están realmente descentralizados.

El siguiente enlace indica que el backend de una Dapp se almacena completamente en la cadena de bloques. Sin embargo, si tuviera que crear una aplicación web Dapp, ¿cuánto de lo que generalmente se denominaría en un sentido de desarrollo web como "backend" estaría realmente ubicado en la cadena de bloques?

Por ejemplo, si tuviera que desarrollar una aplicación web usando Python, ¿se reemplazaría toda la función de mi código Python por un contrato inteligente si estuviera desarrollando una Dapp, o solo los elementos clave de la lógica comercial?

Respuestas (2)

La siguiente imagen me ayudó a comprender cómo encajaban las aplicaciones descentralizadas. Por lo general, soy un desarrollador de Java, por lo que estoy más familiarizado con la escritura de middleware para algún servidor J2EE y el alojamiento de la aplicación de esa manera. Mantengo esta explicación de muy alto nivel.

Actualmente estoy optando por el enfoque de:

  • Reemplazo de Java (código de back-end) con un contrato inteligente de Ethereum escrito en Solidity.
  • Mi aplicación generalmente se combinaría con una base de datos para almacenamiento persistente. Para reflejar esto con mi nueva DApp, opté por el uso de IPFS .
  • IPFS almacena el contenido estático que se aloja en una red de nodos. por ejemplo, imágenes, código front-end, datos.
  • Una vez que tenemos el contenido estático, es decir, HTML, JS, CSS, podemos interactuar con nuestro nodo Ethereum local. es decir, la cadena de bloques (aún más específicamente, el contrato inteligente que se implementó en la red a través de su dirección de contrato y los contratos 'abi').
  • En la imagen podemos ver que hay una flecha que apunta de Ethereum a IPFS . Esto se explica de forma sencilla. Podemos almacenar el hash de un archivo que se publicó en IPFS en el contrato inteligente. Con esta referencia podemos recuperarla usando nuestro nodo IPFS en cualquier momento.
  • IPFS NODE ----> REQUESTScon contenido#
  • IPFS NODE <---- RECEIVEScontenido correspondiente de la red
  • ¡Nuevo archivo de contenido brillante ahora incluido en la DApp para que el usuario juegue!

visualización útil

Tengo una aplicación web estándar que permite a los usuarios cargar sus perfiles. El alcance del código Java es leer los datos a través de puntos finales y almacenarlos en una base de datos. El servidor de aplicaciones también serviría el contenido estático a un usuario que accede a una determinada URL. La versión descentralizada de esta sencilla aplicación sería la siguiente:

  • Back-end de Solidity para aceptar datos de usuario en forma de hash (reemplazando el back-end de Java). Cambiar las aplicaciones "Estado global"
  • La página web de IPFS holding, la servirá a pedido.
  • IPFS contiene más datos relacionados con los hashes almacenados en el contrato inteligente.

Gran parte de la lógica de la aplicación ha migrado al código frontal. Tenga en cuenta que esta es una aplicación ficticia y solo se ha utilizado como ejemplo.

Aquí hay un gran ejemplo de cómo conectar IPFS con un contrato de Solidity y consultar ambos a través de la consola JS en su navegador.

¡Gracias, espero que esto ayude!

Si consideramos DAPP= frontend+backend
, entonces el Frontend (no en la cadena de bloques) será el frontend web estándar, por ejemplo, javascript(web3js)+HTML, la tecnología utilizada necesita disponer de una API RPC que interactúa con el cliente ethereum.
Backend = contrato inteligente (almacenado en la cadena de bloques), por ejemplo, contratos de solidez donde define su lógica comercial (transacciones, etc.) y tenga en cuenta que el contrato inteligente tiene su almacenamiento (ubicado en la cadena de bloques) donde puede almacenar los datos de su aplicación.
Excepto los contratos inteligentes, todo está fuera de la cadena de bloques.

Así es como pensé que funciona ethereum, pero un compañero de trabajo y yo tuvimos un pequeño desacuerdo sobre cuánto se almacena en ethereum. Los contratos inteligentes solo tienen sentido para mí.
¿Podría el contrato inteligente ser front-end en cualquier caso?