Autor: Kernel Ventures Jerry Luo

Editores: Kernel Ventures Rose, Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR:

  1. Na fase inicial do blockchain, manter a consistência dos dados é considerado extremamente importante para garantir a segurança e a descentralização. No entanto, com o desenvolvimento do ecossistema blockchain, a pressão de armazenamento também está aumentando, levando a uma tendência de centralização na operação dos nós. Sendo este o caso, o problema do custo de armazenamento trazido pelo crescimento do TPS na Camada 1 precisa ser resolvido urgentemente.

  2. Diante desse problema, os desenvolvedores devem propor uma solução que leve 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 ideias, incluindo Sharding, DAS, Verkle Tree, componentes intermediários DA e assim por diante. Eles tentam otimizar o esquema de armazenamento da camada DA reduzindo a redundância de dados e melhorando a eficiência da validação de dados.

  4. As soluções DA são amplamente categorizadas em dois tipos do ponto de vista do local de armazenamento de dados, ou seja, DAs da cadeia principal e DAs de terceiros. Os DAs da cadeia principal são projetados a partir das perspectivas de limpeza regular de dados e armazenamento de dados fatiados para reduzir a pressão de armazenamento nos nós, enquanto os DAs de terceiros são projetados para atender às necessidades de armazenamento que possuem soluções razoáveis ​​para grandes quantidades de dados. Como resultado, compensamos principalmente entre compatibilidade de cadeia única e compatibilidade de cadeia múltipla em DAs de terceiros e propomos três tipos de soluções: DAs específicos da cadeia principal, DAs modularizados e DAs de cadeia pública de armazenamento.

  5. As cadeias públicas do tipo pagamento têm requisitos muito elevados para a segurança dos dados históricos e, portanto, 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, é mais adequado adotar um DA de terceiros que não envolva a mudança da camada de consenso com segurança relativamente alta. Para cadeias públicas abrangentes, é mais adequado usar o armazenamento DA dedicado da cadeia principal com maior capacidade de dados, menor custo e segurança. Porém, considerando a demanda por cross-chain, o DA modular também é uma boa opção.

  6. No geral, o blockchain está avançando no sentido de reduzir a redundância de dados, bem como a divisão do trabalho em várias cadeias.

1. Fundo

O Blockchain, como um livro-razão distribuído, precisa fazer uma cópia dos dados históricos armazenados em todos os nós para garantir que o armazenamento de dados seja seguro e suficientemente descentralizado. Como a correção de cada mudança de estado está relacionada ao estado anterior (a origem da transação), para garantir a correção da transação, um blockchain deve armazenar todo o histórico de transações desde a geração da primeira transação até a atual. transação. Tomando o Ethereum como exemplo, mesmo tomando 20 kb por bloco como tamanho médio, o tamanho total dos dados atuais no Ethereum atingiu 370 GB. Para um nó completo, além do próprio bloco, ele deve registrar o estado e os recebimentos das transações. Incluindo esta parte, a quantidade total de armazenamento de um único nó ultrapassou 1 TB, o que torna a operação do nó gradualmente centralizada.

Fonte: Etherscan

A recente atualização do Ethereum em Cancun visa aumentar o TPS do Ethereum para perto de 1.000, ponto em que o crescimento anual do armazenamento do Ethereum excederá a soma de seu armazenamento atual. Em cadeias públicas de alto desempenho, a velocidade de transação de dezenas de milhares de TPS pode trazer centenas de GB de adição de dados por dia. A redundância de dados comum de todos os nós da rede obviamente não consegue se adaptar a tal pressão de armazenamento. Portanto, a Camada1 deve encontrar uma solução adequada para equilibrar o crescimento do TPS e o custo de armazenamento dos nós.

2. Indicadores de Desempenho do DA

2.1 Segurança

Em comparação com um banco de dados ou lista vinculada, a imutabilidade do blockchain vem do fato de que seus dados recém-gerados podem ser verificados por dados históricos, garantindo assim a segurança de seus dados históricos é a primeira questão a ser considerada no armazenamento da camada DA. Para avaliar a segurança dos dados dos sistemas blockchain, frequentemente analisamos a quantidade redundante de dados e o método de verificação da disponibilidade dos dados.

  • Número de redundância: A redundância de dados no sistema blockchain desempenha principalmente as seguintes funções: primeiro, mais redundância na rede pode fornecer mais amostras para referência quando o verificador precisar verificar o status da conta, o que pode ajudar o nó a selecionar os dados registrados pelo maioria dos nós com maior segurança. Nos bancos de dados tradicionais, como os dados são armazenados apenas na forma de pares chave-valor em um determinado nó, a alteração dos dados históricos é realizada apenas em um único nó, com baixo custo de ataque e, teoricamente, quanto mais o número de despedimentos, maior será o grau de credibilidade dos dados. Teoricamente, quanto mais redundância houver, mais confiáveis ​​serão os dados. Além do mais, quanto mais nós houver, menor será a probabilidade de os dados serem perdidos. Este ponto também pode ser comparado aos servidores centralizados que armazenam jogos Web2, uma vez desligados todos os servidores de background, haverá um encerramento total do serviço. Mas não é melhor com mais redundância, porque a redundância trará espaço de armazenamento adicional, o que trará muita pressão de armazenamento ao sistema. Uma boa camada DA deve escolher uma forma de redundância adequada para encontrar um equilíbrio entre segurança e eficiência de armazenamento.

  • Verificação de disponibilidade de dados: A quantidade de redundância pode garantir registros suficientes de dados na rede, mas os dados a serem usados ​​devem ser verificados quanto à precisão e integridade. Os blockchains atuais geralmente usam algoritmos de comprometimento criptográfico como métodos de verificação, que apenas mantêm um pequeno comprometimento criptográfico obtido pela mistura de dados de transação, para registro de toda a rede. Para testar a autenticidade dos dados históricos, devemos tentar recuperar o compromisso com os dados. Se o compromisso de recuperação for idêntico ao compromisso original, a verificação será aprovada. Algoritmos de verificação criptográfica comumente usados ​​são Merkle Root e Verkle Root. Algoritmos de verificação de disponibilidade de dados de alta segurança podem verificar rapidamente dados históricos com a ajuda do mínimo possível de dados de terceiros.

2.2 Custo de armazenamento

Depois de garantir a segurança básica, o próximo objetivo da camada DA é reduzir custos e aumentar a eficiência. O primeiro passo é reduzir o custo de armazenamento apresentado pelo consumo de memória causado pelo armazenamento de dados por tamanho de unidade, independente da diferença no desempenho do hardware. Hoje em dia, as principais formas de reduzir os custos de armazenamento em blockchain são adotar a tecnologia de sharding e usar o armazenamento de recompensas para reduzir o número de backups de dados, mantendo sua segurança. No entanto, não é difícil ver a partir dos métodos de melhoria acima mencionados que existe uma relação de jogo entre o custo de armazenamento e a segurança dos dados, e a redução da ocupação do armazenamento muitas vezes significa uma diminuição na segurança. Portanto, uma excelente camada DA precisa alcançar o 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 também precisará reduzir o custo, minimizando o processo intermediário de troca de dados, no qual todo processo de trânsito precisa deixar dados de índice para recuperação posterior. Portanto, quanto mais longo o processo de chamada, mais dados de índice sobrarão, o que aumentará o custo de armazenamento. Finalmente, o custo de armazenamento de dados está diretamente ligado à persistência dos dados. Em geral, quanto maior o custo do armazenamento de dados, mais difícil será para a cadeia pública armazenar dados de forma persistente.

2.3 Velocidade de leitura de dados

Tendo alcançado a redução de custos, o próximo passo é a eficiência, o que significa a capacidade de recuperar rapidamente dados da camada DA quando necessário. Este processo envolve duas etapas, a primeira é a busca de nós para armazenar dados, principalmente para cadeias públicas que não alcançaram consistência de dados em toda a rede, se a cadeia pública conseguiu a sincronização de dados de nós em toda a rede, o consumo de tempo deste processo pode ser ignorado. Então, nos principais sistemas blockchain neste estágio, incluindo Bitcoin, Ethereum e Filecoin, o método de armazenamento dos nós é todo o banco de dados Leveldb. No Leveldb, os dados são armazenados de três maneiras. Primeiro, os dados gravados dinamicamente são armazenados em arquivos do tipo Memtable até que o Memtable esteja cheio e, em seguida, o tipo de arquivo é alterado de Memtable para Immutable Memtable. Ambos os tipos são armazenados na memória, mas os arquivos Immutable Memtable são somente leitura. O armazenamento quente usado na rede IPFS armazena dados nesta parte da rede, para que possam ser lidos rapidamente da memória quando chamados, mas um nó médio possui apenas GBs de memória removível, que pode ser facilmente desacelerado, e quando um nó fica inativo, os dados na memória são perdidos permanentemente. Se você deseja armazenamento de dados persistente, você precisa armazenar os dados na forma de arquivos SST no disco de estado sólido (SSD), mas ao ler os dados, você precisa primeiro ler os dados na memória, o que reduz bastante a velocidade de indexação de dados. Finalmente, para um sistema com fragmentação de armazenamento, a restauração de dados requer o envio de solicitações de dados a vários nós e sua restauração, um processo que também retarda a leitura dos dados.

Fonte: Manual Leveldb

2.4 Generalização da Camada DA

Com o desenvolvimento do DeFi e vários problemas do CEX, os requisitos dos usuários para transações entre cadeias de ativos descentralizados estão crescendo. Quer adotemos o mecanismo de cadeia cruzada de bloqueio de hash, notário ou cadeia de retransmissão, não podemos evitar a determinação simultânea de dados históricos em duas cadeias. A chave para este problema reside na separação dos dados nas duas cadeias, que não podem ser comunicados diretamente em diferentes sistemas descentralizados. Portanto, uma solução é proposta alterando o método de armazenamento da camada DA, que armazena os dados históricos de múltiplas cadeias públicas na mesma cadeia pública confiável e só precisa chamar os dados desta cadeia pública durante a verificação. Isto exige que a camada DA seja capaz de estabelecer comunicação segura com diferentes tipos de cadeias públicas, o que significa que a camada DA tem boa versatilidade.

3. Técnicas relativas à DA

3.1 Fragmentação

Em sistemas distribuídos tradicionais, um arquivo não é armazenado de forma completa em um nó, mas para dividir os dados originais em vários blocos e armazená-los em cada nó. Além disso, o bloco geralmente não é armazenado apenas em um nó, mas deixa backup apropriado em outros nós. Nos sistemas distribuídos convencionais existentes, o número de backups é geralmente definido como 2. Este mecanismo de fragmentação pode reduzir a pressão de armazenamento de nós individuais, expandir a capacidade total do sistema para a soma da capacidade de armazenamento de cada nó e, no 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 aos sistemas distribuídos tradicionais, mas existem diferenças em alguns detalhes. Em primeiro lugar, uma vez que os nós padrão na blockchain não são confiáveis, o processo de realização da fragmentação requer uma quantidade suficientemente grande de backups de dados para o julgamento subsequente da autenticidade dos dados, portanto, o número de backups deste nó precisa ser muito maior que 2. Idealmente , no sistema blockchain que adota esse esquema de armazenamento, se o número total de nós de autenticação for T e o número de shards for N, o número de backups deverá ser T/N. Em segundo lugar, quanto ao processo de armazenamento de um bloco, um sistema distribuído tradicional com menos nós geralmente tem o modo em que um nó se adapta a vários blocos de dados. Primeiramente, os dados são mapeados para o anel hash pelo algoritmo hash consistente e, em seguida, cada nó armazena um determinado intervalo de blocos numerados com as atribuições do anel hash. Pode-se aceitar no sistema que um único nó não tenha uma tarefa de armazenamento em determinado armazenamento. Enquanto estiver no blockchain, o bloco de armazenamento não é mais um evento aleatório, mas inevitável para os nós. Cada nó selecionará aleatoriamente um bloco para armazenamento no blockchain, com o processo concluído pelo resultado do hash dos dados misturados com as informações do nó para o número do módulo da fatia. Supondo que cada dado seja dividido em N blocos, o tamanho real de armazenamento de cada nó é de apenas 1/N. Ao definir N adequadamente, podemos alcançar um equilíbrio entre o crescimento do TPS e a pressão no armazenamento do nó.

Fonte: Kernel Ventures

3.2 DAS (Amostragem de Disponibilidade de Dados)

A tecnologia DAS é uma otimização adicional do método de armazenamento baseado em fragmentação. No processo de fragmentação, devido ao simples armazenamento aleatório de nós, pode ocorrer uma perda de bloco. Em segundo lugar, para os dados após a fragmentação, como confirmar a autenticidade e integridade dos dados durante o processo de restauração também é muito importante. No DAS, esses dois problemas são resolvidos pelo código Eraser e pelo comprometimento polinomial KZG.

  • Código apagador: Dado o grande número de nós verificados no Ethereum, é possível que um bloco não esteja sendo armazenado por nenhum nó, embora seja um evento probabilístico. Para mitigar a ameaça de perda de armazenamento, em vez de dividir os dados brutos em blocos, este esquema mapeia os dados brutos para os coeficientes de um polinômio de enésimo grau, então pega 2n pontos no polinômio e permite que os nós escolham aleatoriamente um dos armazená-los. Para este polinômio de enésimo grau, apenas n+1 pontos são necessários para a redução e, portanto, apenas metade dos blocos precisa ser selecionada pelos nós para que possamos realizar a redução dos dados originais. O código Eraser melhora a segurança do armazenamento de dados e a capacidade da rede de recuperar os dados.

  • Compromisso polinomial KZG: Um aspecto muito importante do armazenamento de dados é a verificação da autenticidade dos dados. Em redes que não usam código Eraser, vários métodos podem ser usados ​​para verificação, mas se o código Eraser acima for introduzido para melhorar a segurança dos dados, então é mais apropriado usar o compromisso polinomial KZG, que pode verificar o conteúdo de um único bloco diretamente na forma de um polinômio, eliminando assim a necessidade de reduzir o polinômio a dados binários. O compromisso polinomial KZG pode verificar diretamente o conteúdo de um único bloco na forma de polinômios, eliminando assim a necessidade de reduzir os polinômios a dados binários, e a forma geral de verificação é semelhante à da Merkle Tree, mas não requer específico Dados do nó do caminho e requer apenas a raiz KZG e os dados do bloco para verificar a autenticidade do bloco.

3.3 Método de validação de dados em DA

A validação de dados garante que os dados chamados de um nó sejam precisos e completos. Para minimizar a quantidade de dados e o custo computacional necessários no processo de validação, a camada DA agora usa uma estrutura em árvore como método de validação principal. A forma mais simples é usar Merkle Tree para verificação, que usa a forma de registros completos de árvore binária, só precisa manter uma Merkle Root e o valor hash da subárvore do outro lado do caminho do nó pode ser verificado, o a complexidade de tempo da verificação é de nível O (logN) (o logN é o log2 (N) padrão). Embora o processo de validação tenha sido bastante simplificado, a quantidade de dados para o processo de validação em geral ainda cresce com o aumento dos dados. Para resolver o problema do aumento do volume de validação, outro método de validação, Verkle Tree, é proposto nesta fase, em que cada nó da Verkle Tree não apenas armazena o valor, mas também anexa um Vector Commitment, que pode validar rapidamente a autenticidade do dados utilizando o valor do nó original e a prova de compromisso, sem a necessidade de chamar os valores de outros nós irmãos, o que torna o cálculo de cada validação mais fácil e rápido. Isso faz com que o número de cálculos para cada verificação esteja relacionado apenas à profundidade da Árvore Verkle, que é uma constante fixa, acelerando 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. Porém, para dados como dados históricos, que são armazenados permanentemente e não podem ser adulterados, mas também podem ser lidos, mas não gravados, a Árvore Verkle é extremamente adequada. Além disso, Merkle Tree e Verkle Tree em si possuem uma forma K-ary de variantes, a implementação específica do mecanismo é semelhante, basta alterar o número de subárvores em cada nó, a comparação específica de desempenho pode ser vista na tabela a seguir.

Fonte: Árvores Verkle

3.4 Middleware DA genérico

A expansão contínua do ecossistema blockchain trouxe um número crescente de cadeias públicas. Devido às vantagens e à insubstituibilidade de cada cadeia pública em seus respectivos campos, é impossível que as cadeias públicas da Camada 1 se unifiquem em pouco tempo. No entanto, com o desenvolvimento do DeFi e os problemas do CEX, a procura dos utilizadores por activos descentralizados de negociação entre cadeias está a crescer. Portanto, o armazenamento de dados multicadeia da camada DA, que pode eliminar os problemas de segurança na interação de dados entre cadeias, tem ganhado cada vez mais atenção. No entanto, para aceitar dados históricos de diferentes cadeias públicas, é necessário que a camada DA forneça protocolos descentralizados para armazenamento padronizado e validação do fluxo de dados. Por exemplo, kvye, um middleware de armazenamento baseado em Arweave, adota o método de rastreamento ativo de dados das cadeias principais e pode armazenar os dados de todas as cadeias de uma forma padronizada para Arweave, a fim de minimizar as diferenças na transmissão de dados. processo. Comparativamente falando, a Layer2, especializada em fornecer armazenamento de dados da camada DA para uma determinada cadeia pública, realiza a interação de dados por meio de nós internos compartilhados. Embora reduza o custo de interação e melhore a segurança, tem maiores limitações e só pode prestar serviços a cadeias públicas específicas.

4. Métodos de armazenamento de DA

4.1 Cadeia Principal DA

4.1.1 tipo DankSharding

Não existe um nome definitivo para este tipo de esquema de armazenamento, mas o mais proeminente é Dank Sharding no Ethereum, portanto, neste artigo, usamos o termo Dank Sharding-like para nos referirmos a este tipo de esquema. Este tipo de esquema utiliza principalmente as duas técnicas de armazenamento DA mencionadas acima, sharding e DAS, primeiro, os dados são divididos em um número apropriado de compartilhamentos por sharding, e então cada nó extrai um bloco de dados na forma de DAS para armazenamento. Para o caso de haver nós suficientes em toda a rede, podemos pegar um número maior de fatias N, de modo que a pressão de armazenamento de cada nó seja apenas 1/N do original, realizando assim uma expansão de N vezes do armazenamento geral espaço. Ao mesmo tempo, para evitar o caso extremo de um bloco não ser armazenado por nenhum bloco, Dank Sharding codifica os dados usando Eraser Code, que requer apenas metade dos dados para restauração completa. Por último, os dados são verificados usando uma estrutura Verkle Tree com compromissos polinomiais para somas de verificação rápidas.

4.1.2 Armazenamento Temporário

Para o DA da cadeia principal, uma das maneiras mais simples de lidar com os dados é armazenar dados históricos por um curto período de tempo. Essencialmente, o blockchain atua como um livro-razão público, onde são feitas alterações no conteúdo do livro-razão na presença de toda a rede, e não há necessidade de armazenamento permanente. No caso de Solana, por exemplo, embora seus dados históricos estejam sincronizados com o Arweave, os principais nós da rede retêm apenas os dados de transações dos últimos dois dias. Numa cadeia pública baseada em registos de contas, cada momento de dados históricos retém o estado final da conta na blockchain, o que é suficiente para fornecer uma base para verificação de alterações no momento seguinte. Aqueles que têm necessidades especiais de dados antes desse período podem armazená-los em outras cadeias públicas descentralizadas ou entregá-los a terceiros de confiança. Em outras palavras, aqueles que têm necessidades adicionais de dados precisarão pagar pelo armazenamento de dados históricos.

4.2 DA de Terceiros

4.2.1 DA para Cadeia Principal: EthStorage

  • DA para cadeia principal: O mais importante para a camada DA é a segurança da transmissão de dados, e o DA com maior segurança é o DA da cadeia principal, mas o armazenamento da cadeia principal é limitado pelo espaço de armazenamento e pela competição de recursos, portanto, quando o volume de dados da rede cresce rapidamente, o DA de terceiros é uma escolha melhor se quiser realizar o armazenamento de dados a longo prazo. Se o DA de terceiros tiver maior compatibilidade com a rede principal, ele poderá realizar o compartilhamento de nós, e o processo de interação de dados terá maior segurança. Portanto, sob a premissa de considerar a segurança, um DA dedicado para a cadeia principal terá uma enorme vantagem. Tomando o Ethereum como exemplo, um dos requisitos básicos para um DA dedicado à cadeia principal é que ele possa ser compatível com EVM para garantir a interoperabilidade com dados e contratos do Ethereum, e projetos representativos incluem Topia, EthStorage, etc. é o DA mais compatível em termos de compatibilidade. Projetos representativos incluem Topia, EthStorage e assim por diante. Entre eles, EthStorage é o mais desenvolvido em termos de compatibilidade, pois além da compatibilidade EVM, também configurou interfaces relevantes para interagir com Remix, Hardhat e outras ferramentas de desenvolvimento Ethereum para obter compatibilidade com ferramentas de desenvolvimento Ethereum.

  • EthStorage: EthStorage é uma cadeia pública independente do Ethereum, mas os nós executados nela são um supergrupo de nós Ethereum, o que significa que os nós que executam o EthStorage também podem executar o Ethereum ao mesmo tempo. Além do mais, também podemos operar diretamente o EthStorage através dos opcodes no Ethereum. O modelo de armazenamento do EthStorage retém apenas uma pequena quantidade de metadados para indexação na rede Ethereum principal, criando essencialmente um banco de dados descentralizado para Ethereum. Na solução atual, o EthStorage implanta um contrato EthStorage no Ethereum principal para realizar a interação entre o Ethereum principal e o EthStorage. Se o Ethereum quiser depositar dados, ele precisa chamar a função put() no contrato, e os parâmetros de entrada são variáveis ​​​​de dois bytes chave, dados, onde os dados representam os dados a serem depositados, e a chave é sua identidade no Rede Ethereum, que 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 a ser retornado à rede host Ethereum, que corresponde à chave na rede Ethereum, e este valor corresponde ao endereço de armazenamento de os dados no EthStorage para que o problema original de armazenar uma grande quantidade de dados possa agora ser alterado para armazenar um único (chave, kvldx). (chave, kvldx), o que reduz bastante o custo de armazenamento da rede Ethereum principal. Se precisar chamar os dados armazenados anteriormente, você precisa usar a função get() no EthStorage e inserir o parâmetro key, e então você pode fazer uma pesquisa rápida dos dados no EthStorage usando o kvldx armazenado no Ethereum.

Fonte: Kernel Ventures

  • Em termos de como os nós armazenam dados, o EthStorage aprende com o modelo Arweave. Em primeiro lugar, um grande número de (k,v) pares da ETH são fragmentados, e cada fragmentação contém um número fixo de (k, v) pares, dos quais há um limite no tamanho de cada (k, v) par para garantir a justiça da carga de trabalho no processo de armazenamento de recompensas para os mineiros. Para a emissão de recompensas, é necessário verificar se o nó armazena dados para começar. Neste processo, o EthStorage dividirá um sharding (tamanho TB) em vários pedaços e manterá uma raiz Merkle na rede principal Ethereum para verificação. Em seguida, o minerador precisa fornecer um nonce para gerar alguns pedaços por um algoritmo aleatório com o hash do bloco anterior no EthStorage, e o minerador precisa fornecer os dados desses pedaços para provar que armazenou todo o fragmento, mas este nonce não pode ser escolhido arbitrariamente, caso contrário o nó escolherá o nonce apropriado correspondente aos pedaços armazenados por ele e passará na verificação. Porém, este nonce não pode ser escolhido aleatoriamente, caso contrário o nó escolherá um nonce adequado que corresponda apenas aos seus pedaços armazenados e assim passará na verificação, portanto este nonce deve fazer os pedaços gerados após misturar e hash para que o valor de dificuldade atenda aos requisitos da rede, e apenas o primeiro nó que enviar o nonce e a prova de acesso aleatório poderá receber a recompensa.

4.2.2 Modularização DA: Celsetia

  • Módulo Blockchain: As transações a serem realizadas na cadeia pública da Camada 1 são divididas nas seguintes quatro partes: (1) projetar a lógica subjacente da rede, selecionar nós de validação de uma determinada maneira, escrever blocos e alocar recompensas para os mantenedores da rede; (2) empacotamento e processamento de transações e publicação de transações relacionadas; (3) validar as transações a serem carregadas na blockchain e determinar o status final; (4) armazenamento e manutenção de dados históricos na blockchain. De acordo com as diferentes funções desempenhadas, podemos dividir o blockchain em quatro módulos: 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 única cadeia pública, tal blockchain é chamado de blockchain monolítico. Esta forma é mais estável e mais fácil de manter, mas também exerce uma enorme pressão sobre a cadeia pública única. Na prática, os quatro módulos restringem-se mutuamente e competem pelos limitados recursos computacionais e de armazenamento da cadeia pública. Por exemplo, aumentar a velocidade de processamento da camada de processamento trará mais pressão de armazenamento para a camada de disponibilidade de dados; garantir a segurança da camada de execução requer um mecanismo de verificação mais complexo, mas diminui a velocidade do processamento das transações. Portanto, o desenvolvimento de uma cadeia pública enfrenta frequentemente um compromisso entre estes quatro módulos. Para romper esse gargalo na melhoria do desempenho da cadeia pública, os desenvolvedores propuseram uma solução modular de blockchain. A ideia central do blockchain modular é retirar um ou vários dos quatro módulos mencionados acima e entregá-los a uma cadeia pública separada para implementação. Desta forma, a cadeia pública pode focar na melhoria da velocidade de transação ou capacidade de armazenamento, rompendo as limitações anteriores no desempenho geral do blockchain devido ao efeito short board.

  • DA modular: A abordagem complexa de separar a camada DA do negócio blockchain e colocá-la em uma cadeia pública separada é considerada uma solução viável para os crescentes dados históricos da Camada1. Nesta fase, a exploração desta área ainda se encontra numa fase inicial, sendo que o projecto mais representativo é o Celestia, que utiliza o método de armazenamento de Sharding, que também divide os dados em múltiplos blocos, e cada nó extrai uma parte deles para armazenamento e usa o compromisso polinomial KZG para verificar a integridade dos dados. Ao mesmo tempo, Celestia usa códigos corretivos RS bidimensionais avançados para reescrever os dados originais na forma de uma matriz k*k, o que, em última análise, requer a recuperação de apenas 25% dos dados originais. No entanto, o armazenamento de dados fatiados está essencialmente apenas multiplicando a pressão de armazenamento dos nós na rede por um fator do volume total de dados, e a pressão de armazenamento dos nós ainda cresce linearmente com o volume de dados. À medida que a camada 1 continua a melhorar em termos de velocidade de transação, a pressão de armazenamento nos nós ainda poderá atingir um limite inaceitável algum dia. Para resolver esse problema, um componente IPLD é introduzido no Celestia. Em vez de armazenar os dados na matriz k*k diretamente no Celestia, os dados são armazenados na rede LL-IPFS, sendo apenas o código CID dos dados mantido no nó. Quando um usuário solicita um dado histórico, o nó envia o CID correspondente ao componente IPLD, que é usado para chamar os dados originais no IPFS. Se os dados existirem no IPFS, eles serão retornados por meio do componente IPLD e do nó. Se não existir, os dados não poderão ser retornados.

Fonte: Núcleo Celestia

  • Celestia: Tomando Celestia como exemplo, podemos ver a 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 o processo, o Celestia apenas armazena os dados sem ter muita percepção. Nesse processo, o Celestia apenas armazena os dados sem detectá-los e, no final, de acordo com o tamanho do espaço de armazenamento, o nó Rollup pagará os tokens tia correspondentes ao Celestia como taxa de armazenamento. O armazenamento no Celestia utiliza um DAS e código de depuração semelhantes ao EIP4844, mas o código de depuração polinomial no EIP4844 é atualizado para usar um código de depuração RS bidimensional, que atualiza a segurança do armazenamento novamente, e apenas 25% das frações são necessários para recuperar todos os dados da transação. É essencialmente uma cadeia pública de POS com baixos custos de armazenamento e, para ser implementada como uma solução para o problema histórico de armazenamento de dados do Ethereum, muitos outros módulos específicos serão necessários para trabalhar com o Celestia. Por exemplo, em termos de rollup, um dos modelos de rollup altamente recomendados pelo site oficial da Celestia é o Sovereign Rollup, que é diferente do rollup comum na Layer2, que só consegue calcular e verificar transações, apenas completando a camada de execução, e inclui todo o processo de execução e liquidação, o que minimiza a necessidade do processo de execução e liquidação no Celestia. Isto minimiza o processamento de transações no Celestia, o que maximiza a segurança geral do processo de transação quando a segurança geral do Celestia é mais fraca do que a do Ethereum. Quanto à segurança dos dados chamados pela Celestia na rede principal do Ethereum, a solução mais popular é o contrato inteligente Quantum Gravity Bridge. Para os dados armazenados no Celestia, ele irá gerar um Merkle Root (certificado de disponibilidade de dados) e mantê-lo no contrato Quantum Gravity Bridge na rede principal do EtherCenter. Quando o EtherCenter chama os dados históricos do Celestia todas as vezes, ele compara o resultado do hash com a raiz Merkle e, se corresponder, significa que são de fato os dados históricos reais.

4.2.3 Cadeia de Armazenamento DA

Em termos dos princípios técnicos dos DAs da cadeia principal, muitas técnicas semelhantes à fragmentação foram emprestadas das cadeias públicas de armazenamento. Em DAs de terceiros, alguns deles até realizam parte das tarefas de armazenamento diretamente com a ajuda de cadeias públicas de armazenamento, por exemplo, os dados de transações específicas no Celestia são colocados na rede LL-IPFS. Nas soluções de DAs de terceiros, além de construir uma cadeia pública separada para resolver o problema de armazenamento da Camada1, uma forma mais direta é conectar diretamente a cadeia pública de armazenamento à Camada1 para armazenar os enormes dados históricos na Camada1. Para blockchain de alto desempenho, o volume de dados históricos é ainda maior, em operação em plena velocidade, o volume de dados da cadeia pública de alto desempenho Solana é próximo a 4 PG, o que está completamente além do alcance de armazenamento dos nós comuns. Solana opta por uma solução para armazenar dados históricos na rede de armazenamento descentralizada Arweave e retém apenas 2 dias de dados nos nós da rede principal para verificação. Para garantir a segurança do processo de armazenamento, Solana e a cadeia Arweave projetaram um protocolo de ponte de armazenamento, Solar Bridge, que sincroniza os dados validados dos nós Solana para Arweave e retorna a etiqueta correspondente, que permite aos nós Solana visualizar os dados históricos de o blockchain Solana a qualquer momento. O nó Solana pode visualizar dados históricos de qualquer momento no blockchain Solana. Na Arweave, em vez de exigir que os nós da rede mantenham a consistência dos dados como uma necessidade de participação, a rede adota uma abordagem de armazenamento de recompensas. Em primeiro lugar, Arweave não usa uma estrutura de cadeia tradicional para construir blocos, mas sim uma estrutura gráfica. No Arweave, um novo bloco não apenas apontará para o bloco anterior, mas também apontará aleatoriamente para um bloco Recall de bloco gerado, cuja localização exata é determinada pelo resultado hash do bloco anterior e sua altura de bloco, e a localização do Recall o bloco é desconhecido até que o bloco anterior seja extraído. Porém, no processo de geração de novos blocos, os nós são obrigados a ter os dados do bloco Recall para usar o mecanismo POW para calcular o hash da dificuldade especificada, e apenas o minerador que for o primeiro a calcular o hash que atenda aos a dificuldade pode ser recompensada, o que incentiva os mineradores a armazenar o máximo possível de dados históricos. Ao mesmo tempo, quanto menos pessoas armazenarem um bloco histórico específico, menos concorrentes um nó terá ao gerar um nonce compatível com dificuldade, incentivando os mineradores a armazenar blocos com menos backups na rede. Finalmente, para garantir que os nós armazenem dados permanentemente, o mecanismo de pontuação de nós do WildFire é introduzido no Arweave. Os nós preferirão se comunicar com nós que possam fornecer dados históricos mais e mais rapidamente, enquanto os nós com classificações mais baixas não serão capazes de obter os dados mais recentes de blocos e transações na primeira vez, deixando assim de obter uma vantagem inicial na competição POW.

Fonte: Arweave Yellow-Paper

5. Comparação Sintetizada

Compararemos as vantagens e desvantagens de cada uma das cinco soluções de armazenamento em termos das quatro dimensões das métricas de desempenho de DA.

  • Segurança: A maior fonte de problemas de segurança de dados é a perda de dados causada pelo processo de transmissão de dados e adulteração maliciosa de nós desonestos, e o processo cross-chain é a área mais atingida da segurança de transmissão de dados devido à independência dos dois públicos cadeias e o estado não é compartilhado. Além disso, a Camada 1, que neste estágio requer uma camada DA especializada, geralmente possui um forte grupo de consenso e sua 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 de dados, o próximo passo é garantir a segurança da chamada de dados. Considerando apenas os dados históricos de curto prazo usados ​​para verificar a transação, os mesmos dados são armazenados em backup por toda a rede na rede de armazenamento temporário, enquanto o número médio de backups de dados no esquema do tipo DankSharding é de apenas 1/N do número de nós em toda a rede, o que significa que mais redundância de dados pode tornar os dados menos propensos a serem perdidos e, ao mesmo tempo, pode fornecer mais amostras de referência para verificação. Portanto, o armazenamento temporário terá maior segurança dos dados. No esquema DA de terceiros, devido aos nós públicos usados ​​na cadeia principal, os dados podem ser transmitidos diretamente através desses nós de retransmissão no processo de encadeamento cruzado e, portanto, também terão uma segurança relativamente maior do que outros DA. esquemas.

  • Custo de armazenamento: O fator que tem maior impacto no custo de armazenamento é a quantidade de redundância nos dados. No esquema de armazenamento de curto prazo da cadeia principal DA, que utiliza a forma de sincronização de dados de nós em toda a rede para armazenamento, quaisquer dados recém-armazenados precisam ser copiados nos nós de toda a rede, tendo o maior custo de armazenamento. O alto custo de armazenamento, por sua vez, determina que em uma rede de alto TPS, esta abordagem seja adequada apenas para armazenamento temporário. O próximo é o método de armazenamento de fragmentação, incluindo fragmentação na cadeia principal e fragmentação no DA de terceiros. Como a cadeia principal geralmente possui mais nós e, portanto, o bloco correspondente terá mais backups, o esquema de fragmentação da cadeia principal terá um custo mais alto. O menor custo de armazenamento está na cadeia pública de armazenamento DA que adota o método de armazenamento de recompensa, e a quantidade de redundância de dados neste esquema tende a flutuar em torno de uma constante fixa. Ao mesmo tempo, a cadeia pública de armazenamento DA também introduz um mecanismo de ajuste dinâmico, que atrai nós para armazenar menos dados de backup, aumentando a recompensa para garantir a segurança dos dados.

  • Velocidade de leitura de dados: a velocidade de armazenamento de dados é afetada principalmente pelo local onde os dados são armazenados no espaço de armazenamento, pelo caminho do índice de dados e pela distribuição dos dados entre os nós. Entre eles, o local onde os dados são armazenados nos nós tem um impacto maior na velocidade, pois armazenar os dados na memória ou SSD pode levar a uma diferença de dezenas de vezes na velocidade de leitura. Os DAs de cadeia pública de armazenamento utilizam principalmente armazenamento SSD porque a carga nessa cadeia inclui não apenas dados da camada DA, mas também dados pessoais que consomem muita memória, como vídeos e imagens carregados pelos usuários. Se a rede não usar SSDs como espaço de armazenamento, será difícil suportar a enorme pressão de armazenamento e atender à demanda por armazenamento de longo prazo. Em segundo lugar, para DAs de terceiros e DAs da cadeia principal que usam o estado da memória para armazenar dados, os DAs de terceiros primeiro precisam procurar os dados indexados correspondentes na cadeia principal e, em seguida, transferir os dados indexados através da cadeia para terceiros. DAs da parte e retornar os dados através da ponte de armazenamento. Em contraste, o DA mainchain pode consultar dados diretamente dos nós e, portanto, tem velocidade de recuperação de dados mais rápida. Finalmente, dentro do DA da cadeia principal, a abordagem de fragmentação requer a chamada de blocos de vários nós e a restauração dos dados originais. Portanto, é mais lento que o método de armazenamento de curto prazo sem fragmentação.

  • Universalidade da camada DA: A universalidade DA da cadeia principal é próxima de zero porque não é possí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. Em DAs de terceiros, a generalidade de uma solução e sua compatibilidade com uma cadeia principal específica são métricas contraditórias. Por exemplo, no caso de uma solução DA específica da cadeia principal projetada para uma cadeia principal específica, foram feitas muitas melhorias no nível dos tipos de nós e do consenso da rede para se adaptar a essa cadeia pública específica e, portanto, essas melhorias podem atuar como um enorme obstáculo na comunicação com outras redes públicas. Dentro dos DAs de terceiros, os DAs de cadeia pública de armazenamento têm melhor desempenho em termos de generalização do que os DAs modulares. Os DAs de cadeia pública de armazenamento têm uma comunidade de desenvolvedores maior e mais instalações de expansão para se adaptarem a diferentes cadeias públicas. Ao mesmo tempo, a cadeia pública de armazenamento DA pode obter 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 os dados à sua maneira, alcançar o armazenamento padronizado do fluxo de dados, facilitar o gerenciamento de informações de dados de diferentes cadeias principais e melhorar a eficiência do armazenamento.

Fonte: Kernel Ventures

6. Conclusão

O Blockchain está passando pelo processo de conversão de Crypto para Web3 e traz uma abundância de projetos no blockchain, mas também problemas de armazenamento de dados. Para acomodar a operação simultânea de tantos projetos na Layer1 e garantir a experiência dos projetos Gamefi e Socialfi, a Layer1 representada pela Ethereum adotou Rollup e Blobs para melhorar o TPS. Além do mais, o número de blockchains de alto desempenho na blockchain recém-nascida também está crescendo. Mas um TPS mais alto não significa apenas maior desempenho, mas também mais pressão de armazenamento na rede. Para a enorme quantidade de dados históricos, múltiplas abordagens de DA, tanto baseadas na cadeia principal como em terceiros, são propostas nesta fase para se adaptarem ao crescimento da pressão de armazenamento na cadeia. As melhorias têm as suas vantagens e desvantagens e têm diferentes aplicabilidades em diferentes contextos. No caso de blockchains baseados em pagamentos, que têm requisitos muito elevados para a segurança de dados históricos e não buscam TPS particularmente elevados, ainda estão em fase preparatória, podem adotar um método de armazenamento semelhante ao DankSharding, que pode garantir a segurança e um enorme aumento na capacidade de armazenamento ao mesmo tempo. Porém, se for uma cadeia pública como o Bitcoin, que já foi formada e possui um grande número de nós, existe um grande risco de melhorar precipitadamente a camada de consenso, para que possa adotar um DA especial para a cadeia principal com maior segurança no armazenamento fora da cadeia para equilibrar os problemas de segurança e armazenamento. No entanto, é importante notar que a função do blockchain está mudando com o tempo. Por exemplo, nos primeiros dias, a funcionalidade do Ethereum era limitada a pagamentos e processamento automatizado simples de ativos e transações usando contratos inteligentes, mas à medida que o cenário do blockchain se expandiu, vários projetos Socialfi e Defi foram adicionados ao Ethereum, levando-o a um nível mais direção abrangente. Com a recente explosão do ecossistema de inscrição no Bitcoin, as taxas de transação na rede Bitcoin aumentaram quase 20 vezes desde agosto, refletindo o fato de que as velocidades de transação da rede não são capazes de atender à demanda por transações nesta fase. Os comerciantes precisam aumentar as taxas para que as transações sejam processadas o mais rápido possível. Agora, a comunidade Bitcoin precisa fazer uma troca entre aceitar taxas altas e velocidades lentas de transação ou reduzir a segurança da rede para aumentar a velocidade das transações, ao mesmo tempo que derrota o propósito do sistema de pagamento em primeiro lugar. Se a comunidade Bitcoin escolher a última opção, a solução de armazenamento precisará ser ajustada diante da crescente pressão de dados.

Fonte: OKLINK

Quanto à cadeia pública com funções abrangentes, a sua busca pelo TPS é maior, com o enorme crescimento dos dados históricos, é difícil adaptar-se ao rápido crescimento do TPS no longo prazo através da adopção de uma solução do tipo DankSharding. Portanto, uma forma mais adequada é migrar os dados para um DA de terceiros para armazenamento. Entre eles, os DAs específicos da cadeia principal têm a maior compatibilidade e podem ser mais vantajosos se for considerado apenas o armazenamento de uma única cadeia pública. No entanto, hoje em dia, quando as cadeias públicas da Camada 1 estão florescendo, a transferência de ativos entre cadeias e a interação de dados também se tornaram uma busca comum da comunidade blockchain. Se considerarmos o desenvolvimento a longo prazo de todo o ecossistema blockchain, 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 validação de dados, de modo que o DA modularizado e a forma de armazenamento público DAs em cadeia podem ser uma escolha melhor. Sob a premissa de generalidade próxima, o DA modular concentra-se no fornecimento de serviços da camada DA blockchain, introduz dados de índice mais refinados para gerenciar dados históricos e pode fazer uma categorização razoável de diferentes dados da cadeia pública, o que tem mais vantagens em comparação com as cadeias públicas de armazenamento. No entanto, a proposta acima não considera o custo do ajuste da camada de consenso na cadeia pública existente, o que é extremamente arriscado. Uma pequena lacuna sistemática pode fazer com que a cadeia pública perca o consenso da comunidade. Portanto, se for uma solução transitória no processo de transformação da blockchain, o armazenamento temporário na cadeia principal pode ser mais apropriado. Finalmente, todas as discussões acima são baseadas no desempenho durante a operação real, mas se o objetivo de uma determinada cadeia pública é desenvolver a sua ecologia e atrair mais partes e participantes do projeto, ela também pode tender a favorecer projetos que são apoiados e financiados por sua fundação. Por exemplo, se o desempenho geral for igual ou mesmo ligeiramente inferior ao da solução de armazenamento em cadeia pública, a comunidade Ethereum também favorecerá o EthStorage, que é um projeto Layer2 apoiado pela Fundação Ethereum, para continuar a desenvolver o ecossistema Ethereum. .

Em suma, a crescente complexidade das blockchains atuais traz consigo uma maior necessidade de espaço de armazenamento. Com nós de validação de Camada 1 suficientes, os dados históricos não precisam de backup de todos os nós em toda a rede, mas podem garantir a segurança após um determinado limite. Ao mesmo tempo, a divisão do trabalho da 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, em seguida, um blockchain separado é usado para armazenamento de dados. Cada parte pode focar em uma determinada função sem ser limitada pelo desempenho das outras partes. No entanto, o número específico de armazenamento ou a proporção de nós permitidos para armazenar dados históricos, a fim de alcançar um equilíbrio entre segurança e eficiência, bem como garantir a interoperabilidade segura entre diferentes blockchains, é um problema que precisa ser considerado pelos desenvolvedores de blockchain. Os investidores podem prestar atenção ao principal projeto DA específico da cadeia no Ethereum, porque o Ethereum já tem apoiadores suficientes nesta fase, sem a necessidade de usar o poder de outras comunidades para expandir sua influência. É mais importante melhorar e desenvolver a sua comunidade para atrair mais projetos para o ecossistema Ethereum. No entanto, para as cadeias públicas que estão a aproximar-se, como Solana e Aptos, a cadeia única em si não tem um ecossistema tão perfeito, pelo que podem preferir unir forças com outras comunidades para construir um grande ecossistema entre cadeias para expandir a sua influência. . Portanto, para a camada 1 emergente, um DA de terceiros de uso geral merece mais atenção.

Kernel Ventures é um fundo de capital de risco de criptografia orientado pela comunidade de pesquisa e desenvolvimento com mais de 70 investimentos em estágio inicial, com foco em infraestrutura, middleware, dApps, especialmente ZK, Rollup, DEX, Modular Blockchain e verticais que integrarão o próximo bilhão de usuários em criptografia como abstração de contas, disponibilidade de dados, escalabilidade e etc. Nos últimos sete anos, nos comprometemos a apoiar o crescimento das principais comunidades de desenvolvimento e associações universitárias de blockchain em todo o mundo.

Referência

  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]. Verkle Trees, 2019, 1: 1.: https://math.mit.edu/research/highschool/primes/materials/2018/Kuszmaul.pdf

  8. Rede Arweave: https://www.arweave.org/

  9. Livro amarelo Arweave: https://www.arweave.org/yellow-paper.pdf