O que é sharding e como funciona?
Página Inicial
Artigos
O que é sharding e como funciona?

O que é sharding e como funciona?

Intermediário
Publicado em Dec 4, 2023Atualizado em Jan 11, 2024
9m

TL;DR

  • O sharding divide uma blockchain em 'shards' (fragmentos) menores para lidar com o problema de escalabilidade associado às redes layer-1.

  • O sharding melhora a velocidade das transações, minimiza os custos de processamento e armazenamento e melhora o desempenho da rede.

  • O sharding tem as suas potenciais desvantagens, como preocupações com a segurança da rede e a complexidade das transações cross-shard.

Introdução

A tecnologia blockchain introduziu um potencial sem precedentes em descentralização, transparência e segurança. Mas ela enfrenta um desafio significativo: escalabilidade. A escalabilidade é um elemento do "trilema blockchain", que também inclui segurança e descentralização. Conseguir todos os três elementos simultaneamente é um problema persistente no domínio da tecnologia blockchain. É aqui que soluções estratégicas como o "sharding" entram em jogo.

O que é sharding?

Sharding é um conceito originário do gerenciamento de banco de dados tradicional. Ele se refere ao processo de divisão de um banco de dados maior em partes menores e mais gerenciáveis, chamadas shards. A sua aplicação em blockchain visa melhorar a escalabilidade, mantendo o princípio da descentralização. Essencialmente, o sharding ocorre quando uma rede blockchain é dividida em partes menores conhecidas como shards, cada uma capaz de processar transações e contratos inteligentes paralelamente.

Como o sharding funciona?

Para entender como o sharding é executado em uma rede blockchain é preciso compreender como os dados de blockchains são armazenados e processados. Existem várias formas de processar os dados. Vamos analisar o processamento sequencial e paralelo.

Normalmente, cada node de uma blockchain é responsável por lidar com todo o volume de transações dentro da rede. Esse tipo de processamento de dados é conhecido como processamento sequencial. Isso significa que cada node deve manter e armazenar todas as informações críticas, tais como saldos de contas e histórico de transações. Essencialmente, cada node deve processar todas as operações, dados e transações da rede.

Embora esse modelo reforce a segurança da blockchain, registrando todas as transações em todos os nodes, ele reduz drasticamente a velocidade do processamento de dados. Aqui é onde o processamento paralelo de dados entra em jogo, permitindo a execução de múltiplas operações simultaneamente.

O sharding pode ser uma solução poderosa para esse dilema, pois divide ou 'particiona' a carga de trabalho transacional em toda a rede blockchain. Isso significa que nem todos os nodes precisam gerenciar ou processar toda a carga da blockchain.

Em vez disso, o sharding divide a carga de trabalho através do particionamento horizontal. Nesse processo, os dados são divididos em subconjuntos horizontais, onde cada shard atua como um banco de dados independente capaz de processar transações separadamente. 

Particionamento horizontal vs. vertical

O particionamento horizontal e o particionamento vertical são duas abordagens importantes para a escalabilidade do banco de dados. Embora ambos tenham sido projetados para gerenciar grandes conjuntos de dados de maneira mais eficiente, eles funcionam de maneiras fundamentalmente diferentes. O sharding é um método comum de implementação do particionamento horizontal.

No particionamento horizontal, os dados são divididos em linhas e espalhados por diferentes nodes (ou bancos de dados), cada um contendo um subconjunto dos dados. Cada linha de uma tabela é uma entidade única, portanto separá-las não leva a nenhuma perda de integridade dos dados. Um exemplo proeminente de particionamento horizontal em uso está na distribuição de redes blockchain, como Ethereum e Bitcoin.

No particionamento vertical, os dados são divididos em colunas, em vez de linhas. Cada partição no particionamento vertical contém um subconjunto de dados para cada entidade, ou todo o conjunto de dados, mas apenas para um determinado conjunto de atributos. Por exemplo, considere uma tabela de clientes com as colunas Nome, Status, Descrição e Foto. Em um cenário de particionamento vertical, o 'Nome' e o 'Status' podem ser mantidos em uma tabela e as colunas 'Descrição' e 'Foto', em outra.

Por que o particionamento horizontal é o preferido?

Em redes blockchain, o particionamento horizontal é geralmente favorecido em relação ao particionamento vertical por três razões principais: escalabilidade, descentralização e segurança.

Escalabilidade: o sharding fornece uma solução ao dividir os dados em “shards” (fragmentos) menores e mais gerenciáveis. Cada shard pode operar de forma independente, permitindo que mais transações sejam processadas simultaneamente, melhorando a velocidade e a eficiência da rede. Já no particionamento vertical, a distribuição das colunas em diferentes bancos de dados pode exigir mais complexidade na recuperação de uma transação completa ou informações de bloco e pode limitar a escalabilidade.

Descentralização: de acordo com o ethos central da blockchain, o particionamento horizontal suporta a descentralização. Como os nodes precisam processar apenas uma parte do total de dados (um shard), isso permite que mais nodes participem da rede, já que as cargas computacionais e de armazenamento são reduzidas. O particionamento vertical, comparativamente, restringiria isso, pois cada node precisaria de acesso a todas as partições (todas as colunas de dados) para compreender e verificar os dados completos do bloco.

Segurança e integridade dos dados: o particionamento horizontal mantém a integridade dos dados porque cada shard (ou partição) contém dados de transação completos, garantindo que cada node tenha uma cópia completa e precisa de sua parte da blockchain. No particionamento vertical, você basicamente estaria dividindo os dados de um bloco entre diferentes nodes, dificultando a obtenção de integridade e segurança dos dados, aspectos primordiais das redes blockchain.

Quais são os benefícios do sharding?

Vejamos os potenciais benefícios que o sharding proporciona para a tecnologia blockchain:

Transações mais rápidas: o sharding facilita o processamento paralelo de transações. Em vez de processar transações individualmente e de maneira sequencial, o sharding permite que as transações sejam processadas simultaneamente, mas em shards diferentes. Cada shard funciona de forma independente, aumentando significativamente a velocidade das transações. Isso não só acelera a velocidade das transações, mas também significa que toda a rede é capaz de lidar com mais usuários, promovendo a adoção em massa.

A Ziliqa é um exemplo de rede blockchain que usa shards para lidar com a escalabilidade. O mecanismo de sharding da Ziliqa permite a execução de milhares de transações por segundo.

Redução de custos de processamento e armazenamento: o modelo convencional da blockchain obriga cada node a armazenar todas as transações, aumentando as demandas de hardware conforme a blockchain se expande. No entanto, com o sharding, cada node é encarregado de processar e armazenar apenas uma fração dos dados da rede — isso diminui os recursos necessários para a participação de um node na rede.

Sendo assim, mais participantes podem se tornar validadores, promovendo a descentralização da rede sem custos proibitivos. O sharding mitiga problemas onde apenas entidades com recursos computacionais caros e de alta qualidade poderiam participar realisticamente do processo, preservando assim a natureza democrática das redes blockchain.

Melhor desempenho da rede: o sharding pode ajudar a melhorar o desempenho e a capacidade da rede. Em blockchains tradicionais, à medida que mais nodes participam da rede, o desempenho diminui paradoxalmente devido à necessidade de maior comunicação de dados e sincronização entre os nodes.

No entanto, o sharding muda esse cenário. Como cada sharding funciona separadamente e simultaneamente, o sistema é capaz de processar mais transações e operações computacionais. Quando um novo node se junta à rede, ele pode ser adicionado a um shard em vez de ser adicionado à toda a rede, aumentando assim a capacidade de escalabilidade da rede. Isso melhora a eficiência e proporciona transações mais fluidas e uma experiência de usuário aprimorada.

Lembre-se de que avanços e melhorias futuras na tecnologia de sharding podem trazer outras vantagens ou fortalecer as já existentes, melhorando o ecossistema blockchain de forma contínua.

Quais são as limitações do sharding?

Embora o sharding ofereça vários benefícios potenciais que contribuem com a eficiência das redes blockchain, o processo também apresenta um conjunto único de desafios. Algumas desvantagens e potenciais vulnerabilidades introduzidas pelo sharding incluem: 

Ataques Single Shard Takeover: em um ambiente de sharding, o poder computacional para assumir um único shard é dramaticamente menor do que o poder necessário para assumir toda a rede. Sendo assim, esses shards individuais são mais vulneráveis a um "ataque de um por cento" ou "single shard takeover" - onde um agente malicioso com uma pequena quantidade de recursos, em comparação com toda a rede, pode assumir o controle sobre um shard individual.

Transações cross-shard: transações que acontecem em diferentes shards (cross-shard) apresentam um desafio único. As transações cross-shard são complexas e podem levar a gastos duplos se não forem gerenciadas com cuidado. Se um shard não acompanhar com precisão o estado do outro durante uma transação, usuários podem explorar isso para duplicar os gastos.

Problemas de disponibilidade de dados: o sharding torna a manutenção de todo o estado da rede um esforço complexo. Se certos shards não estiverem disponíveis quando necessário (porque os nodes que mantêm esses shards estão offline), isso pode levar a problemas de disponibilidade de dados, causando interrupções em toda a rede.

Segurança de rede: o sharding requer a implementação de um protocolo robusto que equilibre a carga entre os shards. Se não for feito corretamente, isso pode levar a uma distribuição desigual de dados ou desequilíbrio de recursos, resultando em potencial instabilidade da rede.

Sincronização de nodes: a sincronização de nodes pode causar atrasos na rede devido ao tempo necessário para compartilhar e atualizar informações em diferentes nodes. Além disso, se um node com menos capacidade de processamento ou conexão de rede mais lenta apresentar atrasos, isso pode retardar todo o processo de sincronização, reduzindo o desempenho geral da rede blockchain.

O sharding é implementado na Ethereum?

A Ethereum planeja implementar o sharding como parte de sua atualização para a Ethereum 2.0. A Ethereum 2.0, também conhecida como Eth2 ou Serenity, é uma atualização da blockchain Ethereum que visa melhorar a velocidade, eficiência e escalabilidade da rede, permitindo processar mais transações e também reduzir o congestionamento.

Atualmente, a atualização está sendo implementada em fases. A fase final (Phase 2) inclui a implementação completa do sharding. Os desenvolvedores da Ethereum esperam que essas melhorias abordem alguns dos desafios atuais associados à escalabilidade e aos custos de transação que a rede enfrenta.

No entanto, é importante observar que implementar o sharding vem com seu próprio conjunto de desafios, especialmente na manutenção da segurança e descentralização da rede. Por isso, os desenvolvedores da Ethereum estão refletindo e agindo com cautela e realizando testes extensivos nessa transição para garantir o sucesso da atualização quando totalmente implementada.

Considerações finais

De modo geral, o sharding representa um avanço notável na resolução do trilema blockchain. Embora introduza novas complexidades e possíveis desvantagens, o seu potencial para aumentar a escalabilidade sem comprometer a descentralização é uma grande promessa para o futuro das redes blockchain.

Não é surpresa que várias blockchains estejam explorando o sharding como uma solução potencial. A Ethereum está integrando o sharding como parte da atualização Ethereum 2.0 para lidar com os problemas de escalabilidade. Espera-se que essa implementação ocorra através da atualização Cancun, um componente fundamental do plano geral de aprimoramento. Entretanto, como qualquer outra tecnologia em evolução, o sucesso dependerá de pesquisas contínuas, desenvolvimento e testes rigorosos para as implementações de sharding.

Leituras adicionais

Aviso Legal: este conteúdo é apresentado a você “no estado em que se encontra“ apenas para fins informativos e educacionais, sem qualquer tipo de garantia. O conteúdo não deve ser interpretado como aconselhamento financeiro, jurídico ou profissional, e não tem o objetivo de recomendar a compra de qualquer produto ou serviço específico. Você deve buscar seu próprio conselho de consultores profissionais. No caso de contribuições e artigos enviados por colaboradores terceirizados, note que as opiniões expressas pertencem ao respectivo autor e não refletem necessariamente as opiniões da Binance Academy. Para mais detalhes, por favor leia nosso aviso aqui. Os preços dos ativos digitais podem ser voláteis. O valor do seu investimento pode aumentar ou diminuir e você pode não recuperar o valor investido. Você é o único responsável por suas decisões de investimento e a Binance Academy não se responsabiliza por nenhuma de suas possíveis perdas. Este material não deve ser interpretado como aconselhamento financeiro, jurídico ou profissional. Para mais informações, por favor consulte nossos Termos de Uso e Aviso de Risco.