Sharding, em português “fragmentação”, é um conceito tradicional existente no gerenciamento centralizado de banco de dados desde o final da década de 1990. Sharding me lembra o paradigma da divisão e conquista, pois com seu uso os desenvolvedores são capazes de dividir bancos de dados enormes em pedaços menores e trabalhar em cima da qualidade do desempenho do sistema e da diminuição do tempo de resposta de uma consulta. Gerenciar o todo torna-se mais fácil quando temos a visão dividida por partes menores e gerenciáveis.
O termo se popularizou através do jogo Ultima Online, um MMORPG (Massive Multiplayer Online Role-Playing Game). No jogo, o conceito é aplicado através da distribuição dos jogadores entre uma variedade de servidores existentes, o que permite gerenciamento de tráfego e capacidade de rede mais eficientes para os desenvolvedores.
Hoje, o Sharding segue sendo utilizado no mundo dos games de diversas formas: separação de mapas baseado em localização geográfica para jogos de FPS como CS:GO e Valorant, servidores para comportar jogadores de jogos RTS (Real Time Strategy, em portugues, estratégia em tempo real) como Starcraft e Age of Empires, jogos de sobrevivência online como Rust e Ark, onde é possível dividir o mundo virtual em diversas partes e hospedá-las em servidores diferentes – colaborando com a qualidade das comunicações internas entre os players no servidor, jogos de esporte online como a série FIFA, em que os jogadores, assim como os jogadores de FPS, podem ser divididos em grupos menores com base na localização geográfica, o que reduz a latência e melhora a jogabilidade.
Além dos games, também é possível aplicar o Sharding em outras áreas e contextos que necessitem do processamento de grandes quantidades de dados de forma escalável, como por exemplo: redes sociais, sistemas de pagamento, armazenamento em nuvem, comércio eletrônico, plataformas de streaming, etc.
Como o Sharding é utilizado em uma blockchain?
Para entender como o Sharding pode ajudar a aumentar a escalabilidade das blockchains, é importante primeiro entender o significado de uma blockchain: a rede blockchain é composta por uma série de nós (nodes), que funcionam como servidores de dados individuais.
Quando se aplica o Sharding à blockchain, o propósito é dividir a rede em fragmentos individuais, onde cada um mantém um conjunto exclusivo de contratos inteligentes e saldos de conta. Os nós são designados para os fragmentos específicos a fim de verificar transações e operações, em vez de cada nó ser responsável por verificar todas as transações na rede inteira.
Podemos, então, definir que Sharding é a forma que as blockchains encontraram de agilizar o processamento de suas transações. O Sharding vem como uma solução de escalabilidade, uma vez que o aumento da popularidade de uma blockchain aumenta consideravelmente a quantidade processos na rede derivados de transações, aplicativos descentralizados e outros. O Sharding possibilita que tanto execução quanto validação aconteçam de forma paralela, o que contribui significativamente com a velocidade da rede.
Entretanto, você pode estar se perguntando porque a escalabilidade pode ser considerada um problema em uma blockchain e porque as blockchains devem estar atentas para resolver esse problema o quanto antes. Vamos exemplificar com um caso real, que aconteceu na rede da Ethereum.
Em 2017, a blockchain Ethereum teve 10% de sua base congestionada pela popularidade do lançamento de CryptoKitties e seu tráfego de rede ficou extremamente lento.
CryptoKitties é conhecido como o primeiro jogo baseado na tecnologia blockchain. Nele, é possível que os jogadores façam coleta e criação de cartas NFT de gatos. A ideia central do jogo é baseada na escassez digital, cada gato possui características únicas e se você é dono de um gato, ele é única e exclusivamente seu.
No game, é possível acasalar dois CryptoKitties e gerar, baseado em um algoritmo de genética, um filhote com características próprias herdadas dos pais. Caso o conceito tenha ficado confuso, falamos sobre a exclusividade dos NFTs em nossa matéria sobre a NFT do macaco entediado.
Ao olharmos a porcentagem de 10% de uma base congestionada imaginamos que o impacto não deve ser grande para a plataforma. Entretanto, devemos levar em consideração que o acontecimento gerou lentidão para toda a estrutura da blockchain, atrapalhando até mesmo transações não relacionadas ao jogo – o que prejudica a experiência de outros investidores e pode levar a blockchain a perder popularidade no mercado e posteriormente vir à falência.
Agora, se utilizarmos o Sharding em uma blockchain, podemos dividi-la em segmentos menores, com equipes de nodes responsáveis por segmentos individuais. Dessa forma, a validação de transações pode ocorrer em paralelo, o que aumenta a velocidade da rede como um todo. Dessa forma, com o Sharding, os processos se tornam mais independentes ao invés de serem executados de forma linear.
A capacidade de processamento da rede pode ser aumentada significativamente ao utilizarmos Sharding, permitindo suportar mais transações e usuários, além de reduzir o consumo de energia e os custos de operação da rede. A descentralização também é aumentada, permitindo que mais participantes contribuam para a segurança e operação da rede. Além disso, diferentes shards podem ser otimizados para diferentes casos de uso ou requisitos de desempenho, tornando a rede mais flexível.
Leia mais sobre criptomoedas:
- NFT do macaco: Saiba tudo sobre a NFT mais popular do mercado
- Conheça os 3 golpes mais comuns com criptomoedas e saiba como evitá-los
- O que são altcoins e como são criadas?
Quais as desvantagens do Sharding?
Até o momento, vimos algumas das vantagens de se utilizar o Sharding em uma rede blockchain relacionadas a escalabilidade, eficiência energética, redução de custos, maior descentralização e flexibilidade. Entretanto, também há suas desvantagens.
A divisão de uma blockchain em seções independentes pode gerar complexidade adicional para os desenvolvedores e aumentar os riscos de segurança. Os hackers podem assumir o controle de um único fragmento com mais facilidade, em um ataque conhecido como “ataque de tomada de fragmento único” ou “ataque de 1%”. Para combater esse risco, a Ethereum propôs a amostragem aleatória, na qual notários de fragmentos são designados aleatoriamente para diferentes seções e verificam a autenticidade dos blocos.
Dentre as desvantagens a serem consideradas pelo uso do Sharding em blockchain, estão: a complexidade da implementação, que requer expertise técnica; a necessidade de reorganização da arquitetura do blockchain; aumento de latência (a comunicação entre shards pode ser mais lenta do que a comunicação dentro de um mesmo shard); possibilidade de centralização; e segurança dependente da seleção aleatória de shards e detecção de ataques maliciosos.
Em resumo, apesar de apresentar algumas desvantagens, os benefícios do sharding como a descentralização, redução de custos e flexibilidade, podem fazer com que a implementação valha a pena.
Embora ainda existam desafios a serem enfrentados para a implementação do sharding em larga escala, a comunidade de blockchain está trabalhando em soluções para superar esses obstáculos. À medida que a tecnologia blockchain evolui e se adapta a novos desafios, é provável que o sharding desempenhe um papel importante na escalabilidade da rede e no aumento da eficiência. Com o tempo, podemos esperar que mais redes adotem o sharding como uma solução para a escalabilidade, levando a uma adoção mais ampla e uso generalizado da tecnologia blockchain.