O que é sharding?

O sharding (inglês para fragmento, fragmentação) é uma forma de particionamento de banco de dados, também conhecido como particionamento horizontal.

O processo envolve dividir um banco de dados muito grande em segmentos menores e mais gerenciáveis, com a ideia de melhorar o desempenho e reduzir o tempo de resposta de uma consulta.

O sharding não é um conceito novo e existe no gerenciamento tradicional e centralizado de bancos de dados desde pelo menos o final dos anos 90. O termo foi popularizado por um dos primeiros jogos de RPG on-line e em massa para multijogadores (MMORPG), o Ultima Online, no qual os desenvolvedores dividem jogadores em diferentes servidores (diferentes "mundos" no jogo) para lidar com o tráfego.

Nos negócios, um exemplo comum de sharding em um banco de dados grande é dividir o banco de dados do cliente em localizações geográficas. Clientes na mesma região geográfica são agrupados e colocados em um servidores próprios.

What is sharding?

O que é o sharding em termos de blockchain?

Basicamente o processo é o mesmo.

A rede blockchain é o banco de dados com os noodes que representam servidores de dados individuais. Se aplicarmos o sharding à blockchain, isso significaria dividir a rede blockchain em fragmentos individuais (ou shards). Cada fragmento manteria um conjunto exclusivo de contratos inteligentes e saldos de contas.

Os nodes seriam atribuídos a fragmentos individuais para verificar transações e operações, em vez de cada um ser responsável por verificar todas as transações em toda a rede.

A ideia é que, ao dividir a blockchain em segmentos mais gerenciáveis, isso leve ao aumento da taxa de transferência de transações e, portanto, superar os problemas de escalabilidade enfrentados pela maioria das principais blockchains da atualidade. Veremos isso com mais detalhes um pouco mais abaixo.

 

Como o sharding funciona?

Para explicar o sharding, vamos usar a blockchain da Ethereum como exemplo.

A blockchain da Ethereum é composta por milhares de computadores, também conhecidos como nodes - atualmente 8.622, de acordo com o site de monitoramento ethernodes.org - cada um emprestando uma certa quantidade de hash à rede. É esse poder de hash que permite que a Ethereum Virtual Machine (EVM) funcione - ou seja, execute os contratos inteligentes e os aplicativos descentralizados (DApps).

No momento, a Ethereum trabalha em uma base de execução sequencial, na qual cada um desses nodes precisa calcular cada trasanão e processar cada transação. Uma transação que passa por esse processo de verificação pode, portanto, levar muito tempo. Atualmente, a Ethereum gira em torno de 10 transações por segundo (TPS) - a Visa, em comparação, faz 24.000 TPS em média. Adicionar computadores à rede não melhorará necessariamente a eficiência, pois todo o ledger é mantido em todos os computadores e a cadeia de verificação vai se tornando mais longa.

Com o sharding, a ideia é passar de um modelo de execução linear, no qual todo node precisa calcular todas as operações, para um modelo de execução paralelo, no qual os nodes são designados para processar apenas determinadas computações. Isso permitirá o processamento de múltiplas transações paralelas ao mesmo tempo.

A blockchain será dividido em shards separados (chamados de subdomínios ou "buckets"). Os nodes terão apenas que executar a parte do ledger que eles estão designados para executar processos e validar transações, em vez de manter o ledger inteiro o tempo todo.

How does sharding work?

Quais problemas o sharding vai potencialmente resolver?

O sharding é uma solução potencial para os problemas contínuos de escalabilidade da blockchain.

Como mencionado acima, um dos maiores problemas que as redes blockchain enfrentam é a questão da escalabilidade. Quanto mais popular uma rede blockchain se torna, mais usuários iniciam transações, aplicativos descentralizados e outros processos na rede.

O aumento da atividade de transações aumenta a demanda de nodes para verificar transações e existe uma ameaça real de que essas blockchains possam ficar entupidas (como visto na Ethereum durante a loucura dos CryptoKitties, quando o jogo representava 11% das transações na rede). Se isso acontecer, a velocidade das transações se torna dolorosamente lenta, o que não é uma situação ideal para a adoção sustentável e duradoura da blockchain.

Como explicado acima, se a blockchain for dividida em segmentos menores, com equipes de nodes sendo tendo a responsabilidade de cuidar de segmentos individuais, não será necessário que cada node mantenha o ledger inteiro para executar todas as operações. A validação de transação pode, portanto, ocorrer em paralelo, e não de maneira linear, aumentando a velocidade de toda a rede. O sharding fornece uma solução para os problemas de escalabilidade em torno das redes blockchain e, portanto, torna-as mais sustentáveis a longo prazo.

Existem desvantagens no sharding?

Atualmente, os principais desafios do sharding estão relacionados à comunicação e segurança.

Se você dividir uma blockchain em segmentos isolados, cada fragmento vai se parecer com uma rede blockchain separada. Usuários e aplicativos de um subdomínio não poderão se comunicar com usuários e aplicativos de outro subdomínio, sem a implementação de um mecanismo de comunicação especial e difícil. Isso acrescenta uma camada adicional de complicação para os desenvolvedores quebrarem a cabeça.

Em uma blockchain segmentada, a segurança também se torna uma preocupação, pois é mais fácil para os hackers assumir o controle de um único fragmento devido ao poder de hash reduzido necessário para controlar segmentos individuais, também conhecido como ataque de tomada de fragmento único ou ataque de 1%. Depois que um segmento é invadido, os atacantes podem potencialmente enviar transações inválidas para a rede principal, ou é possível que as informações nesse segmento específico sejam hackeadas e perdidas permanentemente. A resposta proposta pela Ethereum para esse risco de segurança é a amostragem aleatória, na qual os notários de fragmentos são aleatoriamente designados para diferentes seções para que verifiquem a autenticidade do bloco.

1% Attack

Existem soluções alternativas ao sharding?

Duas propostas adicionais foram sugeridas pelos desenvolvedores para melhorar o desempenho e a velocidade das transações nas blockchains.

O primeiro é aumentar o tamanho do bloco, com o pensamento básico de que quanto maior o tamanho do bloco, mais transações você poderá colocar em um bloco - e, portanto, maior será o número de transações por segundo. Embora isso seja verdade, também significa que quanto maior o tamanho do bloco, maior a capacidade de computação necessária para verificar o bloco.

Se o tamanho dos blocos fosse aumentado indefinidamente, apenas o equipamento de computador mais especializado e de alta potência seria capaz de lidar com a capacidade de processamento necessária para atuar como um node. O aumento do custo desse tipo de equipamento significaria que os pools de nodes necessariamente se tornariam menores e mais centralizados, aumentando o risco de um ataque de 51%. Aumentar o tamanho do bloco também demandaria um hard fork, o que arrisca criar cizania na comunidade. Se nem todos atualizarem para a nova blockchain, existirão duas blockchains separadas, usando duas moedas separadas. Devido a esses problemas, aumentar o tamanho do bloco é apenas uma solução de curto prazo.

A segunda proposta é usar altcoins para que diferentes funções e aplicações sejam executadas em sua própria cadeia com sua própria moeda. Isso aumentaria o desempenho porque você não sobrecarregaria uma única blockchain, mas também aumentaria os riscos de segurança, porque todo o poder de hash agora está dividido em várias blockchains. Novamente, isso torna muito mais fácil invadir a rede, pois a quantidade de poder de hash necessária para executar um ataque de 51% bem-sucedido é muito menor. Portanto, esta não é uma solução viável.

51% Attack

Quem usa o sharding?

Algumas blockchains já implementaram um mecanismo de sharding, enquanto em outras eles ainda estão em desenvolvimento.

A Zilliqa é a primeira plataforma pública de blockchain a implementar o sharding. Ela conseguiu atingir 2.828 TPS em sua rede de teste.

O ecossistema blockchain Near permite que os desenvolvedores construam e implantem facilmente aplicativos descentralizados. Ele também se autodenomina "uma blockchain fragmentada, amigável para o desenvolvedor e com prova de participação (proof-of-stake)" e afirma que sua tecnologia de fragmentação permite que os nodes fiquem pequenos o suficiente para rodar em instâncias simples hospedadas na nuvem - potencialmente até dispositivos móveis no futuro.

Tal qual o Near, a Ethereum fornece um ecossistema blockchain para a implementação de DApps inteligentes baseados em contrato. A Fundação Ethereum está planejando introduzir o sharding como parte de sua atualização da Ethereum 2.0, que será lançada em janeiro de 2020, como confirmado em uma chamada da Fundação Ethereum em 13 de junho de 2019.

Outros projetos de blockchain que consideram o sharding como uma solução para problemas de escalabilidade incluem Cardano, QuarkChain e PChain.

O que o futuro reserva para o sharding da blockchain?

O sharding ganhou mais atenção recentemente por causa da moeda Libra do Facebook.

O Facebook divulgou recentemente mais detalhes sobre a moeda Libra, que tem previsão de lançamento no primeiro semestre de 2020, em seu white paper. Também apareceram notícias de que o Facebook adquiriu a Chainspace, cuja equipe de desenvolvedores estava predominantemente focada no compartilhamento de blockchain. Isso sugere que a blockchain do Libra implementará alguma forma de particionamento de blockchain.

Relacionado: O que é o Libra? Dissecando a nova moeda digital do Facebook

Em um sentido mais amplo, no entanto, o sharding pode ser a solução que resolva o trilema da blockchain.

No trilema da blockchain, conforme descrito por Vitalik Buterin, cofundador da Ethereum, você só pode manter duas das três principais características da blockchain ao mesmo tempo - segurança, descentralização e escalabilidade. Isso ocorre porque você sempre terá que comprometer pelo menos um desses elementos para ter os outros dois.

Scalability Trilemma

Como Beniamin Mincu - CEO da Elrond Network, um protocolo de blockchain com foco em escalabilidade e interoperabilidade - sugeriu em um artigo recente da Forbes, se os desafios do sharding puderem ser superados, ele levará a escalabilidade para as blockchains sem comprometer sua descentralização ou segurança. Isso, por sua vez, poderia deixar a blockchain a um passo da adoção sustentável pelo grande público. Mincu disse:

“O sharding é complicado, mas fornece o tipo de aprimoramento da capacidade de taxa de transferência que permite que as blockchains públicas rivalizem com redes como a da VISA. Alguns de seus desafios, no entanto, incluem a tomada de shardings únicos, comunicação entre os shards e a validade dos dados".