O que os mineradores de bitcoin estão realmente resolvendo?

Assim como na mineração, o que os mineradores de bitcoin estão realmente resolvendo? Eu li que eles estão resolvendo hashes, mas o que isso realmente significa. Podemos ver o que eles estão resolvendo? Alguém pode dar um exemplo do que uma máquina de mineração de bitcoin tenta resolver?

Comentários

  • Relacionados: bitcoin.stackexchange.com/q/148/153
  • Ok, mas QUE dados estamos extraindo! Ninguém parece saber. Eu não ‘ não me importo como funciona, quero saber de onde vêm os dados dessa mineração de bits, que é a descriptografia ou criptografia.

Resposta

Eles tentam encontrar um nonce aleatório (alguns dados aleatórios) que vai para um bloco e faz com que o bloco tenha um hash (SHA256) que (em binário ) começa com uma certa quantidade de 0 “s. Quanto mais zeros, mais raro o hash. Um bom resultado de hash” não é previsível e, portanto, é necessário tentar várias vezes para encontrar um bom nonce.

A quantidade de zeros é baseada em quão difícil deve ser encontrar um bloco. No Bitcoin, ele se ajusta para ter um novo bloco a cada 10 minutos (em média, dada a taxa em que os blocos anteriores são encontrados).

Interessante: como os hashes são imprevisíveis, não importa como o nonce muda ! Na maioria das vezes, é apenas um número contando a partir de 0!

Resposta

Aqui está um extremamente esboço simplificado do problema, mas deve dar uma boa ideia de qual é o problema.

Os dados:

Este é o hash do último bloco (reduzido para 30 caracteres):

00000000000001adf44c7d69767585 

Estes são os hashes de algumas transações válidas à espera de inclusão (abreviado).

5572eca4dd4 db7d0c0b845 

E este é o hash de uma transação especial que você acabou de criar, que dá 25BTC (a recompensa atual) para você mesmo:

916d849af76 

Construindo o próximo bloco:

Agora, vamos usar uma aproximação grosseira de como um novo bloco pode se parecer (o real usa o formato binário). Ele contém o hash do bloco anterior e os hashes dessas 3 transações:

00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76-- 

Agora vamos fazer a mineração manualmente! Nosso objetivo é concluir isso bloco com um nonce (um pedaço de lixo) de forma que o hash do novo bloco comece com 13 zeros (considerando o hash anterior, parece que 13 zeros é a dificuldade atual!).

Mineração (tentando finalizar este bloco):

Vamos tentar com nonce = 1 e calcular o hash do bloco (estou usando o algoritmo hash md5, mas o Bitcoin usa sha256 duplo):

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 8b9b994dcf57f8f90194d82e234b72ac 

Sem sorte, o hash não começa com 0 … Vamos tentar com nonce = 2

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 5b7ce5bcc07a2822f227fcae7792fd90 

Sem sorte…

Se prosseguirmos até nonce = 16, obtemos nosso primeiro zero à esquerda.

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 03b80c7a34b060b33dd8fbbece79cee3 

Para nonce = 208, obtemos dois zeros à esquerda!

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 0055e55df5758517c9bed0981b52ce4a 

Continue assim … Se você finalmente encontrar um hash com 13 zeros à esquerda … você é um vencedor! Outros mineiros irão agora construir sobre o seu bloco, você acabou de obter 25BTC.

Mas você “terá que ser rápido!

Voltar para a etapa 1…

Se alguém conseguir construir um bloco antes de você, você terá que começar novamente do início com o novo bloco “s hash (o do vencedor).

Comentários

  • Além disso, seu exemplo está conceitualmente indo na direção certa, mas o verdadeiro sucesso é quando o hash sha256 do cabeçalho é menor que o destino. Alvo de exemplo: 00000000000001ae00000000000000 é maior que 00000000000001adf44c7d69767585 < – este seria um hash válido .
  • @Reonarudo, não exatamente, este é um esboço muito simplificado do que realmente é feito. As transações são feitas com scripts que geralmente são feitos de endereços, você pode encontrar mais informações no wiki do Bitcoin.
  • Isso basicamente parece um bom resumo (simplificado), mas em que ponto a rede bitcoin aceita isso como o próximo bloco válido, e o que acontece no caso (improvável) de dois mineiros diferentes terem conseguido enviar um bloco válido quase simultaneamente?
  • Uau, ótima resposta! Há ‘ algumas coisas que ainda não consegui ‘ entender: vamos ‘ s dizem que você ‘ está procurando uma solução por 6 minutos e chega uma nova transação. 1) o que acontece agora? se eu tiver que começar de novo, então parece que todos têm que começar de novo. Então, como o blockchain garante encontrar um bloco em aproximadamente 10 minutos? 2) Como é que essa transação chega até mim?3) E se eu encontrar uma solução para este bloco e, em seguida, uma nova transação vier para mim de algum outro nó que a aceitou para o bloco que acabei de fechar?
  • 1) Sim, todo mundo começa de novo, se você construir no topo de um bloco antigo, há ‘ s poucas chances de seus blocos fazerem parte da cadeia mais longa e serem desconsiderados pelo resto da rede. Não há garantia de que um bloco será encontrado em 10 minutos, ele ‘ é apenas um resultado estatístico médio. 2) Qual transação? Os blocos são transmitidos por quem os extraiu e retransmitidos por outros nós. 3) Nada o força a incluir todas as transações pendentes, mas quanto mais transações você incluir, mais taxas você pode coletar.

Resposta

O que se segue é uma descrição do jogo estatístico global que é jogado a cada 10 minutos ou mais. O intervalo do jogo é controlado pela dificuldade que diz quantos “hashes” são necessários por intervalo.

Em outras palavras, difficulty e target definem as “chances da casa” contra sua chance de obter um hash SHA vencedor. A nonce é a área de “raspar”.

Cada hash consome eletricidade e emite calor, o que requer resfriamento adicional.

Isso é o que é feito com cada hash:

Etapa 1

Em um nível superior, o software do minerador pega uma lista de transações ativas e as agrupa em algo chamado “bloco”.

Ou afirmado com mais precisão: o software do minerador cobre todas as transações em uma visualização resumida chamada “raiz merkle” e faz o hash, que é representativo das transações.

Etapa 2

Em seguida, o software de mineração converte isso em um formato binário chamado de Cabeçalho do bloco , que também faz referência aos blocos anteriores (também chamados de cadeia).

Field Purpose Updated when... Size (Bytes) Version Block version number You upgrade the software and 4 it specifies a new version hashPrevBlock 256-bit hash of the previous A new block comes in 32 block header hashMerkleRoot 256-bit hash based on all A transaction is accepted 32 the transactions in the block Time Current timestamp as seconds Every few seconds 4 since 1970-01-01T00:00 UTC Bits Current target in compact format The difficulty is adjusted 4 Nonce 32-bit number (starts at 0) A hash is tried (increments) 4 

Etapa 3:

O hardware do minerador altera uma pequena parte deste bloco chamado “nonce” .

Etapa 4:

O cabeçalho do bloco é hash e comparado ao destino como se fosse simplesmente um grande número como 10.000.000> 7.000.000 (os números reais são muito maiores e em hexadecimal). O destino é compactado e armazenado em cada bloco em um campo chamado bits.

Um destino expandido se parece com isto:

 Target 0000000000000083ef00000000000000000000000000000000000000000000000 

E o o objetivo é garantir que o hash SHA256 do bloco seja menor que esse valor. No exemplo abaixo, “83ee” é menor que “83ef

Para simplificar este conceito, você pode estimar o alvo contando os zeros à esquerda (como a outra resposta aqui explica). Aqui está um exemplo:

Aqui está um bloco de amostra com transações que você pode ver em BlockChain.info. Olhe no canto superior direito da página da web para este hash:

 Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf 

O hash anterior era de hoje e tem 14 zeros à esquerda. Vamos comparar isso com o que era necessário 3 anos atrás com o bloco 100 que tem 8 zeros à esquerda.

 Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899 

Resumo

Então, no final do dia, tudo que um mineiro faz é:

  1. Obter um cabeçalho de bloco como entrada
  2. Alterar o Nonce
  3. Teste se o cabeçalho do bloco hash é menor que o alvo. Se for, você venceu.
  4. Vá para a etapa 2 (ou vá para a etapa 1 se outra pessoa ganhou o bloco)

Quer ver o que o Bitcoin-QT faz ao encontrar um bloco? … Eu postei aqui. . As informações neste post vão ajudá-lo a entender o que aconteceu.

Comentários

  • Isn ‘ t the nonce (32 bits) far muito pequeno para ser capaz de encontrar um hash que deve começar com 14 zeros à esquerda (14×4 = 56 bits)? Encontrar esse hash exigiria em média 2 ^ 56/2 tentativas e com um não de 32 bits nce apenas 2 ^ 32 tentativas são possíveis antes que todos os valores de nonce possíveis sejam esgotados. Editar: com o tempo mudando a cada segundo, acho que isso só se aplica se a taxa de hash exceder 4 GH / s (o que eu acho que vai …)
  • Sim, você ‘ está certo, … da URL no cabeçalho do bloco: Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.

Resposta

A mineração fornece uma maneira de chegar a um consenso sobre a aparência do livro de transações e saber que ninguém está trapaceando.

Essa é a definição não técnica de mineração .

A “autoridade” para gastos duplos é o blockchain. O blockchain consiste no histórico de todos os blocos no blockchain mais o próximo bloco de transações. O subsídio de recompensa atualmente é de 25 BTC para a parte que enviar o próximo bloco. Mas hey … você gostaria de 25 BTC (atualmente valendo cerca de $ 825), assim como eu e todo mundo. Então, como você faz isso para que eu não possa trapacear e reivindicar o bloqueio sozinho?

Bem, você colocou em um sistema que você e eu temos de competir. É isso que a prova de trabalho faz – faz com que, quando reivindico a recompensa, seja fácil provar que realmente fiz o trabalho envolvido. Então, para eu ter 2% de chance de resolver um bloco, preciso colocar 2% do trabalho de mineração. Não há como colocar em menos de 2% de todo o trabalho e ainda resolver bloqueios pelo menos 2% do tempo (em média).

Assim, como resultado, quando uma transação bloqueia é submetido, todos os pares verificam se não houve gastos dobrados, se a quantia certa de subsídio foi reivindicada e se o remetente realmente gastou o trabalho necessário para essa solução. Com essas três regras, então não há necessidade uma autoridade central gerenciando o processo ou capaz de controlar o resultado.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *