Esta página da Reddit que coloquei em PDF explica bem como funciona o mining.
Estou a compreender o mining. Agora vou ler os artigos do Inc. Antes de os ler achei que devia aprender coisas mais básicas, se não não os entenderia.
Ainda só li até ao 4º.
Se já fores no 5º e seg.,
diz alguma coisa para eu
prosseguir mais advertido!
Acho que é mais ou menos assim.
O blockchain é um ledger (livro de registo de transacções) que armazena todas as transacções que cada bitcoin teve.
Mais ou menos a cada 10 minutos é criado 1 novo block, que regista nova transacções. Os miners de todo o mundo competem para ver quem o consegue registar, porque se o conseguirem, recebem algumas bitcoins de prémio (neste momento 12.5).
Para 1 miner tentar registar 1 novo bloco, ele tem acesso às novas transacções, isso aparece no sistema, toda a gente (acho eu) tem acesso a elas. Essas transacções mostram quais são os bitcoin addresses do comprador e do vendedor, por ex. O miner junta esses bitcoin addresses e ainda um número chamado
hash que é o header do block anterior. Depois junta ainda um número chamado
nonce, que é simplesmente um nº inteiro, começa em 0, depois 1, 2, 3, etc.
O importante é que ele tem o software da bitcoin no seu computador que pega nesses nºs todos e gera instantaneamente 1 novo hash, baseado num algoritmo complicado, que não é preciso saber qual é.
Esse novo hash é, portanto função de: 1) hash do block anterior; 2) nonce; 3) dados das novas transacções (as que irão ser incluídas no novo block).
Um hash é um nº de 256 bits. Escrito em decimal ocupa uns 86 dígitos, e em hexadecimal uns 64 dígitos.
Mas esse novo hash tem 99.999999999% de hipóteses de não cumprir um requisito: começar por um certo nº de zeros seguidos. Isso é uma exigência do sistema a cada momento, por ex, num certo momento o sistema pode estar a exigir que o novo hash comece por 10 zeros. Assim, por ex, o hash 0004592b... não é aceite e o 00000000006c73d... já é.
Como o novo hash não é aceite, o miner incrementa o nonce de 0 para 1. Calcula novo hash. E assim sucessivamente até finalmente obter um novo hash válido (começando com 10 zeros). Isto é muito time-consuming. O nonce vai sendo incrementado a cada tentativa. Ao fim de biliões de tentativas, 1 certo miner (entre milhares em todo o mundo) descobre o hash correcto. Então regista o block no blockchain e este novo hash fica no header desse block. Toda a gente no mundo pode facilmente ver que ele tem razão, que o hash dele é válido. Não pode haver fraudes aqui, pois as regras matemáticas de geração de hashs são conhecidas por todos, estão no sistema e são iguais para todos.
Quando ele regista o novo block, já mais ninguém o pode fazer. Ele então recebe 12.5 bitcoins. E é assim que se processa a emissão de novas bitcoins. É lenta e difícil, e vai acrescentando poucochinhas bitcoins de cada vez. É como a mineração do ouro.
E como o miner teve que fazer biliões de tentativas isso consitui
proof of work, e por isso ele é premiado.
Pergunto ao Inc e ao Ingenting se está correcto o que escrevi acima.