Pila de protocolo IPFS de la serie de tecnología IPFS

prefacio

Este artículo presenta principalmente la pila de protocolos subyacente de IPFS, incluida la estructura de siete capas de IPFS.


1. Descripción general del protocolo IPFS

  Similar a HTTP, IPFS es un protocolo de capa de aplicación basado en TCP/IP. La pila de protocolos IPFS también se compone de siete capas de subprotocolos responsables de diferentes funciones. Como se muestra en la siguiente figura:

1. Capa de identidad: generación y verificación de identidad del nodo de gestión.
2. Capa de red: gestiona las conexiones con otros nodos.
3. Capa de enrutamiento: DHT mantiene información de enrutamiento para ubicar nodos y objetos específicos del mismo nivel, y responde a solicitudes de consulta de nodos locales y remotos.
4. Capa de intercambio: basada en BitSwap (Protocolo de intercambio de bits), simula un mercado confiable, debilita la duplicación de datos y evita las trampas.
5. Capa de objetos: basada en Merkle DAG, tiene las características de direccionamiento de contenido y anti-redundancia.
6. Capa de archivos: similar a la versión del sistema de archivos de Git, admite blob, list, tree y otras estructuras.
7. Capa de nombres: un sistema de nombres de variables con características de autoinspección.
Luego, presentaré la estructura de siete capas una por una a continuación:

2. Capa de identidad

  En la red IPFS, todos los nodos se identifican mediante un NodeId único. Similar a una dirección de Bitcoin, NodeId también es un hash de una clave pública. Cada nodo está representado por una estructura de Nodo en el código IPFS, que solo contiene NodeId y un conjunto de pares de claves públicas y privadas.

type NodeId Multihash
type Multihash []byte // 自描述加密哈希摘要
type PublicKey []byte
type PrivateKey []byte // 自描述的私钥
type Node struct {
    
    
NodeId NodeID
PubKey PublicKey
PriKey PrivateKey
}

La función principal del sistema de identidad es identificar nodos en la red IPFS. Similar a la generación de información del usuario. Cuando los nodos establecen una conexión por primera vez, primero intercambian claves públicas y realizan la verificación de identidad.

3. Capa de red

La pila de red de IPFS tiene las siguientes características:
1. Transmisión: IPFS es compatible con los protocolos de transmisión principales existentes, incluidos WebRTC DataChannels, uTP y otros protocolos de transmisión.
2. Confiabilidad: use uTP y sctp para garantizar y ajustar dinámicamente el estado de la red.
3. Conectividad: use ICE para lograr la conectividad WAN.
4. Integridad: compruebe la integridad de los datos mediante la suma de comprobación hash. Todos los bloques de datos en la red IPFS tienen un valor hash único.
5. Verificabilidad: use la clave pública del remitente de datos y el código de autenticación de mensajes HMAC para verificar la autenticidad del mensaje.

4. Capa de enrutamiento


La estructura de datos de la capa de enrutamiento de IPFS utiliza una tabla hash suelta distribuida (DSHT) basada en la tecnología S/Kademlia y Coral , que se utiliza principalmente para implementar tres funciones básicas: enrutamiento de contenido, enrutamiento de nodos y almacenamiento de datos. La estructura DHT de IPFS se distinguirá según el tamaño de los datos almacenados: los valores pequeños se almacenan directamente en el DHT, generalmente no más de 1 KB; para valores más grandes, el DHT solo almacena el índice de valor, que es un NodeId .

5. Capa de intercambio

  La capa de intercambio de IPFS usa el protocolo BitSwap, y su función principal es usar el mecanismo de crédito para intercambiar datos entre nodos, y cada nodo carga continuamente los datos descargados a otros nodos durante la descarga. En IPFS, la distribución y el intercambio de datos utilizan el protocolo BitSwap.
El protocolo BitSwap es principalmente responsable de dos cosas:
1. Solicitar una lista de bloques de datos requeridos de otros nodos
2. Proporcionar a otros nodos una lista de bloques de datos existentes.

El ciclo de vida del intercambio de datos de BitSwap pasa por 4 estados:
1. Desarrollo de estado (Abierto): los nodos pares desarrollan el estado de las facturas de BitSwap que se enviarán hasta que se establezca la conexión.
2. Envío de datos (Sending): envío de want_list y bloques de datos entre nodos.
3. Cierre de conexión (Close): El nodo se desconecta después de enviar los datos.
4. Ignorar nodos: los nodos se ignoran debido a factores como el tiempo de espera, la personalización y la baja puntuación de crédito.

6. Capa de objetos

  La capa de objetos de IPFS utiliza principalmente la tecnología Merkle DAG para construir una estructura de datos de gráficos acíclicos dirigidos para almacenar datos de objetos.
Merkle DAG proporciona algunas propiedades útiles para IPFS, que incluyen:
1. Direccionamiento de contenido: todo el contenido se verifica y se identifica de forma única mediante múltiples hashes.
2. Evitar la manipulación: si los datos se manipulan o dañan en la red IPFS, se pueden detectar mediante la verificación de hash.
3. Deduplicación: todos los objetos que tienen exactamente el mismo contenido son idénticos y se almacenan solo una vez.

Siete, capa de archivo

   IPFS también define un conjunto de objetos para modelar sistemas de archivos versionados sobre los DAG de Merkle.
1. Bloque: Un bloque de datos de tamaño variable.
2. List (lista): Una colección de bloques u otras listas.
3. árbol: una colección de bloques, listas u otros árboles
4. compromiso: una instantánea en el historial de versiones del árbol.

8. Capa de nombres

  En la capa de nombres, el equipo de Protocol Labs diseñó el módulo del sistema de comando de archivos interplanetarios IPNS para IPFS.
Entre ellos, se adopta el método de denominación autovalidante. El modo es el siguiente:
1. Generar información de nodo IPFS a través de NodeId =hash(node.Pubkey)
2. Asignar a cada usuario un espacio de nombres variable, utilizando la información de ID de nodo generada previamente como nombre de dirección, en esta ruta:/ipns/.
3. Un usuario puede publicar un objeto firmado con su propia clave privada en esta ruta.
Por ejemplo: /ipns/XLF2ipQ4jD3UdeX5xp1KBgeHRhemUtaA8Vm/
4. Cuando otros usuarios obtienen el objeto, pueden verificar si la firma coincide con la clave pública y la información del nodo, verificando así la autenticidad del objeto publicado por el usuario.

Además, IPFS también utiliza algunas tecnologías para aumentar la facilidad de uso de IPNS.
1. Enlace de nodo de pares
Los usuarios pueden vincular directamente objetos de otros nodos de usuario a su propio espacio de nombres.
2. Registro DNS TXT IPNS
Los usuarios pueden agregar registros TXT al sistema DNS existente, de modo que puedan acceder a objetos de archivo en la red IPFS a través de nombres de dominio.

#Registro DNS TXT
ipfs.benet.ai.TXT “ipfs=XLF2ipQ4jD3U …”
#Representado como un enlace simbólico
ln -s /ipns/XLF2ipQ4jD3U /ipns/fs.benet.ai

IPFS también es compatible con el identificador legible Proquint, que puede traducir códigos binarios en
archivos legibles

#proquint declaración
/ipns/dahih-dolij-sozuk-vosah-luvar-fuluh
#Descompuesto en la forma correspondiente
/ipns/KhAwNprxYVxKqpDZ

Además, IPFS también proporciona servicios de nombres de direcciones cortas

#Los usuarios pueden obtener un enlace desde abajo
/ipns/shorten.er/foobar
#Luego ponerlo en su propio espacio de nombres
/ipns/XLF2ipQ4jD3UdeX5xp1KBgeHRhemUtaA8Vm

Resumir

Lo anterior es la pila de protocolos IPFS de la que se hablará hoy, incluida la estructura de siete capas.

Supongo que te gusta

Origin blog.csdn.net/ggj89/article/details/122582337
Recomendado
Clasificación