Blog

Postado em em 26 de abril de 2021

Como Minerar Bitcoin com Python – Código para Mineração

Nessa aula vamos te mostrar como minerar bitcoin com Python! Isso mesmo, vamos te mostrar o código para fazer a mineração em bitcoin!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber a planilha que usamos na aula no seu e-mail, preencha:

Como Minerar Bitcoin com Python

Você já deve ter se perguntado como fazer para minerar bitcoin com Python, certo?

Nessa aula nós vamos te mostrar que isso é possível utilizando o Python, mas vale lembrar que é um processo muito dispendioso e precisa de bastante recurso para que funcione.

Quer aprender como funciona o código para mineração de bitcoin? Então vamos ao próximo tópico!

Minerador de Bitcoin

O código para minerar a bitcoin é relativamente simples, mas como estamos tratando com um block chain (cadeia de blocos) muito grandes você precisa de uma máquina muito potente para conseguir fazer isso.

from hashlib import sha256
import time


def aplicar_sha256(texto):
    return sha256(texto.encode("ascii")).hexdigest()


def minerar(num_bloco, transacoes, hash_anterior, qtde_zeros):
    nonce = 0
    while True:
        texto = str(num_bloco) + transacoes + hash_anterior + str(nonce)
        meu_hash = aplicar_sha256(texto)
        if meu_hash.startswith("0" * qtde_zeros):
            return nonce, meu_hash
        nonce += 1


if __name__ == "__main__":
    num_bloco = 15
    transacoes = """
    Lira->Alon->10
    Alon->Joao->5
    Joao->Amanda->11"""
    qtde_zeros = 6
    hash_anterior = "abc"
    inicio = time.time()
    resultado = minerar(num_bloco, transacoes, hash_anterior, qtde_zeros)
    print(resultado)
    print(time.time() - inicio)

Esse é o código que nós vamos utilizar para a mineração de bitcoin dentro do Python!

Deu para ver que ele é bem pequeno, mas vamos a explicação do que cada parte faz para que possam entender como isso funciona.

Inicialmente estamos importando duas bibliotecas, a biblioteca hashlib e a biblioteca time.

Da biblioteca hashlib estamos trazendo a função sha256, que é uma função que vai fazer a criptografia das transações, pois como são informações protegidas é necessária uma criptografia para garantir que os dados não serão disponibilizados de qualquer maneira.

A biblioteca time, vamos utilizar para verificar o tempo de execução do nosso código para que você possa ver quanto tempo demora.

Dentro da função sha256 vamos utilizar outras duas funções que são: função encode e a função hexdigest.

Como essa função sha256 precisa do texto codificado para que possa fazer a criptografia, vamos utilizar a função encode com o argumento ascii.

Quando utilizamos somente essas duas funções o Python vai retornar um objeto criptografado, então para que possamos visualizar em forma de string, vamos acrescentar a função hexdigest.

Dessa forma vamos poder visualizar a criptografia utilizada para o texto que for inserido!

Agora vamos partir para o código da mineração, nessa parte vamos ter que concatenar as informações do número do bloco, das transações, do hash anterior (que é a criptografia do bloco anterior na nossa cadeia de blocos) e a quantidade de zeros.

OBS: Essas informações mais gerais nós passamos no nosso vídeo, mas caso você queira saber detalhadamente o que significa cada uma dessas informações sugerimos que faça uma pesquisa mais detalhada sobre o assunto. Até porque não estamos dizendo que deve comprar, minerar ou fazer transações com bitcoin, essa aula é apenas didática para mostrar que é possível.

OBS2: Então caso tenha interesse em aprender sobre esse assunto é importante que procure fontes específicas que vão tratar do assunto para que saiba com o que está lidando.

Para fazer a junção dessas informações nós vamos utilizar a estrutura de repetição while, pois vamos ficar constantemente verificando se já chegamos ao resultado desejado.

Essa verificação será feita aplicando a função aplicar_sha256 que foi a função que criamos para aplicar essa criptografia e vamos verificar se o resultado começa com a quantidade de zeros desejada.

Essa quantidade vai ser baseada na bitcoin que será descoberto, então no momento em que estamos escrevendo esse post o número de zeros está em 20, o que já vai consumir muito recurso e muito tempo para minerar.

Para finalizar nós vamos testar o código passando alguns parâmetros genéricos (aqui você pode fazer a busca e colocar as informações corretas para minerar).

O if que foi colocado da forma if __name__ == “__main__”: é para que caso o usuário importe esse código para outro arquivo Python ele não vai executar o que está dentro do if.

No final desse código temos o print para mostrar o resultado e em seguida mostrar o tempo que o código demorou para rodar.

Lembrando que quanto maior a quantidade de zeros, maior o tempo de processamento.

Na máquina que estou rodando esse código no momento da escrita do post, vou colocar os resultados que obtive:

  • 4 zeros – 0,11 segundos
  • 5 zeros – 1,67 segundos
  • 6 zeros – 9,15 segundos
  • 7 zeros – 1160,77 segundos = 19,34 minutos

Então aqui temos o código pronto para poder minerar bitcoin, mas veja que a diferença de tempo começa a ficar absurda quando aumentamos apenas 1 zero, agora imagine fazer esse mesmo processamento com 20 zeros!

Conclusão de Como Minerar Bitcoin com Python

Nessa aula nós conseguimos aprender como fazer a mineração de bitcoin utilizando o Python, no entanto é possível verificar que não é uma tarefa fácil para um computador comum.

Com alguns poucos testes não deu para chegar nem perto do que temos hoje, então vale lembrar que não é só porque o código é pequeno e simples que será fácil executá-lo.

Será necessária uma máquina muito potente para poder fazer isso de forma rápida e eficiente para sair na frente das outras milhares de pessoas que estão tentando fazer o mesmo.

Mas com essa aula já sabe que é possível fazer a mineração em bitcoin, agora caso tenha interesse em aprofundar seus conhecimentos sugerimos que busque livros, artigos, sites que falem especificamente do assunto!

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso gratuito?


Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador