Comment miner du Bitcoin avec Python? (Partie – je)

Contenu

Cet article a été publié dans le cadre du Blogathon sur la science des données

introduction

Avant de se jeter dans le monde des crypto-monnaies, nous devons comprendre ce qu'est le bitcoin et comment miner avec python. Si votre système est ancien ou que Python s'exécute plus lentement que les autres langages sur votre machine locale, alors vous pouvez lire cette liste sur "5 trucs et astuces pour accélérer vos programmes Python" puis continuer avec cet article.

Qu'est-ce qu'un Bitcoin?

77781quoi20est20a20bitcoin-1937291

Un bitcoin est une forme de monnaie en ligne qui a été créée en janvier 2009 par un homme mystérieux qui utilise le pseudonyme. "Satoshi Nakamoto". Le livre blanc peut être trouvé ici. L’identité de la personne est un mystère à ce jour et Bitcoin propose en fait des frais de transaction inférieur à un système de paiement traditionnel, même pour une grosse somme d’argent, et tout ce dont vous avez besoin pour envoyer de l’argent à quelqu’un est son adresse de portefeuille.

Il n'y a pas de pièces physiques avec le nom bitcoin dessus, mais tout est virtuel et est conservé dans un livre public auquel tout le monde a le même accès. Toutes les transactions sont vérifiées avec une grande puissance de calcul et ne sont émises par aucune banque. Ils sont vraiment décentralisés et sécurisés à la fois. Bitcoin est aussi communément appelé “BTC”.

Les points clés à retenir sont:

  • Bitcoin lancé en 2009 et c'est la plus grande crypto-monnaie au monde en termes de volume de capitalisation boursière.
  • Bitcoin est échangé, crée, distribue et stocke en utilisant la technologie blockchain.
  • Les prix du Bitcoin sont connus pour être très volatils avec une croissance et des baisses massives.
  • Ce fut la première crypto-monnaie à atteindre une telle popularité et a ensuite inspiré une liste d'autres crypto-monnaies ou également connue sous le nom de “Altcoins”.

Analyser Bitcoin

95236analyse20bitcoin-2042363

L'écosystème Bitcoin est composé de nœuds ou de mineurs qui exécutent du code bitcoin et le stockent sur la blockchain. Chaque blockchain contient des transactions sur eux et ils ont tous la blockchain entière, afin qu'ils puissent accéder et voir les nouveaux blocs ajoutés au système et il est inviolable.

Tout le monde peut voir les transactions qui se produisent en ce moment et il y a plus de 12000 nœuds en janvier 2021 et ce nombre ne cesse de croître chaque jour. Les bitcoins sont stockés dans des portefeuilles avec leur propre adresse et gérés à l'aide de la clé publique et de la clé privée qui utilise le cryptage pour générer des chaînes durables. La clé publique peut être considérée comme un numéro de compte bancaire ou un identifiant UPI. C'est public et dire aux autres ne fera pas de mal. D'un autre côté, votre clé privée est comme votre code PIN ATM ou votre code PIN d'identification UPI. Vous ne devriez jamais le révéler à quelqu'un d'autre et le garder privé à tout moment.

Qu'est-ce que la technologie Peer to Peer?

      Qu'est-ce que la technologie Peer to Peer?

Bitcoin a peut-être été la première monnaie numérique à utiliser la technologie peer-to-peer pour créer un système de paiement instantané.. Toute personne disposant d'une puissance de calcul suffisante peut devenir mineur et traiter les transactions sur les blocs. Ils sont motivés par les récompenses que sont le lancement d'un nouveau bitcoin et les frais de transaction qui sont payés en bitcoin.

Les mineurs forment ensemble l'autorité décentralisée qui maintient la crédibilité de l'ensemble du réseau bitcoin. Il aide également à battre l'inflation, car il n'y aura jamais plus de 21 millions de bitcoins et, d'ici fin janvier 2021, ont déjà été extraits 18.614.806 bitcoins. Les systèmes bancaires centraux peuvent imprimer plus de devises quand ils le souhaitent afin qu'ils puissent correspondre au taux de croissance des biens, mais les bitcoins fonctionnent selon un algorithme et fixent la date de lancement à l'avance pour lutter efficacement contre l'inflation.

Qu'est-ce que le minage de Bitcoin?

65258bitcoin20mining-4272332

Le minage est le processus par lequel les bitcoins sont progressivement libérés pour devenir une partie de la circulation. L'exploitation minière fait généralement référence à la résolution d'un casse-tête mathématique difficile en termes de calcul. Bitcoin Mining est le processus d'ajout de transactions vérifiées à la chaîne et la récompense est réduite de moitié à chaque 210,000 blocs à extraire. Dans 2009, la récompense était 50 bitcoins par bloc et après le troisième, réduire de moitié le 11 Mai 2020, la récompense a maintenant été réduite à 6.25 bitcoins.

Toute spécification matérielle peut être utilisée pour l'exploitation minière, mais certains sont plus efficaces que d'autres, en tant qu'ASIC IC spécifiques à l'application ou même GPU, qui surpassent le processeur et extraient plus rapidement qu'un processeur. Un bitcoin peut être divisé jusqu'à 8 décimales et la plus petite unité est connue sous le nom de Satoshi. Si les mineurs acceptent le changement, alors il peut être divisé en plusieurs décimales.

Qu'est-ce que le minage de Bitcoin?  2

Une transaction Bitcoin a des frais de mineur attachés et chaque transaction est ajoutée à une nouvelle blockchain, puis le bloc suivant avec le hachage correct est créé. Avec la clé publique de l'expéditeur, le message peut être déchiffré et, donc, ne partagez jamais votre clé privée avec qui que ce soit.

Comment miner du Bitcoin?

41762bitcoin20mining202-8637603

L'exploitation minière est réalisée en trouvant le hachage correct qui a un nombre prédéfini de zéros au début et signifie également le niveau de difficulté. On commence par l'import d'une bibliothèque nécessaire.

de l'importation de bitcoins *

Si vous n'avez pas le paquet, vous pouvez l'installer via pip:

pip installer bitcoin

Après cela, nous devons créer notre clé privée et publique, avec notre adresse de portefeuille. Nous pouvons le faire avec le code suivant.

#Générer une clé privée
my_private_key = random_key()
#afficher la clé privée
imprimer("Clé privée: %sn" % ma_clé_privée)
#Générer la clé publique
my_public_key = privtopub(ma_clé_privée)
imprimer("Clé publique: %sn" % ma_clé_publique)
#Créer une adresse bitcoin
my_bitcoin_address = pubtoaddr(ma_clé_publique)
imprimer("Adresse Bitcoin: %sn" % mon_adresse_bitcoin)

Production :

Clé privée: 82bd4291ebaa6508001600da1fea067f4b63998ed85d996aed41df944c3762be
Clé publique: 04f85fa7c009dba8d1e6b7229949116f03cb3de0dfaf4d6ef3e6320a278dfc8dd91baf058fcafe0b5fbf94d09d79412c629d19cc9debceb1676d3c6c794630943d
Adresse Bitcoin: 1FtaFRNgxVqq4s4szhC74EZkJyShmeH5AU

Passons maintenant à la partie informatique où nous utiliserons le cryptage SHA256 pour trouver le hachage correct. Nous importons la bibliothèque, puis faisons un test de ce que signifie réellement SHA256.

de hashlib importer sha256
sha256("abc".encoder("ascii")).hexadécimal()

Production :

b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78

Lorsque vous exécutez le même code, vous obtiendrez le même code de hachage pour une chaîne particulière et, donc, donne toujours une sortie définie pour une entrée définie. La longueur du hachage est 64 et chaque chiffre est hexadécimal, ce qui le rend égal à 4 bits y, donc, le nombre entier est en fait 256 bits et c'est pourquoi il est également connu sous le nom de SHA256.

Bitcoin suit un protocole dans lequel le premier nombre 'n’ les chiffres doivent être zéro. Actuellement, la valeur de 'n’ il est 20, mais je vais vous montrer en utilisant un 'n’ plus petit pour que le code termine l'exécution en temps linéaire. Le texte sur lequel s'appliquerait SHA256 est composé du numéro de bloc, détails de la transition, la valeur de hachage précédente et, depuis le 3 les valeurs ci-dessus sont constantes pour un bloc et ne peuvent pas être modifiées, une nouvelle valeur appelée 'Nonce' est introduite. Notre objectif est de trouver la valeur de Nonce afin que le hachage de bloc produise le nombre requis de zéros non significatifs selon le protocole.

74077exploitation minière-5040852

Nous allons commencer à coder en prenant une transaction fictive avec le dernier numéro de bloc et la valeur de hachage précédente. Nous commencerons par 4 des zéros au début et nous allons monter et vous comprendrez pourquoi l'extraction de bitcoins est un travail difficile. Nous commençons par définir un SHA256 et une fonction mine que nous appellerions.

par défaut SHA256(texte):
  retour sha256(text.encode("ascii")).hexadécimal()
MAX_NONCE=10000000        # Vous pouvez également utiliser une boucle while pour exécuter à l'infini sans limite supérieure
def le mien(numéro de bloc,transaction,précédent_hachage,préfixe_zéros):
  prefix_str="0"*préfixe_zéros
  pour les nonce à portée(MAX_NONCE):
    texte= chaîne(numéro de bloc) + transaction + précédent_hachage + str(nonce)
    hachage = SHA256(texte)
    # imprimer(hacher)
    si hash.startswith(prefix_str):
      imprimer("Bitcoin extrait avec une valeur de nonce :",nonce)
      retour de hachage
  imprimer("Impossible de trouver un hachage dans la plage donnée de jusqu'à", MAX_NONCE)

Nous fournissons ensuite les détails requis et commençons l'exploitation avec 4 des zéros au début du hachage.

opérations=""'
UNE->B->10
B->c->5
'''
difficulté = 4
temps d'importation en t
commencer=t.heure()
new_hash = le mien(684260,transactions,"000000000000000000006bd3d6ef94d8a01de84e171d3553534783b128f06aad",difficulté)
imprimer("Valeur de hachage : ",nouveau_hachage)
time_taken=t.heure()- commencer
imprimer("Le processus d'extraction a pris ",temps pris,"secondes")

Production :

Bitcoin extrait avec une valeur de nonce: 36674
Valeur de hachage :  000086ae35230f32b08e9da254bd7ba1b351f11d40bde27a7ebd5e7ec9568f8d
Le processus d'extraction a pris  0.08681821823120117 secondes

Si nous modifions la valeur de difficulté même dans 1, donc, ce sera 5, la sortie sera.

Production :

Bitcoin extrait avec une valeur de nonce : 2387325
Valeur de hachage :  00000f5254db00fa0dde976d53bb39c11f9350292949493943a90610d62c1a5e
Le processus d'extraction a pris  4.895745515823364 secondes

Donc, vous pouvez voir le changement drastique dans le temps qu'il faut pour le même code lorsque la difficulté augmente de 4 une 5 et ça continue d'augmenter de façon exponentielle. Donc, c'est la principale raison pour laquelle l'extraction d'un bitcoin nécessite autant d'énergie et de puissance de calcul. Si cela ne suffisait pas, vous devez être le premier à trouver le hasch ou vous ne serez pas récompensé. Ensuite, il est également en concurrence avec tous les autres mineurs et tout ce système fonctionne sur le concept de « PoW’ ou "Preuve de travail".

Remarques finales

Nous discuterons plus en détail de la façon de connecter les résultats de l'extraction à un portefeuille et de la façon d'exploiter d'autres pièces à partir de concepts identiques ou différents dans la prochaine partie et si vous voulez un aperçu, tu peux vérifier ça. cahier de collaboration google. Si vous aimez mon article et que vous voulez en savoir plus, vous pouvez trouver tous mes articles répertoriés ici. N'hésitez pas à me contacter au LinkedIn pour toute question ou doute.

Merci d'avoir lu jusqu'à la fin et restez en sécurité pour tout le monde <3.

Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.