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.
Last updated