Fundamentos de blockchain
Mineração de Bitcoin e prova de trabalho
Como os mineiros produzem blocos, como os nós os verificam e como analisar uma oferta de mineração.
Pessoas e projetos
Neste artigo
O que fazem os mineiros de Bitcoin
A mineração de Bitcoin combina a seleção de transações com a procura de um cabeçalho de bloco aceitável. O mineiro constrói um bloco candidato, calcula uma raiz de Merkle que vincula as transações e aplica repetidamente a função hash ao cabeçalho, alterando os campos permitidos. O resultado tem de cumprir o alvo atual da rede. Mais capacidade de cálculo permite mais tentativas por segundo, mas não escolher antecipadamente um resultado válido.
O bloco contém normalmente transações que pagam taxas e uma transação especial, chamada coinbase, que reclama o subsídio e as taxas permitidos. Uma pool pode distribuir trabalho pelos participantes e registar os contributos através de provas mais fáceis, chamadas shares. Uma share aceite comprova trabalho segundo as regras da pool. A maioria não é um bloco Bitcoin válido; um painel cheio de shares não indica quantos blocos um utilizador encontrou individualmente. Bitcoin developer guide: mining.
- PrepararTransações, raiz de Merkle e cabeçalho candidato
- Encontrar a prova de trabalhoVariar o cabeçalho até o hash cumprir o alvo
- ValidarOs nós completos verificam o bloco e cada transação
Um nó rejeita um bloco que viole as suas regras, mesmo que a prova de trabalho cumpra o alvo.
A prova de trabalho não basta para validar um bloco
Os nós completos verificam blocos e transações segundo as regras de consenso. As condições de gasto têm de ser cumpridas e uma transação normal não pode criar saídas cujo valor total exceda o das entradas. A coinbase também tem de respeitar a recompensa permitida. Um bloco que viole estas regras não se torna aceitável por ter exigido muito trabalho computacional.
Esta distinção importa quando alguém afirma que os mineiros podem apropriar-se de quaisquer moedas. A capacidade de cálculo não revela a chave privada de outro utilizador. Reordenar transações válidas, substituir um pagamento próprio numa história concorrente e falsificar uma assinatura alheia são capacidades diferentes. Confundi-las descreve incorretamente tanto o ataque como as defesas. Bitcoin developer guide: transactions.
Como são escolhidas as cadeias concorrentes
Vários mineiros podem encontrar blocos concorrentes antes de todos os participantes os receberem. Os nós têm então de escolher entre histórias válidas. A escolha depende do trabalho acumulado, não de uma votação que atribua um voto a cada nó anunciado. Uma história alternativa tem de cumprir as regras e competir em trabalho. Criar muitas identidades de rede não equivale a possuir capacidade de mineração.
O Bitcoin ajusta o alvo a cada 2.016 blocos com base no tempo decorrido no período anterior. Procura um intervalo médio de cerca de 10 minutos. Trata-se de uma média estatística: alguns blocos chegam depressa, outros demoram mais. A ausência temporária de um novo bloco num explorador não prova, por si só, que a rede parou. Bitcoin developer guide: the blockchain.
O que protegem as confirmações
Um pagamento recebe a primeira confirmação quando é incluído num bloco da cadeia aceite. Os blocos seguintes prolongam essa história. Substituir um pagamento mais antigo exige, por isso, competir com mais trabalho acumulado. O whitepaper do Bitcoin modela esta tentativa de recuperação e explica o papel da capacidade relativa do atacante e da profundidade do pagamento.
Uma confirmação não verifica se um vendedor entrega a encomenda, se uma exchange consegue devolver os depósitos ou se um token anunciado como investimento em Bitcoin é honesto. Uma exchange pode creditar um depósito realmente confirmado e depois emprestar os ativos a uma empresa relacionada. O registo na blockchain pode estar correto enquanto a capacidade de reembolso do custodiante se deteriora. Bitcoin whitepaper, sections 5 and 11.
Analisar uma oferta de mineração
Identifica primeiro o que está a ser vendido: uma máquina, uma participação contratual na sua produção, um saldo junto de um operador ou um token alegadamente suportado por mineração. Um pagamento de uma pool a uma empresa demonstra, antes de mais, uma entrada de fundos. Não demonstra que um cliente específico possua uma máquina ou tenha direito àquela receita.
Imagina um operador que mostra o painel de uma pool e promete um rendimento diário fixo. Os dados têm de corresponder às máquinas anunciadas, ao período de operação e aos pagamentos. Também é necessário explicar quem cobre as diferenças quando os custos ou a produção variam. Uma fotografia de máquinas não responde a essa questão contratual. Uma diferença sem explicação continua a ser uma questão aberta, sem justificar uma recomendação nem uma acusação sem provas.
Guarda em conjunto a oferta inicial, o endereço de pagamento, os termos contratuais e capturas de ecrã datadas. Compara a produção anunciada com os registos fornecidos e distingue as receitas brutas do montante disponível depois das despesas e obrigações. Aqui analisa-se uma atividade comercial e as suas promessas. A validação de um bloco Bitcoin não responde a estas perguntas.