المشاركات

التعدين وإثبات العمل

المقال الرابع من سلسلة العلم — إزاي بيتولّد البيتكوين

كل حوالي 10 دقايق، كتلة جديدة بتنضاف للسجل، وأول جهاز يحل اللغز الرياضي هو اللي ياخد المكافأة.

التعدين يعني إيه بالظبط؟

التعدين هو عملية إضافة كتلة جديدة للبلوكتشين عن طريق حل لغز رياضي صعب يُسمى إثبات العمل (Proof of Work).

إزاي يشتغل إثبات العمل؟

1. تجميع المعاملات الجديدة في كتلة
2. أخذ هاش الكتلة السابقة
3. تجربة ملايين قيم الـ Nonce كل ثانية
4. لحد ما يطلع هاش يحقق شرط الصعوبة الحالية للشبكة
5. أول جهاز يوصله = يفوز بالكتلة والمكافأة

شكل الكتلة أثناء التعدين

┌─────────────────────────────────────────────┐
│ Version: 4                                   │
│ هاش الكتلة السابقة: 00000000000000000002a7c..│
│ Merkle Root: 1a2b3c...                       │
│ Timestamp: ...                               │
│ Difficulty Target: يتغيّر كل ~2016 كتلة       │
│ Nonce: ????????????? ← المُعدّن بيغيّره       │
└─────────────────────────────────────────────┘
                   ↓ SHA-256 مرتين
        هاش الكتلة لازم يحقق شرط الصعوبة الحالية

جدول مكافآت التعدين (بروتوكول ثابت لا يتغيّر)

الفترةمكافأة الكتلة
2024 – 2028 (الحالية)3.125 BTC
2028 – 2032 (بعد الهبوط القادم)1.5625 BTC
جدول المكافآت ده جزء من بروتوكول بيتكوين نفسه وثابت لا يتغيّر (يُعرف بـ"الهالفينج" — يحدث كل 210,000 كتلة). أما هاشريت الشبكة وأسماء أكبر شركات التعدين فبتتغيّر باستمرار، فحطيناها في قسم منفصل مع مصدر حي بدل أرقام هتبقى قديمة بسرعة.

هاشريت الشبكة وأكبر شركات التعدين (بيانات حية)

الأرقام دي بتتغيّر يوميًا تقريبًا، فبدل ما نكتب رقم هيبقى قديم خلال شهور، تابع المصادر الحية دي مباشرة:

جرّب مفهوم التعدين بكود Python (تعدين وهمي مبسّط)

نسخة مبسّطة جدًا للتوضيح فقط — الصعوبة الحقيقية للشبكة أعلى بملايين المرات من المثال ده:

import hashlib
import time

block = "كتلة تجريبية | معاملات: أحمد→سارة 0.1 BTC"
prev_hash = "00000000000000000002a7c4c1e48d4c..."
target = "0000"   # مبسّط جدًا للتجربة — الصعوبة الحقيقية أعلى بكثير

nonce = 0
start = time.time()

while True:
    text = block + prev_hash + str(nonce)
    hash_result = hashlib.sha256(text.encode()).hexdigest()
    if hash_result.startswith(target):
        print(f"تم التعدين! Nonce = {nonce}")
        print(f"الهاش: {hash_result}")
        print(f"الوقت: {time.time()-start:.2f} ثانية")
        break
    nonce += 1
جرّب الكود في أي بيئة بايثون على جهازك — النتيجة هتختلف كل مرة وده طبيعي.

المقال الجاي في السلسلة: "العقود الذكية.. السحر اللي خلّى الإيثيريوم يغيّر قواعد اللعبة"

إرسال تعليق

حقوق النشر © نقطة البداية جميع الحقوق محفوظة
سهم لأعلى