Sistema de Arquivos

Por trás das diferentes APIs de conteúdo no protocolo Decentraland existe uma implementação de um sistema de arquivos distribuído. Cada servidor de conteúdo mantém uma cópia de todo o armazenamento e sincroniza as atualizações que recebe com outras instâncias.

Arquivos enviados para o sistema são imutáveis. Uma vez implantados, nem seu identificador nem seu conteúdo mudam. Eles só podem ser atualizados no sentido de que uma nova versão é carregada e as aplicações optam por usá‑la, enquanto a antiga pode ser descartada.

Você pode experimentar com arquivos na práticaarrow-up-right seção.

Identificadores de arquivos

O sistema de arquivos do Decentraland é organizado em um índice plano (ou seja, não há uma hierarquia natural de diretórios), onde cada arquivo é identificado por uma string única.

As strings identificadoras são prefixadas base32arrow-up-right codificações do hash SHA-256 do conteúdo do arquivo, usando o IPFS CID v1arrow-up-right algoritmo. Eles se parecem com isto:

bafybeicgclohdfaccu2sqqkzrzuenjxzcry3m5vcb4mpxgucjl3oheq5tq

O prefixo nos primeiros bytes indica a codificação, a versão e o tipo de hash do próprio identificador.

circle-info

Por motivos históricos, algumas APIs chamam o identificador de arquivo de hash em vez de id, mas referem‑se à mesma coisa. Você também pode encontrar identificadores legados em conteúdo antigo que parecem um pouco diferentes.

Na prática, esses detalhes não são necessários para descobrir e baixar conteúdo. A maioria dos clientes do protocolo pode tratar identificadores como strings opacas sem perder funcionalidades.

Observe que identificadores modernos CIDv1 são compatíveis com IPFS, produzindo o mesmo CID para o mesmo arquivo, então o IPFS pode ser usado como provedor de arquivos.

Propriedade e Persistência

Exceto por snapshotsarrow-up-right, os arquivos armazenados na rede estão associados a uma entityarrow-up-right de propriedade de uma conta Ethereum. O proprietário é o único autorizado a atualizar a entity e os arquivos relacionados.

Os servidores de conteúdo são obrigados pelo protocolo a sempre armazenar a versão mais recente de uma entity e seus arquivos, mas podem escolher se retêm versões antigas de acordo com sua configuração individual.

Baixando arquivos

O /contents/<fileId>arrow-up-right endpoint do servidor de conteúdo pode ser usado para baixar qualquer arquivo. Seus identificadores são encontrados no manifestoarrow-up-rightda

Enviando arquivos

Os arquivos não são enviados de forma independente. Em vez disso, eles são empacotados dentro de entities e enviados durante a implantação da entity para o servidor de conteúdo.

Veja a documentação para criadores de conteúdoarrow-up-right para mais detalhes.

Atualizado