O que é fragmentação?

À medida que o debate sobre o dimensionamento em criptomoedas continua, algumas soluções potenciais já estão em desenvolvimento há algum tempo.

Especificamente, no caso do Ethereum, onde um grande foco é colocado na descentralização e segurança em detrimento da escalabilidade, a aplicação de fragmentação em conjunto com a implementação do consenso de Prova de Participação é vista como o mecanismo muito necessário através do qual a rede pode escalar para níveis práticos para aplicativos, mantendo sua descentralização e segurança.

Sharding é um tópico complexo, especialmente quando aplicado a uma rede descentralizada, ponto a ponto, como Ethereum, onde o estado global da rede é constantemente atualizado.

Então, o que exatamente é fragmentação e como isso pode ajudar as redes de blockchain a escalar?

Fundo de fragmentação e computação distribuída

Sharding é na verdade muito mais antigo que a tecnologia blockchain e foi implementado em uma variedade de sistemas, desde otimizações de banco de dados de negócios até Banco de dados global de Spanner do Google.

  • Essencialmente, a fragmentação é um método específico para particionar dados horizontalmente em um banco de dados.
  • De forma mais geral, o banco de dados é dividido em pequenos pedaços chamados “fragmentos”, que quando agregados formam o banco de dados original.
  • Em redes distribuídas de blockchain, a rede consiste em uma série de nós conectados em um formato ponto a ponto, sem autoridade central.
  • Como é o caso dos sistemas blockchain atuais, cada nó armazena todos os estados da rede e processa todas as transações.
  • Embora isso forneça segurança de alto nível por meio da descentralização, especialmente em sistemas de Prova de Trabalho, como Bitcoin e Ethereum, leva a problemas legítimos de dimensionamento.

Ethereum Sharding

Usando Ethereum como exemplo, um nó completo na rede Ethereum armazena todo o estado da blockchain, incluindo saldos de contas, armazenamento e código de contrato.

Infelizmente, à medida que o tamanho da rede aumenta em um ritmo exponencial, o consenso aumenta apenas linearmente. Essa limitação se deve à comunicação necessária entre os nós necessários para se chegar a um consenso.

Os nós da rede não têm privilégios especiais e cada nó da rede armazena e processa todas as transações. Como resultado, em uma rede do tamanho da Ethereum, problemas como altos custos de gás e tempos de confirmação de transação mais longos tornam-se problemas perceptíveis quando a rede está sobrecarregada. A rede é tão rápida quanto os nós individuais, e não a soma de suas partes.

A fragmentação ajuda a aliviar esses problemas, fornecendo uma solução interessante, mas complexa. O conceito envolve o agrupamento de subconjuntos de nós em fragmentos que, por sua vez, processam transações específicas para esse fragmento. Ele permite que o sistema processe muitas transações em paralelo, aumentando significativamente o rendimento.

Uma maneira mais simples de colocar isso seria imaginar a divisão dos Estados Unidos em estados.

Embora cada estado (um fragmento neste caso) faça parte do maior dos Estados Unidos (rede Ethereum), eles têm suas próprias regras, limites e subconjuntos de populações específicas. No entanto, eles compartilham uma língua e cultura universais como parte de sua rede maior que compõe o país.

Ou melhor ainda, nas próprias palavras de Vitalik Buterin:

 “Imagine que Ethereum foi dividido em milhares de ilhas. Cada ilha pode fazer suas próprias coisas. Cada uma das ilhas tem suas próprias características únicas e todos os pertencentes a essa ilha, ou seja, as contas, podem interagir entre si E podem se entregar livremente a todas as suas características. Se quiserem entrar em contato com outras ilhas, terão que usar algum tipo de protocolo. ”

Como você pode ver, o conceito de fragmentar a rede em partes mais eficientes permite que a rede funcione como a soma de suas partes, em vez de ser limitada pela velocidade de cada nó individual.

Como funciona a fragmentação em blockchains?

Continuaremos a usar o Ethereum como um exemplo, pois é a tentativa de sharding mais conhecida e árdua na área de blockchain, já que os desenvolvedores do Ethereum estão implementando o que é conhecido como “sharding de estado”.

O estado atual do blockchain Ethereum é conhecido como “estado global” e é o que todos podem ver quando olham para o blockchain em uma instância específica.

A parte complicada na implementação de fragmentação no Ethereum é que, fragmentando os nós em subconjuntos menores, esses subconjuntos precisam ser capazes de processar conjuntos específicos de transações enquanto atualizam simultaneamente o estado da rede, garantindo que seja válido.

O sharding no Ethereum deve ser implementado em uma implementação em duas fases, mais do que provavelmente depois que a Prova de Participação for implementada na rede. A fase um será a camada de dados que consiste no consenso de quais dados estão nos fragmentos. A fase dois é a camada de estado. Tudo isso é muito fluido, então uma análise geral de como pode funcionar está abaixo.

Ethereum divide a rede em fragmentos específicos. Cada fragmento é atribuído a um grupo específico de transações que é determinado pelo agrupamento de contas específicas (incluindo contratos inteligentes) em um fragmento. Cada grupo de transação tem um cabeçalho e um corpo que consiste no seguinte.

Cabeçalho

  • O shard ID do grupo de transação
  • Atribuição de validadores por meio de amostragem aleatória (verifique as transações no fragmento)
  • State Root (estado da raiz merkle do fragmento antes e depois das transações adicionadas)

Corpo

  • Todas as transações que pertencem ao grupo de transações que fazem parte do fragmento específico.

As transações são específicas para cada fragmento e ocorrem entre contas nativas desse fragmento.

Quando as transações são verificadas, o estado da rede muda e os saldos das contas, armazenamento, etc. são atualizados. Para que o grupo de transações seja verificado como válido, a raiz de pré-estado do grupo de transações deve corresponder à raiz do shard no estado global. Se eles corresponderem, o grupo de transações será validado e o estado global será atualizado por meio da raiz de estado de ID de fragmento particular.

Em vez de conter apenas uma raiz de estado, cada bloco do blockchain Ethereum agora contém uma raiz de estado e a raiz do grupo de transação. A raiz do grupo de transações é a raiz merkle de todos os grupos de transações dos fragmentos específicos para esse bloco de transações.

Basicamente, há uma raiz de merkle de todos os diferentes shards que contêm os grupos de transações atualizados e verificados. Esta raiz é armazenada no blockchain junto com a raiz do estado atualizado.

O emprego de conceitos de árvore merkle nesta estrutura é vital para garantir a validade do blockchain. Compreender como uma árvore Merkle e, especificamente, uma raiz Merkle funcionam, pode ajudá-lo a compreender esses conceitos com muito mais facilidade.

O que é uma árvore Merkle

Leia: O que é uma árvore Merkle ?

O consenso dentro de um fragmento é alcançado por meio de um consenso de Prova de Participação de nós selecionados aleatoriamente que são aplicados a um fragmento para uma rodada de consenso específica.

Isso não apenas fornece finalidade para o consenso, que é necessário dentro dos fragmentos, mas também fornece uma defesa específica para um ataque ao qual um blockchain de Prova de Trabalho seria suscetível nesta instância.

O poder de hash necessário para invadir um fragmento específico em uma rede com fragmentos PoW é drasticamente reduzido e a capacidade de um agente malicioso assumir o controle de um fragmento por meio do poder computacional é viável.

Com isso, o malfeitor pode atacar outros fragmentos por meio do protocolo de comunicação, que é um dos recursos mais complicados e importantes da arquitetura de fragmentos. A seleção de amostragem aleatória dos validadores dentro de um fragmento consegue sufocar este tipo de ataque, já que um mau ator não saberá em qual fragmento estão sendo colocados antes de realmente serem colocados nele.

Além disso, a amostragem aleatória será usada para selecionar os validadores que estão realmente validando a partir desse conjunto de validação aleatório.

O protocolo de comunicação é vital para que a arquitetura de sharding funcione corretamente no sistema. Você pode pensar no protocolo de comunicação como a linguagem universal que é consistente entre os estados como parte dos Estados Unidos.

No entanto, projetar este protocolo é altamente desafiador e precisa ser executado para que seja usado apenas quando necessário. Torna-se necessário quando um nó específico requer informações que não estão armazenadas em seu próprio fragmento e precisa localizar o fragmento com as informações necessárias. Esta comunicação é conhecida como comunicação cross-shard.

A comunicação entre os fragmentos é obtida através da aplicação do conceito de recebimentos de transações. O recibo de uma transação é armazenado em uma raiz merkle que pode ser facilmente verificada, mas que não faz parte da raiz do estado.

O fragmento que recebe uma transação de outro fragmento verifica a raiz do merkle para garantir que o recibo não tenha sido gasto. Essencialmente, os recibos são armazenados em uma memória compartilhada que pode ser verificada por outros shards, mas não alterada. Portanto, por meio de um armazenamento distribuído de recibos, os fragmentos podem se comunicar uns com os outros.

Fragmentação seguindo em frente

Espera-se que a fragmentação em Ethereum seja implementada após a atualização do Casper PoS. Recentemente lá houve alguns desenvolvimentos em relação ao Ethereum 2.0 que envolvem a implementação de Casper e sharding.

Sharding também foi implementado em algumas outras plataformas, mais notavelmente Zilliqa. No entanto, o Zilliqa não implementa fragmentação de estado neste momento e, em vez disso, concentra-se em fornecer uma cadeia de blocos de alto rendimento utilizando a transação e fragmentação computacional.

ZilliqaLeia nosso Guia para Zilliqa

Conclusão

Sharding serve para oferecer algumas soluções promissoras para o elefante na sala das plataformas blockchain agora, escalabilidade.

Enquanto a rede relâmpago do Bitcoin está em fase de teste e tem mostrado algum progresso muito promissor até agora, a solução da Ethereum traz consigo alguns desafios únicos, pois é considerada um computador mundial que é Turing completo.

O sharding funcionará diretamente apenas no nível do protocolo, portanto, para o usuário final ou desenvolvedor dapp pode não ser necessariamente relevante aprender sobre.

Independentemente disso, a tentativa da Ethereum de fragmentar o estado para uma rede vasta e descentralizada é um esforço impressionante e será um feito enorme de realização se implementada com sucesso.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me