قم ببناء سلسلة الكتل الخاصة بك

📖 12 دقيقة قراءة · 🐍 Python

✍️ كتبه وراجعه Karel Havlíčekتم التحديث 2026🛡️ مستقلة تحريريا

Quick Answer

أفضل طريقة لفهم blockchain هي بناء واحدة. في حوالي 50 سطرًا من لغة Python، يمكنك إنشاء لعبة blockchain عاملة باستخدام التجزئة، وسلسلة من الكتل، وتعدين إثبات العمل، واكتشاف التلاعب - وهي نفس الأفكار الأساسية التي تعمل على تأمين Bitcoin. لا حاجة إلى معرفة مسبقة بـ blockchain.

⚠️ هذا نموذج تعليمي، وليس كود إنتاج. إنه يعلم بنية البيانات وراء Bitcoin - فهي ليست أموالًا آمنة ويجب ألا تحمل قيمة حقيقية أبدًا.

الخطوة 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 - قم بتشغيله وحاول الغش

أضف الآن بضع كتل ثم تلاعب بمعاملة قديمة. في اللحظة التي تقوم فيها بتغيير البيانات السابقة، لن تعد تجزئة هذه الكتلة متطابقة مع ما تتوقعه الكتلة التالية - وسيؤدي التحقق من الصحة على الفور إلى إرجاع خطأ. وهذا هو السبب المصغر وراء عدم قدرتك على إعادة كتابة تاريخ البيتكوين بهدوء.

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!

🔑 الوجبات الجاهزة الرئيسية

إن blockchain هو مجرد هياكل بيانات بالإضافة إلى القواعد: قم بتجزئة كل كتلة، وربطها بالأخيرة، وجعل إضافة الكتل مكلفة عبر إثبات العمل. يكسر التلاعب سلسلة التجزئة - وهذا هو بالضبط كيف تظل عملة البيتكوين واضحة للتلاعب بدون سلطة مركزية.

ما يضيفه البيتكوين الحقيقي

سلسلة ألعابنا تعلم الهيكل العظمي. تضيف Real Bitcoin شبكة عالمية من العقد من نظير إلى نظير، وتوقيعات رقمية تثبت من يمكنه إنفاق العملات المعدنية، وتعديل الصعوبة التلقائي، ونموذج UTXO، ومكافآت الحظر والتخفيض إلى النصف، وقواعد الإجماع التي تسمح للغرباء بالموافقة دون ثقة. استكشف كل منها في شرحنا أدناه.

الأسئلة المتداولة

هل هذه blockchain حقيقية مثل Bitcoin؟

إنه نموذج تعليمي مبسط يشارك الأفكار الأساسية للبيتكوين - التجزئة، والتسلسل، وإثبات العمل - ولكنه يتجاهل الشبكات والتوقيعات الرقمية والحوافز الاقتصادية التي تجعل بيتكوين آمنة على نطاق عالمي. إنه للتعلم، وليس لتشغيل المال.

هل أحتاج أن أكون مبرمجًا؟

إن الإلمام بأساسيات لغة بايثون يساعد، ولكن التفسيرات مكتوبة حتى يتمكن أي شخص من اتباع المنطق. يمكنك قراءتها لفهم المفاهيم حتى بدون تشغيل الكود.

لماذا يضيف التعدين الأصفار فقط؟

إن اشتراط أن يبدأ التجزئة بعدد من الأصفار هو شرط يسهل التحقق منه ولكن يصعب العثور عليه. الطريقة الوحيدة للعثور على تجزئة صالحة هي الاستمرار في التخمين (تغيير الرقم)، وهذا هو بالضبط سبب تكلفة التعدين الحقيقي للطاقة.

ما هو المفقود مقارنة بالبيتكوين الحقيقي؟

شبكة حقيقية من العقد، والتوقيعات الرقمية التي تثبت الملكية، وبروتوكول نظير إلى نظير، وتعديل الصعوبة، ونموذج UTXO، ومكافآت الكتلة. هذا البرنامج التعليمي يعلم بنية البيانات؛ راجع شروحاتنا للنظام الكامل.

استمر في التعلم