Ir diretamente para o conteúdo principal

Como aceder ao mempool do Bitcoin

Atualizado em
26 de novembro de 2025

7 minutos de leitura

Visão geral

O Bitcoin é o precursor da tecnologia blockchain. Com o Bitcoin, iniciou-se uma nova era de blockchain e descentralização. O Bitcoin permitiu que todos pudessem efetuar as transações ponto a ponto de que hoje desfrutam; este guia irá ensinar-lhe como obter essas transações a partir do mempool do Bitcoin.

Pré-requisitos:

  • Terminal/cmd (CLI).
  • Nó Bitcoin.
  • Paixão pela descentralização.

O que é o Mempool do Bitcoin?

As transações enviadas na rede Bitcoin não são adicionadas diretamente à blockchain. Todas as transações válidas têm de passar por uma área de espera antes de serem aceites num bloco. Esta área de espera é conhecida como mempool. Se o tamanho do mempool for grande, isso indica um tráfego elevado na rede, o que resulta em tempos de confirmação das transações mais longos e em taxas de transação mais elevadas.

Nota: Na prática habitual, «Bitcoin» refere-se ao protocolo/rede, enquanto «bitcoin» ou «BTC» se refere à moeda.

A taxa de transação do Bitcoin é medida pelo número de satoshis pagos por byte da transação. O satoshi é a menor unidade da moeda nativa bitcoin da rede Bitcoin, em que 1 bitcoin = 100 milhões de satoshis. Os mineradores dão prioridade às transações no mempool com taxas de transação elevadas. No entanto, desde a atualização SegWit, algumas coisas mudaram no que diz respeito às transações de Bitcoin. Esta atualização introduziu um novo tipo de transação, conhecida como transação SegWit, com o objetivo de aumentar o número de transações por bloco de Bitcoin. Resolveu duas questões: 1. Aumentou o número de transações de Bitcoin por segundo; 2. Resolveu o problema da maleabilidade das transações.

Antes do SegWit, os blocos ou as transações eram medidos em bytes, e cada bloco estava limitado a 1 MB (megabyte) ou 1 milhão de bytes. Após o SegWit, as transações e os blocos são medidos em unidades de peso; estas unidades de peso são utilizadas para medir os dados do Bitcoin e comparar transações.

O próximo conceito a abordar é o vByte. Um vByte equivale a quatro unidades de peso. Um Byte de dados ocupa 1 vByte (4 unidades de peso) numa transação tradicional. Por outro lado, numa transação SegWit, um Byte de dados ocupa 1/4 de vByte (1 unidade de peso). Esta redução permite que os blocos sejam preenchidos com 4 vezes mais transações. O tamanho atual de um bloco de Bitcoin está limitado a 1 vMegabyte / 1 milhão de vByte / 4 milhões de unidades de peso. A maioria das carteiras calcula as taxas de transação em termos de satoshis/vByte, que são pagas por cada vByte de dados utilizado.

Casos de utilização da análise do mempool do Bitcoin:

A análise do mempool ajuda-nos a compreender o congestionamento e o tráfego na rede, o que, em última análise, nos ajuda a calcular as taxas de transação.

Vamos agora aceder ao mempool e obter alguns dados sobre as transações a partir desse conjunto.

Configurar um ponto de acesso Quicknode para Bitcoin

Para o que nos propomos a fazer hoje, precisamos de um nó Bitcoin para aceder aos dados da blockchain. Lançar o nosso próprio nó aqui seria muito dispendioso e demorado, dada a grande quantidade de dados existentes na Bitcoin. Em vez disso, vamos criar uma conta gratuita no Quicknode aqui, onde poderemos criar facilmente um ponto de acesso Bitcoin.

Captura de ecrã do ponto de acesso Quicknode para Bitcoin

Copie e guarde o URL HTTPS do seu nó, pois irá precisar dele mais tarde.

Como aceder ao Mempool do Bitcoin/Como obter as transações pendentes do Bitcoin

Vamos utilizar os métodos RPC do Bitcoin para obter dados do mempool — mais concretamente, o método `getrawmempool `. Abra o terminal/cmd e copie e cole o seguinte:

curl --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getrawmempool", "params": [true]}' -H 'content-type: application/json' <QUICKNODE_BITCOIN_URL>

Substitua QUICKNODE_BITCOIN_URL pela URL HTTPS do seu nó Bitcoin, que obtivemos no passo anterior. Acima encontra-se um pedido cURL para o nosso nó, juntamente com o método getrawmempool. 

O resultado deverá ser semelhante a este.

Vamos agora analisar o corpo da resposta. O método acima apresenta uma lista das transações pendentes que se encontram atualmente no mempool. Vamos selecionar uma única transação e analisar cada um dos seus campos.

{
"result": {
"2d1228abf06836b1173936061fec0384e82e3b684d7950a27f06a06f587400d3": {
"fees": {
"base": 0.00111999,
"modified": 0.00111999,
"ancestor": 0.00111999,
"descendant": 0.00111999
},
"size": 90826,
"fee": 0.00111999,
"modifiedfee": 0.00111999,
"time": 1629052793,
"height": 695936,
"descendantcount": 1,
"descendantsize": 90826,
"descendantfees": 111999,
"ancestorcount": 1,
"ancestorsize": 90826,
"ancestorfees": 111999,
"wtxid": "b3b49bb3dcae483d579710a2e1f9c7ed585ab35e2a8cb941ff8cb27ea8adec20",
"depends": [],
"spentby": [],
"bip125-replaceable": false
}
}
}

Explicação da saída JSON acima:

Linha 3: Este é o identificador da transação, através do qual uma transação na blockchain é identificada.

Linhas 4-9: Discriminação das comissões de transação.

Linha 10: Tamanho da transação, de acordo com o BIP 141.

Linha 11: Taxa de transação em BTC (bitcoin).

Linha 12: Taxa de transação com diferenças de taxa utilizadas para determinar a prioridade de mineração.

Linha 13: Hora em que a transação foi introduzida no pool, em segundos, a contar de 1 de janeiro de 1970 (GMT).

Linha 14: Altura da blockchain (bloco mais recente) no momento em que a transação entrou na piscina.

Linha 15: Número de transações descendentes no mempool, incluindo esta.

Linha 16: Tamanho de todas as transações descendentes no mempool.

Linha 17: Taxas alteradas de todas as transações descendentes no mempool.

Linha 18: Número de transações anteriores no mempool, incluindo esta.

Linha 19: Tamanho de todas as transações ancestrais no mempool.

Linha 20: Taxas alteradas de todas as transações anteriores no mempool.

Linha 21: ID da transação, juntamente com os dados da testemunha.

Linha 22: Se uma transação não confirmada for utilizada como entrada para esta transação, deve ser introduzida aqui.

Linha 23: Se outra transação não confirmada estiver a utilizar dados desta transação, tal deve ser indicado aqui.

Linha 24: Um valor booleano que indica se a transação pode ser substituída ao abrigo do BIP 125.

Agora, para obter os dados reais da transação, teremos de utilizar outro método, o `getrawtransaction`, que irá devolver informações sobre uma transação específica. Copie e cole o seguinte no seu terminal/cmd:

curl --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getrawtransaction", "params": ["2d1228abf06836b1173936061fec0384e82e3b684d7950a27f06a06f587400d3", true]}' -H 'content-type: application/json' <QUICKNODE_BITCOIN_URL>

Substitua QUICKNODE_BITCOIN_URL pela URL HTTPS do seu nó Bitcoin, que obtivemos no passo anterior. Acima encontra-se um pedido cURL para o nosso nó, juntamente com o método getrawtransaction. Para o obter, vamos enviar um ping ao nosso nó para resolver o método. Temos de passar dois parâmetros para este método. O primeiro é o ID da transação a ser consultada. O segundo é um valor booleano que, se definido como «false», devolve uma cadeia de caracteres; caso contrário, devolve um objeto JSON.

Definimos o segundo parâmetro como «true», pelo que o resultado deverá ser semelhante a este.

Explicação do objeto de transação aqui colada:

Linha 3: ID da transação através da qual uma transação na blockchain é identificada (tal como fornecido).

Linha 4: Hash da transação, derivado do txid das transações testemunho.

Linha 5: Tamanho da transação, de acordo com o BIP 141.

Linha 6: Tamanho virtual da transação, que corresponde ao tamanho das transações de testemunha.

Linha 7: O número da versão da transação, atualmente 1 ou 2. Se for 2, significa que se aplica o BIP 68.

Linha 8: O tempo de bloqueio é especificado como um número de bloco. Se for indicado um tempo de bloqueio, essa transação só poderá ser adicionada a um bloco se o bloco correspondente ao tempo de bloqueio já tiver sido ultrapassado. Por exemplo, se o tempo de bloqueio for indicado como 30, os mineradores só poderão incluir a transação depois de o bloco número 30 ter sido minerado.

Linhas 9-20: O Vin apresenta a lista de transações no mempool que esta transação específica está a utilizar como entrada.

Linhas 21-33: O Vout apresenta a lista de transações no mempool utilizando esta transação específica como entrada.

Linha 34: Hash do bloco; aqui aparece como nulo, uma vez que a transação ainda não foi confirmada.

Linha 35: Número de confirmações que a transação já recebeu.

Linha 36: Hora em que a transação foi introduzida no pool, em segundos, desde 1 de janeiro de 1970 (GMT).

Linha 37: Hora em que foi minerado o bloco no qual a transação foi adicionada; neste caso, o valor é nulo, uma vez que a transação está pendente.

Linha 38: Dados serializados e codificados em hexadecimal para «txid»

Ao analisar os dados acima, podemos compreender todos os pormenores de uma transação de Bitcoin. As transações de Bitcoin são bastante complexas, mas o método `getrawtransaction` fornece as informações brutas da transação, que são fáceis de analisar e compreender.

Conclusão

Parabéns por teres aprendido tudo sobre o mempool do Bitcoin. Hoje, neste guia, aprendemos o que é o mempool do Bitcoin, para que serve, como aceder ao mempool do Bitcoin e como obter transações pendentes do Bitcoin, bem como os dados dessas transações.

Subscreve a nossa newsletter para receberes mais artigos e guias sobre o Ethereum. Se tiveres algum comentário, não hesites em contactar-nos através do Twitter. Podes sempre conversar connosco no nosso servidor da comunidade Discord, onde encontrarás alguns dos programadores mais fantásticos que alguma vez conhecerás :)

Partilhe este guia