Almacene y recupere datos de documentos MongoDb usando hash que se almacena en blockchain

Blockchain no puede almacenar y no se utilizará para almacenar todos los datos de los usuarios. Hay 2 razones para eso:

1) Para almacenar datos en blockchain se requiere el precio del gas (costo de transacción)

2) Dado que todos los bloques se replican en todos los nodos que participan en blockchain, existen algunas limitaciones para almacenar big data en blockchain.

Blockchain no reemplaza una base de datos, pero es otra capa adicional para almacenar transacciones que son cruciales para los negocios y para garantizar la confianza entre múltiples entidades.

Leí que los datos restantes se almacenarán en IPFS y el hash de esos datos se almacenará en blockchain. Pero como IPFS solo admite datos no estructurados, es decir, imágenes y videos.

Quiero almacenar los datos de usuario restantes en MongoDB y almacenaré el hash del documento de MongoDB en blockchain. Podré recuperar los datos almacenados en un documento a partir del hash almacenado en la cadena de bloques. ¿Hay recursos o tutoriales disponibles para implementar lo mismo?

Respuestas (2)

Recientemente construí una herramienta para almacenar, indexar y buscar contenido en IPFS llamada IPFS-Store y estoy usando mi herramienta para almacenar e indexar documentos JSON (estilo MongoDB), pero puede usarla para indexar cualquier tipo de contenido.

El servicio expone una API REST que acepta cualquier tipo de contenido, por lo que básicamente puede enviar y recibir documentos JSON.

Por ejemplo

curl -X POST \
  http://localhost:8040/ipfs-store/store \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -F 'file={"attribute1": "my json file to store on IPFS", "attribute2": "val2", "attribute3": 10}'

Planeo brindar soporte para SWARM en el futuro.

Usando el enfoque anterior, cada registro de un usuario se almacenará como un archivo json separado. Podré almacenar y recuperar datos de usuario, pero no podré consultar datos de usuario. ¿Sabe cómo extraer y cargar datos existentes (desde cualquier base de datos SQL o NoSQL) para enjambre y cómo consultarlos?
¿Necesito usar el lenguaje de consulta json (JSONiq) para consultar los datos almacenados en archivos JSON?
Básicamente, podría escribir un archivo por usuario en IPFS, indexar algunos atributos en elasticsearch y luego usar la búsqueda (y su propio lenguaje de consulta, consulte el documento) para buscar usuarios y recuperar usuarios.

Si elige seguir el camino de MongoDB, perderá parte de la descentralización de su dApp , porque MongoDB debe ser alojado por alguien .

Otro enfoque sería usar el Swarm de Ethereum , que es parte del ecosistema de Ethereum.

¿Hay tutoriales/blogs disponibles que me ayuden a almacenar datos de usuario en Swarm?
su documentación oficial es un muy buen comienzo para eso.
La versión 3 de prueba de concepto de Swarm está a la vuelta de la esquina. Actualmente, la documentación está recibiendo una gran revisión. Así que tal vez espere una semana o dos si recién está comenzando. Sobre el tema: Para inspirarme, aquí hay un fragmento que escribí para demostrar cómo usar la funcionalidad del sistema de archivos virtual de sqlite con swarm como backend (el "tamaño de bloque" de swarm es 4096, igual que el valor predeterminado de sqlite) github.com/nolash/swarm-sqlite-vfs También hay una iniciación swarmdb; para construir una base de datos encima del enjambre directamente. wolk.com están trabajando en eso.