Come estrarre Bitcoin usando Python? (Parte – io)

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati

introduzione

Prima di tuffarti nel mondo delle criptovalute, dobbiamo capire cos'è bitcoin e come minare con python. Se il tuo sistema è vecchio o Python funziona più lentamente di altre lingue sul tuo computer locale, quindi puoi leggere questo elenco su "5 suggerimenti e trucchi per velocizzare i tuoi programmi Python" e poi continuare con questo articolo.

Cos'è un Bitcoin??

77781what20is20a20bitcoin-1937291

Un bitcoin è una forma di valuta online creata a gennaio 2009 da un uomo misterioso che usa lo pseudonimo. “Satoshi Nakamoto”. Il whitepaper può essere trovato qui. La identidad de la persona es un misterio hasta la fecha y Bitcoin en realidad ofrece una tarifa de transazione 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.

Non ci sono monete fisiche con il nome bitcoin su di esse, ma tutto è virtuale ed è custodito in un libro pubblico a cui tutti hanno lo stesso accesso. Tutte le transazioni sono verificate con una grande potenza di calcolo e non sono emesse da nessuna banca. Sono davvero decentralizzati e sicuri allo stesso tempo. Bitcoin è anche comunemente noto come “BTC”.

I punti chiave da ricordare sono:

  • Bitcoin lanciato in 2009 ed è la più grande criptovaluta al mondo per volume di capitalizzazione di mercato.
  • Bitcoin è scambiato, crea, distribuisce e memorizza utilizzando la tecnologia blockchain.
  • I prezzi dei bitcoin sono noti per essere molto volatili con massicce crescite e cali.
  • È stata la prima criptovaluta a raggiungere tale popolarità e in seguito ha ispirato un elenco di altre criptovalute o anche conosciute come “Altcoin”.

Analizzare Bitcoin

95236analizzando20bitcoin-2042363

L'ecosistema Bitcoin è composto da nodi o minatori che eseguono il codice bitcoin e lo memorizzano sulla blockchain. Ogni blockchain contiene transazioni su di esse e tutte hanno l'intera blockchain, in modo che possano accedere e vedere i nuovi blocchi aggiunti al sistema ed è a prova di manomissione.

Chiunque può vedere le transazioni che si verificano in questo momento e ce ne sono più di 12000 nodi a partire da gennaio 2021 e questo numero continua a crescere ogni giorno. I bitcoin sono archiviati in portafogli con un proprio indirizzo e sono gestiti utilizzando la chiave pubblica e la chiave privata che utilizza la crittografia per generare catene di lunga durata. La chiave pubblica può essere pensata come un numero di conto bancario o un ID UPI. È pubblico e raccontarlo agli altri non farà male. In secondo luogo, la tua chiave privata è come il tuo codice bancomat o il tuo codice identificativo UPI. Non dovresti mai rivelarlo a nessun altro e tenerlo sempre privato.

Che cos'è la tecnologia peer to peer??

      Che cos'è la tecnologia peer to peer??

Bitcoin è stata forse la prima valuta digitale a utilizzare la tecnologia peer-to-peer per creare un sistema di pagamento istantaneo.. Qualsiasi individuo con una potenza di calcolo sufficiente può diventare un minatore ed elaborare transazioni sui blocchi.. Sono motivati ​​dai premi che sono il lancio di un nuovo bitcoin e le commissioni di transazione che vengono pagate in bitcoin.

I minatori insieme formano l'autorità decentralizzata che sostiene la credibilità dell'intera rete bitcoin. Aiuta anche a battere l'inflazione, poiché non ce ne saranno mai più di 21 milioni di bitcoin e, entro fine gennaio 2021, sono già stati estratti 18.614.806 bitcoin. I sistemi bancari centrali possono stampare più valuta ogni volta che vogliono, in modo da poter corrispondere al tasso di crescita delle merci, ma i bitcoin funzionano secondo l'algoritmo e impostano la data di lancio in anticipo per affrontare efficacemente l'inflazione.

Cos'è il mining di Bitcoin??

65258bitcoin20mining-4272332

Il mining è il processo mediante il quale i bitcoin vengono gradualmente rilasciati per entrare a far parte della circolazione. Il mining si riferisce generalmente alla risoluzione di un puzzle matematico computazionalmente difficile. Bitcoin Mining è il processo di aggiunta di transazioni verificate alla catena e il premio viene dimezzato ciascuno 210,000 blocchi da estrarre. Sopra 2009, la ricompensa era 50 bitcoin per blocco e dopo il terzo dimezzamento del 11 Maggio 2020, la ricompensa ora è stata ridotta a 6.25 bitcoin.

È possibile utilizzare qualsiasi specifica hardware per il mining, ma alcuni sono più efficienti di altri, come ASIC IC specifici per l'applicazione o persino GPU, che superano la CPU ed estraggono più velocemente di una CPU. Un bitcoin può essere diviso fino a 8 cifre decimali e l'unità più piccola è conosciuta come Satoshi. Se i minatori accettano il cambiamento, quindi può essere diviso in più posizioni decimali.

Cos'è il mining di Bitcoin??  2

Una transazione Bitcoin ha una commissione mineraria allegata e ogni transazione viene aggiunta a una nuova blockchain e quindi viene creato il blocco successivo con l'hash corretto. Con la chiave pubblica del mittente, Il messaggio può essere decrittografato e, così, non condividere mai la tua chiave privata con nessuno.

Come estrarre Bitcoin?

41762bitcoin20mining202-8637603

Il mining si ottiene trovando l'hash corretto che ha un numero preimpostato di zeri all'inizio e significa anche il livello di difficoltà. Iniziamo con l'importazione di una libreria necessaria.

da importazione bitcoin *

Se non hai il pacco, puoi installarlo tramite pip:

pip installare bitcoin

Successivamente, dobbiamo creare la nostra chiave privata e pubblica, insieme all'indirizzo del nostro portafoglio. Possiamo farlo con il seguente codice.

#Generate private key
my_private_key = random_key()
#display private key
print("Chiave privata: %Sn" % my_private_key)
#Generate public key
my_public_key = privtopub(my_private_key)
Stampa("Chiave pubblica: %Sn" % my_public_key)
#Create a bitcoin address
my_bitcoin_address = pubtoaddr(my_public_key)
Stampa("Indirizzo Bitcoin: %Sn" % my_bitcoin_address)

Produzione :

Chiave privata: 82bd4291ebaa6508001600da1fea067f4b63998ed85d996aed41df944c3762be
Public Key: 04f85fa7c009dba8d1e6b7229949116f03cb3de0dfaf4d6ef3e6320a278dfc8dd91baf058fcafe0b5fbf94d09d79412c629d19cc9debceb1676d3c6c794630943d
Bitcoin Address: 1FtaFRNgxVqq4s4szhC74EZkJyShmeH5AU

Ora passiamo alla parte computazionale in cui useremo la crittografia sha256 per trovare l'hash corretto. Importiamo la libreria e poi facciamo un test di cosa significa veramente SHA256.

from hashlib import sha256
sha256("ABC".Codificare("ASCII")).eschedigest()

Produzione :

b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78

Quando si esegue lo stesso codice, Si otterrà lo stesso codice hash per una particolare stringa e, così, Fornisce sempre un output definito per un input definito. La lunghezza dell'hash è 64 e ogni cifra è esadecimale, cosa lo rende uguale a 4 bit y, così, l'intero numero è in realtà 256 bit ed è per questo che è anche conosciuto come SHA256.

Bitcoin segue un protocollo in cui il primo numero 'n’ di cifre deve essere zero. Attualmente, il valore di 'n’ è 20, ma ti mostrerò usando un 'n’ più piccolo in modo che il codice completi l'esecuzione in tempo lineare. Il testo su cui si applicherebbe SHA256 è composto dal numero di blocco, dettagli sulla transizione, il valore hash precedente e, dal momento che 3 I valori sopra sono costanti per un blocco e non possono essere modificati, viene introdotto un nuovo valore chiamato 'Nonce'. Il nostro obiettivo è trovare il valore di Nonce in modo che l'hash del blocco produca il numero richiesto di zeri all'inizio secondo il protocollo.

74077estrazione mineraria-5040852

Inizieremo a codificare prendendo una transazione fittizia insieme all'ultimo numero di blocco e al valore hash precedente.. Inizieremo con 4 zero all'inizio e saliremo e capirai perché il mining di bitcoin è un lavoro difficile. Abbiamo iniziato definendo un SHA256 e una funzione di miniera che chiameremmo.

Def SHA256(testo):
  ritorno sha256(text.encode("ASCII")).eschedigest()
MAX_NONCE=10000000        # You can also use a while loop to run infinitely with no upper limit
def mine(block_number,transazione,previous_hash,prefix_zeros):
  prefix_str="0"*prefix_zeros
  for nonce in range(MAX_NONCE):
    text= str(block_number) + transazione + previous_hash + str(nonce)
    hash = SHA256(testo)
    # Stampa(hash)
    se hash.startswith(prefix_str):
      Stampa("Bitcoin estratto con valore nonce :",nonce)
      return hash
  print("Impossibile trovare un hash nell'intervallo specificato di fino a", MAX_NONCE)

Quindi forniamo i dettagli richiesti e iniziamo a estrarre con 4 zeri all'inizio dell'hash.

transazioni=""'
A->B->10
B->c->5
'''
difficulty = 4
import time as t
begin=t.time()
new_hash = mio(684260,Transazioni,"000000000000000000006bd3d6ef94d8a01de84e171d3553534783b128f06aad",difficoltà)
Stampa("Valore hash : ",new_hash)
time_taken=t.time()- begin
print("Il processo di mining ha richiesto ",time_taken,"Secondi")

Produzione :

Bitcoin estratto con valore nonce: 36674
Valore hash :  000086ae35230f32b08e9da254bd7ba1b351f11d40bde27a7ebd5e7ec9568f8d
The mining process took  0.08681821823120117 Secondi

Se cambiamo il valore di difficoltà anche in 1, così, sarà 5, L'output sarà.

Produzione :

Bitcoin estratto con valore nonce : 2387325
Valore hash :  00000f5254db00fa0dde976d53bb39c11f9350292949493943a90610d62c1a5e
The mining process took  4.895745515823364 Secondi

Perciò, Si può vedere il drastico cambiamento nel tempo che richiede lo stesso codice quando la difficoltà aumenta da 4 un 5 e continua ad aumentare esponenzialmente. Perciò, questo è il motivo principale per cui l'estrazione di un bitcoin richiede così tanta energia e potenza di calcolo. Se non bastasse, devi essere il primo a trovare l'hash o non sarai ricompensato. Quindi, È anche in competizione con tutti gli altri minatori e l'intero sistema funziona sul concetto di "PoW"’ o "Prova di lavoro".

Note finali

Discuteremo di più su come collegare i risultati del mining a un portafoglio e su come estrarre altre monete dallo stesso o da concetti diversi nella parte successiva e se vuoi un'anteprima, puoi controllare questo. taccuino di collaborazione di google. Se ti piace il mio articolo e vuoi saperne di più, puoi trovare tutti i miei articoli elencati qui. Sentiti libero di contattarmi a LinkedIn per qualsiasi domanda o dubbio.

Grazie per aver letto fino alla fine e stai al sicuro per tutti <3.

Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.