اپنا بلاک چین بنائیں

📖 12 منٹ پڑھیں · 🐍 Python

✍️ لکھا اور جائزہ لیا Karel Havlíčekتازہ کاری 2026🛡️ ادارتی طور پر آزاد

Quick Answer

بلاکچین کو سمجھنے کا بہترین طریقہ ایک بنانا ہے۔ Python کی تقریباً 50 لائنوں میں آپ ہیشنگ، بلاکس کی ایک زنجیر، پروف آف ورک مائننگ، اور چھیڑ چھاڑ کے ساتھ ایک کام کرنے والا کھلونا بلاک چین بنا سکتے ہیں - وہی بنیادی خیالات جو بٹ کوائن کو محفوظ بناتے ہیں۔ پہلے سے بلاکچین علم کی ضرورت نہیں ہے۔

⚠️ یہ ایک سیکھنے کا ماڈل ہے، پروڈکشن کوڈ نہیں۔ یہ بٹ کوائن کے پیچھے ڈیٹا کا ڈھانچہ سکھاتا ہے - یہ محفوظ پیسہ نہیں ہے اور اسے کبھی بھی حقیقی قدر نہیں رکھنی چاہیے۔

مرحلہ 1 - ایک بلاک اور اس کا فنگر پرنٹ

ایک بلاک میں کچھ ڈیٹا (لین دین)، پچھلے بلاک کا ایک لنک، اور ایک "nonce" (ایک نمبر جسے ہم تبدیل کر سکتے ہیں) رکھتا ہے۔ اس کی شناخت اس کے تمام مشمولات کا ایک SHA-256 ہیش ہے — ایک کریکٹر کو تبدیل کریں اور ہیش مکمل طور پر بدل جائے۔ وہ ہیش بلاک کی چھیڑ چھاڑ سے واضح فنگر پرنٹ ہے۔

import hashlib, json, time

class Block:
    def __init__(self, index, transactions, previous_hash, nonce=0):
        self.index = index
        self.timestamp = time.time()
        self.transactions = transactions
        self.previous_hash = previous_hash
        self.nonce = nonce

    def hash(self):
        # A block's fingerprint = SHA-256 of all its contents.
        payload = json.dumps({
            "index": self.index,
            "timestamp": self.timestamp,
            "transactions": self.transactions,
            "previous_hash": self.previous_hash,
            "nonce": self.nonce,
        }, sort_keys=True).encode()
        return hashlib.sha256(payload).hexdigest()

مرحلہ 2 — کان کنی (کام کا ثبوت)

کان کنی کا مطلب ہے ایک ہیش تلاش کرنا جو ایک اصول پر پورا اترتا ہو — یہاں، صفر کی ایک مقررہ تعداد سے شروع ہوتا ہے۔ کوئی فارمولا نہیں ہے؛ جب تک کہ ہیش فٹ نہ ہو جائے تب تک آپ نانس کو زبردستی کرتے ہیں۔ کسی حل کی جانچ کرنا فوری ہے، لیکن کسی کو تلاش کرنا کام لیتا ہے۔ وہ عدم توازن کام کے ثبوت کا دل ہے۔

DIFFICULTY = 4  # require this many leading zeros

def mine(block):
    # Proof of Work: keep changing the nonce until the hash
    # starts with DIFFICULTY zeros. There is no shortcut —
    # you just have to guess, which is what costs energy.
    target = "0" * DIFFICULTY
    while not block.hash().startswith(target):
        block.nonce += 1
    return block.hash()

مرحلہ 3 - بلاکس کو زنجیر بنانا

ہر نیا بلاک پچھلے کی ہیش کو ذخیرہ کرتا ہے، انہیں ایک زنجیر میں ویلڈنگ کرتا ہے جو ایک سخت کوڈ والے "جینیسس" بلاک سے شروع ہوتا ہے۔ کیونکہ ہر بلاک اپنے سے پہلے والے سے عہد کرتا ہے، اس لیے ترتیب طے ہوتی ہے اور تاریخ ایک ساتھ منسلک ہوتی ہے۔

class Blockchain:
    def __init__(self):
        # The genesis block — the very first, hard-coded block.
        genesis = Block(0, [{"note": "genesis"}], "0")
        mine(genesis)
        self.chain = [genesis]

    def add_block(self, transactions):
        prev = self.chain[-1]
        block = Block(len(self.chain), transactions, prev.hash())
        mine(block)            # do the work
        self.chain.append(block)
        return block

مرحلہ 4 - سلسلہ کی توثیق کرنا

کسی زنجیر پر بھروسہ کرنے کے لیے، آپ اسے دوبارہ چیک کریں: ہر بلاک کو پچھلے بلاک کی اصلی ہیش کی طرف اشارہ کرنا چاہیے، اور ہر بلاک کو کام کے ثبوت کے اصول کو پورا کرنا چاہیے۔ اگر یا تو چیک کہیں بھی ناکام ہوجاتا ہے، تو سلسلہ غلط ہے۔

def is_valid(chain):
    for i in range(1, len(chain)):
        current, previous = chain[i], chain[i - 1]
        # 1) Each block must point to the real hash of the one before it.
        if current.previous_hash != previous.hash():
            return False
        # 2) Each block must satisfy the proof-of-work rule.
        if not current.hash().startswith("0" * DIFFICULTY):
            return False
    return True

مرحلہ 5 - اسے چلائیں اور دھوکہ دینے کی کوشش کریں۔

اب کچھ بلاکس شامل کریں اور پھر پرانے لین دین کے ساتھ چھیڑ چھاڑ کریں۔ جس لمحے آپ ماضی کے ڈیٹا کو تبدیل کرتے ہیں، اس بلاک کی ہیش اب اس سے میل نہیں کھاتی جو اگلے بلاک کی توقع ہے — اور توثیق فوری طور پر False لوٹاتا ہے۔ یہ ہے، چھوٹے میں، کیوں آپ خاموشی سے بٹ کوائن کی تاریخ کو دوبارہ نہیں لکھ سکتے۔

bc = Blockchain()
bc.add_block([{"from": "Alice", "to": "Bob", "amount": 5}])
bc.add_block([{"from": "Bob", "to": "Carol", "amount": 2}])

print("Chain valid?", is_valid(bc.chain))   # True

# Now try to cheat: tamper with an old transaction.
bc.chain[1].transactions[0]["amount"] = 5000
print("Chain valid?", is_valid(bc.chain))   # False — tampering is caught!

🔑 کلیدی ٹیک وے

ایک بلاکچین صرف ڈیٹا سٹرکچر اور قواعد ہے: ہر بلاک کو ہیش کریں، اسے آخری سے لنک کریں، اور پروف آف ورک کے ذریعے بلاکس کو شامل کرنا مہنگا بنائیں۔ چھیڑ چھاڑ ہیشوں کی زنجیر کو توڑ دیتی ہے - بالکل اسی طرح Bitcoin کسی مرکزی اتھارٹی کے بغیر چھیڑ چھاڑ واضح رہتا ہے۔

اصلی بٹ کوائن کیا اضافہ کرتا ہے۔

ہمارا کھلونا سلسلہ کنکال سکھاتا ہے۔ اصلی بٹ کوائن نوڈس کا ایک عالمی پیئر ٹو پیئر نیٹ ورک شامل کرتا ہے، ڈیجیٹل دستخط جو یہ ثابت کرتے ہیں کہ کون سکے خرچ کر سکتا ہے، خودکار مشکل ایڈجسٹمنٹ، UTXO ماڈل، انعامات کو روکنا اور کم کرنا، اور متفقہ اصول جو اجنبیوں کو اعتماد کے بغیر راضی ہونے دیتے ہیں۔ ذیل میں ہمارے وضاحت کنندگان میں سے ہر ایک کو دریافت کریں۔

اکثر پوچھے گئے سوالات

کیا یہ Bitcoin کی طرح ایک حقیقی بلاکچین ہے؟

یہ ایک آسان تدریسی ماڈل ہے جو Bitcoin کے بنیادی خیالات — ہیشنگ، چیننگ، اور پروف آف ورک — کا اشتراک کرتا ہے لیکن نیٹ ورکنگ، ڈیجیٹل دستخطوں، اور معاشی ترغیبات کو چھوڑ دیتا ہے جو Bitcoin کو عالمی سطح پر محفوظ بناتے ہیں۔ یہ سیکھنے کے لیے ہے، پیسہ چلانے کے لیے نہیں۔

کیا مجھے پروگرامر بننے کی ضرورت ہے؟

Python کے ساتھ بنیادی واقفیت میں مدد ملتی ہے، لیکن وضاحتیں لکھی جاتی ہیں تاکہ کوئی بھی منطق کی پیروی کر سکے۔ آپ کوڈ کو چلائے بغیر بھی تصورات کو سمجھنے کے لیے اسے پڑھ سکتے ہیں۔

کان کنی صرف صفر کا اضافہ کیوں کرتی ہے؟

متعدد زیرو کے ساتھ شروع کرنے کے لیے ہیش کی ضرورت کو چیک کرنا آسان لیکن تلاش کرنا مشکل ہے۔ ایک درست ہیش تلاش کرنے کا واحد طریقہ یہ ہے کہ اندازہ لگاتے رہیں (ننس کو تبدیل کرتے رہیں)، یہی وجہ ہے کہ حقیقی کان کنی میں توانائی خرچ ہوتی ہے۔

اصلی بٹ کوائن کے مقابلے میں کیا غائب ہے؟

نوڈس کا ایک حقیقی نیٹ ورک، ملکیت کو ثابت کرنے والے ڈیجیٹل دستخط، ایک پیر ٹو پیر پروٹوکول، مشکل ایڈجسٹمنٹ، UTXO ماڈل، اور بلاک انعامات۔ یہ ٹیوٹوریل ڈیٹا کی ساخت سکھاتا ہے۔ مکمل نظام کے لیے ہمارے وضاحت کنندگان کو دیکھیں۔

سیکھتے رہیں