Ecosistema Bitcoin: Mining e Puzzles Criptográficos – demonstrados na prática. Parte 2.

 

christine-roy-343235-unsplashNa primeira parte deste artigo vimos como os miners do protocolo Bitcoin validavam transações, através da resolução de puzzles criptográficos.

Nesta segunda parte, vamos ver o que acontece depois das transações serem validadas.

Bom, uma vez validadas as transações, os miners vão poder acrescentar o seu bloco ao protocolo blockchain, ou à corrente de blocos, se quisermos.

Cada vez que um bloco é acrescentado ao protocolo, o miner recebe um Block Reward (recompensa de bloco).

O Block Reward diminui para metade a cada 4 anos. Começou por ser 50 bitcoins, passou para 25 bitcoins, depois 12,5 bitcoins e continuará a diminuir para metade a cada 4 anos.

Este é o processo pelo qual se “produzem” bitcoins. Cada vez que transações são validadas e blocos adicionados ao protocolo, estão a ser produzidas moedas.

Tal sistema de incentivos, é essencial para garantir o funcionamento e equilíbrio dos protocolos blockchain.

Se pensarmos um pouco sobre o assunto, nunca existirão, de fato, 21 milhões de bitcoins, como refere o paper de Satoshi Nakamoto. Existirão sim, 20.99999(9) milhões de bitcoins.

Neste contexto, o Block Reward aproximar-se-á de zero, mas nunca chegará a ser exatamente zero.

Qual será então a motivação dos miners para continuarem a realizar o seu papel?

É importante perceber, que além dos Block Rewards, existem também as Transaction Fees, ou custos de transação. Para entendermos melhor o que são, sugiro que leiam o meu post sobre miners, nodes, fees e transações.

Se pensarmos no processo de mining como um modelo de negócio, os miners têm o custo fixo do hardware e o custo variável de consumo de energia. A sua receita/incentivo são a recompensa (bitcoins) que recebem por acrescentar blocos ao protocolo, bem como as fees por validarem as transações dentro desses blocos.

Vejamos a imagem abaixo.

Screen Shot 2018-02-20 at 15.27.53

No inicio do protocolo Bitcoin, os Block Rewards eram naturalmente mais altos e, como expliquei, diminuem a cada quatro anos. Igualmente, as Transaction Fees eram baixas.

Naturalmente, dado o reduzido número de transações, era necessário que assim fosse para garantir incentivo suficiente para os miners.

A ideia de Satoshi Nakamoto era que, à medida que os Block Reward decrescessem, as Transaction Fees aumentariam.

Mas atenção, não soem já os alarmes.

Isto não significa que o fee médio de cada transação aumenta, mas sim que o total dos fees recebido pelos miners como um todo aumenta. Simplesmente porque existem mais transações na rede.

Em outras palavras, significa que os miners podem agora receber mais fees de transações de mais pessoas e não que cada pessoa terá que pagar mais. Existem mais pessoas a usar a rede e por isso existe um maior número de fees a serem pagas. Apenas isso.

Esta relação inversa entre Block Reward e Transaction Fees é gradual. Não acontecerá do dia para a noite, mas será interessante observar como irá afetar o sistema de incentivos do protocolo Bitcoin.

Outro aspeto que importa estudar para entender o equilíbrio do protocolo Bitcoin é o conceito de Block Interval, ou intervalo de bloco, em português.

No protocolo Bitcoin, um novo bloco deve ser produzido a cada 10 minutos.

Existem dois motivos para isso:

  1. Não queremos produzir bitcoins a um ritmo demasiado rápido
  2. Os dados (transações) precisam de tempo para ser propagados pela rede.

Vamos olhar para um caso concreto.

Imaginemos dois miners geograficamente distantes, um em Portugal e outro na Russia. Imaginemos também uma rede de nodes espalhados pelo resto da Europa. Alguns mais próximos de Portugal, outros mais próximos da Russia.

Ambos os miners estão neste momento a competir: estão a tentar resolver o puzzle criptográfico e adicionar o próximo bloco à rede.

Os dois miners tem já algumas transações no seu bloco e estão a tentar “adivinhar” o Nonce que garante um Hash válido, abaixo do Mining Target, e que garanta a adição do seu bloco.

(Para perceberem melhor o que se está a passar, sugiro que leiam a primeira parte do artigo).

Imaginemos agora que ambos os miners conseguem validar os seus blocos ao mesmo tempo, ou com uma diferença de tempo muito reduzida.

Os dois blocos são válidos. Em ambos foi completado o processo de Proof of Work. Não existe nada de errado com eles, nem nenhum motivo que impeça o miner de acrescentar o seu bloco ao protocolo.

O que acontece então a seguir?

O miner Português começará a acrescentar o seu bloco à rede. Os nodes geograficamente mais próximos, vão verificar o bloco e, concluindo que se trata de um bloco válido, irão também adicioná-lo à sua versão da blockchain.

O mesmo acontecerá com o miner Russo e os seus nodes vizinhos.

(Lembremos as diferentes funções de nodes, miners e SPV’s neste meu artigo).

Os nodes algures no meio do caminho, diria na região da Alemanha e Países Baixos, ainda não ouviram falar destes dois novos blocos. A informação ainda não foi totalmente propagada.

Estamos perante uma situação em que ambos os blocos, o Português e o Russo, são válidos, são seguros, mas apenas um pode ser acrescentado à rede.

Esta situação é mais comum do que pensamos. Lembremo-nos que estamos perante uma rede de computadores distribuída onde a informação demora a propagar-se.

Qual é então a verdadeira versão da blockchain? É a versão com o bloco Português? Ou a versão com o bloco Russo?

Existe uma regra para resolver este conflito. E essa regra é simples: “a corrente mais longa ganha.”

Mas imaginemos que a versão da blockchain do miner Português era do mesmo tamanho da do miner Russo. Ambos tinham a mesma copia da blockchain.

Nesse caso, será o miner que acrescentar o próximo bloco à rede que irá decidir qual o bloco que irá constar da versão final da blockchain: se o Português ou o Russo.

Assim, o mais provável é que aconteça uma das seguintes situações:

Se o próximo miner for Espanhol (ou de outro país mais perto de Portugal), o bloco anterior a constar na blockchain será o Português.

Se por outro lado, o próximo miner for Ucraniano (ou de outro país mais próximo da Russia), o bloco anterior a constar na blockchain passará a ser o Russo.

O bloco que não ficar na versão final da blockchain é chamado de bloco obsoleto, ou Stale Block. Todos os nodes deixarão cair o Stale Block e adicionarão o outro na sua cópia da blockchain.

Já devem ter ouvido, que quando fazemos transações com bitcoin devemos sempre esperar por várias confirmações antes de fazermos uma nova transação.

Bom, este é o motivo pelo qual o devemos fazer.

Não queremos que a nossa transação fique presa num Stale Block. Por exemplo, se somos uma loja de e-commerce e o cliente nos paga com bitcoin, queremos garantir que essa transação não vai ser “revertida” quando o próximo bloco for validado, antes de enviarmos o produto para o cliente.

Quanto mais vezes for confirmada a nossa transação, menor a probabilidade de ela estar retida num Stale Block.

Para terminar este artigo, é importante referir um outro aspeto importante.

Quando há pouco vimos que “a corrente mais longa ganha”, tecnicamente significa que a corrente com a mais elevada dificuldade de mining (Mining Difficulty) ganha e não a corrente com mais blocos.

Quando mais tarde quisermos compreender a questão dos “Ataques 51%”, que iremos explorar num próximo post, é importante ter isso em mente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s

search previous next tag category expand menu location phone mail time cart zoom edit close