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.