Gráfico acíclico dirigido por Merck de la serie IPFS (Merkle DAG)

El nombre completo de Merkle DAG es Merkle Directed Acyclic Graph (Merkle Directed Acyclic Graph). Está construido sobre la base de Merkle Tree, que fue patentado por el científico informático estadounidense Merkle en 1979.

Merkle DAY 跟 Merkle Tree

Merkle DAG es muy similar a Merkle Tree, pero no exactamente igual. Merkle DAG no necesita realizar operaciones de equilibrio de árboles y los nodos que no son hojas pueden contener datos, etc. El comando ipfs add creará un Merkle DAG a partir de los datos del archivo especificado. Seguir el formato de datos unixfs (protobuf) significa que el archivo se divide en bloques y luego se organiza en una estructura de árbol usando "nodos de enlace" y se conectan entre sí. El "hash" de un archivo dado es en realidad el hash del nodo raíz en el DAG.

Cuando el contenido del archivo excede los 256k o el agregado es un directorio, el archivo se dividirá en almacenamiento de bloques y se reorganizará en una estructura en forma de árbol utilizando nodos de enlace. Cómo entender el formato de datos unixfs, por ejemplo, para crear un bloque usted mismo, use el siguiente comando:

echo "block test" | ipfs block put

No puede utilizar el comando ipfs cat para ver los bloques creados por usted mismo, porque los datos visualizados por ipfs cat se basan en el formato de datos Unixfs.

Funciones de Merkle DAG

Merkle DAG es muy diferente en función de Merkle Tree. Merkle Tree es principalmente para verificación, como la verificación de firmas digitales y Bitcoin Merkle Proof; para Merkle DAG, los propósitos principales son los siguientes:

  • Direccionamiento de contenido: utilice varios hash para identificar de forma única el contenido de un bloque de datos.
  • Antimanipulación: compruebe cómodamente el valor hash para confirmar si los datos han sido alterados.
  • Deduplicación: los bloques de datos con el mismo contenido tienen el mismo valor hash, lo que puede eliminar los datos duplicados y ahorrar espacio de almacenamiento.

Entre ellos, el artículo 3 es la característica más importante del sistema IPFS. En el sistema IPFS, el tamaño de cada blob está limitado a 256 KB (tentativamente 256 KB, este valor puede modificarse de acuerdo con los requisitos de rendimiento reales). Esos mismos datos pueden ser filtrado por Merkle DAG, simplemente agregue una referencia de archivo sin ocupar espacio de almacenamiento.

Al mismo tiempo, cada nodo puede ipfs anclar un determinado recurso y guardarlo localmente para mejorar la redundancia de toda la red.

De forma predeterminada, los recursos agregados por ipfs add se fijan automáticamente en el espacio del almacén local.

Formato de objeto de datos

Define el formato de objeto de Merkle DAG. IPFSObject es la estructura de almacenamiento de IPFSde, que limita el tamaño de cada dato a menos de 256K. En el objeto IPFSObject, hay dos partes, una es Link, que se utiliza para almacenar referencias a otras bloquear datos, y el otro son datos El contenido de este objeto. El enlace consta principalmente de tres partes, nombre del enlace, hash y tamaño. El enlace es solo una referencia a un objeto IPFSObject. La ventaja de este diseño es que combinado con Git, Merkle DAG reducirá en gran medida el consumo de espacio de almacenamiento. Si modifica una parte del archivo de origen, solo puede modificar algunos objetos IPFSO y no es necesario modificar todo el contenido. La siguiente es la estructura de datos de IPFSObject y Link:

type IPFSObject struct{
    
    
    links []IPFSLink
    data []byte
}
type IPFSLink struct{
    
    
    Name string
    Hash Multihash
    Size int    
}

Supongo que te gusta

Origin blog.csdn.net/wcc19840827/article/details/110953637
Recomendado
Clasificación