Blockchain with Python

ব্লকচেইনের মূল ধারণা

  1. ব্লক: তথ্য, একটি সময়সীমা, পূর্ববর্তী ব্লকের হ্যাশ এবং নিজের হ্যাশ ধারণ করে।
  2. চেইন: একাধিক ব্লকের একটি সিরিজ যা একসাথে সংযুক্ত থাকে, প্রতিটি পূর্ববর্তী ব্লকের হ্যাশ ধারণ করে।
  3. বিকেন্দ্রীকরণ: ব্লকচেইনটির উপর কোন কেন্দ্রীয় কর্তৃপক্ষ নিয়ন্ত্রণ করে না; এটি একাধিক নোডের একটি নেটওয়ার্কে কাজ করে।
  4. কনসেনসাস মেকানিজম: লেনদেনগুলি যাচাই করার জন্য প্রোটোকল (যেমন, প্রুফ অফ ওয়ার্ক, প্রুফ অফ স্টেক)।
  5. ক্রিপ্টোগ্রাফি: ব্লকচেইনের মধ্যে তথ্যের সুরক্ষা এবং অখণ্ডতা নিশ্চিত করে।

পাইটনে একটি সহজ ব্লকচেইনের উদাহরণ

নীচে একটি মৌলিক ব্লকচেইন বাস্তবায়ন করা হলো:

import hashlib
import time

class Block:
    def __init__(self, index, previous_hash, timestamp, data):
        self.index = index
        self.previous_hash = previous_hash
        self.timestamp = timestamp
        self.data = data
        self.hash = self.calculate_hash()

    def calculate_hash(self):
        value = f"{self.index}{self.previous_hash}{self.timestamp}{self.data}".encode()
        return hashlib.sha256(value).hexdigest()


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

    def create_genesis_block(self):
        # জেনেসিস ব্লক তৈরি করা
        genesis_block = Block(0, "0", time.time(), "জেনেসিস ব্লক")
        self.chain.append(genesis_block)

    def add_block(self, data):
        # নতুন ব্লক যোগ করা
        previous_block = self.chain[-1]
        new_index = previous_block.index + 1
        new_timestamp = time.time()
        new_block = Block(new_index, previous_block.hash, new_timestamp, data)
        self.chain.append(new_block)

    def display_chain(self):
        # ব্লকচেইনে সমস্ত ব্লক প্রদর্শন করা
        for block in self.chain:
            print(f"ব্লক #{block.index}")
            print(f"টাইমস্ট্যাম্প: {block.timestamp}")
            print(f"ডেটা: {block.data}")
            print(f"হ্যাশ: {block.hash}")
            print(f"পূর্ববর্তী হ্যাশ: {block.previous_hash}\n")


# একটি ব্লকচেইন তৈরি করুন এবং ১০টি ব্লক যোগ করুন
blockchain = Blockchain()

for i in range(1, 11):
    blockchain.add_block(f"ব্লক {i} ডেটা")

# ব্লকচেইন প্রদর্শন করুন
blockchain.display_chain()

কোডের ব্যাখ্যা

  1. Block ক্লাস:
    • ব্লকচেইনের একটি একক ব্লককে উপস্থাপন করে।
    • প্রতিটি ব্লকে একটি ইনডেক্স, পূর্ববর্তী ব্লকের হ্যাশ, টাইমস্ট্যাম্প, ব্লকের ডেটা এবং নিজস্ব হ্যাশ থাকে।
    • calculate_hash পদ্ধতি ব্লকের বিষয়বস্তু থেকে SHA-256 হ্যাশ গণনা করে।
  2. Blockchain ক্লাস:
    • ব্লকগুলির চেইন পরিচালনা করে।
    • এটি একটি জেনেসিস ব্লক (প্রথম ব্লক) দিয়ে শুরু হয়।
    • add_block পদ্ধতি নতুন ব্লক তৈরি করে এবং চেইনে যোগ করে।
    • display_chain পদ্ধতি চেইনে সমস্ত ব্লককে মুদ্রণ করে।
  3. ব্লক যোগ করা:
    • কোডের প্রধান অংশে, একটি ব্লকচেইন ইনস্ট্যান্স তৈরি করা হয় এবং ১০টি ব্লক যোগ করা হয় যার ডেটা “ব্লক 1 ডেটা”, “ব্লক 2 ডেটা”, …, “ব্লক 10 ডেটা”।
  4. ব্লকচেইন প্রদর্শন:
    • অবশেষে, display_chain পদ্ধতিটি সমস্ত ব্লক মুদ্রণ করতে ডাকা হয়।

আউটপুট

এই কোডটি চালানোর পর আপনার আউটপুট হবে এরকম:

ব্লক #0
টাইমস্ট্যাম্প: 1697713420.256794
ডেটা: জেনেসিস ব্লক
হ্যাশ: a3dcd012fb774793438ebc0db8df449d6e1d2a2c29a7e8a7a66c6e02e158f48b
পূর্ববর্তী হ্যাশ: 0

ব্লক #1
টাইমস্ট্যাম্প: 1697713420.257478
ডেটা: ব্লক 1 ডেটা
হ্যাশ: 4b3b9bb1ac3f8793fcf4b48a1c40899c55574545e6b1edcbb8f61b7fda1cd607
পূর্ববর্তী হ্যাশ: a3dcd012fb774793438ebc0db8df449d6e1d2a2c29a7e8a7a66c6e02e158f48b

...

ব্লক #10
টাইমস্ট্যাম্প: 1697713420.258195
ডেটা: ব্লক 10 ডেটা
হ্যাশ: 5a4b0d51c250c12a7c354417b70b7f0c10b1c8b138c7ff58557b4d5f558fd7f3
পূর্ববর্তী হ্যাশ: f599f9be8345a1c6a14fbbcd39155556064a124f6e2c7e501c5be02f5eec163c

উপসংহার

এই উদাহরণটি পাইটনে ব্লকচেইনের মৌলিক ধারণাগুলি বোঝাতে সহায়ক। যদিও এই বাস্তবায়নটি মৌলিক এবং এর মধ্যে কনসেনসাস অ্যালগরিদম, পিয়ার-টু-পিয়ার নেটওয়ার্কিং বা লেনদেন যাচাইকরণের মতো বৈশিষ্ট্য অন্তর্ভুক্ত নেই, এটি ব্লকচেইন প্রযুক্তির একটি ভিত্তিগত বোঝাপড়া প্রদান করে। আরও জটিল অ্যাপ্লিকেশনের জন্য, আপনি API তৈরি করার জন্য Flask, উন্নত ক্রিপ্টোগ্রাফিক ফাংশনের জন্য PyCryptodome, বা এন্টারপ্রাইজ সমাধানের জন্য Hyperledger মতো লাইব্রেরিগুলি অনুসন্ধান করতে পারেন।