Olá dúvida sobre o preenchimento dos blocos e sua sequência

Olá a todos. Uma dúvida de iniciante. A cada 12 min um bloco é criado e inserido na rede btc e depois mais 12 min e por assim vai. O preenchimento destes blocos são feitos por onden de crianção do bloco ? Tipo o bloco q foi criado agora tem prioridade de ser preenchido com informações e não o bloco criado depois dele?

1 curtida

Olá Pauloj, seja bem vindo!

Tentarei responder com base no que eu entendi da sua dúvida. Estamos aqui para tentar ajudar, geralmente indicando algum local (site ou vídeo) que ajudará no esclarecimento da(s) dúvida(s). Pergunte sempre que precisar. Fique atento aos sites voltados para este tipo de assunto porque podem ser “armadilhas” querendo causar prejuízos.

Se entendi direito você imagina que as transações que os usuários fazem transferindo bitcoins para outras contas tem alguma ordem ou sequência para serem processadas pela rede. Cada novo bloco criado não é necessariamente preenchido com as transações que entraram na rede em ordem sequencial, como se estivessem numa fila única. Esse processamento das novas transações que chegam na rede ficam temporariamente num local chamado de mempool, que é como se fosse uma sala de espera onde as transações ficam aguardando para serem processadas. Quem realiza esse processamento (pega a transação na sala de espera é chamado de minerador) que não é obrigado a processar as transações seguindo alguma ordem sequencial pré-estabelecida, ou seja, não existem algum tipo de distribuição de senha para ser chamado em alguma ordem sequencial.

O minerador recebe dois tipos de pagamento pelo serviço prestado.

  1. O sistema gera bitcoins como recompensa que começou pagando 50 bitcoins e atualmente paga 6,25 bitcoins sendo que esse valor de remuneração decai a cada quatro anos pela metade (50 > 25 > 12,5 > 6,25)).

  2. Ele pode escolher aquelas transações que pagam taxas mais elevadas (também chamado de fee) que é o valor cobrado por transação e que não é fixo, depende por exemplo do volume de transações na fila, quanto maior for o volume maior será a possibilidade de se pagar mais caro por cada transação. Esse é um problema que está ocorrendo no Ethereum entre outras questões por causa dos jogos que estão sendo implementados com uso desta rede e que estão gerando muitas transações.

O tempo médio entre um bloco e outro, no caso do bitcoin é de cerca de 10 minutos. Mas cada blockchain (de outras criptomoedas) tem seu próprio tempo ou espaço de tempo entre um bloco e outro.

Acredito que suas dúvidas poderão ser esclarecidas no site abaixo: O que é mempool no Bitcoin?

No site abaixo você consegue ter uma visão em formato de animação do mempool de alguns blockchains como bitcoin, ethereum, bitcoin cash, etc (tem a opção para selecionar):

Blockchain Transaction Visualizer - TxStreet.com

No site abaixo você pode explorar dados de cada bloco como quantidade de transações, tamanho, quanto rendeu de taxa para o minerador, tempo que demorou, quem minerou etc.

Bitcoin Explorer — Blockchair

A apostila sobre blockchain é para iniciantes mas tem uma pegada mais técnica:

2 curtidas

Show de bola Cecílio. Agora q encontrei vcs vou encher o saco e tirar minha dúvida kkkk. Valeu demais. Abraço e obrigado. Meu maior questionamento era inserir as informações no blocos. Como na animação q vc mandou. Imagina 10 blocos. O bloco 1 deve ser preenchido primeira pra só depois o bloco 2 começar a ser preenchido com dados ou não há esta ordem. Tanto o bloco 1 como o bloco 10 pode receber as informações q estão “na sala de espera”.

1 curtida

O processo de mineração é baseado numa competição entre os mineradores e começa após cada bloco minerado mas entre a teoria e a prática existem algumas questões. Como cada minerador “pega” as transações na fila ele pode escolher algumas transações para incluir no bloco que ele está minerado enquanto outros mineradores podem escolher outras transações, ou seja, na hora da verdade depois dos cerca de 10 minutos pode haver blocos com transações diferentes disputando o lugar na fila para se tornar o próximo bloco. Aquelas transações incluídas no bloco validado e que entra na sequência saem da fila e aquelas que estavam incluídas num bloco que não foi validado volta para a fila.
Neste processo existem algumas transações que acabam ficando “perdidas”, é outra coisa que acontece nesse processo.
Se você olhar na animação do site Tx Street no mempool do Ethereum vai ver que existem vários blocos na fila. Vc vai perceber que as transações que ficam “no ponto de ônibus” não entram todos no primeiro ônibus, alguns entram e saem dos blocos que estão na fila. No caso do Ethereum o tempo ou espaço entre um bloco e outro é bem menor, acho que não chega a 1 minuto.

3 curtidas

Outra fonte de informação para entender como os blocos são formados é o https://mempool.space/

O gráfico mostra para a direita (em tempo real) os blocos que já foram minerados, e para a esquerda a quantidade ainda necessária de blocos estimada a serem minerados para acomodar todas as transações que ainda estão pendentes.

2 curtidas

Um dúvida:

No instante desse print, esses mais de 30 blocos da esquerda estão com transações diferentes ou há transações repetidas neles?

Os mineradores estarão competindo entre si pelo bloco com taxas mais caras (mas a direita) certo? Se um minerador quiser pode escolher um outro bloco para minerar?

Os da esquerda são somente uma previsão de como estes blocos futuros serão preenchidos baseando nas taxas das transações que estão atualmente sem confirmação.
São transações não repetidas.

Quem monta o bloco e as transações são os mineradores de forma independente, e eles não precisam escolher as com maior taxa, porém é geralmente é o que faz mais sentido econômico, já que minerar uma transação com taxa baixa ou alta é indiferente sob ponto de vista de dificuldade e gasto energético, porém caso ele minere o bloco, terá maiores retornos com as transações pagando uma taxa mais alta.

Por exemplo, se um minerador quiser criar uma transação para ele mesmo pagando nenhuma taxa e incluir no seu próprio bloco, não tem nada que impeça isto de acontecer.

1 curtida

Entendi.

Outra dúvida: sempre que consulto o mempool, tem no mínimo 2-3 blocos à esquerda, ou seja, mais gente que a capacidade máxima para comportar um único bloco. Então, pq olhando para direita, vemos alguns blocos minerados com bem menos transações que o outro se o minerador poderia preencher todos os blocos com a capacidade máxima e ganhar mais em taxas?

1 curtida

Há várias situações, muitas das quais em nem mesmo imagino, mas vou listar algumas situações que podem levar um minerador a não preencher um bloco. (Não respondem diretamente a sua pergunta, pois nunca estudei suficiente sobre operações de mineração).

  • Quando a mempool está relativamente vazia, muitas vezes não há transações suficientes para preencher um bloco. Os mineradores não esperam ter transações suficientes para começar a minerar. Eles simplesmente coletam as transações existentes (mesmo não preenchendo o bloco) e começam o processo, e muitas vezes acham o bloco por sorte.
  • Outro caso mais raro é, quando um bloco novo é encontrado, os demais mineradores precisam descartar o seu próprio bloco candidato, verificar quais transações foram mineradas neste bloco novo e remove-las de sua própria mempool, pois não podem tentar incluir uma mesma transação em um novo bloco.
    O processo de montar um novo bloco candidato pode demorar um tempo (bem pouco), mas nesse interim é possível que mineradores tentem minerar blocos vazios só para não desperdiçar o tempo. E pode ser que encontrem a solução por pura sorte.

Com certeza há outros motivos, mas aí teria que perguntar para alguém envolvido com mineração profissional.

2 curtidas

Estou terminando uma postagem sobre BIP’s mas estou dando uma pesquisada sobre blocos vazios. Além da questão da quantidade de transações entrando no mempool acredito que entra nessa equação a questão do tempo (concorrência entre os mineradores) que é de 10 minutos. Cada minerador vai pegando as transações e possivelmente muitas transações dos blocos que estão sendo minerados são iguais mas imagino que haverá transações que estarão em um bloco e não estarão em outro. Pode ser que alguns mineradores que estejam há algum tempo sem minerar um bloco resolvam fechar um bloco com menos transações ao invés de esticar o tempo até perto do limite. Outro ponto a ser considerado é que enquanto procura a solução para o bloco ele já vai pegando novas transações para montar o próximo bloco. Me parece que a quantidade de transações incluídas num bloco não é de fato algo tão importante (existem blocos vazios e blocos com milhares de transações), o que os mineradores devem respeitar é o tamanho de 1 Mb, se bem que existem blocos que ultrapassam esse tamanho. Neste caso em que o tamanho ultrapassa 1Mb desconfio que os mineradores enfiam um monte de transações acima do tamanho máximo e quando um novo bloco é minerado eles saem limpando/tirando as transações que entraram no bloco minerado. Depois de limparem, se o tamanho ainda estiver um pouco acima deixam acima mesmo e partem para a procura da solução. Transcrevo abaixo um trecho do livro Mastering Bitcoin que é um dos melhores:

Durante os últimos 10 minutos, enquanto o nodo do Jing procurava uma solução para o bloco 277.315, ele também estava coletando transações para se preparar para o próximo bloco. Agora ele já coletou algumas centenas de transações no pool de memória. Ao receber o bloco 277.315 e validando-o, o nodo do Jing também irá verificar todas as transações no pool de memória e removerá qualquer uma que já tiver sido incluída no bloco 277.315. Quaisquer transações que permanecerem no pool de memória são transações não-confirmadas e estão aguardando para serem registradas em um novo bloco.
O nodo do Jing imediatamente constroi um novo bloco vazio, um candidato para o bloco 277.316. Esse bloco é chamado de bloco candidato pois ele ainda não é um bloco válido, já que ele não contém uma prova de trabalho válida. O bloco só se torna válido se o minerador tiver sucesso em encontrar uma solução para o algoritmo de prova de trabalho.

Extraído de: https://bitcoinbook.info/wp-content/translations/pt_BR/book.pdf

2 curtidas