Prerequisites
- Basic knowledge of Python
- Python environment successfully installed
Step 1: What is a Blockchain?
Blockchain is a type of distributed database that takes a number of records and puts them into a block (rather like an Excel spreadsheet). Each block has a timestamp and a link to the previous block, thus creating a chain. The real benefit of a blockchain is that it is decentralized, meaning no single entity is in control. Furthermore, every transaction on the blockchain is visible to anyone, adding a level of transparency that current financial networks do not offer.
Step 2: Creating the First Blockchain in Python
To create our blockchain, we will only need Python. To make our blockchain persistent, we will also use Python's pickle module.
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)
You have now created a simple blockchain using Python. Each block in the blockchain contains its own index, hash, timestamp, data and the hash of the previous block, therefore linking each block to the hash of the previous block, creating a chain.
Conclusion
I hope this tutorial helped you better understand how a blockchain works and how to create your first blockchain using Python. Remember, this is a simple blockchain and is only ideal for learning purposes. Real blockchains contain many other components, such as cons algorithms