📖
DeFinomics Papers
  • 📚DeFinomics Papers
  • ⛓️Layer 2
    • Diferentes tipos de Layer2
  • 💸DeFi
    • Guía de Evaluación de Riesgos de DeFi v1 (EEA)
    • Impermanent Loss - Paso a paso (Math)
    • Trader Joe V2 vs Uniswap V3
  • 📚Ingeniería de Tokens
    • Criptoeconomía 101
    • Sobre la Práctica de la Ingeniería de Tokens, Parte I: Introducción al Ingeniero de Tokens
    • ¿Pueden las cadenas de bloques volverse inapropiadas?
  • 📂Filecoin
    • ¿Qué es Filecoin?
    • Filecoin e IPFS
    • Modelo de Almacenamiento
    • Criptoeconomía de Filecoin
    • La Máquina Virtual de Filecoin
    • Lecciones
      • Direccionamiento de Contenido | 5 Lecciones
        • Identificando y recuperando datos en la web | Lección 1 de 5
        • La web centralizada: Direccionamiento basado en ubicación | Lección 2 de 5
        • La web descentralizada: Direccionamiento de contenido | Lección 3 de 5
        • Hashing criptográfico e Identificadores de Contenido (CIDs) | Lección 4 de 5
        • Vincular datos entre sí | Lección 5 de 5
      • Anatomía de un CID | 6 Lecciones
        • ¿Qué es un CID? | Lección 1 de 6
        • Multihash | Lección 2 de 6
        • CIDv1: Prefijo Multicodec | Lección 3 de 6
        • CIDv1: Prefijo de versión | Lección 4 de 6
        • CIDv1: Prefijo Multibase | Lección 5 de 6
        • Un hash, múltiples versiones de CID | Lección 6 de 6
      • Merkle DAGs: Estructurando Datos para la Web Distribuida | 8 Lecciones
        • Los datos tienen estructura | Lección 1 de 8
        • Ventajas de los datos estructurados correctamente | Lección 2 de 8
        • Gráficos Acíclicos Dirigidos (DAGs) | Lección 3 de 8
        • Introducción a los Merkle DAGs | Lección 4 de 8
        • Merkle DAGs : Verificabilidad | Lección 5 de 8
        • Merkle DAG: Distribuibilidad | Lección 6 de 8
        • Merkle DAG: Deduplicación | Lección 7 de 8
        • Merkle DAGs como un bloque de construcción | Lección 8 de 8
      • Verificación de almacenamiento en Filecoin | 6 Lecciones
        • Almacenamiento descentralizado e incentivado | Lección 1 de 6
        • Preparación y transferencia de datos | Lección 2 de 6
        • Prueba de Replicación (PoRep) | Lección 3 de 6
        • Prueba de Espaciotiempo (PoSt) | Lección 4 de 6
        • zk-SNARKs | Lección 5 de 6
        • Verificando tu acuerdo | Lección 6 de 6
    • La conservación de registros inmutables en Filecoin será esencial para la IA
    • Por qué el almacenamiento de archivos descentralizado y distribuido es vital para un mejor internet?
  • ⚒️Tools
    • Rotki
Powered by GitBook
On this page
  • Cualquier Nodo Puede Ser un Nodo Raíz
  • Asegurando que Existe un Nodo Raíz
  1. Filecoin
  2. Lecciones
  3. Merkle DAGs: Estructurando Datos para la Web Distribuida | 8 Lecciones

Merkle DAGs : Verificabilidad | Lección 5 de 8

Aprende cómo podemos usar los CID para crear estructuras de datos direccionables por contenido para la web distribuida.

PreviousIntroducción a los Merkle DAGs | Lección 4 de 8NextMerkle DAG: Distribuibilidad | Lección 6 de 8

Last updated 1 year ago

Dado que usamos algoritmos de hash de fuerza criptográfica para crear CIDs, ofrecen un alto grado de verificabilidad: una persona que recupera datos usando una dirección de contenido siempre puede calcular el CID por sí misma para asegurarse de que obtuvo lo que buscaba. Esto ofrece tanto permanencia (los datos detrás de una dirección de contenido nunca cambiarán) como protección contra manipulaciones maliciosas (los actores malintencionados no pueden engañarte para descargar el archivo incorrecto sin que te des cuenta de que no es el archivo que solicitaste).

En un Merkle DAG, el CID de cada nodo depende, a su vez, de los CIDs de cada uno de sus hijos. Como tal, el CID de un nodo raíz identifica no solo ese nodo, sino todo el DAG del cual es raíz. Como resultado, podemos extender todas las increíbles garantías de seguridad, integridad y permanencia de los CIDs a nuestra estructura de datos en sí, y no solo a los datos que contiene.

¿Alguna vez has hecho una copia de seguridad temporal de un directorio de archivos durante algún proceso de edición, y luego, meses después, te preguntaste si sus contenidos eran aún idénticos? En lugar de comparar los archivos laboriosamente, podrías calcular un DAG de Merkle para cada copia: si los CIDs del directorio raíz coinciden, sabrías que podrías eliminar uno de ellos y liberar algo de espacio en tu disco duro.

Cualquier Nodo Puede Ser un Nodo Raíz

Los DAGs pueden verse como estructuras de datos recursivas, cada DAG consta de DAGs más pequeños. En nuestro ejemplo, el CID "baf...8" identifica un DAG, pero también lo hace el CID "baf...6", solo que identifica un DAG más pequeño, un subgrafo del identificado por "baf...8". Los nodos correspondientes son ambos nodos raíz, dado el contexto adecuado.

Esta es una propiedad extremadamente poderosa y útil. Si estamos recuperando contenido que está estructurado como un DAG, no tenemos que recuperar el DAG completo: tenemos la opción de recuperar un subgrafo en su lugar, identificado por el CID del nodo superior de este subgrafo (el nodo superior de este subgrafo se convertiría en su nodo raíz). Si queremos compartir ese subgrafo con alguien más, no tenemos que incluir el contexto del grafo más grande del cual originalmente recuperamos los datos, solo tenemos que enviar el CID del subgrafo. Y, si queremos incrustar ese subgrafo como parte de un DAG más grande que es diferente del que lo encontramos originalmente, somos libres de hacerlo, porque el CID del DAG, que es el CID de su nodo raíz, depende de los descendientes del nodo raíz y no de sus ancestros.

Ese último punto merece mayor énfasis: con los Merkle DAGs, podemos tomar el mismo DAG e incrustarlo sin problemas en varios otros DAGs más grandes simultáneamente. Esto permite una red masiva e interconectada de DAGs, construyendo unos encima de otros y tomando piezas de uno a otro.

Asegurando que Existe un Nodo Raíz

A veces, nuestros datos no presentan inmediatamente un único nodo raíz: esto no es realmente un requisito estricto de un DAG. Considera, por ejemplo, la siguiente jerarquía de empleados, que tiene dos gerentes sin ningún superior y un empleado con dos gerentes:

No hay un único nodo que sirva como nodo raíz para todos los cinco nodos en el diagrama, y por lo tanto sería imposible compartir o recuperar el DAG completo usando cualquiera de baf...1-5. Eso no nos impide hacer uno. Sin embargo, podemos crear un nuevo DAG creando un nodo adicional que tenga los nodos "Asif" y "Ciara" como sus propios hijos, y usar eso como un nodo raíz.

Alternativamente, podríamos querer tener dos estructuras de datos separadas, donde "Asif" o "Ciara" sean los respectivos nodos raíz (el nodo de Padma, quien tiene dos gerentes, se incluiría en ambos DAGs). La distinción importante es que esto haría dos Merkle DAGs de separados, porque no puedes navegar a todos los nodos en este conjunto de datos desde solo una de las dos raíces (los enlaces en un DAG son dirigidos y no hay enlace de "Padma" a "Ciara", así que no puedes llegar a "Ciara" o "Aiden" desde un nodo raíz de "Asif").

📂
Page cover image