No artigo de hoje eu quero lhe explicar o que é IPFS ou InterPlanetary File System, para que ele serve e porque ele foi criado, bem como você pode fazer para usar um nó IPFS na sua máquina ou como subir seus arquivos para nós IPFS de terceiros. Caso prefira, você pode assistir ao vídeo abaixo que contém conteúdo semelhante.
O que é IPFS?
IPFS é a sigla para Sistema de Arquivos Inter-Planetário (em Inglês) e basicamente é uma rede descentralizada de compartilhamento de arquivos que teoricamente funciona inclusive entre planetas diferentes, motivo do seu nome. Ou seja, é uma é uma rede P2P ou Ponto a Ponto onde eu posso hospedar arquivos na minha máquina e compartilhar com qualquer outra pessoa da rede, sem a necessidade de um servidor central.
Com apenas um computador e uma conexão com a Internet, temos autonomia na infraestrutura e propriedade sobre os arquivos, diferente de quando estamos usando serviços de big techs, onde ficamos à mercê das regras e servidores delas. Além disso, uma vez que o arquivo se espalhe pela rede, com mais pessoas fazendo download dele, basta que um nó ativo mantenha uma cópia e ele sempre estará disponível a todos.
Ah, quer dizer que IPFS é que nem blockchain então?
Sim e não. IPFS guarda algumas semelhanças, mas NÃO é uma blockchain.
Da blockchain o IPFS tem em comum a descentralização, ou seja, nós entram e saem da rede, mantendo-a sempre viva e ativa, mas sem um servidor central e também a validação baseada em hashing. Cada arquivo é unicamente identificado e acessado pelo hash do seu conteúdo. Ou seja, se tiver um bit diferente, já não é o mesmo arquivo, ficando fácil garantir a originalidade e impedir falsificações apenas olhando o id do arquivo.
Se você não sabe nada e criptografia, recomendo o vídeo abaixo que gravei tem algum tempo.
Mas as semelhanças com a blockchain param por aí, na verdade IPFS é um poderoso ALIADO de aplicações web3, como explicarei à seguir.
Web3 e Desafios
Quando a Web 1.0 surgiu, nos anos 80 e início dos 90, nós criávamos nossas páginas web (os websites) e subíamos servidores web (webservers) em nossas próprias máquinas, fazendo configurações de rede para que as pessoas conseguissem acessar os domínios e o site funcionasse. Esses usuários dos sites eram apenas consumidores no primórdio da Internet e os webmasters tinham todo o poder sobre as aplicações e dados.
No final dos anos 90 e início dos 2000, com o advento da banda larga e o surgimento de novas tecnologias unindo frontend e backend como Ajax, surgiu a Web 2.0, onde as big techs passaram a prover serviços cada vez mais completos e baratos (graças à computação em nuvem), bem como suas plataformas de redes sociais e SaaS (softwares como serviço) pra todo lado. Os usuários passaram a ser produtores de conteúdo, mas ao mesmo tempo, não éramos mais “donos” de nada: nossos sites, nossas fotos, nosso dados…estava tudo com as big techs agora.
E então surgiu a blockchain: uma tecnologia dos anos 90 focada em evitar fraude eletrônica cujo principal uso a partir de 2009 se tornou ser um livro-razão distribuído de dinheiro digital (Bitcoin). Mais tarde, por volta de 2014, surgiu a segunda geração de blockchains (Ethereum) como uma plataforma de aplicações descentralizadas, permitindo o surgimento de uma terceira geração de web. Uma onde teríamos novamente a propriedade dos nossos dados e da nossa economia.
Mas o que isso tem a ver com IPFS, além das semelhanças já citadas anteriormente com a blockchain?
Para entender isso, você precisa conhecer primeiro alguns desafios da web3.
O primeiro desafio é a rede se manter em pé, ativa e funcionando, para que as aplicações e dados permaneçam existindo. Recompensas são pagas a todo aquele que se dispor a ajudar a manter a rede no ar, através do pagamento de taxas cobradas nas transações. Assim, centenas de milhares de pessoas e empresas empregam seu poder computacional para manter as redes ativas, sendo pagos pelos próprios usuários da rede por isso.
O segundo desafio é em decorrência da solução para o primeiro: as taxas cobradas pelas transações são proporcionais a alguns fatores, como congestionamento da rede, complexidade/esforço computacional de processar a transação e até mesmo valor de mercado do token usado nas taxas. Assim, manter sua aplicação simples e pequena, com poucos arquivos e dados, é vital para que os usuários não sejam demasiadamente onerados ao utilizá-la, o que poderia gerar afastamento das pessoas.
O terceiro desafio é em decorrência da solução do segundo: e quando precisamos armazenar grandes quantidades de dados ou muitos arquivos, não tem jeito da aplicação rodar sobre a blockchain sem pagar taxas exorbitantes? Ou melhor, a pergunta deveria ser: como fazemos no mundo web3 para armazenar arquivos em grande quantidade e tamanho?
IPFS como Solução
A primeira ideia, advinda do mundo web2, seria: armazenamos o(s) arquivo(s) em um serviço de disco virtual, como Google Drive, DropBox ou mesmo soluções corporativas como AWS S3 e guardamos na blockchain apenas a URL ou nome do arquivo ou qualquer outro identificador. No entanto, esta abordagem sofre de novos e antigos problemas.
Um problema antigo é criar novamente a dependência de uma big tech, tornando sua aplicação web2 ao invés de web3. Se a big tech decidir que não quer hospedar seu arquivo, ela vai tirá-lo do ar, seja por questões legais, falta de pagamento, limite de armazenamento, não importa. Ele não é seu de verdade, é dela agora.
O problema novo é que se esse arquivo for copiado e reutilizado na Internet, como vão saber qual é o original e correto? Ou se o próprio dono do arquivo mudar ele, mas manter o nome ou URL, como você saber se esse arquivo ainda é o original?
Vamos pegar como exemplo uma coleção NFT, algo que já ensinei como programar aqui no blog antes. Os Tokens Não Fungíveis uma vez mintados na blockchain se tornam, propriedades digitais de alguém, certo? Mas se eles possuírem arquivos associados, sejam metadados JSON ou mídias, como armazenar esses arquivos de maneira descentralizada e segura, como a própria blockchain?
É aí que IPFS brilha. Uma vez que você suba um arquivo para a rede, ele ganha um identificador único que nada mais é do que o hash do seu conteúdo. Esse hash pode ser registrado na blockchain, fazendo uma associação permanente entre um NFT, por exemplo, e o arquivo em questão. Não existem dois arquivos com mesmo nome, o arquivo não depende de um servidor central para circular pela rede (e nem servidores de big techs) e se no futuro ele for alterado, um novo upload seria necessário o que geraria um novo hash.
Perfeito!
Ou quase, já que o uso do protocolo IPFS ainda traz alguns desafios para garantir que os arquivos não se percam com o passar do tempo e que possam ser baixados e/ou visualizados nos navegadores. Para solucionar o primeiro problema você pode subir um nó IPFS na sua máquina e mantê-lo sempre ativo, enquanto que o segundo problema é simples de resolver subindo um gateway IPFS na mesma máquina. Agora caso você não queira dedicar uma máquina para isso, por qualquer que seja o motivo, a solução é terceirizar: existe uma série de empresas de armazenamento descentralizado/web3 baseadas em IPFS como Pinata, Web3.Storage, Infura e outras.
Inclusive neste outro post aqui do blog eu ensino como usar Pinata em suas aplicações web3.
E se você quiser ganhar dinheiro prestando esse tipo de serviço, existem protocolos como Filecoin e outros que promovem esse tipo de serviço.
Enfim, Web3 está só começando e IPFS também. Espero que com esse artigo tenha lhe ajudado a entender melhor estes dois conceitos.
Até a próxima!
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.