# IPLD, Interplanetary Linked Data (Dados Vinculados Interplanetários)

> "*O IPLD (InterPlanetary Linked Data) é a camada de dados sobre a qual o IPFS (InterPlanetary File System) é construído, utilizando Merkle-DAGs para representar dados e CIDs (Identificadores de Conteúdo) para identificá-los. Semelhante ao funcionamento do Git, o IPLD cria hashes vinculados para representar conjuntos específicos de dados e interconecta dados em diferentes sistemas de armazenamento distribuído. Através de ferramentas como Multihashes e Multicodecs, o IPLD permite uma ampla interoperabilidade e flexibilidade no armazenamento de dados. Como resultado, os desenvolvedores podem aproveitar um poderoso sistema de armazenamento distribuído, preparando o cenário para a Web3.*"

O IPLD (InterPlanetary Linked Data) é um sistema inovador que serve como a camada de dados na qual o IPFS (InterPlanetary File System) é construído. O IPLD lida com a complexa tarefa de representar dados como Merkle-DAGs, que são grafos acíclicos direcionados, com raízes identificadas por CIDs (Identificadores de Conteúdo).

Dentro do IPFS, um arquivo é dividido em vários pedaços, armazenados em diferentes blocos. Para reconstruir o arquivo completo, um grafo DAG liga cada pedaço de conteúdo, com diretórios apontando para partes de dados individuais. Os CIDs são hashes gerados que permitem ao usuário interagir com o IPFS de forma segura e recuperar seus dados. O IPLD lida com a decodificação desses hashes para que os usuários possam acessar seus dados. Neste sentido, o IPLD funciona de maneira muito semelhante ao Git, pois utiliza um método semelhante para construir esses hashes vinculados.

No Git, quando se cria um hash, esse hash é usado como um identificador único para um conjunto de dados. Ele é gerado a partir do conteúdo do arquivo ou diretório no momento em que é adicionado ao repositório Git. O hash, nesse caso, representa uma versão específica dos dados e pode ser usado para referenciar e recuperar esses dados posteriormente.

O Git utiliza a mesma estrutura de dados, Merkle DAG, para organizar e armazenar os snapshots dos pontos específicos no tempo. Isso permite que os usuários restaurem o repositório para um estado anterior, revertendo as alterações feitas nos arquivos ao longo do tempo.

Já o IPLD cria uma camada de abstração sobre diferentes sistemas de armazenamento distribuído, permitindo a interconexão de dados em diferentes redes. O IPLD usa hashes para identificar os dados e usa o conceito de Multihashes e Multicodecs para interpretar e decodificar esses hashes.

O Multihash é uma estrutura que permite a criação de identificadores hash flexíveis e interoperáveis. Ele contém informações sobre o tipo de hash usado, o tamanho do hash e o próprio hash. O Multicodec, por sua vez, é um sistema de identificação de formatos de dados que permite especificar como interpretar e decodificar os dados associados a um hash específico.

Os sistemas de representação de dados simples, como JSON ou CBOR, podem ser expandidos para atender às necessidades do IPLD. O DAG-JSON permite armazenar dados típicos serializados em JSON, mas também suporta links que podem ser usados juntamente com o IPLD. O DAG-CBOR oferece ainda mais flexibilidade. O CBOR é um sistema de armazenamento binário, tornando-o rápido e eficiente. O Filecoin usa o CBOR para sua cadeia por causa de sua eficiência e porque o CBOR pode lidar com mais tipos de dados do que o JSON.

Para decodificar os hashes em estruturas de dados componentes, o IPLD usa um modelo de dados subjacente que contém formas que a maioria dos desenvolvedores reconhecerá imediatamente, como strings, booleanos, inteiros, floats e outros. Para ir dos CIDs a estas formas, usamos codecs. E o CID inclui um indicador, o Multicodec, para nos dizer qual codec usar.

O IPFS, por exemplo, usa uma metodologia de duas camadas para codificar dados do sistema de arquivos. Primeiro, a convenção UnixFS descreve arquivos e diretórios e seus metadados. Em seguida, o UnixFS é normalmente codificado em DAG-PB, que é um codec IPLD especializado para UnixFS.

O IPLD é a última iteração de estruturas de dados que têm sido usadas há bastante tempo. Sistemas como Haskell e Scala apresentam semelhanças com o IPLD na maneira como lidam com estruturas de dados. No entanto, a diferença fundamental é que o IPLD permite o armazenamento distribuído por meio de sua ligação subjacente ao IPFS. Essas estratégias de gerenciamento de estruturas de dados persistiram e evoluíram para se tornarem escaláveis, um atributo central da proposta de valor do IPLD. Com o IPLD respaldando o IPFS, os desenvolvedores podem acessar um poderoso sistema de armazenamento de dados distribuídos que pode lidar com múltiplos formatos auto descritivos, possibilitando o desenvolvimento de sistemas de ponta na Web3.0.

À medida que a tecnologia evolui e a adoção do IPLD e do IPFS aumenta, é provável que surjam novas aplicações e casos de uso inovadores. O IPLD desempenha um papel fundamental na construção de um futuro descentralizado, onde os dados são acessíveis, seguros e interconectados em todo o universo interplanetário de arquivos.


---

# 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://pt.glossario.w3d.community/i/ipld.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.
