Blockchain/Nível II · Mecânica/2.2 Transações/Lição 5
O mempool
A sala de espera local que cada nó gerencia independentemente
MateriaisUm explorador de blocos com visualização do mempool (por exemplo, mempool.space)Opcional: um nó do Bitcoin Core (‘getmempoolinfo’)
Curiosidade
- Por que uma transação válida em um nó completo é rejeitada pelo seu vizinho?
- O que acontece com as transações de taxa mais baixa quando um nó atinge seu limite de memória?
- Como os mineradores decidem quais transações não confirmadas merecem espaço em seu próximo bloco?
Explorar
- O mempool não é um banco de dados central; é uma lista local, em memória, mantida independentemente por cada nó completo. O Bitcoin Core descarta transações não confirmadas que permanecem lá por muito tempo: 72 horas quando o prazo de validade foi introduzido na versão 0.12, duas semanas (336 horas) desde a versão 0.14. Dois nós que recebem as transações em ordens diferentes, ou têm configurações distintas, possuem mempools ligeiramente diferentes.
- Cada nó aplica regras de consenso (como scripts válidos e proibição de gasto duplo), além de regras de política local, como taxas mínimas e configurações RBF. Se uma transação não atender ao limite mínimo de taxa estabelecido por um determinado nó, esse nó a rejeitará ou a descartará caso já esteja incluída, mesmo que outros nós a aceitem.
- Por padrão, o Bitcoin Core limita o tamanho do mempool a 300 MB por meio do parâmetro ‘maxmempool’ no arquivo bitcoin.conf. Quando esse limite é atingido, o nó eleva dinamicamente seu limiar de taxa mínima para dar espaço a transações mais lucrativas, excluindo primeiro as menos valiosas. Execute ‘getmempoolinfo’ e observe como ‘mempoolminfee’ sobe acima do valor estático ‘minrelaytxfee’ quando o mempool se enche.
- Os mineradores selecionam transações de seus próprios mempools para construir blocos, priorizando as com maior taxa por byte virtual, avaliadas juntamente com quaisquer transações pai não confirmadas. Quando um bloco válido chega, cada nó remove as transações confirmadas e as conflitantes de seu pool.
- A política não é um consenso. Uma transação que a maioria dos nós se recusa a transmitir, porque está abaixo do valor mínimo de taxa exigido ou utiliza um formato não padrão, ainda pode ser válida em um bloco, e alguns mineradores aceitam tais transações diretamente. Portanto, o mempool de cada nó é apenas uma estimativa do que o próximo bloco conterá, e diferentes nós podem divergir ligeiramente.
- Ao ser desligado, o Bitcoin Core salva seu mempool em um arquivo, mempool.dat, e o carrega novamente na inicialização, descartando tudo o que não é mais válido, para que um nó reiniciado não comece com um pool vazio. Para observar o mempool em funcionamento, acesse mempool.space: seus blocos projetados mostram o que os mineradores provavelmente incluirão a seguir, e cada novo bloco elimina a camada superior.
Fatos-chave
- O mempool é um conjunto de memória local em cada nó, e não um serviço universal único.
- O Bitcoin Core tem como padrão um limite de 300 MB para o tamanho do mempool por meio de ‘maxmempool’.
- Por padrão, o Bitcoin Core descarta transações não confirmadas após duas semanas (336 horas, desde a versão 0.14).
- Os nós aplicam tanto as regras de consenso quanto as regras de política local, incluindo as taxas mínimas.
- Quando o mempool está cheio, os nós aumentam dinamicamente os limites de taxa para excluir transações menos lucrativas.
- O Bitcoin Core salva seu mempool em ‘mempool.dat’ ao ser desligado, para que ele sobreviva a uma reinicialização.
Exercício nove, seis, três, um
9ReunirListe 9 transações distintas e não confirmadas da visualização do mempool de um explorador de blocos. Anote suas taxas atuais, tamanhos em bytes virtuais e números de confirmações (todos zero).
6AgruparAgrupe as 9 transações em 6 categorias com base no motivo pelo qual elas podem estar travadas: taxa de tarifa baixa, tamanho elevado, sinalização RBF, entradas não confirmadas, status de órfão ou outros motivos relacionados a políticas.
3DestilarReduza os 6 grupos para 3 razões principais pelas quais um nó rejeitaria ou expulsaria uma transação de seu mempool, apesar dela ser válida segundo o consenso.
1CristalizarEscreva 1 frase explicando como as diferenças nas políticas locais entre os nós criam uma visão fragmentada e não universal das transações pendentes em toda a rede.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.
- Bitcoin Core documentation: -maxmempool and -mempoolexpiry configuration parameters
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023)
- mempool.space documentation on real-time mempool visualization