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ática 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 base32 codificações do hash SHA-256 do conteúdo do arquivo, usando o IPFS CID v1 algoritmo. Eles se parecem com isto:
bafybeicgclohdfaccu2sqqkzrzuenjxzcry3m5vcb4mpxgucjl3oheq5tqO prefixo nos primeiros bytes indica a codificação, a versão e o tipo de hash do próprio identificador.
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 snapshots, os arquivos armazenados na rede estão associados a uma entity 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> endpoint do servidor de conteúdo pode ser usado para baixar qualquer arquivo. Seus identificadores são encontrados no manifestoda
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údo para mais detalhes.
Atualizado