Autor: Kernel Ventures Jerry Luo

Revisores: Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR:

  1. As primeiras cadeias públicas exigiam que todos os nós da rede mantivessem a consistência dos dados para garantir a segurança e a descentralização. No entanto, com o desenvolvimento do ecossistema blockchain, a pressão de armazenamento continua a aumentar, levando a uma tendência de operações centralizadas de nós. Nesta fase, a Camada 1 precisa resolver urgentemente o problema de custo de armazenamento causado pelo crescimento do TPS.

  2. Diante desse problema, os desenvolvedores precisam propor novas soluções de armazenamento de dados históricos, levando em consideração a segurança, o custo de armazenamento, a velocidade de leitura de dados e a versatilidade da camada DA.

  3. No processo de resolução deste problema, surgiram muitas novas tecnologias e novas ideias, incluindo Sharding, DAS, Verkle Tree, componentes intermediários DA, etc. Eles tentaram otimizar a solução de armazenamento da camada DA reduzindo a redundância de dados e melhorando a eficiência da verificação de dados.

  4. As soluções atuais de DA são geralmente divididas em duas categorias com base no local de armazenamento de dados, nomeadamente DA da cadeia principal e DA de terceiros. O DA da cadeia principal começa com a perspectiva de limpar e fragmentar dados regularmente para reduzir a pressão de armazenamento do nó. Os requisitos de design de DA de terceiros são todos voltados para serviços de armazenamento e possuem soluções razoáveis ​​para grandes quantidades de dados. Portanto, o foco principal está no equilíbrio entre compatibilidade de cadeia única e compatibilidade de cadeia múltipla, e três soluções são propostas: DA dedicado de cadeia principal, DA modular e DA de cadeia pública de armazenamento.

  5. As cadeias públicas do tipo pagamento têm requisitos extremamente elevados para segurança de dados históricos e são adequadas para usar a cadeia principal como camada DA. No entanto, para cadeias públicas que já funcionam há muito tempo e têm um grande número de mineradores administrando a rede, seria mais apropriado adotar um DA de terceiros que não envolvesse a camada de consenso e levasse em conta a segurança. Cadeias públicas abrangentes são mais adequadas para usar armazenamento DA dedicado da cadeia principal com maior capacidade de dados, menor custo e segurança. Mas considerando as necessidades de cross-chain, o DA modular também é uma boa opção.

  6. De modo geral, o blockchain está se desenvolvendo no sentido de reduzir a redundância de dados e a divisão do trabalho em várias cadeias.

1. Fundo

Como um livro-razão distribuído, o blockchain precisa armazenar dados históricos em todos os nós para garantir a segurança e a descentralização suficiente do armazenamento de dados. Como a exatidão de cada mudança de estado está relacionada ao estado anterior (fonte da transação), para garantir a exatidão das transações, uma blockchain deve, em princípio, armazenar todos os registros históricos desde a primeira transação até a transação atual. Tomando o Ethereum como exemplo, mesmo que o tamanho médio do bloco seja estimado em 20 kb, o tamanho total atual dos blocos Ethereum atingiu 370 GB. Além do bloco em si, um nó completo também precisa registrar o status e os recibos de transação. . Contando essa parte, a capacidade total de armazenamento de um único nó ultrapassou 1 TB, o que concentra a operação do nó para poucas pessoas.

Altura de bloco mais recente do Ethereum, fonte da imagem: Etherscan

A recente atualização do Ethereum Cancun visa aumentar o TPS do Ethereum para cerca de 1.000. Até então, o crescimento anual do armazenamento do Ethereum excederá a soma de sua capacidade de armazenamento atual. Entre as várias cadeias públicas de alto desempenho que se tornaram populares recentemente, a velocidade de transação de dezenas de milhares de TPS pode gerar, em média, centenas de GB de novos dados todos os dias. O método comum de redundância de dados de todo o nó da rede é obviamente incapaz de se adaptar a tal pressão de armazenamento. A Camada 1 deve encontrar uma solução adequada para equilibrar o crescimento do TPS e o custo de armazenamento do nó.

2. Indicadores de desempenho DA

2.1 Segurança

Em comparação com estruturas de armazenamento de banco de dados ou listas vinculadas, a inviolabilidade do blockchain vem da capacidade de verificar dados recém-gerados por meio de dados históricos. Portanto, garantir a segurança dos dados históricos é a primeira questão a ser considerada no armazenamento da camada DA. Ao julgar a segurança dos dados dos sistemas blockchain, muitas vezes a analisamos a partir da quantidade de redundância de dados e do método de verificação da disponibilidade dos dados.

  • Quantidade de redundância: Em relação à redundância de dados no sistema blockchain, ela pode desempenhar principalmente as seguintes funções: Primeiro, se o número de redundâncias na rede for maior, quando o verificador precisar verificar o status da conta em um determinado bloco histórico para verificar Quando uma transação está sendo verificada, ela pode obter o maior número de amostras para referência e selecionar os dados registrados pela maioria dos nós. Nos bancos de dados tradicionais, como os dados são armazenados apenas na forma de pares de valores-chave em um determinado nó, as alterações nos dados históricos só podem ser feitas em um único nó e o custo do ataque é extremamente baixo. número de despedimentos, menor será a probabilidade dos dados. Quanto maior for o grau de credibilidade. Ao mesmo tempo, quanto mais nós forem armazenados, menor será a probabilidade de os dados serem perdidos. Isso também pode ser comparado ao servidor centralizado que armazena jogos Web2. Assim que todos os servidores back-end forem desligados, o servidor será completamente desligado. No entanto, quanto mais, melhor, porque cada redundância trará espaço de armazenamento adicional. A redundância excessiva de dados trará pressão excessiva de armazenamento ao sistema. Uma boa camada de DA deve escolher uma abordagem redundante que equilibre a segurança e a eficiência de armazenamento.

  • Verificação de disponibilidade de dados: O número de redundâncias garante que haja registros suficientes de dados na rede, mas a precisão e integridade dos dados a serem utilizados devem ser verificadas. O método de verificação comumente usado no blockchain atual é o algoritmo de compromisso criptográfico, que retém um pequeno compromisso criptográfico para toda a rede registrar. Esse compromisso é obtido pela mistura de dados de transação. Quando você deseja testar a autenticidade de um determinado dado histórico, é necessário restaurar o comprometimento criptográfico por meio dos dados, e verificar se o comprometimento criptográfico obtido por essa restauração é consistente com os registros de toda a rede. , a verificação foi aprovada. Algoritmos de verificação de criptografia comumente usados ​​incluem Merkle Root e Verkle Root. O algoritmo de verificação de disponibilidade de dados de alta segurança requer apenas uma pequena quantidade de dados de verificação e pode verificar rapidamente os dados históricos.

2.2 Custos de armazenamento

Com a premissa de garantir a segurança básica, o próximo objetivo principal que a camada DA precisa alcançar é reduzir custos e aumentar a eficiência. A primeira é reduzir os custos de armazenamento, independentemente das diferenças de desempenho do hardware, ou seja, reduzir o uso de memória causado pelo armazenamento de dados do tamanho da unidade. Nesta fase, as principais formas de reduzir os custos de armazenamento em blockchain são adotar a tecnologia de sharding e usar o armazenamento baseado em recompensas para garantir que os dados sejam armazenados de forma eficaz e reduzir o número de backups de dados. No entanto, não é difícil ver, a partir dos métodos de melhoria acima, que existe uma relação de jogo entre o custo de armazenamento e a segurança dos dados. A redução da ocupação do armazenamento geralmente significa uma diminuição na segurança. Portanto, uma excelente camada DA precisa alcançar um equilíbrio entre custo de armazenamento e segurança de dados. Além disso, se a camada DA for uma cadeia pública separada, ela precisará reduzir o custo minimizando o processo intermediário de troca de dados. Em cada processo de transferência, os dados do índice precisarão ser deixados para chamadas de consulta subsequentes. processo, mais dados de índice serão deixados e o custo de armazenamento aumentará. Finalmente, o custo do armazenamento de dados está diretamente ligado à durabilidade dos dados. De modo geral, quanto maior o custo de armazenamento dos dados, mais difícil será para a cadeia pública armazenar dados de forma persistente.

2.3 Velocidade de leitura de dados

Após alcançar a redução de custos, o próximo passo é aumentar a eficiência, que é a capacidade de chamar rapidamente os dados para fora da camada DA quando eles precisam ser usados. Este processo envolve duas etapas. A primeira é procurar nós que armazenam dados. Este processo é principalmente para cadeias públicas que não alcançaram consistência de dados em toda a rede. pode ser ignorado. Em segundo lugar, nos atuais sistemas blockchain convencionais, incluindo Bitcoin, Ethereum e Filecoin, o método de armazenamento de nós é o banco de dados Leveldb. No Leveldb, os dados são armazenados de três maneiras. Primeiro, os dados gravados imediatamente serão armazenados em arquivos do tipo Memtable. Quando o armazenamento do Memtable estiver cheio, o tipo de arquivo será alterado de Memtable para Immutable Memtable. Ambos os tipos de arquivos são armazenados na memória, mas os arquivos Immutable Memtable não podem mais ser alterados, apenas os dados podem ser lidos deles. O armazenamento quente usado na rede IPFS armazena dados nesta parte. Quando é chamado, ele pode ser lido rapidamente da memória. No entanto, a memória móvel de um nó comum geralmente tem nível de GB e é fácil de gravar lentamente. e quando um nó ficar inativo e outras situações anormais ocorrerem, os dados na memória serão perdidos permanentemente. Se quiser que os dados sejam armazenados de forma persistente, você precisa armazená-los na forma de um arquivo SST em uma unidade de estado sólido (SSD). No entanto, ao ler os dados, você precisa primeiro lê-los na memória. o que reduz bastante a velocidade de indexação de dados. Finalmente, para sistemas que utilizam armazenamento fragmentado, a restauração de dados requer o envio de solicitações de dados para vários nós e sua restauração. Este processo também reduzirá a velocidade de leitura de dados.

Método de armazenamento de dados Leveldb, fonte da imagem: Leveldb-handbook

2.4 Versatilidade da camada DA

Com o desenvolvimento do DeFi e vários problemas com o CEX, os requisitos dos utilizadores para transações entre cadeias de ativos descentralizados também estão a crescer. Independentemente do mecanismo de bloqueio de hash entre cadeias, notário público ou cadeia de retransmissão, a determinação simultânea de dados históricos em ambas as cadeias não pode ser evitada. A chave para este problema reside na separação dos dados nas duas cadeias, e a comunicação direta não pode ser alcançada em diferentes sistemas descentralizados. Portanto, uma solução é proposta nesta fase, alterando o método de armazenamento da camada DA, que não apenas armazena os dados históricos de múltiplas cadeias públicas na mesma cadeia pública confiável, mas só precisa chamar os dados nesta cadeia pública durante a verificação. . Isto exige que a camada DA seja capaz de estabelecer métodos de comunicação seguros com diferentes tipos de cadeias públicas, o que significa que a camada DA tem boa versatilidade.

3. Exploração de tecnologias relacionadas com DA

3.1 Fragmentação

  • Em um sistema distribuído tradicional, um arquivo não é armazenado de forma completa em um determinado nó. Em vez disso, os dados originais são divididos em vários blocos e um bloco é armazenado em cada nó. E os blocos geralmente não são armazenados em apenas um nó, mas deixarão backups apropriados em outros nós. Em sistemas distribuídos convencionais existentes, esse número de backups geralmente é definido como 2. Este mecanismo de fragmentação pode reduzir a pressão de armazenamento de um único nó, expandir a capacidade total do sistema para a soma da capacidade de armazenamento de cada nó e, ao mesmo tempo, garantir a segurança do armazenamento através de redundância de dados adequada. O esquema de Sharding adotado no blockchain é geralmente semelhante, mas os detalhes específicos serão diferentes. Em primeiro lugar, como cada nó no blockchain não é confiável por padrão, o processo de implementação do Sharding requer uma quantidade grande o suficiente de backup de dados para posterior julgamento da autenticidade dos dados, portanto, o número de backups para este nó precisa ser muito maior que 2 . Idealmente, em um sistema blockchain que usa esse esquema de armazenamento, se o número total de nós de verificação for T e o número de fragmentos for N, então o número de backups deverá ser T/N. O segundo é o processo de armazenamento do bloco. Existem menos nós nos sistemas distribuídos tradicionais, portanto, um nó geralmente se adapta a vários blocos de dados. Primeiro, os dados são mapeados para o anel de hash por meio do algoritmo de hash consistente e, em seguida, cada nó armazena os dados. blocos numerados em um determinado intervalo e podem aceitar que um nó não aloque tarefas de armazenamento durante um determinado armazenamento. No blockchain, se cada nó recebe um bloco não é mais um evento aleatório, mas um evento inevitável. Cada nó selecionará aleatoriamente um bloco para armazenamento. Este processo combina os dados originais com o bloco e as informações do próprio nó. o hash dos dados é concluído considerando o módulo do número de fragmentos. Supondo que cada dado seja dividido em N blocos, o tamanho real de armazenamento de cada nó é apenas 1/N do original. Ao definir N adequadamente, pode ser alcançado um equilíbrio entre o crescimento do TPS e a pressão de armazenamento do nó.

Método de armazenamento de dados após Sharding, fonte da imagem: Kernel Ventures

3.2 DAS(Amostragem de Disponibilidade de Dados)

A tecnologia DAS é baseada na otimização adicional dos métodos de armazenamento Sharding. Durante o processo de Sharding, devido ao simples armazenamento aleatório dos nós, um determinado Bloco pode ser perdido. Em segundo lugar, para dados fragmentados, também é muito importante confirmar a autenticidade e integridade dos dados durante o processo de restauração. No DAS, esses dois problemas são resolvidos por meio do código Eraser e do comprometimento polinomial KZG.

  • Código apagador: Considerando o grande número de nós de verificação no Ethereum, a probabilidade de um determinado bloco não ser armazenado por nenhum nó é quase 0, mas teoricamente ainda existe a possibilidade de tal situação extrema acontecer. Para mitigar esta possível ameaça de perda de armazenamento, neste esquema, os dados originais muitas vezes não são diretamente divididos em blocos para armazenamento. Em vez disso, os dados originais são primeiro mapeados para os coeficientes de um polinômio de ordem n e, em seguida, 2n é obtido. retirado dos pontos polinomiais e deixe o nó selecionar aleatoriamente um deles para armazenamento. Para este polinômio de ordem n, apenas n+1 pontos são necessários para restaurá-lo. Portanto, apenas metade dos blocos precisa ser selecionada pelos nós, e podemos restaurar os dados originais. Através do código Eraser, a segurança do armazenamento de dados e a capacidade de recuperação de dados da rede são melhoradas.

  • Compromisso Polinomial KZG: Uma parte muito importante do armazenamento de dados é a verificação da autenticidade dos dados. Em uma rede que não usa código Eraser, vários métodos podem ser usados ​​no processo de verificação. No entanto, se o código Eraser acima for introduzido para melhorar a segurança dos dados, então um método mais apropriado é usar o comprometimento polinomial KZG. O compromisso polinomial KZG pode verificar diretamente o conteúdo de um único bloco na forma de polinômios, eliminando assim o processo de redução de polinômios a dados binários. O formulário de verificação é geralmente semelhante ao Merkle Tree, mas não requer dados específicos do nó Path, apenas KZG. Root Sua autenticidade pode ser verificada com dados do bloco.

3.3 Método de verificação de dados da camada DA

A verificação de dados garante que os dados chamados do nó não foram adulterados e não foram perdidos. A fim de minimizar a quantidade de dados e custos de cálculo necessários no processo de verificação, a camada DA atualmente usa uma estrutura em árvore como método de verificação principal. A forma mais simples é usar a árvore Merkle para verificação, que é registrada na forma de uma árvore binária completa. Você só precisa reter uma raiz Merkle e o valor hash da subárvore no outro lado do caminho do nó para verificar. o tempo de verificação é complicado. O grau é o nível O (logN) (se logN não adicionar a base, o padrão é log2 (N)). Embora o processo de verificação tenha sido bastante simplificado, o volume geral de dados do processo de verificação ainda cresce com o aumento dos dados. Para resolver o problema do aumento do volume de verificação, outro método de verificação, Verkle Tree, é proposto nesta fase. Além de armazenar valor, cada nó na Verkle Tree também vem com um Vector Commitment. Através do valor do nó original e desta prova de compromisso, a autenticidade dos dados pode ser verificada rapidamente sem chamar os valores de outra irmã. nós, que fazem cada O número de cálculos de verificação está relacionado apenas à profundidade da Árvore Verkle e é uma constante fixa, o que acelera bastante a velocidade de verificação. Porém, o cálculo do Vector Commitment requer a participação de todos os nós irmãos na mesma camada, o que aumenta muito o custo de gravação e alteração de dados. No entanto, para dados como dados históricos que são armazenados permanentemente e não podem ser adulterados, e só precisam ser lidos, mas não gravados, o Verkle Tree é extremamente adequado. Além disso, Merkle Tree e Verkle Tree possuem variantes na forma K-ary. Seus mecanismos de implementação específicos são semelhantes, exceto que o número de subárvores em cada nó é alterado. Uma comparação de seu desempenho específico pode ser vista na tabela abaixo.

Comparação de desempenho de tempo de métodos de verificação de dados, fonte da imagem: Verkle Trees

3.4 Middleware DA geral

A expansão contínua do ecossistema blockchain provocou o aumento contínuo no número de cadeias públicas. Devido às vantagens e à insubstituibilidade de cada cadeia pública em seus respectivos campos, é quase impossível para as cadeias públicas da Camada 1 se unificarem em um curto período de tempo. No entanto, com o desenvolvimento do DeFi e vários problemas com o CEX, os requisitos dos utilizadores para ativos comerciais descentralizados entre cadeias também estão a crescer. Portanto, o armazenamento de dados multicadeia da camada DA, que pode eliminar problemas de segurança nas interações de dados entre cadeias, tem recebido cada vez mais atenção. No entanto, para aceitar dados históricos de diferentes cadeias públicas, a camada DA precisa fornecer um protocolo descentralizado para armazenamento padronizado e verificação de fluxos de dados. Por exemplo, kvye, um middleware de armazenamento baseado em Arweave, toma a iniciativa de capturar dados da cadeia. e todos os dados da cadeia podem ser armazenados no Arweave em um formato padrão para minimizar diferenças no processo de transmissão de dados. Relativamente falando, a Camada 2, que fornece especificamente armazenamento de dados da camada DA para uma determinada cadeia pública, interage com os dados através de nós compartilhados internos. Embora reduza o custo de interação e melhore a segurança, tem limitações relativamente grandes e só pode fornecer dados para públicos específicos. cadeias prestam serviços.

4. Solução de armazenamento de camada DA

4.1 Cadeia principal DA

4.1.1 Classe DankSharding

Este tipo de solução de armazenamento ainda não tem nome definido, e o representante mais proeminente é DankSharding no Ethereum, portanto este artigo utiliza a classe DankSharding para se referir a este tipo de solução. Este tipo de solução utiliza principalmente as duas tecnologias de armazenamento DA mencionadas acima, Sharding e DAS. Primeiro, os dados são divididos em compartilhamentos apropriados por meio de Sharding e, em seguida, cada nó extrai um bloco de dados na forma de DAS para armazenamento. Se houver nós suficientes em toda a rede, podemos escolher um número maior de fragmentos N, de modo que a pressão de armazenamento de cada nó seja apenas 1/N do original, alcançando assim uma expansão N vezes do espaço de armazenamento geral. Ao mesmo tempo, para evitar a situação extrema de um determinado bloco não ser armazenado em nenhum bloco, DankSharding codifica os dados usando Eraser Code, e apenas metade dos dados pode ser completamente restaurado. A última etapa é o processo de verificação de dados, que utiliza a estrutura de árvore Verkle e o comprometimento polinomial para obter uma verificação rápida.

4.1.2 Armazenamento de curto prazo

Para o DA da cadeia principal, um dos métodos mais simples de processamento de dados é armazenar dados históricos no curto prazo. Em essência, o blockchain desempenha o papel de um livro-razão público, permitindo que alterações no conteúdo do livro-razão sejam testemunhadas por toda a rede, sem a necessidade de armazenamento permanente. Tomando Solana como exemplo, embora seus dados históricos estejam sincronizados com o Arweave, o nó da rede principal retém apenas os dados de transações dos últimos dois dias. Na cadeia pública baseada em registros de contas, os dados históricos a cada momento mantêm o status final da conta no blockchain, o que é suficiente para fornecer base de verificação para alterações no momento seguinte. Para projetos que tenham necessidades especiais de dados antes deste período, eles próprios podem armazená-los em outras cadeias públicas descentralizadas ou por terceiros de confiança. Em outras palavras, aqueles que têm necessidades adicionais de dados precisam pagar pelo armazenamento de dados históricos.

4.2 DA de terceiros

4.2.1 DA específico da cadeia principal: EthStorage

  • DA específico da cadeia principal: A coisa mais importante sobre a camada DA é a segurança da transmissão de dados. O mais seguro neste ponto é o DA da cadeia principal. No entanto, o armazenamento da cadeia principal está sujeito a limitações de espaço de armazenamento e à competição por recursos. Portanto, quando a quantidade de dados da rede cresce rapidamente, o DA de terceiros será uma escolha melhor se for alcançado o armazenamento de dados a longo prazo. Se o DA terceirizado tiver maior compatibilidade com a rede principal, poderá realizar o compartilhamento de nós, e também terá maior segurança durante o processo de interação de dados. Portanto, sob a premissa de considerar a segurança, o DA específico da cadeia principal terá enormes vantagens. Tomando o Ethereum como exemplo, um requisito básico para DA específico da cadeia principal é ser compatível com EVM e garantir a interoperabilidade com dados e contratos do Ethereum. Os projetos representativos incluem Topia, EthStorage, etc. Entre eles, o EthStorage é atualmente o mais desenvolvido em termos de compatibilidade, pois além da compatibilidade no nível EVM, também configurou interfaces relevantes especialmente para se conectar com ferramentas de desenvolvimento Ethereum, como Remix e Hardhat, para obter compatibilidade no Nível de ferramenta de desenvolvimento Ethereum.

  • EthStorage: EthStorage é uma cadeia pública independente do Ethereum, mas os nós executados nela são superiores aos nós Ethereum. Ou seja, os nós que executam o EthStorage também podem executar o Ethereum ao mesmo tempo. Através dos códigos de operação no Ethereum, você pode acessar diretamente. EthStorage.EthStorage executa operações. No modelo de armazenamento do EthStorage, apenas uma pequena quantidade de metadados é retida na rede principal do Ethereum para indexação, criando essencialmente um banco de dados descentralizado para o Ethereum. Na solução atual, o EthStorage implementa a interação entre a rede principal Ethereum e o EthStorage, implantando um contrato EthStorage na rede principal Ethereum. Se o Ethereum quiser armazenar dados, ele precisa chamar a função put() no contrato. Os parâmetros de entrada são duas variáveis ​​​​de bytes, chave e dados, onde os dados representam os dados a serem armazenados, e a chave é sua localização na rede Ethereum. A identificação pode ser considerada semelhante à existência de CID no IPFS. Depois que o par de dados (chave, dados) for armazenado com sucesso na rede EthStorage, o EthStorage irá gerar um kvldx e devolvê-lo à rede principal Ethereum, e corresponder à chave no Ethereum. Este valor corresponde ao endereço de armazenamento dos dados no Ethereum. EthStorage, então é originalmente possível O problema de precisar armazenar grandes quantidades de dados agora é armazenar um único par (chave, kvldx), reduzindo significativamente o custo de armazenamento da rede principal Ethereum. Se precisar chamar dados armazenados anteriormente, você precisa usar a função get() no EthStorage e inserir o parâmetro key. Você pode pesquisar rapidamente os dados no EthStorage por meio do kvldx armazenado no Ethereum.

Contrato EthStorage, fonte da imagem: Kernel Ventures

  • Em termos de como os nós armazenam dados especificamente, o EthStorage baseia-se no modelo Arweave. Primeiro, um grande número de pares (k, v) da ETH são fragmentados. Cada fragmentação contém um número fixo de pares de dados (k, v). Desta forma, é garantida a equidade da carga de trabalho subsequente dos mineiros no processo de recompensa de armazenamento. Para a emissão das recompensas, é necessário primeiro verificar se o nó armazena dados. Durante este processo, o EthStorage dividirá um Sharding (tamanho do nível de TB) em vários pedaços e manterá uma raiz Merkle na rede principal Ethereum para verificação. Então o minerador primeiro precisa fornecer um nonce para gerar os endereços de vários pedaços através de um algoritmo aleatório com o hash do bloco anterior no EthStorage. O minerador precisa fornecer os dados desses pedaços para provar que ele realmente armazena todo o Sharding. Mas este nonce não pode ser selecionado arbitrariamente, caso contrário o nó selecionará um nonce adequado que corresponda apenas ao seu pedaço armazenado e passará na verificação. Portanto, esse nonce deve ser tal que o valor de dificuldade do pedaço gerado possa atender aos requisitos da rede após a mistura. e hashing, e Somente o primeiro nó a enviar o nonce e a prova de acesso aleatório pode obter a recompensa.

4.2.2 DA Modular: Celestia

  • Módulo Blockchain: Nesta fase, as transações que devem ser realizadas pela cadeia pública da Camada 1 são divididas principalmente nas seguintes quatro partes: (1) Projetar a lógica subjacente da rede, selecionar nós de verificação de uma determinada maneira, escrever blocos e alocar recompensas para mantenedores da rede; (2) Empacotar e processar transações e publicar transações relacionadas; (3) Verificar transações a serem carregadas na cadeia e determinar o status final; De acordo com as diferentes funções concluídas, podemos dividir o blockchain em quatro módulos, nomeadamente camada de consenso, camada de execução, camada de liquidação e camada de disponibilidade de dados (camada DA).

  • Design modular de blockchain: Por muito tempo, esses quatro módulos foram integrados em uma cadeia pública. Esse blockchain é chamado de blockchain único. Esta forma é mais estável e mais fácil de manter, mas também exerce enorme pressão sobre uma única cadeia pública. Durante a operação real, esses quatro módulos restringem-se mutuamente e competem pelos recursos limitados de computação e armazenamento da cadeia pública. Por exemplo, para aumentar a velocidade de processamento da camada de processamento, haverá maior pressão de armazenamento na camada de disponibilidade de dados para garantir a segurança da camada de execução, sendo necessário um mecanismo de verificação mais complexo, mas retardando a velocidade de processamento das transações; Portanto, o desenvolvimento de cadeias públicas enfrenta frequentemente compromissos entre estes quatro módulos. A fim de romper o gargalo da melhoria do desempenho da cadeia pública, os desenvolvedores propuseram uma solução modular de blockchain. A ideia central do blockchain modular é separar um ou mais dos quatro módulos mencionados acima e implementá-los em uma cadeia pública separada. Desta forma, a cadeia pública só pode se concentrar em melhorar a velocidade das transações ou a capacidade de armazenamento, rompendo as limitações anteriores no desempenho geral do blockchain devido a deficiências.

  • DA modular: O método complexo de separar a camada DA do negócio blockchain e entregá-la a uma cadeia pública é considerado uma solução viável para os crescentes dados históricos da Camada1. A exploração nesta área ainda está em fase inicial e o projecto mais representativo neste momento é o Celestia. Em termos de método de armazenamento específico, Celestia baseia-se no método de armazenamento Danksharding, que também divide os dados em vários blocos, e cada nó extrai uma parte para armazenamento e usa o compromisso polinomial KZG para verificar a integridade dos dados. Ao mesmo tempo, Celestia usa um código de eliminação RS bidimensional avançado para reescrever os dados originais na forma de uma matriz k*k. No final, apenas 25% dos dados originais podem ser recuperados. No entanto, o armazenamento de fragmentação de dados essencialmente apenas multiplica a pressão de armazenamento de todo o nó da rede por um coeficiente no volume total de dados. A pressão de armazenamento do nó e o volume de dados ainda mantêm um crescimento linear. À medida que a Camada 1 continua a melhorar sua velocidade de transação, a pressão de armazenamento dos nós ainda poderá um dia atingir um nível crítico inaceitável. Para resolver este problema, o componente IPLD é introduzido no Celestia para processamento. Os dados na matriz k*k não são armazenados diretamente no Celestia, mas são armazenados na rede LL-IPFS, e apenas o código CID dos dados no IPFS é retido no nó. Quando um usuário solicita um dado histórico, o nó enviará o CID correspondente ao componente IPLD, e os dados originais serão chamados no IPFS através deste CID. Se os dados existirem no IPFS, eles serão retornados através do componente e nó IPLD; se não existirem, os dados não poderão ser retornados.

Método de leitura de dados Celestia, fonte da imagem: Celestia Core

  • Celestia: Tomando Celestia como exemplo, podemos ter uma ideia da aplicação do blockchain modular na solução do problema de armazenamento do Ethereum. O nó Rollup enviará os dados da transação empacotados e verificados para o Celestia e armazenará os dados no Celestia. Durante esse processo, o Celestia apenas armazenará os dados sem conhecimento excessivo. os tokens tia serão pagos à Celestia como taxas de armazenamento. O armazenamento no Celstia utiliza DAS e códigos de eliminação semelhantes aos do EIP4844, mas os códigos de eliminação polinomiais no EIP4844 são atualizados e os códigos de eliminação RS bidimensionais são usados ​​para atualizar a segurança do armazenamento novamente. dados completos da transação. É essencialmente apenas uma cadeia pública de POS com baixos custos de armazenamento. Se for implementada para resolver o problema histórico de armazenamento de dados do Ethereum, muitos outros módulos específicos serão necessários para cooperar com a Celestia. Por exemplo, em termos de rollup, um modo de rollup altamente recomendado no site oficial da Celestia é o Sovereign Rollup. Diferente do Rollup comum na Camada2, ele apenas calcula e verifica as transações, ou seja, completa as operações da camada de execução. O Sovereign Rollup inclui todo o processo de execução e liquidação, o que minimiza o processamento de transações no Celestia. Quando a segurança geral do Celestia é mais fraca do que a do Ethereum, esta medida pode maximizar a segurança do processo geral de transação. Em termos de garantir a segurança dos dados chamados pela Celestia, principal rede do Ethereum, a solução mais popular no momento é o contrato inteligente de ponte de gravidade quântica. Para os dados armazenados no Celestia, ele irá gerar um Merkle Root (prova de disponibilidade de dados) e mantê-lo no contrato de ponte de gravidade quântica da rede principal Ethereum. Cada vez que o Ethereum chamar os dados históricos no Celestia, seu resultado de hash será comparado. com Merkle Root é usado para comparação e, se corresponder, significa que são realmente dados históricos reais.

4.2.3 Armazenando DA da cadeia pública

Em termos de princípios técnicos de DA da cadeia principal, muitas tecnologias semelhantes ao Sharding são emprestadas da cadeia pública de armazenamento. Entre os DAs de terceiros, alguns usam diretamente a cadeia pública de armazenamento para concluir algumas tarefas de armazenamento. Por exemplo, os dados de transações específicos no Celestia são colocados na rede LL-IPFS. Na solução DA de terceiros, além de construir uma cadeia pública separada para resolver o problema de armazenamento da Camada1, uma maneira mais direta é conectar diretamente a cadeia pública de armazenamento à Camada1 para armazenar os enormes dados históricos na Camada1. Para blockchains de alto desempenho, o volume de dados históricos é ainda maior. Quando executado em velocidade total, o volume de dados da cadeia pública de alto desempenho Solana é próximo de 4 PG, o que está completamente além do alcance de armazenamento dos nós comuns. A solução escolhida por Solana é armazenar dados históricos na rede de armazenamento descentralizada Arweave e reter apenas 2 dias de dados nos principais nós da rede para verificação. Para garantir a segurança do processo armazenado, Solana e Arweave Chain desenvolveram especialmente um protocolo de ponte de armazenamento, Solar Bridge. Os dados verificados pelo nó Solana serão sincronizados com o Arweave e a tag correspondente será retornada. Somente através desta tag o nó Solana pode visualizar os dados históricos do blockchain Solana a qualquer momento. No Arweave, não há necessidade de todos os nós da rede manterem a consistência dos dados e usarem isso como um limite para participar da operação da rede. Em vez disso, o armazenamento de recompensa é adotado. Em primeiro lugar, Arweave não usa uma estrutura de cadeia tradicional para construir blocos, mas é mais semelhante a uma estrutura de gráfico. No Arweave, um novo bloco não apenas apontará para o bloco anterior, mas também apontará aleatoriamente para um bloco gerado Recall Block. A localização específica do Bloco de Recall é determinada pelo resultado hash do bloco anterior e pela altura do bloco. A localização do Bloco de Recall é desconhecida até que o bloco anterior seja extraído. Porém, no processo de geração de um novo bloco, o nó precisa ter dados do Recall Block para usar o mecanismo POW para calcular o hash da dificuldade especificada. Somente o primeiro mineiro a calcular o hash que atenda à dificuldade pode obter a recompensa. o que incentiva os mineradores a armazenar o máximo possível de dados históricos. Ao mesmo tempo, quanto menos pessoas armazenarem um determinado bloco histórico, os nós terão menos concorrentes na geração de nonces que atendam à dificuldade, incentivando os mineradores a armazenar menos blocos na rede.Finalmente, para garantir que os nós armazenem dados permanentemente no Arweave, ele introduz o mecanismo de pontuação de nós do WildFire. Os nós tenderão a se comunicar com nós que podem fornecer mais dados históricos com mais rapidez, enquanto os nós com classificações mais baixas muitas vezes não conseguem obter os dados mais recentes de blocos e transações o mais rápido possível e, portanto, não podem tirar vantagem da competição POW.

Método de construção de bloco Arweave, fonte da imagem: Arweave Yellow-Paper

5. Comparação abrangente

A seguir, compararemos as vantagens e desvantagens das cinco soluções de armazenamento com base nas quatro dimensões dos indicadores de desempenho de DA.

  • Segurança: A maior fonte de problemas de segurança de dados são as perdas causadas durante o processo de transmissão de dados e a adulteração maliciosa de nós desonestos. No processo cross-chain, devido à independência e ao estado das duas cadeias públicas, a segurança da transmissão de dados é importante. áreas mais atingidas. Além disso, a camada 1, que atualmente requer uma camada DA dedicada, geralmente possui um forte grupo de consenso e sua própria segurança será muito maior do que a das cadeias públicas de armazenamento comuns. Portanto, a solução DA da cadeia principal possui maior segurança. Depois de garantir a segurança da transmissão dos dados, o próximo passo é garantir a segurança dos dados da chamada. Se apenas os dados históricos de curto prazo usados ​​para verificar as transações forem considerados, os mesmos dados serão armazenados em backup por toda a rede na rede de armazenamento temporário. Em uma solução do tipo DankSharding, o número médio de backups de dados é de apenas 1/N de. o número de nós em toda a rede, mais redundância de dados pode diminuir a probabilidade de perda de dados e também pode fornecer mais amostras de referência durante a verificação. Portanto, o armazenamento temporário terá relativamente maior segurança de dados. Na solução DA de terceiros, o DA específico da cadeia principal usa nós públicos com a cadeia principal, e os dados podem ser transmitidos diretamente através desses nós de retransmissão durante o processo de cadeia cruzada, portanto, terá segurança relativamente maior do que outras soluções DA. .

  • Custos de armazenamento: O maior fator que afeta os custos de armazenamento é a quantidade de redundância de dados. Na solução de armazenamento de curto prazo da cadeia principal DA, ele é armazenado na forma de sincronização de dados de todos os nós da rede. Quaisquer dados recém-armazenados precisam ser copiados em todos os nós da rede, que apresentam o maior custo de armazenamento. O alto custo de armazenamento, por sua vez, determina que este método seja adequado apenas para armazenamento temporário em redes de alto TPS. O segundo é o método de armazenamento de Sharding, incluindo Sharding na cadeia principal e Sharding em DA de terceiros. Como a cadeia principal geralmente tem mais nós, um bloco correspondente também terá mais backups, portanto a solução de fragmentação da cadeia principal terá custos mais elevados. O menor custo de armazenamento é o DA de cadeia pública de armazenamento que adota um método de armazenamento de recompensa. Nesse esquema, a quantidade de redundância de dados geralmente flutua em torno de uma constante fixa. Ao mesmo tempo, um mecanismo de ajuste dinâmico também é introduzido na cadeia pública de armazenamento DA para atrair nós para armazenar menos dados de backup, aumentando as recompensas para garantir a segurança dos dados.

  • Velocidade de leitura de dados: A velocidade de armazenamento de dados é afetada principalmente pelo local de armazenamento dos dados no espaço de armazenamento, pelo caminho do índice de dados e pela distribuição dos dados nos nós. Dentre eles, o local de armazenamento dos dados no nó tem maior impacto na velocidade, pois o armazenamento dos dados na memória ou SSD pode fazer com que a velocidade de leitura difira dezenas de vezes. O armazenamento da cadeia pública DA usa principalmente armazenamento SSD, porque a carga nesta cadeia não inclui apenas os dados da camada DA, mas também inclui dados pessoais com alto uso de memória, como vídeos e fotos enviados pelos usuários. Se a rede não usar SSD como espaço de armazenamento, será difícil suportar uma enorme pressão de armazenamento e atender aos requisitos de armazenamento de longo prazo. Em segundo lugar, para DA de terceiros e DA da cadeia principal que usam memória para armazenar dados, o DA de terceiros primeiro precisa procurar os dados do índice correspondentes na cadeia principal e, em seguida, transferir os dados do índice através da cadeia para o terceiro -party DA e retorne-o por meio dos dados da ponte de armazenamento. Em contraste, o DA da cadeia principal pode consultar dados diretamente dos nós e, portanto, tem velocidade de recuperação de dados mais rápida. Finalmente, dentro da cadeia principal DA, o método Sharding requer a chamada de Block de vários nós e a restauração dos dados originais. Portanto, em comparação com o armazenamento de curto prazo sem armazenamento fragmentado, a velocidade será mais lenta.

  • Universalidade da camada DA: A universalidade DA da cadeia principal é próxima de zero, porque é impossível transferir dados de uma cadeia pública com espaço de armazenamento insuficiente para outra cadeia pública com espaço de armazenamento insuficiente. No DA de terceiros, a versatilidade de uma solução e sua compatibilidade com uma cadeia principal específica são indicadores contraditórios. Por exemplo, na solução DA específica da cadeia principal projetada para uma determinada cadeia principal, muitas melhorias foram feitas no tipo de nó e no nível de consenso da rede para se adaptar à cadeia pública. Portanto, essas melhorias desempenharão um papel na comunicação. com outras cadeias públicas um enorme obstáculo. Dentro do DA de terceiros, o DA de cadeia pública de armazenamento tem melhor desempenho em termos de versatilidade em comparação com o DA modular. A cadeia pública de armazenamento DA possui uma comunidade de desenvolvedores maior e mais instalações de expansão, que podem se adaptar às condições de diferentes cadeias públicas. Ao mesmo tempo, a cadeia pública de armazenamento DA adquire dados de forma mais ativa por meio da captura de pacotes, em vez de receber passivamente informações transmitidas de outras cadeias públicas. Portanto, ele pode codificar dados à sua maneira, alcançar o armazenamento padronizado de fluxos de dados, facilitar o gerenciamento de informações de dados de diferentes cadeias principais e melhorar a eficiência do armazenamento.

Comparação de desempenho da solução de armazenamento, fonte da imagem: Kernel Ventures

6. Resumo

O blockchain atual está passando por uma transformação da Crypto para a Web3 mais inclusiva. Esse processo traz não apenas uma riqueza de projetos no blockchain. Para acomodar a operação simultânea de tantos projetos na Layer1 e ao mesmo tempo garantir a experiência dos projetos Gamefi e Socialfi, a Layer1 representada pela Ethereum adotou métodos como Rollup e Blobs para melhorar o TPS. Entre as novas blockchains, o número de blockchains de alto desempenho também está crescendo. Mas um TPS mais elevado não significa apenas um desempenho mais elevado, mas também uma maior pressão de armazenamento na rede. Para dados históricos massivos, vários métodos de DA baseados na cadeia principal e em terceiros são atualmente propostos para se adaptarem ao aumento da pressão de armazenamento na cadeia. Cada método de melhoria tem vantagens e desvantagens, e tem diferentes aplicabilidades em diferentes situações.

Blockchains que se concentram em pagamentos têm requisitos extremamente elevados para a segurança de dados históricos e não buscam TPS particularmente elevados. Se este tipo de cadeia pública ainda estiver em fase de preparação, um método de armazenamento semelhante ao DankSharding poderá ser adotado, o que pode alcançar um enorme aumento na capacidade de armazenamento e, ao mesmo tempo, garantir a segurança. No entanto, se for uma cadeia pública como o Bitcoin que já tomou forma e possui um grande número de nós, há enormes riscos de melhorias precipitadas na camada de consenso. Portanto, a cadeia principal dedica DA com maior segurança no armazenamento fora da cadeia. pode ser usado para equilibrar questões de segurança e armazenamento. Mas é importante notar que as funções do blockchain não são estáticas, mas estão em constante mudança. Por exemplo, as primeiras funções do Ethereum limitavam-se principalmente a pagamentos e processamento automatizado simples de ativos e transações usando contratos inteligentes. No entanto, à medida que o cenário blockchain continua a se expandir, vários projetos Socialfi e Defi foram gradualmente adicionados ao Ethereum. numa direção mais abrangente. Recentemente, com a explosão da ecologia de inscrições no Bitcoin, as taxas de transação da rede Bitcoin aumentaram quase 20 vezes desde agosto. Isso reflete que a velocidade de transação da rede Bitcoin nesta fase não pode atender à demanda de transação, e os comerciantes só podem. O aumento das taxas faz com que as transações sejam processadas o mais rápido possível. Agora, a comunidade Bitcoin precisa fazer uma escolha: aceitar taxas altas e velocidades de transação lentas ou reduzir a segurança da rede para aumentar a velocidade de transação, mas anular a intenção original do sistema de pagamento. Se a comunidade Bitcoin escolher a última opção, diante da crescente pressão de dados, a solução de armazenamento correspondente também precisará ser ajustada.

As taxas de transação da mainnet Bitcoin flutuam, fonte da imagem: OKLINK

Para cadeias públicas com funções abrangentes, elas têm uma busca maior pelo TPS, e o crescimento dos dados históricos é ainda maior. É difícil se adaptar ao rápido crescimento do TPS no longo prazo, adotando uma solução semelhante ao DankSharding. Portanto, uma forma mais adequada é migrar os dados para um DA de terceiros para armazenamento. Entre eles, o DA específico da cadeia principal tem a maior compatibilidade e pode ter mais vantagens se forem consideradas apenas as questões de armazenamento de uma única cadeia pública. Mas hoje, quando as cadeias públicas da Camada 1 estão florescendo, a transferência de ativos entre cadeias e a interação de dados tornaram-se uma busca comum da comunidade blockchain. Se o desenvolvimento a longo prazo de todo o ecossistema blockchain for levado em consideração, o armazenamento de dados históricos de diferentes cadeias públicas na mesma cadeia pública pode eliminar muitos problemas de segurança no processo de troca e verificação de dados. Portanto, a diferença entre DA modular e armazenamento. a cadeia pública DA way pode ser uma escolha melhor. Sob a premissa de versatilidade próxima, o DA modular se concentra em fornecer serviços da camada DA de blockchain, introduzindo dados históricos de gerenciamento de dados de índice mais refinados, que podem classificar razoavelmente diferentes dados da cadeia pública e armazenar dados da cadeia pública. No entanto, a solução acima não leva em conta o custo de ajustar a camada de consenso na cadeia pública existente. Este processo é extremamente arriscado, uma vez que ocorrem problemas, pode levar a vulnerabilidades sistémicas e fazer com que a cadeia pública perca o consenso da comunidade. Portanto, se for uma solução transitória durante o processo de expansão do blockchain, o armazenamento temporário da cadeia principal mais simples pode ser mais adequado. Finalmente, a discussão acima baseia-se no desempenho durante a operação real. No entanto, se o objectivo de uma determinada cadeia pública é desenvolver a sua própria ecologia e atrair mais partes e participantes do projecto, também pode preferir projectos que sejam apoiados e financiados pela sua própria. Fundação. . Por exemplo, quando o desempenho geral é equivalente ou mesmo ligeiramente inferior ao das soluções de armazenamento em cadeia pública, a comunidade Ethereum também tenderá a projetos de Camada 2 apoiados pela Fundação Ethereum, como o EthStorage, para continuar a desenvolver o ecossistema Ethereum.

Em suma, as funções da blockchain atual estão se tornando cada vez mais complexas, o que também traz maiores requisitos de espaço de armazenamento. Quando há nós de verificação de camada 1 suficientes, os dados históricos não precisam ser copiados por todos os nós em toda a rede. Somente quando o número de backups atingir um determinado valor a segurança relativa poderá ser garantida. Ao mesmo tempo, a divisão do trabalho na cadeia pública tornou-se cada vez mais detalhada. A Camada 1 é responsável pelo consenso e execução, o Rollup é responsável pelo cálculo e verificação e um blockchain separado é usado para armazenamento de dados. Cada parte pode se concentrar em uma determinada função sem ser limitada pelo desempenho de outras partes. No entanto, quanto armazenar ou qual proporção de nós armazenar dados históricos pode alcançar um equilíbrio entre segurança e eficiência, e como garantir a interoperabilidade segura entre diferentes blockchains. Isso exige que os desenvolvedores de blockchain pensem e continuem. Para os investidores, você pode prestar atenção ao principal projeto DA específico da cadeia no Ethereum, porque o Ethereum já tem apoiadores suficientes nesta fase e não precisa depender de outras comunidades para expandir sua influência. O que é mais necessário é melhorar e desenvolver a sua própria comunidade e atrair mais projetos para o ecossistema Ethereum. No entanto, para cadeias públicas em posição de catch-up, como Solana e Aptos, a cadeia única em si não tem uma ecologia tão completa, por isso pode estar mais inclinada a unir forças com outras comunidades para construir uma enorme ecologia entre cadeias. para expandir a influência. Portanto, para a camada 1 emergente, o DA geral de terceiros merece mais atenção.

Kernel Ventures é um fundo de capital de risco criptográfico impulsionado pela comunidade de pesquisa e desenvolvimento com mais de 70 investimentos em estágio inicial focados em infraestrutura, middleware, dApps, especialmente ZK, Rollup, DEX, blockchains modulares e integração de áreas verticais para bilhões de usuários criptográficos em o futuro, como abstração de contas, disponibilidade de dados, escalabilidade, etc. Nos últimos sete anos, temos o compromisso de apoiar o crescimento das principais comunidades de desenvolvimento e associações universitárias de blockchain em todo o mundo.

referências

  1. Celestia: O mar estrelado do blockchain modular: https://foresightnews.pro/article/detail/15497

  2. Uso de DHT e trabalhos futuros: https://github.com/celestiaorg/celestia-node/issues/11

  3. Celestia-core: https://github.com/celestiaorg/celestia-core

  4. Laboratórios Solana: https://github.com/solana-labs/solana?source=post_page-----cf47a61a9274------------------------ --------

  5. Anunciando a ponte SOLAR: https://medium.com/solana-labs/announcing-the-solar-bridge-c90718a49fa2

  6. manual do leveldb: https://leveldb-handbook.readthedocs.io/zh/latest/sstable.html

  7. Kuszmaul J. Árvores Verkle[J]. Árvores Verkle, 2019, 1: 1.: https://math.mit.edu/research/highschool/primes/materials/2018/Kuszmaul.pdf

  8. Site oficial da Arweave: https://www.arweave.org/

  9. Papel Amarelo Arweave: https://www.arweave.org/yellow-paper.pdf