A falha do IPFS
Quando se trata de armazenamento descentralizado de dados, o Sistema de Arquivos InterPlanetário, conhecido como IPFS, é um projeto que não pode ser ignorado.
Como um dos projetos de armazenamento descentralizado mais notáveis, o IPFS usa a estrutura de dados do Merkle DAG (Directed Acyclic Graph), uma modificação baseada na Merkle Tree. Com essa estrutura de dados, o IPFS implementa endereçamento de conteúdo e download de fragmentos de arquivos.
Especificamente falando, o IPFS atribui um valor de hash exclusivo a cada arquivo, similar a uma impressão digital de arquivo. Cada arquivo raiz aponta para vários arquivos de nó, e uma vez que o conteúdo de um arquivo de nó muda, o valor de hash muda de acordo, fazendo com que o hash do arquivo raiz mude também.
Dessa forma, o IPFS armazena e encontra arquivos em um endereçamento exclusivo baseado em conteúdo, em vez de um endereçamento baseado em endereço. Isso significa que se você estiver procurando por um arquivo, não precisa saber onde ele está, apenas o que ele contém. O IPFS gera um hash exclusivo para cada arquivo e, quando o usuário precisa recuperar esse arquivo, ele só precisa perguntar ao IPFS quem tem esse hash para concluir a recuperação. Como os hashes evitam armazenamento duplicado, os arquivos com o mesmo conteúdo não são duplicados pelo IPFS. Essa abordagem otimiza o armazenamento e melhora o desempenho da rede.

O mecanismo de endereçamento de conteúdo é uma grande vantagem do IPFS, mas toda moeda tem dois lados, e também traz uma desvantagem. No IPFS, uma vez que um arquivo é armazenado, ele não pode ser modificado no sistema porque modificar o conteúdo do arquivo altera o hash do arquivo e o usuário não consegue encontrar o arquivo alterado pelo valor do hash original. Este é um ponto problemático amplamente criticado: o IPFS não é bom em armazenar arquivos que precisam ser atualizados e alterados de tempos em tempos.
Embora o IPFS tenha um bom desempenho para armazenar arquivos estáticos, ele não tem a capacidade de computação e gerenciamento de estado para recursos mais avançados semelhantes a bancos de dados, como mutabilidade, controle de versão, controle de acesso e lógica programável, que são necessários para permitir que os desenvolvedores criem aplicativos descentralizados com todos os recursos. Portanto, há uma necessidade urgente de uma solução eficiente e descentralizada para armazenar dados dinâmicos — o Ceramic resolve esse problema com um banco de dados semelhante ao NoSQL para que os desenvolvedores armazenem conteúdo estruturado e mutável.
Construído para conteúdo mutável
O design de armazenamento da Ceramic é baseado no IPFS e o estende com uma camada de armazenamento dinâmico descentralizado.
No Ceramic, cada pedaço de informação é representado como um log somente de anexos de commits, chamado de “Stream”, que é mostrado como a combinação de quadrados cinzas na figura abaixo. O Stream é similar em conceito às árvores Git: o estado inicial (Genesis Commit) e cada mudança subsequente (Commit) são todos armazenados em IPLD (InterPlanetary Linked Data, camada do IPFS dedicada a estruturas de dados), e esses registros são combinados para formar um Stream. Como os Streams registram “mudanças” em vez de “instantâneos” do estado resultante, é necessário processar apenas todos os eventos no Stream para obter o estado mais recente do log.

Por exemplo, o padrão de registro da Ceramic é o seguinte: inicialmente, Alice e Bob têm US$ 10 cada; no segundo dia, Alice transfere US$ 5 para Bob; no terceiro dia, Bob transfere US$ 3 para Alice. Isso também é muito parecido com um livro-razão de blockchain, onde o livro-razão não declara o saldo de cada usuário, e todos os processos intermediários precisam ser calculados para obter o saldo final do usuário.
Comparativamente, o padrão de registro tradicional do IPFS é: no arquivo a, Alice e Bob têm $10 cada; no arquivo b, Alice tem $5 e Bob tem $15; e no arquivo c, Alice tem $8 e Bob tem $12. Aqui, cada registro é um instantâneo do estado resultante, e um novo instantâneo precisa ser gerado assim que houver uma mudança.
A Ceramic garante com esse design que cada log tenha um Stream ID exclusivo, com uma nomenclatura uniforme global e nenhuma alteração de nome devido a alterações de conteúdo. Cada gravação requer autorização do usuário, e todo o processo é semelhante à contabilidade do blockchain, exceto que o que é gravado não são dados de transação, mas outros conteúdos mutáveis, como informações de conta de usuário.
Componibilidade de dados
A Ceramic alcança a componibilidade de dados entre aplicações principalmente por meio do uso de uma nova abstração, chamada modelos de dados.
Os modelos de dados geralmente representam um único recurso de aplicativo lógico, como um perfil de usuário, um gráfico social ou um blog. Por exemplo, você pode imaginar que cada implementação descentralizada do Twitter seria executada em alguns modelos de dados compartilhados: um para os tweets de cada usuário, um para seu gráfico social, um para seus DMs, etc. Ao adotar os mesmos modelos de dados subjacentes, os aplicativos são capazes de interoperar nativamente nos mesmos dados.
De certa forma, você pode comparar o uso de padrões de modelo de dados da Ceramic ao uso de padrões de token para livros-razão de ativos. No Ethereum, por exemplo, a introdução dos padrões de token fungível ERC20 e token não fungível ERC721 deram origem a ecossistemas inteiros de tokens e aplicativos financeiros que interoperam nativamente. A Ceramic traz esse mesmo conceito para os dados.
A Ceramic adota uma abordagem orientada pela comunidade para criar esses modelos de dados, permitindo que qualquer desenvolvedor defina, compartilhe e reutilize facilmente seus modelos com outros desenvolvedores no ecossistema. À medida que mais modelos de dados são criados pela comunidade, você verá uma expansão contínua na quantidade e variedade de aplicativos que são construídos com dados componíveis.
A composibilidade feita dessa forma também melhora a experiência do desenvolvedor. Construir um aplicativo no Ceramic parece navegar em um mercado de modelos de dados, conectá-los ao seu aplicativo e obter acesso automático a todos os dados na rede que estão armazenados nesses modelos. Usando o Ceramic, os desenvolvedores não precisarão se preocupar em inicializar seu aplicativo com seus próprios usuários e dados isolados. A taxa de inovação composta entre os desenvolvedores vai acelerar drasticamente.
Escalabilidade
A Ceramic alcança escalabilidade por meio de um ambiente de execução fragmentado. Todos os fluxos na Ceramic mantêm seu estado independentemente e os nós de rede executam transações de fluxo em paralelo. Essa abordagem, diferente da maioria dos blockchains, permite que a Ceramic opere com a escalabilidade necessária para versões descentralizadas de aplicativos sociais como Twitter ou Facebook.
Diferentemente dos sistemas tradicionais de blockchain, onde a escalabilidade é limitada a um único ambiente de execução virtual global e o estado de um único livro-razão é compartilhado entre todos os nós, cada nó Ceramic atua como um ambiente de execução individual para executar cálculos e validar transações em fluxos — não há um livro-razão global. Esse sharding de execução "integrado" permite que a Ceramic Network seja dimensionada horizontalmente para paralelizar o processamento de um número crescente de transações de fluxo simultâneas conforme o número de nós na rede aumenta. Esse design é necessário para lidar com a escala dos dados do mundo, que é ordens de magnitude maior do que a taxa de transferência necessária em um blockchain financeiro. Outro benefício desse design é que um nó Ceramic pode executar transações de fluxo em um ambiente offline primeiro e depois sincronizar atualizações com o restante da rede quando ele voltar a ficar online.
Solução DID
A Ceramic também oferece uma solução de identidade flexível e robusta chamada IDX, a primeira solução de identidade descentralizada (DID) totalmente funcional.
IDX é um protocolo de identidade cross-chain para aplicativos abertos com identidade descentralizada e dados de usuário interoperáveis, que permite que os usuários criem uma identidade digital unificada consistindo de todos os seus dados, ao mesmo tempo em que permite que os desenvolvedores quebrem silos e compartilhem livremente dados de usuário entre aplicativos. Conforme mostrado na figura abaixo, ele fornece um índice descentralizado que permite que dados estruturados sejam associados a um identificador descentralizado (DID), e os dados são definidos por definições e armazenados em registros.

Além disso, o IDX pode ser usado com qualquer tipo de armazenamento de dados, como Ceramic, Textile, OrbitDB, IPFS, Sia, Arweave, registros de blockchain ou até mesmo bancos de dados centralizados, e oferece suporte à autenticação de qualquer tipo de carteira Web3.
O IDX é ótimo para associar perfis de usuários, gráficos sociais portáteis, pontuações de reputação, declarações verificáveis, conteúdo gerado pelo usuário, dados de aplicativos, configurações, nomes de domínio, endereços de blockchain e contas sociais Web2 a um usuário de forma descentralizada.
Conclusão
Em resumo, o surgimento da Ceramic fortaleceu muito a construção da Web3 e desbloqueou novos recursos para desenvolvedores da Web3. Não importa em qual blockchain pública (Ethereum, BSC, Polygon, Avalanche, etc.) os desenvolvedores estejam construindo, eles podem simultaneamente alavancar a Ceramic para funções centradas em dados para tornar seus aplicativos melhores. Além disso, por meio do sistema de conta flexível baseado em DID da Ceramic, a Ceramic naturalmente faz interface com sistemas de conta e chave dos principais blockchains atuais, o que fornece aos usuários grande conveniência.
É agradável ver que já existem muitos projetos de plataforma social DID e Web3 desenvolvidos no Ceramic. Entre eles, para citar alguns projetos dignos de nota: CyberConnect, uma plataforma de middleware de gráfico social; Orbis, uma plataforma Web3 Twitter; e The Convo Space, uma plataforma de mensagens instantâneas, etc. Estamos ansiosos pelas novas possibilidades que a infraestrutura de rede de dados do Ceramic pode trazer para a camada de aplicação Web3.
Aviso Legal: Esta pesquisa é apenas para fins informativos. Ela não constitui aconselhamento de investimento ou recomendação para comprar ou vender qualquer investimento e não deve ser usada na avaliação dos méritos de tomar qualquer decisão de investimento.
🐦 @chestersigned
📅 8 de maio de 2022
Ligações:
https://developers.ceramic.network/learn/welcome/
https://blog.ceramic.network/what-is-ceramic/
https://multicoin.capital/2022/02/16/the-composable-web3-data-network/
https://blog.ipfs.io/2021-07-13-ceramic-mainnet-launch/