New course launching soon Join the waitlist!

Learn Solidity for free

Kickstart your blockchain journey with our free, hands-on Solidity course.

Blockchain

Building a Simple Blockchain in Python

Building a Simple Blockchain in Python

Blockchain technology can seem daunting, but creating a basic blockchain in Python can help demystify its core concepts. This tutorial walks you through building a simple blockchain step-by-step.

What is a Blockchain?

At its core, a blockchain is a distributed ledger that records transactions across many computers so that any involved record cannot be altered retroactively. This structure provides transparency and security without the need for a centralized authority.

Key Components of a Blockchain

  1. Blocks: These are individual units that hold data.
  2. Chain: Blocks are linked in a linear sequence.
  3. Hashing: Ensures data integrity as each block contains a cryptographic hash of the previous block.

Why Build Your Own Blockchain?

Understanding how to build a blockchain helps you grasp the underlying principles of transparency, immutability, and consensus that make it powerful. Plus, it's a great way to get hands-on experience with Python!

Step-by-Step Guide to Building a Blockchain

1. Setting Up Your Environment

Ensure you have Python installed. You can download it from python.org.

2. Creating Your First Block

Start by defining a Block class in Python:

import hashlib
import time

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 calculate_hash(index, previous_hash, timestamp, data):
    value = str(index) + previous_hash + str(timestamp) + data
    return hashlib.sha256(value.encode('utf-8')).hexdigest()

3. Building the Blockchain

Now, let's create a Blockchain class:

class Blockchain:
    def __init__(self):
        self.chain = [self.create_genesis_block()]

    def create_genesis_block(self):
        return Block(0, "0", int(time.time()), "Genesis Block", "0")

    def get_latest_block(self):
        return self.chain[-1]

    def add_block(self, data):
        prev_block = self.get_latest_block()
        index = prev_block.index + 1
        timestamp = int(time.time())
        hash_value = calculate_hash(index, prev_block.hash, timestamp, data)
        new_block = Block(index, prev_block.hash, timestamp, data, hash_value)
        self.chain.append(new_block)

4. Testing Your Blockchain

Let's add some blocks to our blockchain:

my_blockchain = Blockchain()
my_blockchain.add_block("First block data")
my_blockchain.add_block("Second block data")

for block in my_blockchain.chain:
    print(f"Block {block.index}: {block.data} - {block.hash}")

Conclusion

You've built a simple blockchain with Python! This exercise introduces you to the fundamental components of blockchain technology. While real-world blockchains are much more complex, this basic understanding is a stepping stone for further exploration.

Remember, blockchain isn't just about technology—it's about reshaping how data is stored and shared in a secure, transparent way.

Learn how to build a simple blockchain in Python, covering essential elements like blocks and hashing. Perfect for beginners to get hands-on experience with blockchain technology.