Kernel Ventures: Um artigo sobre DA e design de camada de dados históricos

Por Jerry Luo, Kernel Ventures

TL;DR

  1. Nos primeiros dias, as cadeias públicas exigiam nós em toda a rede para manter 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, resultando em uma tendência de centralização das operações de nós. Nesta fase, a Camada 1 precisa urgentemente resolver o problema de custo de armazenamento causado pelo crescimento do TPS.

  2. Diante desse problema, os desenvolvedores precisam propor um novo esquema histórico de armazenamento de dados com a premissa de levar em conta 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 intermédios DA, etc. Eles tentaram otimizar o esquema de armazenamento da camada DA, reduzindo a redundância de dados e melhorando a eficiência da verificação de dados.

  4. O atual regime de AD divide-se, grosso modo, em duas categorias do ponto de vista da localização do armazenamento de dados, a saber, a DA da cadeia principal e a DA de terceiros. O DA da cadeia principal é baseado na perspetiva de limpar dados regularmente e fragmentar o armazenamento de dados para reduzir a pressão de armazenamento nos nós. Os requisitos de projeto de DA de terceiros são projetados para atender ao armazenamento e ter uma solução razoável para grandes quantidades de dados. Portanto, é principalmente o compromisso entre compatibilidade de cadeia única e compatibilidade multicadeia, e três soluções são propostas: DA, DA, dedicada de cadeia principal, DA, modular, e DA, de cadeia pública de armazenamento.

  5. A cadeia pública baseada em pagamentos tem requisitos extremamente altos para a segurança de dados históricos, e é adequado usar a cadeia principal como a camada DA. No entanto, para cadeias públicas que estão funcionando há muito tempo e um grande número de mineradores estão executando a rede, é mais apropriado adotar um DA de terceiros que não envolva uma camada de consenso e leve em conta a segurança. A cadeia pública abrangente é mais adequada para o uso de armazenamento DA dedicado à cadeia principal com maior capacidade de dados, menor custo e segurança. Mas, dada a necessidade de cadeia cruzada, o DA modular também é uma boa opção.

  6. Em geral, o blockchain está se desenvolvendo na direção de reduzir a redundância de dados e a divisão de trabalho multicadeia.

1. Contexto geral

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 do armazenamento de dados. Uma vez que a correção de cada mudança de estado está relacionada com o estado anterior (a fonte da transação), a fim de garantir a exatidão da transação, um blockchain deve, em princípio, armazenar todo o histórico desde a primeira transação até a transação atual. Tomando Ethereum como exemplo, mesmo que o tamanho médio de cada bloco seja estimado em 20 kb, o tamanho total do bloco Ethereum atual atingiu 370 GB, e um nó completo tem que registrar o estado e os recibos de transação, além do próprio bloco. Contando essa parte, o volume total de armazenamento de um único nó excedeu 1 TB, o que torna a operação do nó concentrada em um pequeno número de pessoas.

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

2. Métricas de desempenho de DA

2.1 Segurança

Em comparação com o banco de dados ou estrutura de armazenamento de lista vinculada, a imutabilidade do blockchain vem do fato de que os dados recém-gerados podem ser verificados através de dados históricos, portanto, garantir a segurança de seus dados históricos é a primeira consideração no armazenamento de camada DA. Para a avaliação da segurança de dados do sistema blockchain, muitas vezes analisamos a quantidade de redundância de dados e o método de verificação de disponibilidade de dados

Número de redundância: Para a redundância de dados no sistema blockchain, ele pode desempenhar principalmente as seguintes funções: primeiro, se o número de redundância na rede for maior, quando o validador precisa verificar o status da conta em um bloco histórico para verificar a transação atual, ele pode obter o maior número de amostras para referência e selecionar os dados registrados pela maioria dos nós. Em bancos de dados tradicionais, como os dados são armazenados apenas na forma de pares chave-valor em um determinado nó, o custo de ataque é extremamente baixo para alterar dados históricos apenas em um único nó e, teoricamente falando, quanto mais redundantes forem os dados, mais confiáveis serão os dados. Ao mesmo tempo, quanto mais nós forem armazenados, menor a probabilidade de perda dos dados. Isso também pode ser comparado a servidores centralizados que armazenam jogos Web2 e, uma vez que todos os servidores back-end sejam desligados, haverá um desligamento completo. No entanto, mais não é melhor, porque cada redundância trará espaço de armazenamento adicional, e muita redundância de dados trará pressão excessiva de armazenamento para o sistema, e uma boa camada de DA deve escolher um método de redundância apropriado para encontrar um equilíbrio entre segurança e eficiência de armazenamento.

Verificação de disponibilidade de dados: a redundância garante que haja registros suficientes de dados na rede, mas os dados a serem usados também precisam ser verificados quanto à precisão e integridade. Nesta fase, o método de verificação comumente usado no blockchain é o algoritmo de compromisso criptográfico, que mantém um pequeno compromisso criptográfico para toda a rede registrar, e esse compromisso é obtido pela mistura de dados de transação. Para testar a autenticidade de um dado histórico, é necessário restaurar a promessa criptográfica através dos dados, verificar se a promessa criptográfica obtida pela restauração é consistente com os registros de toda a rede e, se for consistente, a verificação é passada. Os algoritmos de verificação de senha mais usados são Merkle Root e Verkle Root. O algoritmo de verificação de disponibilidade de dados de alta segurança requer apenas muito poucos 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 central a ser alcançado na camada de DA é reduzir custos e aumentar a eficiência. O primeiro é reduzir os custos de armazenamento, ou seja, reduzir a pegada de memória causada pelo armazenamento de dados por tamanho de unidade, sem considerar a diferença no desempenho do hardware. Nesta fase, a principal maneira de reduzir os custos de armazenamento no blockchain é adotar a tecnologia de fragmentação e usar armazenamento recompensado para garantir que os dados sejam efetivamente armazenados e reduzir o número de backups de dados. No entanto, não é difícil ver pelos métodos de melhoria acima que existe uma relação de jogo entre o custo de armazenamento e a segurança dos dados, e reduzir a ocupação de armazenamento muitas vezes significa uma diminuição na segurança. Portanto, uma boa camada de DA precisa equilibrar o custo de armazenamento com a segurança dos dados. Além disso, se a camada DA for uma cadeia pública separada, também é necessário reduzir o custo minimizando o processo intermediário de troca de dados, e os dados de índice precisam ser deixados para chamadas de consulta subsequentes em cada processo de trânsito, portanto, quanto mais longo for o processo de chamada, mais dados de índice serão deixados e o custo de armazenamento será aumentado. Por último, o custo do armazenamento de dados está diretamente relacionado com a durabilidade dos dados. Em geral, quanto maior o custo de armazenamento de dados, mais difícil é para a cadeia pública armazenar dados de forma persistente.

2.3 Velocidade de leitura de dados

Uma vez que a redução de custos é alcançada, o próximo passo é o ganho de eficiência, que é a capacidade de chamar rapidamente os dados para fora da camada de DA quando eles precisam ser usados. Este processo envolve duas etapas, a primeira é procurar os nós que armazenam dados, este processo é principalmente para a cadeia pública que não alcançou a consistência de dados de toda a rede, se a cadeia pública conseguiu a sincronização de dados dos nós de toda a rede, o consumo de tempo deste processo pode ser ignorado. Em segundo lugar, nos principais sistemas de blockchain neste estágio, incluindo Bitcoin, Ethereum e Filecoin, o método de armazenamento do nó é o banco de dados Leveldb. No Leveldb, os dados são armazenados de três maneiras. A primeira é que os dados gravados em tempo real são armazenados em um arquivo de tipo memtable e, quando o memtable está cheio, o tipo de arquivo é alterado de memtable para memtable imutável. Ambos os tipos de arquivos são armazenados na memória, mas o arquivo Immutable Memtable não pode mais ser alterado e só pode ler dados dele. O armazenamento quente usado na rede IPFS armazena os dados nesta parte, e pode ser lido rapidamente da memória quando é chamado, mas a memória móvel de um nó comum geralmente está no nível de gigabyte, o que é fácil de escrever lentamente, e quando o nó cai e outras condições anormais, os dados na memória serão perdidos permanentemente. Se você quiser que seus dados sejam armazenados persistentemente, você precisa armazená-los como um arquivo SST em uma unidade de estado sólido (SSD), mas você precisa ler os dados na memória primeiro, o que diminui muito a velocidade de indexação de dados. Finalmente, para sistemas com armazenamento fragmentado, a restauração de dados requer o envio de solicitações de dados para vários nós e restaurá-los, o que também diminuirá a velocidade de leitura de dados.

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

2.4 Camada DA Semelhança

Com o desenvolvimento do DeFi e os problemas das CEXs, a demanda por transações entre cadeias de ativos descentralizados também está crescendo. Quer se trate de um mecanismo de cadeia cruzada de bloqueio de hash, notário público ou cadeia de retransmissão, é inevitável determinar os dados históricos sobre as duas cadeias ao mesmo tempo. O cerne deste 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, nesta fase, uma solução é proposta alterando o modo de armazenamento da camada DA, que armazena os dados históricos de várias cadeias públicas na mesma cadeia pública confiável, e só precisa chamar os dados nessa cadeia pública ao verificar. Isso requer que a camada DA seja capaz de estabelecer um método de comunicação seguro com diferentes tipos de cadeias públicas, ou seja, a camada DA tem boa versatilidade.

3. Exploração de tecnologia relacionada com DA

3.1 Partilha

  • Em um sistema distribuído tradicional, um arquivo não é armazenado em uma forma completa em um nó, mas os dados originais são divididos em vários blocos e um bloco é armazenado em cada nó. E os blocos tendem a não ser armazenados em apenas um nó, mas a ter backups apropriados em outros nós, que geralmente é definido como 2 em sistemas distribuídos convencionais existentes. Esse mecanismo de fragmentação pode reduzir a pressão de armazenamento em um único nó, expandir a capacidade total do sistema para a soma da capacidade de armazenamento de cada nó e garantir a segurança do armazenamento por meio de redundância de dados adequada. A abordagem de fragmentação adotada em um blockchain é amplamente semelhante, mas há diferenças nas especificidades. Em primeiro lugar, porque cada nó no blockchain não é confiável por padrão, uma quantidade grande o suficiente de dados é necessária para fazer backup para a autenticidade de dados subsequente no processo de implementação de Sharding, então o número de backups desse nó precisa ser muito mais do que 2. Idealmente, em um sistema blockchain com este esquema de armazenamento, se o número total de validadores é T e o número de fragmentos é N, então o número de backups deve ser T / N. O segundo é o procedimento de armazenamento do Block, o sistema distribuído tradicional tem menos nós, por isso muitas vezes é um nó para se adaptar a vários blocos de dados, o primeiro é mapear os dados para o anel de hash através do algoritmo de hash consistente, e então cada nó armazena um número de blocos de dados em um determinado intervalo, e pode ser aceito que um nó não aloca uma tarefa de armazenamento em um determinado armazenamento. No blockchain, se cada nó é atribuído a um bloco não é mais um evento aleatório, mas um evento inevitável, e cada nó selecionará aleatoriamente um bloco para armazenamento, que é completado calculando o número de fragmentos com o resultado do hash de dados com os dados originais do bloco e as próprias informações do nó. Supondo que cada parte dos dados seja dividida em blocos N, o tamanho real de armazenamento de cada nó é apenas 1/N do tamanho original. Ao definir N adequadamente, um equilíbrio entre o TPS crescente e a pressão de armazenamento do nó pode ser alcançado.

Como os dados são armazenados após o compartilhamento, fonte da imagem: Kernel Ventures

3.2 DAS (Amostragem de Disponibilidade de Dados)

A tecnologia DAS baseia-se na otimização adicional do Sharding em termos de métodos de armazenamento. No processo de fragmentação, devido ao simples armazenamento aleatório de nós, um determinado bloco pode ser perdido. Em segundo lugar, para os dados fragmentados, como confirmar a autenticidade e integridade dos dados durante o processo de restauração também é muito importante. No DAS, ambos os problemas são abordados através do código Eraser e compromissos polinomiais KZG.

Código de borracha: Considerando o grande número de validadores no Ethereum, a probabilidade de um bloco não ser armazenado por nenhum nó é quase zero, mas teoricamente ainda há a possibilidade de ocorrer uma situação tão extrema. Para mitigar essa possível ameaça de perda de armazenamento, em vez de dividir diretamente os dados originais em blocos para armazenamento, os dados originais são mapeados para os coeficientes de um polinômio de nona ordem e, em seguida, 2n pontos são tomados no polinômio, e o nó seleciona aleatoriamente um deles para armazenamento. Para este polinômio de nona ordem, apenas n+1 pontos são necessários para restaurar, portanto, apenas metade dos blocos precisam ser selecionados pelos nós para restaurar os dados originais. Através do código Eraser, a segurança do armazenamento de dados e a capacidade da rede de recuperar dados são melhoradas.

KZG Polynomial Promise: Uma parte muito importante do armazenamento de dados é a verificação da autenticidade dos dados. Em redes que não usam código Eraser, existem várias maneiras de validar o processo, mas se o código Eraser acima for introduzido para melhorar a segurança dos dados, então é mais apropriado usar compromissos polinomiais KZG. O polinômio KZG promete verificar diretamente o conteúdo de um único bloco na forma de polinômios, eliminando assim a necessidade de restaurar polinômios para dados binários, e o formulário de verificação é geralmente semelhante ao da Merkle Tree, mas nenhum dado específico do nó Path é necessário, apenas os dados de raiz e bloco KZG são necessários para verificar sua autenticidade.

3.3 Modo de verificação de dados da camada DA

A validação de dados garante que os dados chamados a partir do nó não foram adulterados e não foram perdidos. A fim de reduzir ao máximo a quantidade de dados e o custo computacional necessário no processo de verificação, a camada DA atualmente adota a estrutura em árvore como o 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, e só precisa manter uma raiz Merkle e o valor de hash da subárvore do outro lado do caminho do nó para ser verificado, e a complexidade de tempo da verificação é o nível O(logN) (logN padrão para log2(N) se o número não for baseado). Embora o processo de validação tenha sido muito simplificado, a quantidade de dados no processo de validação geralmente aumentou com o aumento dos dados. A fim de resolver o problema do aumento da quantidade de verificação, é proposto nesta fase outro método de verificação, o Verkle Tree. Além de armazenar valor, cada nó na Verkle Tree também virá com um Compromisso Vetorial, através do valor do nó original e desta prova de compromisso, você pode verificar rapidamente a autenticidade dos dados, sem chamar o valor de outros nós irmãos, o que torna o número de cálculos para cada verificação apenas relacionado à profundidade da Verkle Tree, que é uma constante fixa, acelerando muito a velocidade de verificação. No entanto, o cálculo do Compromisso Vetorial requer a participação de todos os nós irmãos na mesma camada, o que aumenta muito o custo de escrever e alterar dados. No entanto, para dados históricos, que são armazenados permanentemente e não podem ser adulterados, Verkle Tree é extremamente adequado. Além disso, também existem variantes da Merkle Tree e Verkle Tree na forma de K-ary, e seu mecanismo de implementação específico é semelhante, mas o número de subárvores sob cada nó é alterado, e a comparação de seu desempenho específico pode ser vista na tabela a seguir.

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

3.4 Middleware DA genérico

A expansão contínua da ecologia blockchain trouxe um aumento no número de cadeias públicas. Devido às vantagens e insubstituíbilidade de cada cadeia pública em seus respetivos campos, é quase impossível que a cadeia pública Layer1 se torne unificada em um curto período de tempo. No entanto, com o desenvolvimento do DeFi e os problemas dos CEXs, a demanda por ativos de negociação descentralizados entre cadeias também está crescendo. Como resultado, o armazenamento de dados multicadeia em camada DA, que pode eliminar problemas de segurança em trocas de dados entre cadeias, tem recebido 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 um protocolo descentralizado para armazenamento padronizado e verificação de fluxos de dados, como o kvye, um middleware de armazenamento baseado no Arweave, que toma a iniciativa de capturar dados da cadeia e pode armazenar todos os dados da cadeia em um formulário padrão para a Arweave minimizar as diferenças no processo de transmissão de dados. Relativamente falando, a Layer2, especializada em fornecer armazenamento de dados em camada DA para uma determinada cadeia pública, interage com os dados por meio de nós de compartilhamento internos, o que reduz o custo de interação e melhora a segurança, mas tem limitações relativamente grandes e só pode fornecer serviços para cadeias públicas específicas.

4. Esquema de armazenamento em camadas de DA;

4.1 Mainchain DA

4.1.1 classe DankSharding

Não há um nome definido para este tipo de esquema de armazenamento, e o representante mais proeminente deste tipo de esquema de armazenamento é DankSharding no Ethereum, então o esquema semelhante ao DankSharding é usado neste artigo. Este tipo de solução usa principalmente as duas tecnologias de armazenamento DA mencionadas acima, Sharding e DAS. Primeiro, o Sharding divide os dados em partes apropriadas e, em seguida, permite que cada nó extraia um bloco de dados na forma de DAS para armazenamento. Se houver nós suficientes em toda a rede, podemos pegar um número maior de fragmentos N, de modo que a pressão de armazenamento de cada nó seja apenas 1/N do original, de modo a atingir N vezes a expansão total do espaço de armazenamento. Ao mesmo tempo, a fim de garantir que um bloco não seja armazenado em nenhum bloco no caso extremo, DankSharding codifica os dados usando Eraser Code, e apenas metade dos dados pode ser totalmente restaurado. Finalmente, o processo de validação de dados utiliza a estrutura da árvore de Verkle e o compromisso polinomial para alcançar uma validação rápida.

4.1.2 Armazenamento de curto prazo

Uma das maneiras mais simples de processar dados para DA na cadeia principal é armazenar dados históricos por um curto período de tempo. Em essência, o blockchain desempenha o papel de um livro-razão público, realizando mudanças no conteúdo do livro-razão sob a premissa de toda a rede testemunhando, sem a necessidade de armazenamento permanente. Tomando Solana como exemplo, embora seus dados históricos sejam sincronizados com o Arweave, os nós da mainnet retêm apenas os dados de transação dos últimos dois dias. Na cadeia pública baseada em registros de conta, os dados históricos de cada momento retêm o estado final da conta no blockchain, o que é suficiente para fornecer uma base de verificação para o próximo momento de mudança. Para projetos com necessidades especiais de dados antes desse período, eles podem armazená-los em outras cadeias públicas descentralizadas ou por terceiros confiáveis. Isso significa que as pessoas que têm necessidades de dados adicionais precisam pagar pelo armazenamento de dados históricos.

4.2 DAs de terceiros

4.2.1 Mainchain DA: EthStorage

DA para a cadeia principal:D O mais importante na camada A é a segurança da transmissão de dados, e o mais seguro a este respeito é o DA da cadeia principal. No entanto, o armazenamento de cadeia principal é limitado pelo espaço de armazenamento e pela concorrência por recursos, portanto, quando a quantidade de dados de rede cresce rapidamente, se você quiser obter armazenamento de dados de longo prazo, o DA de terceiros será uma escolha melhor. Se o DA de terceiros tiver maior compatibilidade com a mainnet, ele pode realizar o compartilhamento de nós e ter maior segurança no processo de troca de dados. Portanto, sob a premissa de considerar a segurança, haverá enormes vantagens para o DA dedicado à cadeia principal. Tomando o Ethereum como exemplo, um dos requisitos básicos da cadeia principal dedicada DA é que ele pode ser compatível com EVM para garantir a interoperabilidade com dados e contratos Ethereum, e projetos representativos incluem Topia, EthStorage, etc. Entre eles, o EthStorage é atualmente o mais desenvolvido em termos de compatibilidade, porque além da compatibilidade no nível EVM, ele também configura interfaces relevantes para se conectar com ferramentas de desenvolvimento Ethereum como Remix e Hardhat para alcançar compatibilidade no nível da ferramenta de desenvolvimento Ethereum.

EthStorage: EthStorage é uma cadeia pública independente do Ethereum, mas os nós que rodam nele são superiores aos nós Ethereum, ou seja, os nós que executam o EthStorage também podem executar Ethereum ao mesmo tempo, e o EthStorage pode ser operado diretamente através do opcode no Ethereum. No modelo de armazenamento do EthStorage, que mantém apenas uma pequena quantidade de metadados na rede principal do Ethereum para indexação, essencialmente cria um banco de dados descentralizado para o Ethereum. Na solução atual, a EthStorage implementou a interação entre a rede principal Ethereum e a EthStorage implantando um contrato EthStorage na rede principal Ethereum. Se o Ethereum quiser depositar dados, ele precisa chamar a função put() no contrato, e os parâmetros de entrada são duas variáveis de byte chave, dados, onde os dados representam os dados a serem depositados, e chave é a sua identificação na rede Ethereum, que pode ser visto como semelhante à existência de CID em IPFS. Depois que o par (chave, dados) for armazenado com sucesso na rede EthStorage, o EthStorage irá gerar um kvldx e devolvê-lo para a rede principal Ethereum, que corresponde à chave no Ethereum, e esse valor corresponde ao endereço de armazenamento dos dados no EthStorage, de modo que o problema de armazenar uma grande quantidade de dados agora é alterado para armazenar um único par (chave, kvldx), o que reduz muito o custo de armazenamento da rede principal Ethereum. Se você precisar fazer uma chamada para os dados armazenados anteriormente, você precisa usar a função get() no EthStorage e inserir o parâmetro key, e você pode realizar uma pesquisa rápida nos dados no EthStorage através do kvldx armazenado no Ethereum.

Contrato EthStorage, fonte da imagem: Kernel Ventures

Em termos da forma como os nós armazenam dados, o EthStorage toma emprestado o padrão de Arweave. Em primeiro lugar, um grande número de pares (k,v) de ETH são fragmentados, e cada fragmentação contém um número fixo de pares de dados (k,v), dos quais também há um limite no tamanho específico de cada par (k,v), de modo a garantir a equidade do tamanho da carga de trabalho no processo de armazenamento de recompensas para mineradores. Para a emissão de recompensas, você precisa verificar se o nó armazena dados. Neste processo, o EthStorage divide um sharding (tamanho de terabyte) em um grande número de pedaços e mantém uma raiz Merkle na mainnet Ethereum para validação. Em seguida, o minerador precisa fornecer um nonce para gerar os endereços de vários blocos através de 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 realmente armazenou todo o fragmento. No entanto, este nonce não pode ser selecionado arbitrariamente, caso contrário, o nó selecionará um nonce adequado que só corresponde ao seu bloco armazenado para passar na verificação, então esse nonce deve fazer com que o pedaço gerado atenda aos requisitos de rede após a mistura e hash, e apenas o primeiro nó a enviar o nonce e a prova de acesso aleatório pode obter a recompensa.

4.2.2 Modular DA: Celestia

Módulo Blockchain: Nesta fase, as transações que precisam ser executadas pela cadeia pública da Camada 1 são divididas principalmente nas seguintes quatro partes: (1) projetar a lógica subjacente da rede, selecionar validadores de uma determinada maneira, escrever blocos e distribuir recompensas aos mantenedores da rede, (2) empacotar e processar transações e publicar transações relacionadas, (3) verificar as transações a serem colocadas na cadeia e determinar o estado final, e (4) armazenar e manter dados históricos no blockchain. Dependendo das funções realizadas, podemos dividir o blockchain em quatro módulos, ou seja, a camada de consenso, a camada de execução, a camada de liquidação e a camada de disponibilidade de dados (camada DA).

Design de blockchain modular: Por muito tempo, esses quatro módulos foram integrados em uma cadeia pública, e tal blockchain é chamado de blockchain monolítico. Esta forma é mais estável e fácil de manter, mas também coloca muita pressão sobre uma única cadeia pública. Na prática, estes quatro módulos limitam-se mutuamente e competem pelos limitados recursos informáticos e de armazenamento da cadeia pública. Por exemplo, aumentar a velocidade de processamento da camada de processamento colocará mais pressão de armazenamento na camada de disponibilidade de dados, e garantir a segurança da camada de execução exigirá mecanismos de autenticação mais complexos que retardam o processamento de transações. Portanto, o desenvolvimento de cadeias públicas muitas vezes enfrenta trade-offs entre esses quatro módulos. A fim de quebrar o gargalo de melhorar o desempenho dessa cadeia pública, os desenvolvedores propuseram um esquema modular de blockchain. A ideia central do blockchain modular é separar um ou vários dos quatro módulos acima e entregá-los a uma implementação de cadeia pública separada. Desta forma, na cadeia pública, você só pode se concentrar na melhoria da velocidade de transação ou capacidade de armazenamento, e quebrar as limitações anteriores causadas pelo efeito short-board no desempenho geral do blockchain.

Modular DA: A abordagem complexa de separar a camada DA do negócio de blockchain e entregá-la a uma única cadeia pública é considerada uma solução viável para os dados históricos crescentes da Camada 1. A exploração nesta área está ainda numa fase inicial, sendo o Celestia o projeto mais representativo neste momento. Em termos do método de armazenamento específico, Celestia toma emprestado o método de armazenamento de Danksharding, que é dividir os dados em vários blocos, extrair uma parte deles por cada nó para armazenamento e verificar a integridade dos dados com o compromisso polinomial KZG. Ao mesmo tempo, Celestia usa codificação avançada de eliminação 2D RS para reescrever os dados originais na forma de uma matriz kk e, finalmente, 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 dos nós em toda a rede por um fator no volume total de dados, e a pressão de armazenamento e o volume de dados dos nós ainda mantêm um crescimento linear. Como a Camada 1 continua a melhorar a velocidade de transação, a pressão de armazenamento dos nós ainda pode atingir um limite inaceitável um dia. Para resolver este problema, o componente IPLD foi introduzido no Celestia para processamento. Para os dados na matriz kk, eles não são armazenados diretamente no Celestia, mas na rede LL-IPFS, e apenas o código CID desses dados no IPFS é mantido no nó. Quando um usuário solicita uma parte dos dados históricos, o nó envia o CID correspondente para o componente IPLD e usa o CID para chamar os dados brutos no IPFS. Se existirem dados no IPFS, eles serão retornados por meio de componentes e nós IPLD e, se não estiverem, não poderão ser retornados.

Como os dados Celestia são lidos, fonte da imagem: Celestia Core

Celestia: Tomando Celestia como exemplo, podemos ter um vislumbre da aplicação do blockchain modular na resolução do problema de armazenamento do Ethereum. O nó Rollup enviará os dados de transação empacotados e verificados para a Celestia e armazenará os dados na Celestia, neste processo, a Celestia apenas armazena os dados sem muita consciência e, finalmente, de acordo com o tamanho do espaço de armazenamento, o nó Rollup pagará os tokens tia correspondentes à Celestia como taxas de armazenamento. O armazenamento no Celstia aproveita o DAS e a codificação de eliminação semelhante à do EIP4844, mas a codificação de eliminação polinomial no EIP4844 é atualizada para codificação de eliminação RS 2D e a segurança do armazenamento é atualizada novamente, exigindo apenas 25% de fraturas para restaurar todos os dados da transação. Essencialmente, é apenas uma cadeia pública de POS de baixo custo, e se você quiser resolver o problema histórico de armazenamento de dados do Ethereum, precisará de muitos outros módulos específicos para trabalhar com o Celestia. Por exemplo, em termos de rollups, um dos modos de rollup mais recomendados no site oficial da Celestia é o Sovereign Rollup. Diferente dos rollups comuns na Camada 2, apenas a transação é calculada e verificada, ou seja, a operação da camada de execução é concluída. O Sovereign Rollup engloba todo o processo de execução e liquidação, o que minimiza o processamento de transações na Celestia, o que pode maximizar a segurança do processo geral de transação quando a segurança geral da Celestia é mais fraca do que a do Ethereum. Em termos de garantir a segurança dos dados chamados pela Celestia na mainnet Ethereum, a solução mais convencional é o contrato inteligente de ponte de gravidade quântica. Para dados armazenados no Celestia, ele gera uma Raiz Merkle (Prova de Disponibilidade de Dados) e permanece no contrato de ponte gravitacional quântica na rede principal Ethereum, e toda vez que o Ethereum chama dados históricos na Celestia, ele compara seu resultado de hash com Merkle Root, e se isso acontecer, significa que são de fato dados históricos verdadeiros.

4.2.3 Loja cadeia pública DA

Em termos do princípio da tecnologia DA da cadeia principal, muitas tecnologias semelhantes ao Sharding são emprestadas da cadeia pública de armazenamento. Entre as DAs de terceiros, algumas delas concluíram algumas tarefas de armazenamento diretamente com a ajuda da cadeia pública de armazenamento, como os dados de transação específicos no Celestia são colocados na rede LL-IPFS. Na solução de DA de terceiros, além de construir uma cadeia pública separada para resolver o problema de armazenamento da Camada 1, uma maneira mais direta é conectar diretamente a cadeia pública de armazenamento com a Camada 1 para armazenar os enormes dados históricos na Camada 1. Para blockchains de alto desempenho, o volume de dados históricos é ainda maior, e o tamanho dos dados da cadeia pública de alto desempenho Solana está perto de 4 PG quando executado a toda velocidade, o que está completamente além da faixa de armazenamento dos nós comuns. A solução escolhida por Solana foi armazenar dados históricos no Arweave, uma rede de armazenamento descentralizada, e manter apenas 2 dias de dados em nós na rede principal para verificação. A fim de garantir a segurança do processo armazenado, Solana e a cadeia Arweave projetaram um protocolo de ponte de armazenamento, Solar Bridge. Os dados verificados pelo nó Solana são sincronizados com o Arweave e a tag correspondente é retornada. Com esta tag, os nós Solana podem visualizar os dados históricos do blockchain Solana a qualquer momento. No Arweave, não é necessário que os nós em toda a rede mantenham a consistência dos dados e usem isso como um limite para participar da operação da rede, mas adotam o método de armazenamento de recompensas. Em primeiro lugar, Arweave não usa uma estrutura de cadeia tradicional para construir blocos, mas mais como uma estrutura de gráfico. No Arweave, um novo bloco aponta não apenas para o bloco anterior, mas também para um Bloco de Recall gerado aleatoriamente. A localização exata de um Bloco de Recall é determinada pelo hash de seu bloco anterior e sua altura de bloco, e a localização do Bloco de Recall é desconhecida até que o bloco anterior seja minerado. No entanto, no processo de geração de novos blocos, os nós são obrigados a ter os dados do Bloco de Recall para usar o mecanismo POW para calcular o hash da dificuldade especificada, e apenas os mineradores que primeiro calculam o hash que corresponde à dificuldade podem ser recompensados, incentivando os mineradores a armazenar o máximo de dados históricos possível. Ao mesmo tempo, quanto menos pessoas armazenarem um bloco histórico, menos concorrentes o nó terá ao gerar uma dificuldade nenhuma, incentivando os mineradores a armazenar blocos com menos backups na rede. Finalmente, para garantir que os nós possam armazenar dados permanentemente no Arweave, o mecanismo de pontuação de nós do WildFire é introduzido. Os nós tendem a se comunicar com nós que podem fornecer mais dados históricos mais rapidamente, enquanto os nós com classificações mais baixas muitas vezes não têm acesso aos dados de bloco e transação mais recentes em primeiro lugar, portanto, eles não podem assumir a liderança na competição por POW.

Como os blocos Arweave são construídos, fonte da imagem: Arweave Yellow-Paper

5. Comparação abrangente

Em seguida, compararemos os prós e contras de cada um dos cinco cenários de armazenamento com base nas quatro dimensões das métricas de desempenho de DA.

Segurança: A maior fonte de problemas de segurança de dados é a perda causada pela transmissão de dados e adulteração maliciosa de nós desonestos, e no processo cross-chain, devido à independência e estado das duas cadeias públicas não são compartilhadas, é a área mais atingida da segurança de transmissão de dados. Além disso, a camada 1 que requer uma camada DA dedicada neste estágio geralmente tem 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, o esquema da cadeia principal DA tem maior segurança. Depois de garantir a segurança da transmissão de 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 copiados por toda a rede armazenada temporariamente, enquanto o número médio de backups de dados no esquema semelhante ao DankSharping é de apenas 1/N do número de nós em toda a rede, mais redundância de dados pode tornar os dados menos propensos a serem perdidos e também pode fornecer mais amostras de referência para verificação. Por conseguinte, o armazenamento temporário terá uma maior segurança dos dados. No esquema de DA de terceiros, o DA dedicado da cadeia principal usa nós comuns 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, também terá segurança relativamente maior do que outras soluções de DA.

Custo de armazenamento: o maior contribuinte para os custos de armazenamento é a quantidade de redundância de dados. Na solução de armazenamento de curto prazo da cadeia principal DA, a sincronização de dados dos nós de toda a rede é usada para armazenamento, e quaisquer dados recém-armazenados precisam ser copiados pelos nós de toda a rede, que tem o maior custo de armazenamento. O alto custo de armazenamento, por sua vez, determina que este método só é adequado 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 DAs de terceiros. Como a cadeia principal tende a ter mais nós, haverá mais backups para cada bloco, então a solução de fragmentação da cadeia principal terá um custo mais alto. O menor custo de armazenamento é o DA da cadeia pública de armazenamento que adota o método de armazenamento de recompensa, e a quantidade de redundância de dados nesse esquema geralmente flutua em torno de uma constante fixa. Ao mesmo tempo, um mecanismo de ajuste dinâmico também foi introduzido no DA da cadeia pública de armazenamento 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 dos dados é afetada principalmente pelo local de armazenamento dos dados no espaço de armazenamento, o caminho do índice de dados e a distribuição dos dados nos nós. Entre eles, onde os dados são armazenados no nó tem um impacto maior na velocidade, porque armazenar os dados na memória ou SSD pode fazer com que a velocidade de leitura varie em dezenas de vezes. A cadeia pública de armazenamento DA adota principalmente o armazenamento SSD, porque a carga na cadeia inclui não apenas os dados da camada DA, mas também os dados pessoais com alta ocupação de memória, como vídeos e fotos carregadas pelos usuários. Se a rede não utilizar SSD como espaço de armazenamento, é difícil suportar a enorme pressão de armazenamento e satisfazer as necessidades de armazenamento a longo prazo. Em segundo lugar, para DAs de terceiros e DAs de cadeia principal que usam dados de armazenamento na memória, o DA de terceiros precisa primeiro procurar os dados de índice correspondentes na cadeia principal e, em seguida, transferir os dados de índice para o DA de terceiros em toda a cadeia e retornar os dados através da ponte de armazenamento. Por outro lado, os DAs da cadeia principal podem consultar dados diretamente dos nós e, portanto, têm velocidades de recuperação de dados mais rápidas. Finalmente, dentro da cadeia principal DA, o método Sharding precisa chamar o bloco de vários nós e restaurar os dados originais. Como resultado, o armazenamento de curto prazo é mais lento do que o armazenamento de curto prazo sem fragmentação.

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. Em DAs de terceiros, a versatilidade da solução e sua compatibilidade com uma cadeia principal específica são um par de indicadores contraditórios. Por exemplo, em um esquema de DA específico da cadeia principal projetado para uma determinada cadeia principal, um grande número de melhorias foram feitas no tipo de nó e no nível de consenso de rede para se adaptar à cadeia pública, de modo que essas melhorias podem ser um grande obstáculo na comunicação com outras cadeias públicas. No entanto, dentro do DA, em comparação com o DA, em comparação com o DA, o DA da cadeia pública de armazenamento tem um desempenho melhor em termos de versatilidade. A cadeia pública de armazenamento DA tem uma comunidade de desenvolvedores maior e mais instalações de expansão, que podem se adaptar à situação de diferentes cadeias públicas. Ao mesmo tempo, o DA da cadeia pública de armazenamento obtém dados mais ativamente por meio da captura de pacotes, em vez de receber passivamente informações transmitidas de outras cadeias públicas. Portanto, ele pode codificar dados de sua própria maneira, realizar 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 do desempenho da solução de armazenamento, fonte da imagem: Kernel Ventures

6. Resumo

Blockchains neste estágio estão passando por uma transição de Crypto para uma Web3 mais inclusiva, trazendo mais do que apenas uma riqueza de projetos no blockchain. Para acomodar tantos projetos em execução ao mesmo tempo na Camada 1, garantindo a experiência dos projetos Gamefi e Socialfi, a Camada 1, representada pelo Ethereum, adotou métodos como Rollups e Blobs para melhorar o TPS. Entre os blockchains nascentes, o número de blockchains de alto desempenho também está crescendo. Mas TPS mais alto significa não apenas maior desempenho, mas também maior pressão de armazenamento na rede. Para os dados históricos maciços, uma variedade de métodos de DA baseados na cadeia principal e de terceiros são propostos nesta fase para se adaptar ao crescimento da pressão de armazenamento na cadeia. Existem prós e contras em cada método de melhoria, e tem aplicabilidade diferente em diferentes contextos.

As blockchains baseadas em pagamento têm requisitos extremamente altos para a segurança de dados históricos e não perseguem TPS particularmente alto. Se esse tipo de cadeia pública ainda estiver em fase preparatória, você pode adotar um método de armazenamento semelhante ao DankSharding, que pode alcançar um enorme aumento na capacidade de armazenamento, garantindo a segurança. No entanto, se for uma cadeia pública como o Bitcoin, que foi formada e tem um grande número de nós, há um enorme risco em fazer melhorias apressadas na camada de consenso, então é possível adotar um DA dedicado para a cadeia principal com alta segurança no armazenamento off-chain para levar em conta questões de segurança e armazenamento. Mas vale a pena notar que a funcionalidade do blockchain não é estática, mas está em constante mudança. Por exemplo, nos primeiros dias, as funções do Ethereum eram limitadas principalmente a pagamentos e ao uso de contratos inteligentes para simplesmente automatizar ativos e transações, mas com a expansão contínua do território blockchain, vários projetos Socialfi e Defi foram gradualmente adicionados ao Ethereum, fazendo com que o Ethereum se desenvolvesse em uma direção mais abrangente. Recentemente, com o surto da ecologia de inscrição no Bitcoin, a taxa de transação da rede Bitcoin aumentou quase 20 vezes desde agosto, refletindo que a velocidade de transação da rede Bitcoin neste estágio não pode atender à demanda de transação, e os comerciantes só podem aumentar a taxa de transação para que a transação possa ser processada o mais rápido possível. Agora, a comunidade Bitcoin precisa fazer uma compensação, seja para aceitar altas taxas e velocidades de transação lentas, ou para reduzir a segurança da rede para aumentar a velocidade da transação, mas ir contra o propósito original do sistema de pagamento. Se a comunidade Bitcoin escolher o último, então o esquema de armazenamento correspondente também precisará ser ajustado em face da crescente pressão de dados.

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

Para a cadeia pública com funções abrangentes, tem uma maior busca de TPS, e o crescimento de dados históricos é ainda maior, e é difícil se adaptar ao rápido crescimento do TPS a longo prazo adotando uma solução do tipo DankSharding. Portanto, é mais apropriado migrar os dados para um DA de terceiros para armazenamento. Entre eles, o DA dedicado à cadeia principal tem a maior compatibilidade, podendo ser mais vantajoso se for considerado apenas o problema de armazenamento de uma única cadeia pública. No entanto, na cadeia pública Layer1 de hoje, 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, armazenar os 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 maneira de DA modular e armazenamento de DA de cadeia pública pode ser uma escolha melhor. Sob a premissa de universalidade próxima, o DA modular se concentra no fornecimento de serviços da camada DA do blockchain, e introduz dados históricos de gerenciamento de dados de índice mais refinados, que podem fazer uma classificação razoável de dados de diferentes cadeias públicas, e tem mais vantagens em comparação com o armazenamento de cadeias públicas. No entanto, o esquema acima não leva em conta o custo do ajuste da camada de consenso na cadeia pública existente, o que é extremamente arriscado e, uma vez que há um problema, 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 no processo de escalonamento de blockchain, o armazenamento temporário mais simples da cadeia principal pode ser mais adequado. Finalmente, as discussões acima são baseadas no desempenho no processo de operação real, mas se o objetivo de uma cadeia pública é desenvolver sua própria ecologia e atrair mais participantes e participantes do projeto, ela também pode preferir projetos que são apoiados e financiados por sua própria fundação. Por exemplo, no caso do mesmo ou até mesmo um desempenho geral ligeiramente inferior ao esquema de armazenamento em cadeia pública, a comunidade Ethereum também preferirá o EthStorage como um projeto Layer2 apoiado pela Fundação Ethereum para continuar a desenvolver o ecossistema Ethereum.

Em suma, a crescente complexidade das blockchains atuais também traz consigo maiores requisitos de espaço de armazenamento. Se houver validadores de Camada 1 suficientes, os dados históricos não precisam ser copiados por todos os nós em toda a rede e só precisam ser copiados para um determinado número para garantir a segurança relativa. Ao mesmo tempo, a divisão de trabalho das cadeias públicas está se tornando cada vez mais detalhada, com a Camada 1 responsável pelo consenso e execução, o Rollup responsável pelo cálculo e verificação e, em seguida, usando um blockchain separado para armazenamento de dados. Cada parte pode se concentrar em uma função sem ser limitada pelo desempenho das outras. No entanto, quanto ou qual porcentagem de nós armazenar dados históricos para alcançar um equilíbrio entre segurança e eficiência, e como garantir a interoperabilidade segura entre diferentes blockchains, é uma questão que os desenvolvedores de blockchain precisam pensar e melhorar constantemente. Para os investidores, eles podem prestar atenção ao projeto DA dedicado à cadeia principal no Ethereum, porque o Ethereum já tem apoiadores suficientes nesta fase que não precisa depender de outras comunidades para expandir sua influência. Mais necessidades são melhorar e desenvolver suas próprias comunidades e atrair mais projetos para pousar no ecossistema Ethereum. No entanto, para cadeias públicas na posição de perseguidores, como Solana e Aptos, a cadeia única em si não tem um ecossistema tão completo, então pode estar mais inclinada a unir as forças de outras comunidades para construir um enorme ecossistema de cadeia cruzada para expandir sua influência. Portanto, para a Camada 1 emergente, DAs genéricas de terceiros merecem mais atenção.

Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • Comentário
  • Repostar
  • Compartilhar
Comentário
0/400
Sem comentários
  • Marcar

Negocie criptomoedas a qualquer hora e em qualquer lugar
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)