O que é sharding em blockchain? Como funciona?
Principais insights
Sharding é uma técnica de escalabilidade de bancos de dados que divide uma blockchain em segmentos menores, chamados shards, permitindo o processamento paralelo de transações e aumentando a capacidade da rede. Apesar de melhorar significativamente a escalabilidade e a eficiência, essa abordagem traz desafios como comunicação complexa entre shards e riscos de segurança elevados, já que shards individuais ficam mais vulneráveis a ataques. Redes como Zilliqa, NEAR e Ethereum estão explorando o sharding, que, se superar essas limitações, pode ajudar a resolver o trilema da blockchain ao permitir escalabilidade sem comprometer a descentralização ou a segurança.
Um dos desafios mais significativos para desenvolvedores de bancos de dados é a escalabilidade. À medida que o volume de dados e o número de operações aumentam, o desempenho do sistema também precisa ser aprimorado.
Sharding é uma tecnologia de escalabilidade baseada na divisão de bancos de dados em segmentos separados, cada um podendo ser hospedado em um servidor diferente.
Ao aplicar essa tecnologia à blockchain, o sharding representa a divisão da rede em setores distintos. Cada setor, ou shard, contém um conjunto único de smart contracts e saldos de contas, e nós específicos da rede são atribuídos a cada shard.
These nodes are responsible for verifying transactions only in their assigned shard rather than for all transactions on the blockchain.
Quais problemas o sharding resolve?
Quanto mais popular um projeto se torna, mais usuários ele atrai. Esses usuários realizam mais transações, lançam mais DApps e executam mais processos na rede. Como resultado, a velocidade das transações cai e as taxas aumentam, dificultando a expansão e o desenvolvimento futuro do projeto. Dividir a rede em shards permite resolver esse problema ao aumentar a capacidade de processamento da blockchain.
Quando um grupo de nós é responsável por um segmento específico do livro-razão, todos os nós da rede ficam livres da obrigação de manter toda a blockchain para que cada transação seja concluída. As operações são validadas em paralelo, e não de forma linear, aumentando assim a capacidade da rede e eliminando o problema de escalabilidade.
Além disso, os nós da blockchain que utilizam sharding funcionam de maneira mais eficiente sem aumentar o poder computacional, devido à carga reduzida.
Como tudo funciona
Blockchains exigem o trabalho de milhares de computadores para funcionar, e seu poder computacional permite que os livros-razão distribuídos realizem transações, executem smart contracts, implementem DApps e muito mais. Se a rede opera com execução sequencial, cada nó precisa processar todas as transações. A verificação das operações, portanto, leva bastante tempo. O Ethereum, por exemplo, processa até 10 transações por segundo.
Se mais nós forem adicionados à blockchain, o desempenho não aumentará. O que acontece é que a cadeia de verificação apenas se torna mais longa.
O princípio do sharding está em abandonar o modelo de execução linear em favor de um modelo paralelo, no qual os shards realizam apenas determinados cálculos e processam muitas transações simultaneamente. Eles funcionam como uma espécie de "blockchain dentro da blockchain", transferindo todas as suas informações para a cadeia principal, ainda que em formato compactado.
As desvantagens do sharding
Existem dois problemas principais no sharding: comunicação entre shards e segurança.
- Comunicação. Se a rede for dividida em setores isolados, cada um se torna, na prática, uma blockchain separada. Usuários e aplicações descentralizadas em um shard só poderão se comunicar com outros shards por meio de um protocolo de comunicação específico.
- Segurança. Em uma rede fragmentada por sharding, é muito mais fácil assumir o controle total de um shard do que de toda a rede, já que a taxa de hash exigida é bem menor. Por exemplo, um ataque de 51% à rede Bitcoin exigiria bilhões de dólares em hardware e centenas de milhões por dia em eletricidade. É caro, inviável e pouco lucrativo. Já capturar um único shard é muito mais barato e simples.
O sharding não é uma solução perfeita. Ele traz complexidades e preocupações de segurança. Hackers podem explorar um shard isolado dentro de uma blockchain segmentada, pois é necessário menos poder computacional para controlar seções individuais. Isso pode permitir transações maliciosas que prejudicam toda a rede.
Além disso, como diferentes grupos de nós gerenciam diferentes segmentos da blockchain, cada shard funciona essencialmente como uma rede separada. São necessários mecanismos especiais para garantir a comunicação eficiente entre esses segmentos.
Uma implementação inadequada pode resultar em problemas como o double-spending, que afeta significativamente a segurança da rede. O sharding também é difícil de implementar em blockchains já existentes, pois envolve dividir a rede e realocar dados.
O Ethereum oferece uma solução para esse problema usando amostragem aleatória. Os protocolos de shard são atribuídos aleatoriamente a diferentes seções para confirmar a autenticação dos blocos. Isso foi possibilitado pela mudança da rede para o método de consenso proof-of-stake.
Redes que já utilizam sharding
A primeira rede a adotar sharding foi a Zilliqa. Ela se apresenta como uma plataforma de blockchain que busca resolver problemas de escalabilidade com o sharding. Em sua fase de testes, alcançou 2.828 transações por segundo.
O ecossistema blockchain NEAR se define como uma blockchain PoS fragmentada (sharded) e afirma que sua tecnologia permite que nós pequenos rodem em dispositivos de baixo desempenho.
O Ethereum também planeja implementar sharding. Outras redes com sharding incluem Cardano, QuarkChain e Plian.
Conclusão
Em teoria, o sharding pode finalmente resolver o trilema da blockchain, se conseguir superar suas limitações. Se isso acontecer, será possível escalar blockchains sem sacrificar descentralização ou segurança.