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 que00000000000001adf44c7d69767585
< – 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 é:
- Obter um cabeçalho de bloco como entrada
- Alterar o Nonce
- Teste se o cabeçalho do bloco hash é menor que o alvo. Se for, você venceu.
- 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.