تحدد معاملة coinbase مستلمي مكافأة الكتلة: وحدات بيتكوين الجديدة المسموح بها ورسوم المعاملات الأخرى. وبخلاف دفعة عادية، لا تنفق أموالًا استُلمت سابقًا. لكنها لا تكون صالحة إلا داخل كتلة صالحة، ولا يمكن إنفاق مكافأتها فورًا. الاسم يشير إلى نوع معاملة، لا إلى منصة Coinbase.
لنتخيل أن آنا تُعدّ كتلة مرشحة للتعدين. تجمع دفعات المستخدمين وتضع قبلها معاملة خاصة تحدد مستلمي المكافأة. في مثالنا تسمح القواعد بإنشاء 3.125 BTC، وتحمل الدفعات المختارة رسومًا قدرها 0.075 BTC. لذلك تستطيع آنا تحصيل 3.2 BTC كحد أقصى. هذه المعاملة الأولى هي coinbase. لكن كتابتها لا تعني أنها ربحت المكافأة بعد: يجب أن تحقق الكتلة شرط التعدين وجميع الشروط الأخرى، التي تتحقق منها العقد المستقبلة بنفسها. إن طلبت آنا أكثر من المسموح، ترفض العقد الكتلة بأكملها مهما استهلك البحث عنها من طاقة. لا يوجد حساب مركزي يرسل لها الدفعة. تنشأ العملات الجديدة وفق القواعد المشتركة داخل كتلة مقبولة. من أصل 3.2 BTC في المثال، الجديد هو 3.125 BTC فقط؛ أما الباقي فدفعه المستخدمون. هذه مكافأة وليست ربحًا صافيًا، إذ لم نخصم تكاليف التعدين. [6] [4]
الإصدار الجديد المسموح يُسمّى Block Subsidy، وينخفض دوريًا إلى النصف عند Halving. الساتوشي أصغر وحدة في بيتكوين. أما الرسوم فتعتمد على الدفعات المختارة، لذا قد تختلف مكافأة كتلتين. سقف المكافأة هو الإصدار المسموح عند ارتفاع الكتلة، الذي تحسبه GetBlockSubsidy في Bitcoin Core، مضافاً إليه رسوم بقية المعاملات الصالحة في الكتلة. الإصدار وحده يزيد المعروض؛ أما الرسوم فهي ساتوشي موجودة أصلاً. يمكن للمعدّن تحصيل أقل، لكنه لا يستدرك الفرق لاحقاً: الإصدار غير المحصّل لا ينشأ، والرسوم غير المحصّلة تصبح غير قابلة للإنفاق إلى الأبد. زيادة ساتوشي واحد تجعل الكتلة كلها غير صالحة. [4] [6]
تذهب المكافأة كثيرًا إلى مجمع تعدين ينسّق عمل عدة معدّنين. سكربت القفل برنامج قصير يحدد الشروط التي يجب استيفاؤها لإنفاق المخرج لاحقًا. PPS وFPPS وPPLNS أسماء طرق مختلفة يوزع بها المجمع دخله على المشاركين. تستخدم المخرجات سكربتات قفل عادية. قد تصل المكافأة إلى عنوان تجميعي واحد، أو تتوزع على مستلمين، أو تشمل حصة مشغّل المجمع. تفحص العقد المبالغ وشروط الإنفاق، لا العقود أو المالكين الفعليين. آليات PPS وFPPS وPPLNS وحدود الدفع الدنيا والتحويلات اللاحقة للمشاركين هي قواعد المجمع، وليست قواعد إجماع Bitcoin. [6] [7]
قد ترى آنا المكافأة في الكتلة، لكنها لا تستطيع بعد دفع فاتورة الكهرباء بها. ليست منصة تداول من يحتجزها؛ قواعد Bitcoin نفسها تفرض الانتظار. ارتفاع الكتلة هو رقم موقعها في السلسلة، ويشير H هنا إلى ارتفاع الكتلة التي نشأت فيها المكافأة. يشترط COINBASE_MATURITY فرقاً لا يقل عن 100 بين ارتفاع كتلة الإنفاق وارتفاع إنشاء المخرج. يمكن إنفاق مخرج أُنشئ عند H لأول مرة في كتلة صالحة عند H+100. قد يبدو عدد التأكيدات في المحفظة مختلفاً لأن كتلة الإنشاء تُحسب أول تأكيد. المعيار فرق الارتفاعين، لا تقدير الساعات. استيفاء الشرط لا يضمن بقاء الكتلة في السلسلة إلى الأبد. [5]
إعادة التنظيم تعني انتقال العقدة إلى فرع صحيح آخر ذي عمل تعدين متراكم أكبر. UTXO هي المخرجات غير المنفقة، أي المبالغ الفردية المتاحة. وقد تختفي المكافأة من هذا السجل مع الكتلة التي أنشأتها. قد تزيل إعادة التنظيم الكتلة الأصلية من السلسلة النشطة الصالحة ذات أكبر عمل تراكمي. تختفي مخرجات coinbase عندئذ من مجموعة UTXO النشطة، وقد تتأثر أيضاً المعاملات التي تنفق المكافأة. يحد انتظار 100 كتلة من آثار إعادة التنظيم القصيرة، لكنه ليس ضماناً مطلقاً. على المجمع التمييز بين المكافأة في السلسلة النشطة وإمكانية إنفاقها والتزاماته الخاصة تجاه المعدّنين. [4] [5]
نحتاج بعض الأسماء لقراءة البنية الدقيقة: يشير المدخل عادة إلى الأموال المنفقة، ويحدد المخرج مبلغًا وشروط إنفاقه. يعرّف txid المعاملة، ويحدد الإصدار بنيتها، وقد يقيّد locktime موعد إدراجها. يجب أن تحتوي كل كتلة على معاملة واحدة على الأقل، ولا يجوز أن تكون coinbase إلا الأولى. لها مدخل واحد بمرجع فارغ إلى مخرج سابق: هاش من 32 بايتاً صفرياً وفهرس 0xffffffff. يسمى هذا المرجع outpoint، لكنه لا ينفق شيئاً سابقاً، لذلك لا يُفحص توقيع عادي لإجازة إنفاق مخرج قديم. ومع ذلك تملك المعاملة txid وإصداراً وlocktime ومخرجاً واحداً أو أكثر. [1] [2] [3]
الارتفاع هو رقم موقع الكتلة. BIP34 اسم اقتراح تبنّت Bitcoin قاعدته؛ scriptSig حقل بيانات في المدخل، وCScript طريقة تمثيل تعليمات السكربت وأرقامه. يشترط BIP34 أن يبدأ scriptSig بارتفاع الكتلة كعدد CScript بأقصر ترميز صحيح. طول الحقل كله 2–100 بايت. بعده يمكن وضع extra nonce أو تعريف مجمع التعدين أو بيانات التعدين المدمج. الارتفاع أو الطول الخاطئ يؤدي إلى الرفض. ورغم أن المدخل لا يُنفّذ كسكربت فتح عادي، فقد تدخل شفرات عمليات التوقيع فيه ضمن حد sigops لعمليات التوقيع. [1] [9]
يحسب التعدين مرارًا هاشًا، أي بصمة رقمية للملخص القصير للكتلة المسمّى الترويسة. Nonce رقم يتغيّر، وجذر Merkle بصمة تجمع المعاملات. لذلك يفتح تغيير المعاملة محاولات جديدة. حقل nonce في ترويسة الكتلة بطول 32 بت فقط، وتستنفد الأجهزة احتمالاته بسرعة. لذلك يغيّر البرنامج أيضاً extra nonce في coinbase. يتغير txid ثم جذر شجرة Merkle ثم الترويسة، فتُفتح مساحة جديدة للبحث عن هاش مناسب. يوزّع مجمع التعدين العمل بين الأجهزة حتى لا تختبر الاحتمالات نفسها بلا حاجة. لا ينشئ extra nonce عملات إضافية. [6] [7] [12]
تفصل SegWit بعض بيانات التحقق، مثل التوقيعات، في جزء يُسمّى witness. أما commitment فهو ارتباط ببيانات يمكن التحقق منه، وليس دفعة إضافية. البنية التالية مرجع تقني لهذا الارتباط. إذا تضمنت الكتلة بيانات witness، يشترط BIP141 مخرج coinbase يحمل witness commitment، أي ارتباطاً تشفيرياً بتلك البيانات. يبدأ السكربت بـ 6a24aa21a9ed: OP_RETURN، وتعليمة إدخال 36 بايتاً، والعلامة aa21a9ed. يلي ذلك هاش SHA-256 مزدوج بطول 32 بايتاً لجذر witness Merkle root موصولاً بالقيمة المحجوزة. يجب أن يحتوي witness الخاص بمدخل coinbase على هذه القيمة المحجوزة وحدها، بطول 32 بايتاً. إذا طابقت مخرجات متعددة النمط، يُعتمد أعلى فهرس. ليس هذا دفعاً قابلاً للإنفاق؛ وإذا خلت الكتلة من بيانات witness كان الالتزام اختيارياً. [10]
Full Node حاسوب يتحقق مستقلًا من قواعد Bitcoin. يقيس وزن الكتلة استخدام سعة البيانات المسموح بها؛ ويحفظ Mempool المعاملات العادية غير المؤكدة محليًا. فحص المكافأة جزء من فحص الكتلة كاملة. تشترط Full Node وجود coinbase أولاً وترفض أي coinbase إضافية في الكتلة نفسها. تفحص scriptSig وارتفاع BIP34 ونطاقات المبالغ ووزن الكتلة والرسوم وwitness commitment المطلوب. لا يجوز أن يتجاوز مجموع المخرجات الإصدار المسموح والرسوم؛ والإنفاق اللاحق يخضع لشرط النضج. لذلك لا يستطيع المعدّن منح نفسه مبلغاً اعتباطياً صالحاً وفق القواعد. من دون كتلتها لا تدخل coinbase إلى mempool. [3] [4] [10]
Genesis Block هي كتلة البداية في Bitcoin. يوضح وضعها الخاص وتكرار المعرّفات قديمًا لماذا لا يصح تطبيق القواعد الاعتيادية الحالية بلا تمييز على كل حالة تاريخية. قبل إلزامية الارتفاع، كان ممكناً أن تتشارك معاملات coinbase مختلفة txid نفسه. يمنع BIP30 الكتابة فوق مخرجات قديمة لم تُنفق، ويضيف BIP34 ارتفاعاً مميزاً في الكتل الحديثة المعتادة. أما Genesis Block فحالة خاصة: توجد coinbase في الكتلة المسجلة، لكن التهيئة لم تجعل مخرجها قابلاً للإنفاق. لذلك لا يمكن إنفاق 50 BTC الأصلية؛ ولا يتعلق الأمر بانتظار 100 كتلة كالمعتاد. [8] [9] [11]
للحصول على صورة أوضح، اقرأ هذا المدخل مع Block, Block Subsidy, Transaction Fees, التعدين, Block Template, Bitcoin. تشير إلى هذا المدخل أيضًا Block Subsidy, التأكيد, Reorg, Stale Block.