Prerequisiti
- Conoscenza di base di Python
- Ambiente Python correttamente installato
Paso 1: Cosa è una Blockchain?
La blockchain è un tipo di database distribuito che prende un numero di registrazioni e le mette in un blocco (piuttosto come un foglio di calcolo Excel). Ogni blocco ha un timestamp e un link al blocco precedente, creando così una catena. Il vero vantaggio di una blockchain è che è decentralizzata, il che significa che nessuna singola entità ha il controllo. Inoltre, ogni transazione sulla blockchain è visibile a chiunque, aggiungendo un livello di trasparenza che le attuali reti finanziarie non offrono.
Paso 2: Creazione della Prima Blockchain in Python
Per creare la nostra blockchain, avremo bisogno solo di Python. Per rendere la nostra blockchain persistente, useremo anche il modulo pickle di Python.
import hashlib
import time
import pickle
class Block:
def __init__(self, index, previous_hash, timestamp, data, hash):
self.index = index
self.previous_hash = previous_hash
self.timestamp = timestamp
self.data = data
self.hash = hash
def create_genesis_block():
return Block(0, "0", time.time(), "Genesis Block", calculate_hash(0, "0", time.time(), "Genesis Block"))
def calculate_hash(index, previous_hash, timestamp, data):
value = str(index) + str(previous_hash) + str(timestamp) + str(data)
return hashlib.sha256(value.encode('utf-8')).hexdigest()
def create_new_block(previous_block, data):
index = previous_block.index + 1
timestamp = time.time()
hash = calculate_hash(index, previous_block.hash, timestamp, data)
return Block(index, previous_block.hash, timestamp, data, hash)
# Creiamo la blockchain e aggiungiamo il blocco genesi
blockchain = [create_genesis_block()]
previous_block = blockchain[0]
# Aggiungiamo altri 10 blocchi alla blockchain
for i in range(1, 10):
block_to_add = create_new_block(previous_block, f"Block #{i} data")
blockchain.append(block_to_add)
previous_block = block_to_add
print(f"Block #{block_to_add.index} has been added to the blockchain!")
print(f"Hash: {block_to_add.hash}\n")
# Salva la blockchain in un file
with open('blockchain.p', 'wb') as f:
pickle.dump(blockchain, f)
Ora hai creato una semplice blockchain utilizzando Python. Ogni blocco nella blockchain contiene il proprio indice, hash, timestamp, dati e l'hash del blocco precedente, collegando quindi ogni blocco all'hash del blocco precedente, creando una catena.
Conclusione
Spero che questo tutorial ti abbia aiutato a comprendere meglio come funziona una blockchain e come creare la tua prima blockchain utilizzando Python. Ricorda, questa è una semplice blockchain ed è ideale solo per scopi di apprendimento. Le blockchain reali contengono molti altri componenti, come algoritmi di cons