New course launching soon Join the waitlist!

Learn Solidity for free

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

Blockchain

How to Build a Simple Blockchain with Python

How to Build a Simple Blockchain with Python

Blockchain is transforming industries, and understanding its foundation is essential. Ever wondered how a blockchain is built? Let's dive into creating a basic blockchain using Python!

What is a Blockchain?

At its core, a blockchain is a decentralized ledger that records transactions across multiple computers. Once a transaction is recorded, it's almost impossible to alter retrospectively.

Key Features of Blockchain

  • Decentralization: Eliminates single points of failure.
  • Immutability: Once recorded, data cannot be changed.
  • Transparency: Transactions are transparent and verifiable.

Building Blocks of a Blockchain

To build a simple blockchain, you need to understand its components:

  1. Block: Contains data, a hash of the previous block, and timestamp.
  2. Chain: A linked list of blocks.
  3. Consensus: A mechanism to agree upon the correct chain (not covered here).

Let's Code: Building a Simple Blockchain

Here, I'll walk you through a simple blockchain implementation in Python. This won't include complexities like a consensus algorithm or smart contracts to keep it beginner-friendly.

Step 1: Define the Block Structure

import hashlib
import time

class Block:
    def __init__(self, index, previous_hash, data, timestamp=None):
        self.index = index
        self.previous_hash = previous_hash
        self.data = data
        self.timestamp = timestamp or time.time()
        self.hash = self.hash_block()

    def hash_block(self):
        sha = hashlib.sha256()
        sha.update(str(self.index).encode('utf-8') +
                   str(self.previous_hash).encode('utf-8') +
                   str(self.data).encode('utf-8') +
                   str(self.timestamp).encode('utf-8'))
        return sha.hexdigest()

Step 2: Create the Blockchain

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

    def create_genesis_block(self):
        self.chain.append(Block(0, "0", "Genesis Block"))

    def add_block(self, data):
        last_block = self.chain[-1]
        new_block = Block(len(self.chain), last_block.hash, data)
        self.chain.append(new_block)

Step 3: Testing the Blockchain

if __name__ == '__main__':
    my_blockchain = Blockchain()
    my_blockchain.add_block("First Block")
    my_blockchain.add_block("Second Block")

    for block in my_blockchain.chain:
        print(f"Index: {block.index}")
        print(f"Hash: {block.hash}")
        print(f"Previous Hash: {block.previous_hash}")
        print(f"Data: {block.data}\n")

Conclusion

You've just built a basic blockchain! Of course, real-world blockchains are far more sophisticated, with consensus algorithms, decentralized networks, and more. But you've taken your first step into the world of blockchain development.

Curious to dive deeper? Try extending this code by adding features like proof-of-work or a basic consensus mechanism. Happy coding!

Create a simple blockchain with Python in just a few steps! From understanding basic concepts to coding your first blocks, this guide is perfect for newcomers and coding enthusiasts alike.