Respostas>Saiba mais sobre escalabilidade e desempenho>O que causa o congestionamento da blockchain?
O que causa o congestionamento da blockchain?
// Tags
congestionamento da blockchaintaxas de gás elevadas
TL;DR: O congestionamento da blockchain ocorre quando são enviadas para a rede mais transações do que as que cabem no próximo bloco. Cada blockchain tem uma quantidade máxima de cálculos ou dados que pode processar por bloco e, quando a procura excede esse limite, forma-se um atraso no mempool (a área de espera para transações não confirmadas). O congestionamento leva a taxas de transação mais elevadas (uma vez que os utilizadores competem por um espaço limitado no bloco), tempos de confirmação mais longos e uma experiência do utilizador prejudicada. As causas principais incluem a capacidade fixa dos blocos, picos de procura decorrentes de eventos populares, a dinâmica do mercado das taxas e as escolhas fundamentais de conceção que dão prioridade à segurança e à descentralização em detrimento do débito bruto.
A Explicação Simples
Uma blockchain processa transações em lotes denominados «blocos». Cada bloco tem um limite de capacidade. Na Ethereum, este limite é expresso como um «limite de gás» (atualmente, cerca de 30 milhões de gás por bloco). Na Bitcoin, trata-se de um «limite de peso» (4 milhões de unidades de peso por bloco). Na Solana, é uma combinação de unidades de computação e bloqueios de conta por slot. Independentemente do mecanismo específico, todas as cadeias têm um limite máximo quanto ao volume de trabalho que podem realizar por bloco.
Quando o número de transações enviadas para a rede é inferior à capacidade do bloco, tudo funciona sem problemas. As transações são incluídas no bloco seguinte, as taxas são baixas e a confirmação é rápida. Quando o número de transações excede a capacidade do bloco, forma-se uma fila. Essa fila é o mempool, uma área de espera mantida por cada nó, onde as transações válidas, mas ainda não confirmadas, aguardam a inclusão num bloco futuro.
O mempool não funciona segundo o princípio «primeiro a chegar, primeiro a ser servido». Trata-se de uma fila de prioridade baseada nas taxas. Os produtores de blocos (mineradores ou validadores) selecionam as transações que pagam as taxas mais elevadas, pois isso maximiza as suas receitas. Quando o mempool está cheio, os utilizadores que pretendem que as suas transações sejam confirmadas rapidamente têm de superar as ofertas de todos os outros, oferecendo uma taxa mais elevada. É esta guerra de licitações que faz com que os preços do gás disparem durante os períodos de congestionamento. Os utilizadores que não estão dispostos ou não têm condições para pagar as taxas elevadas ficam com as suas transações retidas no mempool durante minutos, horas ou, por vezes, dias.
Picos de procura
A causa mais visível do congestionamento é um aumento repentino na procura por espaço no bloco. Estes picos são frequentemente desencadeados por eventos específicos. Uma emissão popular de NFTs pode gerar dezenas de milhares de transações em poucos minutos, à medida que os colecionadores se apressam a garantir tokens de edição limitada. O lançamento de um protocolo DeFi ou a reivindicação de um airdrop atrai uma avalanche de utilizadores que interagem simultaneamente com novos contratos inteligentes. Uma grande queda do mercado desencadeia uma onda de liquidações, encerramentos de posições e vendas em pânico, à medida que os participantes da DeFi se apressam a ajustar as suas posições.
Na Ethereum, alguns dos piores episódios de congestionamento da história da rede foram causados por aplicações específicas. A febre dos CryptoKitties, em dezembro de 2017, bloqueou a rede durante dias. A emissão de NFTs «Otherside» da Yuga Labs, em maio de 2022, fez com que os preços do gás ultrapassassem os 8 000 gwei, com alguns utilizadores a pagarem milhares de dólares em taxas por transações que acabaram por falhar. Os pedidos de airdrop para tokens como o UNI da Uniswap e o ARB da Arbitrum criaram um congestionamento prolongado que durou horas, à medida que milhões de carteiras elegíveis se apressaram a reclamar os seus tokens.
A negociação de tokens meme provoca congestionamentos recorrentes em cadeias como a Solana e a Base, onde o lançamento viral de um token pode gerar milhões de transações de troca em poucas horas. Ao contrário dos eventos planeados (em que os utilizadores sabem, pelo menos, que o congestionamento está para acontecer), os picos de tokens meme são imprevisíveis e podem sobrecarregar a capacidade da rede sem aviso prévio.
Capacidade fixa do bloco e taxa de produção
A causa subjacente ao congestionamento reside no facto de a capacidade dos blocos e a taxa de produção serem fixadas pela conceção do protocolo, enquanto a procura é variável e, por vezes, explosiva. A Ethereum produz um bloco a cada 12 segundos com um limite de gás de cerca de 30 milhões de gás. Uma simples transferência de ETH custa 21 000 gás. Uma troca na Uniswap custa entre 150 000 e 300 000 gás. Uma interação complexa de DeFi pode custar 500 000 de gás ou mais. Em condições ideais, a Ethereum consegue processar cerca de 15 a 30 transações por segundo, dependendo da complexidade dessas transações. Quando milhares de utilizadores tentam simultaneamente cunhar um NFT, trocar um token ou reclamar um airdrop, 15 a 30 TPS não são, de forma alguma, suficientes. A Bitcoin enfrenta a mesma limitação fundamental, com limites ainda mais restritos. Os blocos são produzidos a cada 10 minutos (em comparação com os 12 segundos da Ethereum), e cada bloco pode conter aproximadamente 2 000 a 3 000 transações. Isto confere à Bitcoin uma taxa de processamento de cerca de 5 a 7 TPS. Durante períodos de elevada procura, o mempool da Bitcoin pode acumular centenas de milhares de transações não confirmadas, com as transações de baixa taxa a esperarem dias pela confirmação.
Estes limites de capacidade não são arbitrários. Existem para manter a descentralização. Se os blocos fossem maiores ou fossem produzidos mais rapidamente, menos nós conseguiriam acompanhar os requisitos de processamento de dados, o que centralizaria a rede em torno de operadores com hardware dispendioso. O compromisso entre o débito e a descentralização está no cerne da conceção da blockchain e é frequentemente designado por «trilema da blockchain» (a dificuldade de alcançar simultaneamente escalabilidade, segurança e descentralização).
MEV e leilões prioritários de gás
O Valor Máximo Extraível (MEV) contribui para o congestionamento de uma forma menos óbvia, mas significativa. O MEV refere-se ao lucro que os produtores de blocos e os «searchers» podem extrair ao reordenar, inserir ou censurar transações dentro de um bloco. Quando surge uma oportunidade lucrativa de MEV (como uma arbitragem entre duas DEX), vários «searchers» competem para a aproveitar, submetendo transações com taxas progressivamente mais elevadas. Este leilão de gás por prioridade consome espaço no bloco e faz subir as taxas para todos, mesmo para os utilizadores cujas transações não têm nada a ver com a oportunidade de MEV.
Os ataques «sandwich» são um padrão específico de MEV que afeta diretamente os utilizadores comuns. Um pesquisador deteta uma transação de swap de grande volume no mempool, coloca uma ordem de compra antes dela (front-running) e uma ordem de venda depois dela (back-running), lucrando com o impacto no preço que a transação da vítima provoca. Estas transações de front-running e back-running consomem espaço adicional no bloco e aumentam o congestionamento para além do que a procura orgânica dos utilizadores produziria.
Soluções de Camada 2 e Alívio do Congestionamento
As redes de Camada 2 (como Arbitrum, Base, Optimism e zkSync) foram concebidas, em parte, para aliviar o congestionamento na Camada 1 da Ethereum. Ao processarem transações numa cadeia separada e enviarem resumos comprimidos de volta para a Ethereum, as redes de Camada 2 aumentam drasticamente a capacidade total disponível para os utilizadores. Uma transação que custa 5 dólares em gás na camada 1 da Ethereum durante um período de congestionamento pode custar 0,01 dólares numa camada 2. No entanto, as camadas 2 também podem sofrer o seu próprio congestionamento durante picos extremos de procura e herdam algumas limitações da camada 1 na qual efetuam a liquidação.
A Solana adota uma abordagem diferente na gestão do congestionamento através dos seus mercados de taxas locais. Em vez de um único mercado global de taxas, onde todas as transações competem pelo mesmo espaço no bloco, a Solana procura isolar o congestionamento em contas específicas «em destaque». As transações que interagem com um contrato congestionado (como um pool DEX popular) pagam taxas mais elevadas, enquanto as transações que interagem com contratos não relacionados não são afetadas. Este modelo reduz os danos colaterais causados pelos picos de congestionamento, embora não os elimine totalmente.
Quanto tempo dura o congestionamento da blockchain?
A duração do congestionamento depende da sua causa. Um evento agendado, como a emissão de um NFT de grande visibilidade ou a reivindicação de um airdrop, costuma provocar um pico acentuado que se resolve em poucos minutos a algumas horas, assim que a afluência de requerentes diminui. O congestionamento prolongado é diferente: quando uma cadeia funciona persistentemente perto da sua capacidade máxima (por exemplo, durante um mercado em alta prolongado ou um ciclo viral de tokens meme), as taxas elevadas e as confirmações lentas podem durar dias. O congestionamento da Bitcoin tende a dissipar-se mais lentamente do que o da Ethereum, porque o seu tempo de bloco de 10 minutos significa que o mempool esvazia em etapas maiores e menos frequentes. O sinal prático de que o congestionamento está a diminuir é uma redução do tamanho do mempool, combinada com uma descida das taxas de prioridade.
O congestionamento também está intimamente relacionado com a razão pela qual as blockchains ficam mais lentas em geral, e é diferente de uma interrupção total. Se uma rede deixar completamente de produzir blocos, trata-se de uma paragem da cadeia, e não de congestionamento.
Em que medida os limites dos blocos diferem entre as diferentes cadeias de blocos?
Como cada cadeia limita a quantidade de trabalho que cabe num bloco, a margem disponível antes de se verificar congestionamento varia consideravelmente. A tabela abaixo resume as restrições de capacidade aproximadas que determinam a rapidez com que cada rede fica congestionada sob carga.
Blockchain
Tempo de bloco
Métrica de capacidade
Capacidade de processamento aproximada
Bitcoin
~10 minutos
4M unidades de peso
5 a 7 TPS
Ethereum L1
~12 segundos
~30 milhões de gás por bloco
15 a 30 TPS
Solana
intervalo de ~400 ms
Unidades de computação e bloqueios de conta
Milhares de TPS
Arbitrum / Base (L2)
Menos de um segundo
Gás L2, ajustado para L1
Centenas a milhares de TPS
As cadeias com maior débito e as redes de Camada 2 absorvem melhor os picos de procura, mas nenhum modelo está imune. Para uma análise mais aprofundada da relação entre velocidade e capacidade, consulte «débito vs. latência» e o que é uma blockchain de Camada 2.
Qual é a diferença entre congestionamento e uma paragem em cadeia?
Tanto o congestionamento como a paragem da cadeia parecem indicar ao utilizador final que «a rede está avariada», mas são situações fundamentalmente diferentes, com causas e soluções distintas. O congestionamento significa que a cadeia continua a produzir blocos; está apenas sobrecarregada e a transações tornam-se dispendiosas. Uma paragem da cadeia significa que a produção de blocos cessou por completo.
Aspecto
Congestionamento
Paragem da corrente
Produção em bloco
Continua normalmente
Parou
Transações
Confirme devagar, com taxas elevadas
Não confirme de forma alguma
Causa principal
A procura excede a capacidade do bloco
Falha no consenso ou erro do cliente
Resolução típica
A procura diminui, as taxas baixam
Os validadores coordenam um reinício
Em suma, o congestionamento é um problema de preços e de capacidade, enquanto uma paragem em cadeia é um problema de disponibilidade. As atividades relacionadas com o MEV, como os leilões de gás prioritário, podem agravar o congestionamento; por isso, compreender o que é o MEV ajuda a explicar por que razão as taxas aumentam mais rapidamente do que a própria procura dos utilizadores, por si só, permitiria prever.
Como podem os promotores imobiliários reduzir o impacto do congestionamento?
As aplicações não conseguem eliminar o congestionamento, mas podem manter a sua fiabilidade mesmo em condições de congestionamento. Utilize estimativas dinâmicas de taxas em vez de preços de gás pré-definidos, implemente uma lógica de repetição de tentativas com uma gestão adequada do nonce e coloque as transações não urgentes em fila para períodos fora de pico. No que diz respeito aos dados, dê preferência à entrega baseada em push em vez de ciclos de polling apertados, para que a sua ingestão acompanhe o ritmo à medida que os blocos crescem. Compreender como funcionam os pedidos RPC, optar pelo streaming em vez do polling e ter em conta a limitação da taxa de RPC do fornecedor são fatores que reduzem a probabilidade de o congestionamento se traduzir em perda de dados ou falhas nas transações dos utilizadores.
Perguntas frequentes
Por que é que as taxas de gás disparam durante os períodos de congestionamento?
O espaço nos blocos é limitado e o mempool é uma fila de prioridade baseada nas taxas. Quando o número de transações em competição excede a capacidade de um bloco, os utilizadores oferecem taxas mais elevadas para serem incluídos em primeiro lugar. Essa guerra de licitações faz subir o preço do gás vigente até que a procura volte a ficar abaixo da capacidade do bloco.
O congestionamento significa que a blockchain está em baixo?
Não. Durante um congestionamento, a cadeia continua a produzir blocos e a confirmar transações; apenas o processo é mais lento e mais dispendioso. Uma rede que deixa de produzir blocos está a sofrer uma paragem da cadeia, o que constitui um problema distinto.
As redes de Camada 2 também podem ficar congestionadas?
Sim. As camadas 2 oferecem uma capacidade de processamento muito superior à da camada 1 da Ethereum, pelo que toleram picos de tráfego mais elevados; no entanto, uma procura extrema pode ainda assim esgotar a sua capacidade e fazer subir as taxas. Além disso, herdam algumas limitações da camada 1 na qual efetuam a liquidação.
Como posso saber se o congestionamento está a diminuir?
Fique atento ao tamanho do mempool e às taxas de prioridade. Uma redução na fila de transações não confirmadas, combinada com uma descida nas taxas de prioridade, é o sinal mais claro de que a procura voltou a ficar abaixo da capacidade do bloco.
Porque é que as cadeias de blocos não aumentam simplesmente o tamanho dos blocos?
Blocos maiores ou mais rápidos aumentam o custo de hardware associado à operação de um nó, o que afasta os operadores de menor dimensão e centraliza a rede. Os limites de capacidade constituem um compromisso deliberado que protege a descentralização, uma tensão frequentemente designada por «trilema da blockchain».
Como o congestionamento afeta os programadores que desenvolvem na Quicknode
Para os programadores, o congestionamento afeta tanto o envio de transações como a ingestão de dados. No que diz respeito ao envio, as transações com taxas de gás insuficientes ficam retidas no mempool ou são totalmente rejeitadas. As aplicações necessitam de uma estimativa robusta das taxas, de uma lógica de repetição de tentativas e de uma gestão de nonces para lidar com situações de congestionamento de forma adequada. A API Core da Quicknode proporciona um envio fiável de transações com um desempenho consistente, mesmo durante picos de congestionamento, e os métodos avançados da API ajudam as aplicações a estimar os preços de gás adequados com base nas condições atuais da rede.
No que diz respeito à ingestão de dados, o congestionamento implica mais transações por bloco, blocos maiores, mais eventos para processar e volumes de dados mais elevados. As arquiteturas baseadas em polling enfrentam dificuldades durante o congestionamento, uma vez que o volume de dados por bloco aumenta enquanto o intervalo de polling permanece fixo, criando um atraso no processamento. O Quicknode Streams lida com o congestionamento de forma eficaz, uma vez que a sua arquitetura baseada em push se adapta ao tamanho do bloco. Quer um bloco contenha 100 ou 1 000 transações, o Streams entrega os dados completos ao seu destino com a mesma garantia de entrega e ordenação. O agrupamento em lotes e a compressão configuráveis ajudam a gerir o aumento do volume de dados durante períodos de congestionamento prolongados.