# Mineração de Bitcoin

Mineração de Bitcoin é o processo de adicionar registros de transações ao livro razão público do Bitcoin, que armazena transações passadas. Este livro razão é chamado Blockchain pelo fato de ser uma cadeia de blocos de transações/registros. O Blockchain serve para confirmar transações para o resto da rede ter conhecimento, e é usado para distinguir transações de Bitcoins legítimas de tentativas de reuso de moedas.
Minerar é intencionalmente feito para ter um uso intensivo de recursos e difícil, de forma que o número de blocos encontrados por dia permanece constante. Blocos individuais devem conter uma prova para serem considerados válidos. Esta prova é verificada por outros nós Bitcoin cada vez que eles recebem um bloco. Bitcoin usa uma função hash com recompensa para provas(a hashcash proof-of-work function). O propósito fundamental da mineração é permitir aos nós da rede Bitcoin alcançar um consenso seguro e inviolável. Minerar é também um mecanismo usado para introduzir moedas Bitcoin no sistema: Mineradores recebem taxas e um subsídio de novas moedas criadas. Ambos servem com o propósito de disseminar novas moedas de uma maneira descentralizada bem como motivar pessoas a prover segurança ao sistema.
Mineração de Bitcoin é chamado assim porque se assemelha com a mineração de outros commodities que requer esforço e lentamente faz com que uma nova moeda esteja disponível a uma taxa que se assemelha a taxa de que commodities como ouro são minerados do solo.

## Origem

O livro razão do Bitcoin, o Blockchain, começou em 3 de Janeiro de 2009, às 18:15 UTC, presumivelmente por Satoshi Nakamoto. O primeiro bloco é conhecido como o "bloco genesis". A primeira transação gravada no primeiro bloco foi uma única transação pagando a recompensa de 50 novos bitcoins ao seu criador.
O bitcoin foi criado para ter uma oferta arbitrariamente limitada a 21 milhões de unidades, cada moeda pode ser fracionada tendo como menor unidade o equivalente a 1 Satoshi = 0,00000001 BTC.

## Atividades

As principais atividades dos mineradores são:
* Escutar transações. Primeiramente é preciso escutar por transações na rede e então validá-las checando as assinaturas e se os gastos não foram gastos anteriormente
* Manter a block chain e escutar por novos blocos. Mineradores devem manter a block chain. Começam requisitando outros nós pelo histórico de transações que já fazem parte da block chain desde antes do mesmo entrar na rede. Então o minerador escuta por novos blocos que estão sendo transmitidos em broadcast para a rede, validando cada transação bloco e checando se o bloco contém nonces válidos.
* Montar um novo bloco. Assim que o minerador tem uma cópia atualizada da block chain, ele começa também a construir seus próprios blocos. Para fazer isto, ele agrupa transações que escutou num novo bloco que estende o último bloco que ele soube e inclui transações válidas
* Encontrar um nonce que torne seu bloco válido. Este passo requer a maior parte do trabalho, e é onde ocorre a maior parte da dificuldade dos mineradores.
* Torcer para o bloco ser aceito. Mesmo que o minerador encontrou um bloco, não existem garantias de que o bloco fará parte da cadeia de consenso. Existe um pouco de sorte nessa etapa. O minerador deve torcer para que outros mineradores aceitem seu bloco e comecem a minerar a partir dele ao invés do bloco de outro minerador.
* Lucrar.Se todos os mineradores aceitam um bloco, o minerador que criou o bloco novo lucra. No começo de 2015, a recompensa por um bloco era 25 bitcoins, o que valiam mais de U$ 6,000. Adicionalmente, se qualquer transação no bloco contiver taxas, o minerador também às coletas

## Dificuldade

Minerar um bloco é computacionalmente difícil porque o hash SHA-256 do cabeçalho dos blocos deve ser menor ou igual ao Alvo (Um número extremamente grande de 256 bits que todos os clientes Bitcoin compartilham) de forma a ser aceito pela rede. Este problema pode ser simplificado para propósito de explicação: O hash de um "bloco" deve começar com um certo número de zeros. A probabilidade de calcular um hash que comece com vários zero é extremamente baixo, desta forma, muitas tentativas devem ser feitas. Para gerar um novo hash a cada rodada um "Nonce" (O "nonce" num bloco bitcoin é um campo de 32 bits cujo valor é configurado de forma que o hash de um bloco irá conter uma série de zeros) é incrementado.$^[$

### A métrica de dificuldade

A Dificuldade é uma medida de quão difícil é achar um novo bloco comparado com o mais fácil que possa existir. Ela é recalculada a cada 2016 blocos para um valor de forma que os 2016 blocos anteriores tivessem sido gerados em exatamente duas semanas e todos os mineradores tivessem minerado com essa dificuldade. Isto produzirá, em média, um bloco a cada dez minutos. A medida que mais mineradores se juntam a rede, a taxa de criação dos blocos irá crescer. A medida que a taxa de geração dos blocos cresce, a dificuldade aumenta para compensar o que irá empurrar a taxa de criação dos blocos para baixo. Quaisquer blocos liberados por mineradores maliciosos que não estão de acordo com a dificuldade (Alvo) serão simplesmente rejeitados por todos na rede e então seu trabalho será sem valor.$^[$

### Recompensa

Quando um bloco é descoberto, o descobridor pode ser recompensado com um certo número de bitcoins, um valor que é um acordo por todos na rede. No início de 2015 esta recompensa era de 25 bitcoins; este valor vai reduzir pela metade a cada 210.000 blocos.$^[$
A dificuldade de minerar bitcoins tem crescido ao longo do tempo. Não necessariamente um crescimento linear ou exponencial, a dificuldade depende da atividade no mercado. Coisas como a quantidade de mineradores na rede, que pode ser afetada pela taxa de câmbio atual, afetam a dificuldade de mineração. Em geral, a medida que mais e mais mineradores se juntam a rede, blocos são encontrados mais rápidos e a dificuldade aumenta. Adicionalmente, o minerador é premiado com taxas pagas pelos usuários que estão enviando transações. A taxa é um incentivo ao minerador para incluir a transação no bloco dele. No futuro, a medida que o número de mineradores de bitcoin são permitidos para criarem bitcoins em cada bloco diminui, as taxas irão compensar a uma porcentagem muito mais importante da renda da mineração.

## O ecossistema da mineração
### Hardware

Usuários tem usado vários tipos de hardware através do tempo para minerar blocos. Estatísticas e especificações de Hardware são detalhadas na página Mining Hardware Comparison.

#### Mineração com CPU

Versões do cliente Bitcoin iniciais permitiam aos usuários usarem suas próprias CPUs para minerar. Porém, quão rápido seria esse processo em um computador de uso geral? Em um PC de última geração pode computar 20 milhões de hashes por segundo (MH/s). Com essa velocidade seriam necessários centenas de milhares de anos em média, de acordo com a dificuldade do início de 2015, para encontrar um bloco. O advento da mineração com GPU fez a mineração com CPU se tornar algo financeiramente não sábio, a medida que a taxa hash da rede aumentou a um nível que a quantia de bitcoins produzidos pela mineração com CPU se tornou menor do que o custo de energia para operar a CPU. A opção foi então removida do núcleo da interface de usuário do cliente Bitcoin.

#### Mineração com GPU

​A segunda geração começou quando as pessoas se frustraram com a baixa velocidade das CPUs e começaram a usar suas unidades de processamento gráfico (GPU). Mineração com GPU é drasticamente mais rápida e mais eficiente que a mineração com CPU. Em uma comparação rápida, enquanto uma CPU pode executar 4 instruções de 32 bits por clock uma GPU pode executar 3200 destas operações ao mesmo tempo. GPUs foram feitas para ter uma alta vazão e alto paralelismo, ambos podem ser úteis na mineração de bitcoins pois mineradores podem computar multiplos hashes ao mesmo tempo com nonces diferentes.
Mineração com GPU tem algumas desvantagens, pois muito de sua composição tem o objetivo de tratar vídeos. Especificamente elas tem unidades de ponto flutuante que não são usadas em SHA-256, sendo então desperdiçadas na mineração. GPUs também não possuem as melhores caracteristicas de resfriamento e consumo de energia. Placas gráficas de alto desempenho podem calcular algo em torno de 200 milhões de hashes por segundo (MH/s), uma ordem de magnitude melhor do que seria como o uso de CPU. Porém mesmo com essa melhoria de performance, ainda seriam necessários mais de 300 anos em média para encontrar um bloco.

#### Mineração com FPGA

Mineração com FPGA é uma maneira muito eficiente e rápida de minerar, comparável com mineração com GPU e drasticamente superando mineração com CPU. FPGA tipicamente consome quantidades muito pequenas de energia com relativamente altas taxas de hash, fazendo com que ela seja mais viável e eficiente do que mineração com GPU. Porém essa taxa ainda não é algo viável. Usando uma FPGA de maneira correta um minerador pode calcular hashes a uma taxa de um bilhão de hashes por segundo. Certamente uma ampla diferença entre CPU e GPU, porém, mesmo usando centenas de placas juntas, ainda seria necessário cerca de 50 anos em média para encontrar um bloco.

#### Mineração ASIC

Um circuito integrado de aplicação específica ou ASIC, é um microchip feito e manufaturado para um propósito muito específico. ASICs feitos para mineração de bitcoins foram lançados em 2013. Considerando o consumo de energia do ASIC, eles são vastamente mais rápidos que todas as tecnologias anteriores, calculando cerca de 32,5 GH/s e já tornou a mineração com GPU financeiramente não compensadora em alguns países.

#### Serviços de mineração (Cloud)

Existem empresas que provêem serviços de mineração com a performance especificada no contrato, frequentemente referido como "Contrato de mineração". Eles podem, por exemplo, alugar um certo nível de capacidade de mineração por um preço e duração específicos.

#### Serviços de mineração por cotas

Existem empresas como por exemplo a HashCoinBrasil que oferece cotas de mineração. Ou seja, o interessado adquire uma ou mais cotas por um valor especifico e possuindo essa cota tem o direito do lucro obtido da mineração com o grupo todo.

#### Atualmente

Atualmente mineração mudou de algo feito individualmente para data centers de mineração profissionais. Detalhes exatos sobre como esses centros funcionam não são tão bem conhecidos porque as empresas querem proteger seus equipamentos para manter uma vantagem na competição com outras empresas. Quando escolher onde instalar um centro de mineração, existem três fatores a serem considerados: clima, custo da eletricidade e posição na rede bitcoin. Desta forma, você precisa de um clima frio para resfriar seu equipamento de forma a diminuir os custos de refrigeração. Você precisa de baixo custo de eletricidade, e você precisa estar bem conectado a outros nós da rede peer-to-peer do Bitcoin de forma que você possa escutar rapidamente novos blocos quando eles são anunciados. Georgia, nos Estados Unidos e Islândia tem se tornado destinos populares para instalações de centros de mineração de Bitcoin.

## Consumo de energia e ecologia

Grandes data centers de mineração profissionais estão tomando conta dos negócios de mineração de bitcoin e como isso se assemelha ao movimento de pit mining na mineração do ouro. Existe um grande receio de ambientalistas através dos anos que é quão grande são os riscos e danos desses locais de mineração ao meio ambiente. Agora, Bitcoin não está nesse nível ainda, mas está começando a usar quantidades significantes de energia(devido a necessidade cada vez vez maior de maquinas mais potentes para garantir o distributed consensus) . Veremos então quanto de energia minerar gasta e as implicações para a moeda e para o planeta.

### Por que minerar Bitcoin requer energia?

Existem 3 passos do processo que requerem energia e alguns deles podem não ser tão obvios

#### 1. Energia de produção

Primeiro, o equipamento que minera Bitcoin precisa ser fabricado. Isto requer mineração física de matéria prima bem como em tornar esses materiais em CPUs, GPUs, FPGAs ou ASICs, ambos requerem energia. Assim que você receber seu equipamento, você já terá consumido muita energia, incluindo energia gasta na entrega, tudo isto antes de ligar o equipamento para minerar bitcoins!

#### 2. Eletricidade

Quando seu equipamento é ligado e começa a minerar, ele consome energia.

#### 3. Resfriamento

Um terceiro componente importante da mineração é a energia que é consumida para resfriar seu equipamento garantindo que ele não apresente defeitos. Se você está operando num lugar de clima muito frio, seu custo de resfriamento deve ser bem baixo, mas na maioria dos climas você terá que pagar por resfriamento extra para seu equipamento

### Minerando em grande escala

Ambos: energia de produção e eletricidade diminuem quando operando em larga escala. Se você está rodando um grande número de data centers, você pode ser mais eficiente. É mais barato construir chips que são feitos para rodar em grandes data centers, e você pode distribuir a energia mais eficientemente de forma que você não precisa de muitos fornecedores de energia. Quanto ao resfriamento, porém, o oposto é verdade.
Resfriamento, na verdade, custa mais a medida que você minera em grande escala. Se você quer rodar uma grande operação e tem muito equipamento de mineração de bitcoin tudo em um lugar, existe menos ar para dissipar o calor nas redondezas do seu equipamento. Seu orçamento para resfriamento irá crescer, porque resfriar grandes massas será muito mais difícil.

## Estratégias de mineração

Muito foi falado dos desafios de minerar, como bom hardware, preço da eletricidade baixo, entre outros. Mas além desses desafios, também existem algumas considerações estratégicas a se fazer antes de um minerador escolher que sob que blocos ele irá trabalhar em cima. Algumas dessas são:
* Que transações incluir. Mineradores tem a chance de escolher quais transações eles irão incluir num bloco. A estratégia padrão é incluir qualquer transação que tenha um valor superior do que alguma taxa.
* Sob que bloco minerar em cima. Mineradores também devem decidir sob que bloco eles querem minerar. A estratégia padrão é estender a cadeia mais longa já validada na block chain.
* Escolher entre blocos na mesma altura. Se dois blocos diferentes são minerados e anunciados ao mesmo tempo, resultando numa bifurcação de 1 bloco, com ambos os blocos admissíveis para ser a cadeia mais longa. Mineradores então devem decidir qual bloco estender. O comportamento padrão é continuar a partir do bloco que foi conhecido antes.
* Quando anunciar novos blocos. Quando um novo bloco é encontrado, mineradores devem decidir quando anunciar esse bloco para a rede. O comportamento padrão é anunciar imediatamente, porém eles podem escolher esperar um tempo antes de anunciar.

## Veja também

* Criptomoedas no Brasil