WEB3DEV

Cover image for Filecoin | Como um Engenheiro
Isabela Curado Nehme
Isabela Curado Nehme

Posted on

Filecoin | Como um Engenheiro

08 de fevereiro de 2023

Neste artigo, examinamos a Filecoin da perspectiva de um desenvolvedor. Falamos sobre alguns dos superpoderes que a Filecoin tem, damos uma olhada no ecossistema e esclarecemos algumas confusões sobre o relacionamento com o IPFS.

# Filecoin, mas para desenvolvedores.

Você também pode assistir nosso vídeo sobre isso aqui:

Introdução

A Filecoin é uma solução de armazenamento descentralizado com persistência de dados baseada em contrato. E acabou de lançar uma atualização impressionante ao adicionar uma funcionalidade de contrato inteligente.

Resumo de como ela se difere da Ethereum

Ao invés de ser uma blockchain que armazena qualquer dado que recebe e que cresce tão rapidamente em tamanho que quase faz a unidade SSD no meu Intel NUC pegar fogo, a própria cadeia Filecoin apenas armazena acordos ou “negociações” entre provedores de armazenamento e pessoas que querem armazenar dados, ou locatários.

Portanto, a quantidade de dados que você, como um operador de nó, precisa armazenar na cadeia Filecoin é muito menor.

A imagem abaixo mostra o que acontece quando você apenas “aumenta as estatísticas” em uma blockchain e força todos a comprar 10.000TBs de armazenamento.

# Imagem do vídeo do Youtube.

Na Filecoin, dados armazenados adicionalmente tem uma expiração. E é essa combinação de apenas alguns nós tendo que armazenar dados e datas de expiração de dados que permite que a rede seja dimensionada com muitos dados muito melhor do que as blockchains tradicionais.

Já temos duas grandes diferenças entre a Filecoin e uma cadeia mais “tradicional” como a Ethereum.

  • Os dados têm uma expiração.
  • Nem todos os nós armazenam todos os dados.

Se você tentasse armazenar toda a Internet na Ethereum, isso te custaria todo o dinheiro do mundo e todos os operadores de nós estariam imediatamente fora do mercado. E seria impossível conseguir todo o dinheiro do mundo de qualquer maneira porque a FTX (exchange especializada no comércio e armazenamento de criptomoedas) ainda tem uma boa parte dele.

Os operadores de nós que se identificam como “provedores de armazenamento” prometem armazenar dados, e essa promessa é registrada na cadeia. Se um nó não armazenar os dados, ele será atingido por uma penalidade financeira ou cortado. Você lerá sobre Prova de Replicação (Proof-of-Replication), e Prova de Espaço-tempo (Proof-of-Spacetime) nas documentações, que são basicamente a Prova de Participação (Proof-of-Stake) combinada com desafios aos desenvolvedores para provar que eles têm os dados.

Talvez ainda um pouco confuso? Ok, vamos voltar.

Quantos dados podem caber em uma blockchain?

# Qual é o tamanho da Internet?

É estimado que, até este momento, a Internet tenha 5 milhões de terabytes de dados. Para efeito de comparação, um nó completo da Ethereum tem cerca de 1TB de tamanho.

Portanto, se quiséssemos migrar para uma Internet descentralizada, precisaríamos armazenar aproximadamente 5 milhões de terabytes de dados na rede Ethereum.

# Parece um pouco caro.

Parece que a estimativa que eu recebo ao colocar todos os dados no Remix está um pouco fora do meu orçamento.

Além disso, o hard fork (bifurcação drástica) da Ethereum Spurious Dragon estabelece que um contrato só pode ter no máximo 2.45GBs de tamanho.

Não apenas armazenar todos esses dados seria extremamente caro em uma blockchain tradicional, mas também:

  • A descentralização fica ameaçada;
  • Dados antigos se tornam bagagem (State Bloat - Inchaço de estado).

Quando uma blockchain tradicional recebe mais dados, todos os outros nós precisam adicionar cada pedaço de dados. Portanto, se a blockchain cresce muito e de forma muito rápida, pode ser difícil para outros operadores de nós acompanharem o custo do tamanho, fazendo com que eles saiam da rede, o que significa que cada vez menos nós estão protegendo a rede.

E se a cadeia mantiver cada parte dos dados que estão sendo implantados, em 50 anos você terá uma blockchain onde talvez apenas 5% da cadeia seja realmente utilizada e o resto da cadeia seja bagagem de lixo do histórico.

# Exemplo de “State Bloat” (Inchaço de estado).

Portanto, para ter armazenamento descentralizado, precisamos de um modelo diferente do que temos visto para a Ethereum, a Solana, a Polygon, ou, de fato, qualquer cadeia compatível com a EVM (Ethereum Virtual Machine - Máquina virtual da Ethereum). Caso contrário, vamos apenas colocar muitos dados com os quais ninguém se importa na cadeia e todos os operadores de nós tendo que carregá-los.

Filecoin

A Filecoin é uma solução de armazenamento descentralizado e, em vez de armazenar cada pedaço de dados na cadeia, ela possui uma cadeia, mas a cadeia apenas armazena acordos (negociações) entre provedores de armazenamento e o que estou chamando de locatários. Eles também têm contratos inteligentes agora, mas falaremos mais sobre isso mais tarde. Os locatários pagam o provedor de armazenamento em FIL (a criptomoeda da Filecoin) e o provedor de armazenamento armazena os dados. O diferencial é que nem todos operadores de nós da Filecoin armazenam os dados. O locatário escolhe os nós específicos em que deseja armazenar os dados.

Sim, você ouviu direito, a Filecoin é um mercado de 2 lados e uma cadeia no meio para acompanhar todas as negociações.

# Um mercado de provedor de armazenamento da Filecoin no plus.fil.org.

Portanto, isso evita a ameaça contra a descentralização porque a cadeia armazena apenas informações sobre negociações e é fácil para qualquer pessoa se juntar à rede e alugar uma parte de seu armazenamento.

E evita o State Bloat porque cada negociação/parte dos dados tem uma expiração, então você previne o problema de ter que armazenar dados para sempre.

O que, intuitivamente, faz sentido. Você não diria a um amigo “ei, cara, me pague uma vez e eu vou deixar você dormir no meu sofá a hora que quiser por toda a eternidade.”

Agora, uma vez feito um acordo em que um provedor de armazenamento promete a um locatário armazenar dados, como garantimos que os dados permanecerão?

Prova de Armazenamento (Proof of Storage)

# Símbolo do nó Lótus da Filecoin.

A Filecoin usa algoritmos de consenso chamados Prova de Replicação e Prova de Espaço-tempo. Em um nível muito alto, a combinação desses dois significa:

  1. Os provedores de armazenamento apostam (stake) FIL como um incentivo econômico para se comportarem.
  2. Eles são periodicamente (diariamente) desafiados a fornecer provas criptográficas de que ainda possuem os dados armazenados.
  3. Se não podem fornecer a prova, são cortados.

Então, a esse respeito, penso no sistema como uma “Prova de Participação com desafios de disponibilidade de dados”.

Estou resumindo bastante o sistema, mas esta é minha analogia de um alto nível.

Isto é conhecido como “persistência de dados baseada em contrato” para soluções de armazenamento descentralizado, uma vez que os dados persistem devido à ameaça de serem cortados de um contrato que assinaram e os provedores de armazenamento recebem em FIL para armazenar os dados.

Então, aqui estão algumas observações sobre os tipos de dados:

  1. Os dados não são criptografados, mas selados. O que significa que não é bom para o armazenamento de dados privados e o acesso aos dados é pago.
  2. Existem requisitos de tamanho - o que significa que você não pode simplesmente armazenar um arquivo de 1 byte.

Essa era a Filecoin em poucas palavras, até recentemente, quando eles lançaram sua FVM - a máquina virtual da Filecoin (Filecoin Virtual Machine), que permite que as pessoas não apenas armazenem dados, mas também executem contratos inteligentes que podem interagir com esses dados. Sobre a FVM, eles têm outra máquina virtual chamada FEVM, para que todos os seus códigos em Solidity, Vyper e EVM possam ser implantados na FEVM, que os envia para a FVM, que os armazena na cadeia Filecoin exatamente na mesma localização que as negociações são armazenadas.

A FVM

# A FVM da Filecoin.

Meu pensamento inicial quando eu vi isso foi “UAU! Eu vou implantar um contrato inteligente que armazena uma tonelada de dados no mercado da Filecoin!”.

Então eu aprendi que você não pode fazer isso ainda.

“Ah, tá bem. Bom, agora vou escrever um código em Solidity que terá acesso a grandes quantidades de dados!”

Então eu aprendi que você não pode fazer isso ainda também.

# Os dados são armazenados fora da cadeia na Filecoin, portanto é difícil para os contratos inteligentes acessá-los.

Muitas das integrações da FVM com armazenamento e recuperação de dados não funcionam ainda. Você pode verificar a existência de um acordo sendo cumprido, ou o status de um acordo, já que os dados estão armazenados na cadeia. Para ser justo, é realmente legal porque a FVM tem todas as funcionalidades da Ethereum, além da habilidade de verificar e potencialmente construir mercados descentralizados em torno da existência de dados.

O que… meio que me surpreendeu.

Você pode seguir a documentação da Filecoin na seção de contrato inteligente para implantar um contrato inteligente na rede Filecoin exatamente da mesma forma que você faria em qualquer cadeia compatível com a EVM.

Ok, então você está me acompanhando até agora, certo?

  1. A Filecoin é uma solução de armazenamento descentralizado.
  2. Ela usa um mercado bilateral com modelos de incentivo para certificar que os dados são armazenados.
  3. Este modelo permite que ela dimensione para uma tonelada de dados.
  4. Você pode lançar contratos inteligentes nela também.

Esclarecimentos

Mas vamos esclarecer algumas coisas que você encontrará ao percorrer a documentação. Essas são algumas coisas que me confundiram, e vou desconfundir você agora.

A camada de incentivo quase econômica para o IPFS

Então você deve ter visto manchetes como esta ao ler sobre a Filecoin.

A Filecoin é a camada de incentivo para o IPFS.

No entanto, isso não é exatamente verdade. O armazenamento de dados em um nó da Filecoin não faz nada com o IPFS.

Não.

Nada.

Se você armazenar dados na Filecoin, também poderá independentemente armazená-los no IPFS, mas não é o padrão. Um projeto que trabalha para fazer com que os dados armazenados na Filecoin também sejam armazenados no IPFS (como um verdadeiro modelo de incentivo econômico) é o Estuary.

Isto também destaca como a Filecoin é de camada 1 (L1) e como provavelmente veremos mais projetos de camada 2 (L2) como este aparecerem.

Essa confusão está presente porque existem muitas menções na documentação sobre como as duas tecnologias funcionam juntas e o fato de que ambas são construídas pela Protocol Labs.

O que é Glif?

Glif: uma plataforma de serviço semelhante ao Alchemy/Infura para a Filecoin. Eles também tem alguns outros recursos ainda em versão beta.

O que Saturn?

Se a Filecoin é um armazenamento a frio, o Saturn é um armazenamento a quente para os dados. Eles foram lançados mais recentemente e estou animado com o futuro deles.

O que é um nó Lotus?

A implementação Go de um nó da Filecoin. Semelhante a como o Geth é a implementação Go da Ethereum.

Realmente utilizando-o

# Espera da sincronização do Lotus.

Agora, como isso realmente se parece?

Eu recomendo passar pelo tutorial na documentação se você estiver interessado em começar. Depois de fazer isso algumas vezes e executar eu mesmo um nó Filecoin de produção por cerca de um ano, meu maior conselho para você é ter paciência. Muitos passos no começo podem levar um tempo. Portanto, não desanime.

  1. Para contratos inteligentes, é apenas como qualquer cadeia da EVM. Você pega um URL RPC e está pronto para ir.
  2. Armazenar e recuperar dados, porém se você deseja fazer isso sozinho, você deverá se preparar e não desanimar.

O nó Lotus - armazenamento de dados

Agora, quando chegar na documentação do Lotus, você terá que decidir se quer executar um:

  • Nó completo (Full node);
  • Nó leve (Lite node);
  • Nó de arquivo (Archive node);
  • Nó provedor de armazenamento (Storage provider node), que pode ser alguma combinação dos anteriores.

Para começar, basta rodar um nó completo. Se você deseja ganhar dinheiro armazenando dados, rode um nó de armazenamento, mas precisará comprar MUITO mais hardware.

Eu recomendo fortemente não executar um nó da Filecoin na nuvem. É improvável que você ganhe mais dinheiro do que será cobrado.

Para executar um nó completo, você precisará de pelo menos 32GBs de RAM e (de acordo com a documentação) “SSD suficiente para cobrir um nó completo”. O que, é claro, muda a cada segundo. Então, até o momento da escrita deste artigo, descobri que 6TBs é mais do que você precisa para começar, mas, na prática, significará que você não terá que podar a cadeia com muita frequência.

Em seguida, você percorrerá a documentação para fazer download e instalar o código do Lotus e o iniciará com a palavra-chave lotus.

Quando seu nó estiver ativo, você executará:

lotus sync wait
Enter fullscreen mode Exit fullscreen mode

Para aguardar que a cadeia seja sincronizada. Na prática, se você receber um erro que diga que não foi possível encontrar a sua API, pode apenas ignorá-lo e aguardar.

Mas, uma vez sincronizado, você pode importar qualquer arquivo para o seu nó com:

lotus client import mydata.txt
Enter fullscreen mode Exit fullscreen mode

Isso dará a você uma saída como:

Import 3, Root bafykb...
Enter fullscreen mode Exit fullscreen mode

Depois de concluído, é hora de configurar um acordo. No momento, o mercado recomendado é o plus.fil.org, onde você pode selecionar os outros nós com os quais gostaria de interagir. Volte para a sua linha de comando e execute:

lotus client deal
Enter fullscreen mode Exit fullscreen mode

E isso o guiará por um processo passo a passo de envio dos seus dados para aqueles provedores de armazenamento. Você usará os IDs dos mineradores do mercado para selecioná-los.

Estou ansioso para quando esse processo for um pouco mais fácil de fazer de um ponto de vista descentralizado.

E com isso, você agora tem o básico sobre a rede Filecoin. Me avise caso eu tenha esquecido alguma coisa!

Siga-me, por mim!

Twitter: https://twitter.com/patrickalphac

Medium: https://medium.com/@patrickalphac

TikTok: https://www.tiktok.com/@patrickalphac

YouTube: https://youtube.com/@PatrickAlphaC

Esse artigo foi escrito por Patrick Collins e traduzido por Isabela Curado Nehme. Seu original pode ser lido aqui.

Oldest comments (0)