Escalando a Smurfs' Society com transações otimizadas de gas
Parceria com a Alchemy para escalar transações on-chain
Por The Smurfs' Society Team
The Smurfs' Society é o projeto web3 oficial dos Smurfs. O projeto é uma plataforma de gamificação totalmente on-chain, somente por convite, lançada em dezembro de 2022, que gerou mais de 30.000 conexões de carteira e 1,5 milhão de transferências on-chain em menos de um mês, tornando-se um dos TOP 100 aplicativos mais usados segundo a DappRadar.
Neste artigo, seu CTO e cofundador aborda os desafios técnicos de escalar grandes volumes de transações on-chain, e como a equipe está colaborando com a Alchemy para entregar uma experiência de usuário fluida e consistente a dezenas de milhares de jogadores usando o Transact API suite.
A relatividade da "escalabilidade" no contexto de blockchains
A maioria de nós não consideraria 100 transações por minuto um problema de "escala" ou volume, inclusive eu. No passado, colaborei com várias empresas para otimizar implantações do Cassandra operando clusters em um ambiente multi data-center com TBs de dados, baixa latência e alto volume; na época, eu jamais imaginaria que esse volume baixo de transações poderia ser difícil de alcançar ao trabalhar com infraestrutura blockchain.
O desafio tem duas frentes:
- Precisamos ser capazes de executar fisicamente a transação
- Precisamos garantir a correção da transação, mais precisamente sua consistência e exatidão de dados eventual.
Para resolver o primeiro desafio, isso é basicamente o mesmo que dimensionar qualquer cluster de plataforma implantado em k8s com capacidades de auto-scaling. Uma pequena diferença está na forma como fizemos o sharding da carga usando uma HD wallet em um StateFulSet, para fornecer a cada pod sua própria carteira para gerenciar diretamente. E lembre-se de que a blockchain exige que as transações sejam executadas em ordem (para uma carteira específica).
Para o segundo, pense em uma transação no mempool que não está sendo minerada (gas).
Nossas opções são:
- Esperar a rede esfriar (se possível) para que a transação simplesmente seja minerada
- Sobrescrever a transação com uma nova (forçando o nonce) e configurações de gas maiores
- Simplesmente usar uma carteira diferente
Claramente, no nosso caso, não podíamos estar na opção 1 nem na opção 3. Então a opção 2 era nossa única alternativa, o que criou suas próprias complexidades.
Este é um breve relato da nossa experiência, em parceria com a Alchemy, saindo de Reinforced Transactions em direção a Gas Optimized Transactions.
Minerando 20.000 transações por dia enquanto maximizamos a correção
Por que é tão difícil escalar uma aplicação ou jogo que depende fortemente da blockchain como espinha dorsal?
- Estamos limitados pelo número de transações que podem ser mineradas em um único bloco?
- Estamos limitados pela capacidade da rede como um todo?
- Estamos limitados pelo congestionamento da rede e por padrões específicos de uso intradiário?
- Estamos limitados pela forma como as transações na blockchain são executadas?
- Estamos limitados pela volatilidade do preço do gas?
Após várias semanas de operação e muitas iterações em todos os nossos controles, agora temos uma plataforma para o jogo operar em condições ideais.
Antes de explicar todos os obstáculos que tivemos que superar para chegar até aqui, deixe-me apresentar a dinâmica do jogo e dar uma visão geral das ações que automatizamos do ponto de vista blockchain e seus desafios. Depois explicarei como resolvemos os problemas em parceria com a Alchemy.
Como funciona o jogo on-chain dos smurfs?
O jogo, como está hoje, é uma ruptura do conceito normal de "lista de espera", em que os jogadores misturam ingredientes para tentar encontrar receitas que criam poções, algumas das quais podem dar acesso a um cristal (acesso garantido ao mint com desconto).
Todos os ativos que usamos no jogo são representados como NFTs. São tokens ERC-1155 para itens que consideramos fungíveis e consumíveis (por exemplo, ingredientes, poções, argila azul, estatuetas, etc.), ou tokens ERC-721 para itens que não são fungíveis (por exemplo, cristais).
As interações do jogo dos smurfs
Abaixo estão as interações que nossa plataforma tem com a rede Polygon para o jogo funcionar:
- Reivindicar caixa(s) de drop compostas por ingredientes - os jogadores são convidados a reivindicar sua caixa de 3 ingredientes diariamente
- Mint da estatueta (o componente principal do jogo) - todos os jogadores precisam possuir uma para poder completar ações do jogo. A estatueta é entregue gratuitamente quando o jogador faz login no jogo. Mais adiante no jogo, o papel da estátua será anunciado.
- Queima de argila - quando o jogador que tenta uma receita falha, a argila azul é queimada (x1)
O jogador, por outro lado, realiza uma única operação na rede Polygon:
- Misturar receita - o jogador é convidado a misturar 3 ingredientes para criar uma receita (o jogador é quem paga as taxas de gas nesse caso).

Para as duas primeiras funções, podemos trabalhar de forma 100% assíncrona sem impacto real no jogo caso uma transação que tentamos não seja minerada por muito tempo. Obviamente, do ponto de vista da experiência, nossa preferência seria que esses tempos fossem o mais baixos possível.
Queimar argila é um pouco mais desafiador, e as escolhas de implementação foram principalmente guiadas pelo próprio jogo. Quando um jogador propõe uma receita, ele o faz assinando uma struct EIP-712 contendo todos os ingredientes que deseja usar para misturar, com um prazo de 3 horas, como mostrado abaixo.

Essa assinatura será usada como autorização para queimar caso nenhuma receita seja encontrada com a mistura associada. E executamos essa transação burnClay em nome do jogador para absorver as taxas transacionais associadas.
A partir daqui, precisamos gerenciar vários estados:
- Transação em trânsito - armazenada off-chain -> movendo para on-chain. Usada para reconciliações.
- Transação no mempool aguardando ser minerada - estado de transição que exige reconciliarmos o que acreditamos que o usuário tem em andamento com o que está sendo processado - tudo sem garantia de quanto tempo vai levar
- Transação minerada - a quantidade de argila azul exibida na tela agora está precisa. Esse estado é o estado final e não representa nenhum desafio - a blockchain é a fonte da verdade
- Transação minerada mas considerada abortada
Por que a equipe dos smurfs escolheu Polygon
No mundo ideal, esperamos que todos os estados convirjam em 1 minuto ou menos para garantir a correção das operações e a experiência do jogo. Para esse caso de uso, decidimos usar a rede Polygon para a fase de gamificação. Abaixo estão alguns dos critérios mais importantes que nos ajudaram a escolher Polygon como nossa rede:
- Tempos de finalização rápidos para reatividade
- Taxas de transação reduzidas para gestão de custos operacionais
- Interoperabilidade com Ethereum para a visão de longo prazo
Nosso desafio: minerar 20.000 transações por dia enquanto maximizamos a consistência
Veja o dashboard da Alchemy em ação
Tour guiado de 30 minutos: todas as ferramentas do dashboard, demonstradas ao vivo.
Watch the demoReduzindo o impacto da volatilidade do gas na Polygon enquanto entregamos uma alta taxa de sucesso
A Polygon pode sofrer congestionamento e isso pode nos afetar diretamente, adicionando atrasos nas diferentes ações que descrevemos anteriormente. Existem ações básicas que podemos tomar para resolver isso:
- Sharding - ter várias carteiras interagindo com a blockchain. Enquanto houver uma carteira operacional (semelhante a um connection pool para DB), as transações podem ser feitas.
- Overpricing - para garantir que nossas transações sejam processadas em tempo hábil, podemos aumentar o incentivo nas priority fees (EIP-1559).
Nossa configuração inicial foi feita usando a solução Reinforced transaction e fazendo overpricing no mercado em relação às taxas de gas para otimizar os tempos de finalização das transações.


As duas capturas de tela foram feitas com um intervalo de poucos minutos (~5 minutos). Você pode ver a grande variação no gas em um período de tempo muito curto, o que tem um impacto direto sobre nós: qualquer disparada rápida na volatilidade do mercado para o preço do gas, e nossa transação ficaria presa, bloqueando uma de nossas carteiras!
Como otimizar transações na Polygon durante períodos de gas volátil
Começamos a trabalhar na otimização de transações durante períodos de gas volátil ao:
- Adicionar resiliência à nossa aplicação e rastrear o estado das transações melhor por um período mais longo
- Rastrear e alertar quando sintomas são exibidos - fizemos isso rastreando o tempo que uma mensagem leva para ser processada
Quando tudo parece bem em micro, vemos isto:

E isto é em nível macro, quando as coisas ficam mais interessantes:

Ocasionalmente, algumas mensagens tinham quase 200" de "idade" (o exemplo acima é de um dos nossos dias mais difíceis). Quando esse intervalo de tempo cresce demais, os jogadores começam a notar: o maior sinal é que o contador de argila azul não diminui.
No nosso pior dia, após o upgrade da Polygon, tivemos que parar o jogo por 30 minutos porque algumas transações não puderam ser mineradas.
Desde então, estamos colaborando ativamente com a Alchemy para atacar esse desafio com uma de suas novas ofertas, e decidimos entrar no beta de Gas Optimized transactions.
A promessa das gas optimized transactions é gerenciar outliers imprevisíveis.
Imagine se, em vez de assinar uma única transação com algum tipo de lógica fixa para determinar o gas, você pudesse assinar 5 ou 10 transações com diferentes condições de preço de gas, e deixar que a Alchemy escalone automaticamente o preço do nonce!
No nosso caso, decidimos optar pela seguinte política de escalonamento: 1,25, 1,5, 1,75, 2, 2,25, 2,5
Até agora, tivemos ótimos resultados com isso.
Executamos com sucesso várias otimizações e as vemos funcionando ao vivo no sistema. Estamos ansiosos para continuar nossa colaboração com a equipe da Alchemy, à qual quero agradecer pessoalmente pela reatividade no dia em que tudo deu errado e pelo tempo de resposta rápido. Tudo se resume a escolher os parceiros certos!
Smurfilmente,
A equipe da The Smurfs' Society.
Estudos de caso relacionados
17 de julho de 2026
Como a Collector Crypt colocou quase US$ 40 milhões em cartas colecionáveis onchain com a Alchemy
A Collector Crypt opera a camada de liquidação para ativos colecionáveis do mundo real na Alchemy Solana RPC e Webhooks, com quase US$ 40 milhões em inventário de cartas colecionáveis tokenizadas onchain.
NFTs11 de fevereiro de 2025
Azuki traz 3,3 milhões de fãs para o Anime.com com account abstraction
Como a Azuki tornou a blockchain invisível no anime.com, alcançando 3,3M de usuários e 13M de NFTs mintados com Smart Wallets
NFTs21 de dezembro de 2023
Tudo o que você precisa para NFTs, em um só lugar
Enjin é um ecossistema de produtos NFT full stack que permite que desenvolvedores e indivíduos criem, integrem, negociem e gerenciem seus NFTs - sem necessidade de experiência com blockchain.

Construa magia blockchain
A Alchemy combina os produtos e ferramentas de desenvolvimento web3 mais poderosos com recursos, comunidade e suporte lendário.