Glossário / Protocolo e atualizações
Erlay
- O que é Erlay?
- Erlay é uma forma proposta para que os nós comparem quais transações cada um viu usando esboços minúsculos, em vez de anunciar cada hash de transação a cada par.
Especificação no BIP-330.
Anunciar transações é o maior uso individual da largura de banda de um nó, e o custo cresce com cada par adicionado. Gleb Naumenko e Pieter Wuille redigiram o projeto como BIP330, onde ele continua sendo um rascunho: nenhuma versão do Bitcoin Core o ativa. Isso importa porque define quão barato pode ficar operar seu próprio nó.
Como funciona
Erlay ataca uma redundância que fica óbvia assim que se conta: atualmente um nó informa a cada um de seus pares sobre cada transação da qual fica sabendo, e a maioria desses pares já sabia.
O método atual é a inundação. Cada transação nova é anunciada em uma mensagem inv que carrega um código de tipo e um identificador de 32 bytes, ou seja, 36 bytes por anúncio por par. O Bitcoin Core abre por padrão 8 conexões de saída para a retransmissão de transações e aceita pares de entrada até um total de 125, então uma máquina bem conectada envia e recebe a mesma mensagem curta dezenas de vezes por algo que ela ia descobrir de qualquer forma. O desperdício é proporcional ao número de conexões, o que pune exatamente o comportamento que torna a rede mais difícil de dividir.
Erlay mantém um pouco da inundação e substitui o resto por reconciliação de conjuntos. Cada par de nós acompanha os anúncios que ainda não trocou com o outro. Periodicamente um lado solicita um esboço desse conjunto. Um esboço é um resumo algébrico de tamanho fixo cujo comprimento depende de quantas diferenças se espera, e não de quantas transações qualquer um dos lados guarda, e combinar dois esboços produz exatamente as entradas que um par tem e o outro não tem. A biblioteca minisketch, que o Bitcoin Core carrega em sua árvore de código-fonte há anos enquanto o protocolo de retransmissão em volta dela continuou sem ser integrado, implementa a construção e a decodificação.
Errar o tamanho do esboço não é fatal. Quando a decodificação falha porque a diferença era maior do que o estimado, os pares ampliam o esboço e tentam de novo em vez de começar do zero, então uma estimativa ruim custa um pouco mais de largura de banda em vez de uma ressincronização completa.
Onde você vê isso
Você ainda não vê o Erlay, e essa é a resposta honesta para quem o procura no painel de um nó.
O que você pode ver é o problema que ele visa. Execute a chamada getnettotals no seu próprio nó e os contadores de bytes mostram o tráfego de retransmissão dominando tudo, exceto o download inicial da cadeia. Operadores com conexões com limite de dados já reagem limitando o upload com maxuploadtarget ou reduzindo o número de pares que mantêm, e ambas as escolhas enfraquecem um pouco a rede para reduzir uma conta.
É esse tradeoff que o Erlay pretende dissolver. Se a largura de banda deixasse de crescer com o número de conexões, um nó poderia manter com segurança muito mais pares, e uma rede densamente conectada é muito mais difícil de particionar ou de sofrer um ataque de eclipse. Para quem só quer verificar seus próprios bitcoins em vez de confiar em um explorador de blocos, a promessa é estreita e real: a mesma verificação em uma conexão mais barata.
Erlay vs retransmissão de blocos compactos
Erlay diz respeito às transações antes de serem mineradas; a retransmissão de blocos compactos diz respeito aos blocos depois. Os dois respondem a gargalos diferentes e têm sido avaliados por relógios diferentes. A propagação de blocos é um problema de latência, porque cada segundo que um bloco passa em trânsito é um segundo que algum minerador passa minerando sobre uma ponta da cadeia que não existe mais, e a correção foi lançada em 2016. O anúncio de transações é um problema de volume, medido em gigabytes ao longo de um mês e não em milissegundos, então ninguém teve pressa, e é por isso que a proposta está parada como rascunho há anos.