IPNS, Interplanetary Name System (Sistema de Nomes Interplanetários)

"O IPNS (InterPlanetary Name System) é uma ferramenta do IPFS que permite a criação de ponteiros mutáveis para CIDs, facilitando a atualização de conteúdo sem mudar o endereço de referência. Através da assinatura de registros com chaves privadas, o IPNS garante a autenticidade dos dados e pode ser resolvido através de gateways do IPFS. Apesar de oferecer resistência à censura e descentralização, o IPNS pode apresentar desafios em termos de velocidade de resolução e escalabilidade em comparação com sistemas DNS tradicionais."

O IPNS (InterPlanetary Name System) é um sistema no IPFS (InterPlanetary File System) que permite criar ponteiros mutáveis para CIDs (Identificadores de Conteúdo), também conhecidos como nomes IPNS. Esses nomes podem ser atualizados ao longo do tempo, mantendo a verificabilidade da abordagem de endereçamento baseada em conteúdo do IPFS.

O IPFS é conhecido por seu sistema de endereçamento baseado em conteúdo, em que um arquivo é identificado por um CID, que é gerado a partir do hash dos dados. No entanto, em algumas situações, como a publicação de um site que sofre alterações frequentes, é impraticável compartilhar um novo CID a cada atualização. Com ponteiros mutáveis, é possível compartilhar o endereço do ponteiro uma vez e atualizar o ponteiro para o novo CID a cada vez que uma alteração for publicada.

O IPNS funciona associando um nome a um registro IPNS, que contém o caminho do conteúdo (/ipfs/CID) ao qual ele aponta, juntamente com outras informações, como data de expiração, número da versão e uma assinatura criptográfica feita com a chave privada correspondente. Novos registros podem ser assinados e publicados a qualquer momento pelo detentor da chave privada.

Um nome IPNS é essencialmente o hash de uma chave pública. O nome IPNS é um CID com um Multihash da chave pública. O registro IPNS contém a chave pública e a assinatura, permitindo que qualquer pessoa verifique se o registro foi assinado pelo detentor da chave privada. Isso confere aos nomes IPNS a capacidade de se autocertificar, garantindo a autenticidade dos registros.

Existem três operações comuns do IPNS que valem a pena entender: atualizar/criar um registro IPNS, publicar um registro IPNS e resolver um nome IPNS. A atualização/criação de um registro IPNS envolve a criação de um novo registro com o caminho do conteúdo atualizado e a assinatura com a chave privada. A publicação de um registro IPNS envolve a divulgação do registro para que outros nós possam resolvê-lo. A resolução de um nome IPNS envolve o processo de obter o caminho do conteúdo associado ao nome.

O IPNS é agnóstico em relação ao transporte, o que significa que não está restrito a um protocolo específico. Na prática, a maioria das implementações do IPFS utiliza o DHT (Distributed Hash Table) e o PubSub (Public-Subscribe) do libp2p para publicar e resolver registros IPNS. O IPNS sobre o DHT publica e resolve em um estado global compartilhado, enquanto o IPNS sobre o PubSub usa mensagens em tópicos para publicar e resolver com os nós interessados. Essa diferença implica em uma troca entre consistência e disponibilidade. O IPNS sobre o DHT pode levar mais tempo para operações de publicação e resolução, mas garante uma maior consistência, enquanto o IPNS sobre o PubSub é mais rápido, mas pode resultar em registros desatualizados.

No IPFS, os nomes IPNS podem ser resolvidos por gateways do IPFS de duas maneiras: resolução de caminho e resolução de subdomínio. A resolução de caminho utiliza um URL como "https://ipfs.io/ipns/{ipns-name}", enquanto a resolução de subdomínio utiliza um URL como "https://{ipns-name}.ipns.dweb.link". Essas formas de resolução permitem que os nomes IPNS sejam acessados confiavelmente por meio de gateways do IPFS.

Além do IPNS, existem alternativas para criar endereços mutáveis no IPFS. O DNSLink, por exemplo, é atualmente mais rápido que o IPNS e utiliza nomes legíveis por humanos. Outros membros da comunidade estão explorando maneiras de usar blockchains para armazenar registros de nomes comuns.

O IPNS também permite a criação de registros de nomes efêmeros, que são válidos apenas por um período de tempo limitado. Essa funcionalidade é útil em casos em que um conteúdo precisa ser acessado temporariamente, mas não é necessário manter um ponteiro para ele permanentemente. Os registros efêmeros podem ser atualizados ou substituídos antes de expirarem, fornecendo flexibilidade para os usuários.

Uma das vantagens do IPNS é a sua capacidade de suportar a descentralização e a resistência à censura. Como o IPFS é um sistema distribuído e baseado em uma rede ponto a ponto (p2p), os registros IPNS podem ser publicados e resolvidos por qualquer nó na rede, eliminando a dependência de uma autoridade centralizada. Isso significa que mesmo em cenários em que a infraestrutura tradicional de internet esteja indisponível ou censurada, os nomes IPNS podem continuar funcionando e permitir o acesso ao conteúdo.

No entanto, é importante observar que o IPNS não é projetado para fornecer a mesma velocidade de resolução de nomes que os sistemas tradicionais de DNS (Domain Name System). Devido à natureza descentralizada do IPFS e à necessidade de propagar informações através da rede, pode haver um atraso na atualização e resolução de nomes IPNS em comparação com os sistemas DNS centralizados.

O IPNS também está sujeito a desafios de escalabilidade, especialmente em redes com um grande número de registros IPNS e atualizações frequentes. A resolução de nomes pode exigir uma quantidade significativa de recursos computacionais e largura de banda, o que pode afetar o desempenho em escala. No entanto, a comunidade do IPFS continua trabalhando para melhorar a eficiência e escalabilidade do IPNS por meio de otimizações e novos protocolos.

No geral, o IPNS é uma ferramenta poderosa no IPFS para criar ponteiros mutáveis e permitir a atualização de conteúdo ao longo do tempo. Sua flexibilidade, resistência à censura e capacidade de descentralização tornam-no uma escolha popular para casos de uso em que a atualização frequente de conteúdo é necessária, como blogs, sites dinâmicos e distribuição de software.

Last updated