Este artigo foi publicado como parte do Data Science Blogathon
Introdução
Antes de saltar para o mundo das criptomoedas, precisamos entender o que é bitcoin e como extrair com python. Se o seu sistema for antigo ou o Python funcionar mais devagar do que outras linguagens em sua máquina local, então você pode ler esta lista em "5 dicas e truques para acelerar seus programas Python" e continuar com este artigo.
O que é um Bitcoin?
Um bitcoin é uma forma de moeda online criada em janeiro 2009 por um homem misterioso que usa o pseudônimo. “Satoshi Nakamoto”. O white paper pode ser encontrado aqui. La identidad de la persona es un misterio hasta la fecha y Bitcoin en realidad ofrece una tarifa de transaçãoo "transação" refere-se ao processo pelo qual ocorre uma troca de mercadorias, serviços ou dinheiro entre duas ou mais partes. Este conceito é fundamental no campo econômico e jurídico, uma vez que envolve acordo mútuo e consideração de termos específicos. As transações podem ser formais, como contratos, ou informal, e são essenciais para o funcionamento dos mercados e negócios.... más baja que un sistema de pago tradicional incluso por una gran cantidad de dinero y todo lo que necesita para enviar dinero a alguien es la dirección de su billetera.
Não há moedas físicas com o nome bitcoin nelas, mas tudo é virtual e está guardado em livro público ao qual todos têm o mesmo acesso. Todas as transações são verificadas com grande capacidade de computação e não são emitidas por nenhum banco. Eles são realmente descentralizados e seguros ao mesmo tempo. Bitcoin também é comumente conhecido como “BTC”.
Os pontos principais a serem lembrados são:
- Bitcoin lançado em 2009 e é a maior criptomoeda do mundo em volume de capitalização de mercado.
- Bitcoin é negociado, cria, distribui e armazena usando tecnologia blockchain.
- Os preços do Bitcoin são conhecidos por serem muito voláteis, com crescimento maciço e quedas.
- Foi a primeira criptomoeda a atingir tal popularidade e mais tarde inspirou uma lista de outras criptomoedas ou também conhecida como “Altcoins”.
Analisando Bitcoin
O ecossistema Bitcoin é feito de nós ou mineradores que executam o código bitcoin e o armazenam no blockchain. Cada blockchain contém transações neles e todos eles têm o blockchain inteiro, para que eles possam acessar e ver os novos blocos sendo adicionados ao sistema e é à prova de adulteração.
Qualquer pessoa pode ver as transações que ocorrem no momento e há mais de 12000 nós a partir de janeiro 2021 e este número continua crescendo a cada dia. Os bitcoins são armazenados em carteiras com endereço próprio e gerenciados usando a chave pública e a chave privada que usa criptografia para gerar cadeias duradouras. A chave pública pode ser considerada como um número de conta bancária ou um ID UPI. É público e dizer aos outros não vai doer. Por outro lado, sua chave privada é como o PIN do ATM ou PIN de identificação UPI. Você nunca deve revelá-lo a ninguém e mantê-lo privado em todos os momentos.
O que é tecnologia ponto a ponto?
Bitcoin foi talvez a primeira moeda digital a usar a tecnologia ponto a ponto para criar um sistema de pagamento instantâneo.. Qualquer indivíduo com capacidade de computação suficiente pode se tornar um minerador e processar transações nos blocos. Eles são motivados pelas recompensas que são o lançamento de um novo bitcoin e as taxas de transação que são pagas em bitcoin.
Os mineiros juntos formam a autoridade descentralizada que mantém a credibilidade de toda a rede bitcoin. Também ajuda a vencer a inflação, uma vez que nunca haverá mais do que 21 milhões de bitcoins e, no final de janeiro 2021, já foi extraído 18.614.806 bitcoins. Os sistemas de banco central podem imprimir mais moeda sempre que quiserem, para que possam corresponder à taxa de crescimento dos bens, mas os bitcoins funcionam de acordo com o algoritmo e definem a data de lançamento com antecedência para lidar efetivamente com a inflação.
O que é Bitcoin Mining?
A mineração é o processo pelo qual os bitcoins são gradualmente liberados para se tornarem parte da circulação. A mineração geralmente se refere à resolução de um quebra-cabeça matemático de difícil computação. Bitcoin Mining é o processo de adicionar transações verificadas à cadeia e a recompensa é reduzida pela metade a cada 210,000 blocos a serem minerados. Sobre 2009, a recompensa foi 50 bitcoins por bloco e após o terceiro reduzir pela metade o 11 Poderia 2020, a recompensa agora foi reduzida para 6.25 bitcoins.
Qualquer especificação de hardware para mineração pode ser usada, mas alguns são mais eficientes do que outros, como ASICs IC específicos de aplicativos ou até mesmo GPUs, que superam a CPU e extraem mais rápido do que uma CPU. Um bitcoin pode ser dividido em até 8 casas decimais e a menor unidade é conhecida como Satoshi. Se os mineiros aceitarem a mudança, então pode ser dividido em mais casas decimais.
Uma transação Bitcoin tem uma taxa de minerador anexada e cada transação é adicionada a um novo blockchain e, em seguida, o próximo bloco com o hash correto é criado. Com a chave pública do remetente, a mensagem pode ser descriptografada e, portanto, nunca compartilhar sua chave privada com ninguém.
Como minerar Bitcoin?
A mineração é alcançada encontrando o hash correto que tem um número predefinido de zeros no início e também significa o nível de dificuldade. Começamos com a importação de uma biblioteca necessária.
da importação de bitcoin *
Se você não tem o pacote, você pode instalá-lo via pip:
pip instalar bitcoin
Depois disso, precisamos criar nossa chave privada e pública, juntamente com nosso endereço de carteira. Podemos fazer isso com o seguinte código.
#Generate private key my_private_key = random_key() #display private key print("Chave Privada: %Sn" % my_private_key) #Generate public key my_public_key = privtopub(my_private_key) imprimir("Chave Pública: %Sn" % my_public_key) #Create a bitcoin address my_bitcoin_address = pubtoaddr(my_public_key) imprimir("Endereço Bitcoin: %Sn" % my_bitcoin_address)
Produção :
Chave Privada: 82bd4291ebaa6508001600da1fea067f4b63998ed85d996aed41df944c3762be Public Key: 04f85fa7c009dba8d1e6b7229949116f03cb3de0dfaf4d6ef3e6320a278dfc8dd91baf058fcafe0b5fbf94d09d79412c629d19cc9debceb1676d3c6c794630943d Bitcoin Address: 1FtaFRNgxVqq4s4szhC74EZkJyShmeH5AU
Agora vamos para a parte computacional onde usaremos criptografia sha256 para encontrar o hash correto. Importamos a biblioteca e depois fazemos um teste do que SHA256 realmente significa.
from hashlib import sha256
sha256("abc".Codificar("ASCII")).hexdigest()
Produção :
b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78
Quando você executa o mesmo código, você vai ter o mesmo código hash para uma sequência particular e, portanto, sempre dá uma saída definida para uma entrada definida. O comprimento do hash é 64 e cada dígito é hexadecimal, o que o torna igual a 4 bits y, portanto, o número inteiro é na verdade 256 bits e é por isso que também é conhecido como SHA256.
Bitcoin segue um protocolo em que o primeiro número 'n’ dígitos devem ser zero. Atualmente, o valor de 'n’ isto é 20, mas vou te mostrar usando um 'n’ menor para o código terminar a execução em tempo linear. O texto no qual SHA256 se aplicaria é composto pelo número do bloco, detalhes de transição, o valor de hash anterior e, desde o 3 Os valores acima são constantes para um bloco e não podem ser alterados, um novo valor chamado 'Nonce' é introduzido. Nosso objetivo é encontrar o Valor de Nonce para que o hash do bloco produza o número necessário de zeros no início de acordo com o protocolo.
Começaremos a codificação fazendo uma transação fictícia junto com o último número do bloco e o valor de hash anterior.. Vamos começar com 4 zeros no início e vamos subir e você vai perceber por que a mineração de bitcoin é um trabalho difícil. Começamos definindo um SHA256 e uma função de mina que chamaríamos.
Def SHA256(texto): retorno sha256(text.encode("ASCII")).hexdigest()
MAX_NONCE=100000000 # You can also use a while loop to run infinitely with no upper limit def mine(block_number,transação,previous_hash,prefix_zeros): prefix_str="0"*prefix_zeros for nonce in range(MAX_NONCE): texto= str(block_number) + transação + previous_hash + str(Nonce) hash = SHA256(texto) # imprimir(cerquilha) se hash.startswith(prefix_str): imprimir("Bitcoin minerado com valor de nonce :",Nonce) return hash print("Não foi possível encontrar um hash na faixa dada de upto", MAX_NONCE)
Em seguida, fornecemos os detalhes necessários e começamos a extrair com 4 zeros no início do hash.
transações=""' A->B->10 B->c->5 ''' difficulty = 4 import time as t begin=t.time() new_hash = mina(684260,Transações,"000000000000000000006bd3d6ef94d8a01de84e171d3553534783b128f06aad",dificuldade) imprimir("Valor hash : ",new_hash) time_taken=t.time()- begin print("O processo de mineração tomou ",time_taken,"Segundos")
Produção :
Bitcoin minerado com valor de nonce: 36674
Valor hash : 000086ae35230f32b08e9da254bd7ba1b351f11d40bde27a7ebd5e7ec9568f8d
The mining process took 0.08681821823120117 Segundos
Se mudarmos o valor de dificuldade mesmo em 1, portanto, será 5, a saída será.
Produção :
Bitcoin minerado com valor de nonce : 2387325
Valor hash : 00000f5254db00fa0dde976d53bb39c11f9350292949493943a90610d62c1a5e
The mining process took 4.895745515823364 Segundos
Portanto, você pode ver a mudança drástica no tempo que leva o mesmo código quando a dificuldade aumenta de 4 uma 5 e ele só continua aumentando exponencialmente. Portanto, esse é o principal motivo pelo qual a mineração de um bitcoin requer tanta energia e poder computacional. Se isso não bastasse, você deve ser o primeiro a encontrar o hash ou não será recompensado. Então, também está competindo com todos os outros mineiros e todo este sistema funciona com o conceito de ‘PoW’ ou 'Prova de trabalho'.
Notas finais
Discutiremos mais sobre como conectar os resultados da mineração a uma carteira e como extrair outras moedas de conceitos iguais ou diferentes na próxima parte e se você quiser uma prévia, você pode verificar isso. bloco de notas de colaboração do google. Se você gosta do meu artigo e quer ler mais, você pode encontrar todos os meus itens listados aqui. Sinta-se à vontade para me contatar em LinkedIn para qualquer pergunta ou dúvida.
Obrigado por ler até o fim e fique seguro para todos <3.
A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.