Comprensión de IPFS en profundidad(3/6): ¿Qué es el Sistema de Nombres InterPlanetarios (IPNS)?

Por qué necesita IPNS, cómo usarlo y su comparación con DNS

Foto por chuttersnap en UnsplashEste post es una continuación (parte 3) en una nueva serie » Understanding IPFS in Depth » que ayudará a cualquiera a entender los conceptos subyacentes de IPFS. Si desea una visión general de lo que es IPFS y cómo funciona, entonces debería echar un vistazo a la primera parte también Understanding IPFS in Depth(1/6): Guía de principiante a avanzado

Una guía completa que incluye IPLD, Libp2p, MultiFormats & Filecoin En la parte 2, discutimos la importancia de IPLD (InterPlanetary Linked Data), cómo funciona y sus especificaciones técnicas. También pasamos por un tutorial en el que creamos un medio como el sistema de publicación, utilizando únicamente IPLD. Puedes comprobarlo aquí: Entendiendo IPFS en Profundidad(2/6): ¿Qué es InterPlanetary Linked Data (IPLD)?

Una guía completa de IPLD: Su significado, cómo funciona y ejemplos prácticos Si te gustan los conceptos Web3 de alta tecnología como IPFS, Libp2p, Multiformats, IPLD, etc., explicados en palabras sencillas con tutoriales interactivos, entonces ve aquí. Inicio – SimpleAsWater

SimpleAsWater, una plataforma comunitaria para aprender, construir, colaborar y descubrir Dapps e historias de la Web 3.0. En esta parte, nos zambullimos en el Sistema de Nombramiento de IPFS, Sistema de Nombramiento InterPlanetario (IPNS). Vamos a explorar:

  • ¿Cuál es la necesidad de IPNS ? ¿Cómo es comparable al DNS (Sistema de Nombres de Dominio) actual y en qué se diferencia de él?
  • Exploraremos cómo funciona el enrutamiento en IPFS y cómo funciona IPNS ?
  • Y por último, vamos a jugar con IPNS . Vamos a alojar y configurar el enrutamiento de mi sitio web totalmente utilizando la pila IPFS .

Espero que aprenda mucho sobre IPFS de esta serie. Para entender por qué necesitamos IPNS, veamos cómo accedemos actualmente a nuestras fotos, videos y memes usando IPFS.BTW, si quieres seguirme, puedes descargar mi sitio web de la siguiente manera:

wget --mirror--convert-links--adjust-extension--page-requisites--no-parent "https://vaibhavsaini.com">https://vaibhavsaini.com

Cuando añado mi sitio web a IPFS, obtengo la siguiente salida: añadiendo la carpeta de mi sitio web a IPFSNow, puedo acceder a mi sitio web en

https://gateway.pinata.cloud/ipfs/QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB/

Pero este enlace tiene algunos problemas: En primer lugar, es difícil de leer, y mucho menos de recordar. Lo que quiero decir con un enlace inmutable es que este enlace es permanente (debido a la naturaleza de contenido-dirección ). Si yo añadiera una coma en cualquier parte de mi sitio web, el CID de la carpeta raíz cambiaría, cambiando así el enlace a mi sitio web. Por lo tanto, cada vez que cambio algo en mi sitio web, tengo que dar el nuevo enlace a todos los que quieran acceder a mi último sitio web… No está bien… Aquí es donde entra en juego el IPNS.Mediante el uso de IPNS se puede generar un enlace mutable, que: será legible por el ser humano y fácil de recordar.points a la última versión de su sitio web, foto de perfil, vídeo, etc Un nombre en IPNS (el hash sigue a /ipns / en un enlace) es el hash de una clave pública. Se asocia a un registro que contiene información sobre el hash al que enlaza y que está firmado por la clave privada correspondiente. En otras palabras, IPNS es un espacio de nombres global basado en la Infraestructura de Clave Pública (o PKI) que nos permite construir cadenas de confianza (para que pueda seguir una clave pública a su par de ruta), lo que nos da encriptación y autenticación, y sigue siendo compatible con otros servicios de nombres. Así que por ejemplo, podemos incluso mapear cosas como entradas DNS, cebolla, o direcciones de bits, etc. a direcciones IPNS.IPNS no es la única manera de crear direcciones mutables en IPFS. También puede utilizar DNSLink (que actualmente es mucho más rápido que IPNS y también utiliza nombres más legibles. Más adelante aprenderemos más sobre el tema). Otros miembros de la comunidad están explorando formas de utilizar las cadenas de bloques para almacenar registros de nombres comunes. He aquí una gran comparación de diferentes proyectos que trabajan en un sistema de nomenclatura para la web distribuida.IPNS y DNS comparten algunas similitudes. Ambos resuelven problemas similares en sus respectivos sistemas, el primero en un sistema con dirección de contenido y el segundo en un sistema con dirección de ubicación En un sistema con dirección de ubicación (la antigua escuela de Internet de hoy en día), utilizamos la combinación IP:PORT para acceder a nuestros datos. Por lo tanto, en un sistema con dirección de localización, la dirección de mi sitio web será:

http://18.205.129.69:80

que no es ni legible ni fácil de recordar, pero siempre apunta al último contenido alojado en esta dirección, utilizando DNS, asociamos esta IP con un nombre de dominio, para que pueda acceder al sitio web en vaibhavsaini.com Ok, pero como funciona… IPNS puede ser implementado de muchas maneras, pero su implementación actual utiliza Distributed Hash Table (DHT). Como consecuencia, sólo el mapeo más reciente de cada URI a su correspondiente hash está disponible para su resolución, olvidando cualquier mapeo histórico. Esto no es bueno desde la perspectiva del archivo ya que las versiones anteriores de un archivo pueden existir en el almacén IPFS, pero sus correspondientes mapeos URI se pierden. usemos el módulo de nodos ipns para entender cómo se publica un registro IPNS. el código anterior se comenta lo suficiente como para que sea autodescriptivo… También puede ver el proyecto completo aquí. si desea profundizar para saber cómo funciona el enrutamiento en IPFS, puede leer este hilo … Quería explicar esto en el post, pero hay muchas otras cosas interesantes que explorar, así que me lo he saltado 😉 Jugando con IPNSLet, publique nuestro sitio web a través de IPNS.

ipfs name publish QmYVd8qstdXtXtTd1quwvvv4nJen6XprykxQRLo67Jy7WyiLMB

Esto puede tomar hasta unos minutos. Obtendrá una salida como esta:

Publicada en Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy: ipfs/QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB

Ahora puede obtener el último sitio web aquí:

https://gateway.pinata.cloud/ipns/Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy

Note: IPNS olvida (Time to Live System) los nombres publicados después de unas 12 horas . Es posible que desee ejecutar un trabajo cron para volver a publicar en un plazo de 12 horas.Si quiero añadir un CID actualizado, usaré el mismo comando:

ipfs name publish <my_new_CID>

You can also check the current CID linked to your peerID:

ipfs name resolve Qmb1VVr5xjpXHCTcVm3KF3i88GLFXi88GLFXSetjcxL7PQJJRviXSy

Este comando te devolverá el último CID.Para mayor flexibilidad, también puede utilizar diferentes claves para diferentes contenidos
ipfs name publish –key=vasa_blog <cid_to_my_blog>Esto resuelve uno de los problemas que hemos mencionado anteriormente (problema con enlaces inmutables )). Pero los enlaces siguen siendo feos. Para hacer los enlaces todavía necesitamos usar DNS. Existen otros sistemas que se adaptan mejor a los sistemas dirigidos por contenido, como CCN / NDN , XIA . Pero estos requieren actualizar el propio Internet, lo cual es realmente difícil de garantizar sin una demanda masiva. Incluso con una gran demanda, el IPv6 aún no se ha desplegado completamente 🙁 – lo que no me da ninguna esperanza de ver a NDN/CCN desplegado masivamente en el núcleo, sin que FIRST establezca el uso de redes con dirección de contenido. Esto significa que los desarrolladores finales (desarrolladores web) deben ser capaces de utilizar redes con dirección de contenido para mover muchos datos (vídeo, etc.) de forma extremadamente efectiva mucho antes de que se materialice una demanda sustancial para mejorar la red subyacente. De todos modos, por ahora, usemos DNS para crear enlaces legibles.DNSLinkDNSLink usa registros DNS TXT para mapear un nombre de dominio (como vaibhavsaini.com) a una dirección IPFS. Debido a que puede editar sus registros DNS, puede usarlos siempre para apuntar a la última versión de un objeto en IPFS (recuerde que la dirección de un objeto IPFS cambia si modifica el objeto). Pero no queremos cambiar los registros TXT cada vez que actualizamos nuestro sitio web. Así que añadiremos un enlace ipns en lugar de un enlace ipfs. Una dirección DNSLink se parece a una dirección IPNS, pero utiliza un nombre de dominio en lugar de una clave pública hashhed:

/ipns/vaibhavsaini.com

Al igual que las direcciones IPFS normales, pueden incluir enlaces a otros archivos:

/ipns/vaibhavsaini.com/ assets/images

Cuando un cliente o nodo IPFS intenta resolver esa dirección, busca un registro TXT para vaibhavsaini.com con contenido como:

>dnslink=/ipfs/<CID para su contenido aquí>code>

<

>dnslink="/ipns/&lt;hash of public key&gt;>dnslink=/ipns/&lt;hash of public key&gt;code>

Por ejemplo, si usted busca vaibhavsaini.com, verá su entrada DNSLink:

$ dig +noall +answer TXT vaibhavsaini.com
vaibhavsaini.com. 1 IN TXT "dnslink=/ipns/Qmb1Vr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy"

Basado en esto, esta dirección:

/ipns/vaibhavsaini.com/assets/images

Will get you this block:

>/ipns/code>Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy>/assets/images

Super Cool!Hasta ahora hemos reducido nuestra dirección de un hash complejo a un nombre legible, pero podemos hacerlo mejor, esto (el enlace anterior) sigue siendo bastante complicado, y francamente, si queremos que el usuario medio de Web2 de hoy acceda a mi contenido Web3 descentralizado con el mínimo esfuerzo, no queremos que tengan que lidiar con puertas de enlace y prefijos de ipns/ipfs si no tienen que hacerlo. Un sentimiento importante de la comunidad web descentralizada es que la experiencia del usuario no debería cambiar mucho – la transición debería ser transparente pero fácil – así es como ganará la web descentralizada. Idealmente, nos gustaría llegar a algo como esto: https://profile.vaibhavsaini.com…Publishing…Publicando a través de un SubdomainSo para hacer nuestra dirección más legible, podemos crear un registro A apuntando nuestro subdominio a la dirección IP de un par IPFS escuchando en el puerto 80 para peticiones HTTP (como cualquiera de los gateways IPFS públicos, o el suyo propio si lo desea).Pero espera, podemos hacerlo incluso mejor que esto! porque no queremos depender de que las direcciones IP sean estáticas, podemos usar un registro CNAME para apuntar a los registros DNS de la puerta de enlace. De esta forma, si la dirección IP cambia, seguiremos apuntando al lugar correcto. Desafortunadamente, los registros CNAME no permiten otros registros (como TXT), pero la buena gente de IPFS nos permite crear un registro DNS TXT para _dnslink.your.domain, que IPFS buscará.Esto también es útil cuando desea mejorar la seguridad de una configuración automatizada o delegar el control de sus registros DNSLink a un tercero sin renunciar al control total de la zona DNS original. estoy utilizando AWS Route53 para mi configuración de DNS; puede utilizar cualquier proveedor. configuración de registro CNAME Configuración de registro _dnslink TXT: Así es como finalmente se ve:Y Voila! Tenemos nuestro contenido alojado y resuelto utilizando una pila IPFS, con una dirección que puede ser utilizada por cualquier usuario de Web2 con facilidad, como puede verse en el aviso «No seguro» de la barra de direcciones, que se debe a que no he instalado un certificado Wildcard ;;) Puede que note que los sitios web tardan en resolverse. Esto se debe a que el contenido de su sitio web se encuentra en un solo nodo. Si anclas tu sitio web en varios nodos u otros nodos, intenta acceder a tu sitio web (lo que significa que tienes que

Una lista completa/comparación de todos los algoritmos de consenso. digitalagerevival.com Profundizando en Ethereum: ¿Cómo se almacenan los datos en Ethereum?

En este post, veremos cómo se almacenan los estados y transacciones en Ethereum y en qué se diferencia de Bitcoin. digitalagerevival.com ContractPedia: Una enciclopedia de más de 40 plataformas de contratos inteligentes

Una comparación completa de todas las plataformas Blockchain/DLT digitalagerevival.com Una guía definitiva para principiantes de DAGs

¿Qué son los DAG y cómo funcionan? digitalagerevival.com Aplaude 50 veces y sígueme en Twitter: @vasa_develop

Etiquetas

IpfsIpnDnsBlockchainCryptocurrency