O que é IPFS? E como funciona?

Caíque Carbone Gonçalves
5 min readJun 5, 2020

Como funciona a tecnologia que pode revolucionar a internet que conhecemos hoje.

IPFS é uma tecnologia que promete revolucionar a internet que conhecemos hoje, pensando em uma maneira descentralizada de distribuição de conteúdo.

O nome IPFS:

O IPFS (Interplanetary File System) foi criado em 2015 pelo mexicano Juan Benet, CEO da Protocol Labs, e ele leva esse nome por ser tratar de um protocolo de compartilhamento de arquivos em sistema distribuídos.

Introdução

Hoje a internet é algo muito presente na vida de todos. Utilizamos ela para:

  • Falar com nossos amigos
  • Pagar contas
  • Fazer transferências
  • Fazer pesquisas
  • Achar empregos…

Mas, a internet como conhecemos tem um grande problema: ela é centralizada.

Tudo está guardado em grandes servidores e geralmente eles são controlados por apenas uma empresa.

Você sabe o que aconteceria se sites como Wikipedia e Youtube saíssem do ar?

Todo aquele conteúdo que você precisa para uma pesquisa ou estudo, todos aqueles vídeos de gatinhos que você adora ver no seu tempo livre, estariam inacessíveis.

A centralização nos traz outro grande problema: censura.

Por causa do conteúdo pertencer a apenas uma empresa, se torna fácil para governos, bloquear acesso à alguns conteúdos.

Mas… Por que continuamos usando um modelo de internet centralizada?

Isto é porque temos uma expectativa muito alta, quanto ao conteúdo que buscamos na internet, queremos que:

  • Carreguem instantaneamente
  • Sempre disponível
  • Tenham alta qualidade

A centralização permite que as empresas tenham completo controle do quão rápido será a entrega de todo o conteúdo.

Outro bom motivo pelo qual utilizamos este modelo, é porque não temos uma alternativa melhor e/ou rápida.

IPFS

O IPFS vem com a proposta de fazer a internet ser completamente distribuída através de redes P2P(Peer to Peer), que funciona mais ou menos como os torrents(uTorrent, BitTorrent).

Como IPFS funciona?

Hoje, quando baixamos alguma “imagem”(conteúdo), dizemos para nosso computador, EXATAMENTE onde achar esta imagem, ou seja o IP ou DNS.

Isto é, quando você diz para o seu computador onde pegar aquela informação e, por qualquer motivo que seja, a informação estiver inacessível, você acaba ficando de mãos atadas

Porém é quase certo que alguém já baixou aquele conteúdo antes e ainda o possui. Ainda sim, o seu computador não consegue pegar uma cópia desta pessoa.

Para solucionar este problema, o IPFS propõe a seguinte mudança de paradigma:

De “location based address” (localização baseada em um endereço) para “content based addressing” (localização baseada no conteúdo)
ou seja, ao invés de você dizer :

Onde encontrar algo

Você diz:

O que você quer.

Pense no seguinte:

Hoje você está precisando comprar uma caneta e diz para alguém comprar para você em uma determinada loja.
Se está loja estiver fechada, você fica sem caneta.

Mas, se você pedir para alguém: “hey, preciso de uma caneta, compre uma para mim”.
As chances de você ter uma caneta no final do processo, é muito maior.

Mas… Como isto funciona no IPFS?

Todo arquivo possui uma ‘hash’ unica. Quando você quer fazer um download da internet você pergunta: “quem possui o arquivo com a chave: ex: QmT9qk3CRYbFDWpDFYeAv8T8H1gnongwKhh5J68NLkLir6

O hash, além de garantir que você está recebendo exatamente o mesmo arquivo que pediu, sem nenhuma alteração (adulterado), outro ponto positivo de utilizar hashes é que isto evita a deduplicação de dados:

O que é isso?

Vamos supor que várias pessoas subam o mesmo arquivo para a rede, graças a geração de hash, garantimos que o mesmo conteúdo sempre será gerado apenas uma vez na rede, com um hash único.

Arquivos no IPFS

Mas, como o IPFS guarda os arquivos e mantém acessível à todos?

O IPFS guarda os dados em algo chamado “IPFS’s objects”, estes objetos conseguem guardar até 256kb de dados, e também pode conter links para outros objetos do IPFS “IPFS’s Objects”.

Arquivos com mais de 256kb são todos divididos em várias partes de 256kb e depois de tudo o sistema cria um “IPFS Object” vazio, contendo apenas os links das outras partes dos arquivos.

Exemplo ilustrativo de como o IPFS lida com arquivos maiores que 256kb

A arquitetura de dados do IPFS é simples e ainda sim muito poderosa.

Está arquitetura nos deixa utilizar o IPFS como um “FileSystem”, por causa do IPFS utilizar o paradigma de “content based address” uma vez que um arquivo é adicionado a base, ele nunca mais poderá ser alterado, ele funciona como um banco de dados imutável, como se fosse uma blockchain.

Mas como conseguimos fazer alterações nele?
O IPFS permite o sistema de versionamento de seus arquivos.

Vamos dizer que você está criando um documento e quer compartilhar com algumas pessoas, e depois de algum tempo decide fazer uma atualização neste mesmo documento.

Temos então que em um primeiro momento o IPFS irá gerar um “commit object”, onde irá referenciar seu arquivo sem nenhum commit “pai”, no segundo momento o IPFS irá criar um outro “commit object”, fazendo referencia ao estado atual do seu arquivo e ao commit “pai”(parent) dele.

Exemplo ilustrativo do versionamento de arquivos no IPFS

Conclusão

IPFS é uma tecnologia muito nova e com um grande potencial de revolucionar a internet que conhecemos, tendo algumas desvantagens como:

Garantir que um arquivo sempre esteja disponível, caso todas as pessoas que possuem uma copia do conteúdo que está buscando estejam desconectados. Situação bastante parecida com um torrent sem “seeders”

Existem algumas soluções disponíveis hoje para tentar contornar esse problema, a mais conhecida hoje é chamada de “FileCoin”.

IPFS possui muitos casos de uso como:

Dado um certo contexto politico o governo vem a censurar um certo documento da internet contendo um conteúdo de interesse publico sobre o que está acontecendo com o dinheiro publico, com IPFS podemos subir e todos com acesso a rede terá uma cópia deste conteúdo e por ser uma rede descentralizada (sem um servidor central) o governo não consegue censurar este documento.

Ou algo como o “d.Tube” uma aplicação de vídeos descentralizados.

--

--