# File System

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](https://github.com/decentraland/docs/blob/main/contributor/content/practice/README.md) seção.

### Identificadores de arquivos <a href="#identifiers" id="identifiers"></a>

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](https://en.wikipedia.org/wiki/Base32) codificações do hash SHA-256 do conteúdo do arquivo, usando o [IPFS CID v1](https://docs.ipfs.tech/concepts/content-addressing/) 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.

{% hint style="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.
{% endhint %}

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](https://github.com/decentraland/docs/blob/main/contributor/content/snapshots/README.md), os arquivos armazenados na rede estão associados a uma [entity](https://github.com/decentraland/docs/blob/main/contributor/content/entities/README.md) 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 <a href="#downloading" id="downloading"></a>

O [`/contents/<fileId>`](https://decentraland.github.io/catalyst-api-specs/#tag/Content-Server/operation/getContentFile) endpoint do servidor de conteúdo pode ser usado para baixar qualquer arquivo. Seus identificadores são encontrados no [manifesto](https://github.com/decentraland/docs/blob/main/contributor/content/entities/README.md)da

### 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](https://github.com/decentraland/docs/blob/main/creator/README.md) para mais detalhes.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.decentraland.org/contributor/contributor-pt/content/file-system.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
