البيتكوين والكريبتو، من الصفر

رسمنا ملخص للكلام اللي فات. التعدين بيشتغل إزاي، وليه بيتكوين اختار UTXO. كل موضوع بصورة وشرح مختصر.

المشكلة الأساسيةالبنك يحلها بموظف موثوق، بيتكوين يشيل الموظف ويستبدله بقرعة تمنها كهربا الطريقة القديمة: بنك موظف واحد يكتب الدفتر وانت مضطر تثق فيه نقطة فشل واحدة بيتكوين: قرعة بالكهربا مفيش موظف، مفيش ثقة حق الكتابة يتكسب بالعمل صوت لكل وات
شكل 1.1البنك بيحلها بموظف واحد، بيتكوين بيحلها بقرعة تمنها كهربا.

01مين يكتب الصفحة الجاية؟

بعيداً عن الأسعار، بيتكوين دفتر واحد ماسكه ملايين الغرباء. أول مشكلة هي الترتيب. تخيّل output قيمته 1 BTC. صاحبه وقّع حوالتين بيصرفوا نفس الـ output، واحدة لبوب وواحدة لكارول. عقدة في القاهرة وصلها تحويل بوب الأول، وعقدة في طوكيو وصلها تحويل كارول الأول. التوقيعين صحيحين. مفيش ساعة عالمية موثوقة ولا دفتر مركزي يقرر أنهي رسالة وصلت الأول. التوقيع يثبت إن المالك أذن بالصرف، لكنه مش بيمنعه يوقّع صرفتين متعارضتين.

كل عقدة في بيتكوين بتفحص القواعد، وبعدها الشبكة بتستقر على السلسلة الصحيحة صاحبة أكبر proof of work تراكمي. لما تحويل بوب يدخل التاريخ المشترك ده، تحويل كارول يبقى بيحاول يصرف output اتصرف فعلاً، فيترفض. الـ timestamps بتساعد في تنظيم البلوكات، لكنها مش ساعة حكم عالمية ومش بتحل الصرف المزدوج لوحدها. ورقة بيتكوين الأصلية بتوصف الشبكة إنها بتحط المعاملات في سلسلة proof of work علنية تثبت الترتيب اللي الشبكة شافته.

ليه الفلوس الموزعة محتاجة ترتيب مشتركتوقيعان صحيحان يصرفان نفس المخرج، والعقد تستقبلهما بترتيب مختلف، وإثبات العمل التراكمي يثبت تاريخاً مشتركاً واحداً UTXO 7 · 1 BTC صرف موقّعادفع لبوب صرف موقّعادفع لكارول عقدة القاهرةبوب الأول · كارول التانية عقدة طوكيوكارول الأولى · بوب التاني السلسلة الصحيحةأكبر عمل تراكمي تحويل بوب دخل التاريختحويل كارول صرف حاجةاتصرفت، فيترفض التوقيع يأذن. سلسلة إثبات العمل تثبت الترتيب المشترك.
شكل 1.2صرفان صحيحا التوقيع ممكن يوصلوا للعقد بترتيب معاكس. السلسلة الصحيحة صاحبة أكبر عمل تراكمي تدي الكل تاريخاً مشتركاً واحداً.
المواضيع
  1. 01مين يكتب الصفحة الجاية؟
  2. 02الهاش آلة بصمة
  3. 03فين المجهود في التعدين؟
  4. 04الـ nonce والوقت
  5. 05محدش بيصدق حد
  6. 06ليه التاريخ بيتقفل
  7. 07لما اتنين يكسبوا مع بعض
  8. 08إزاي الشبكة تعرف الحوالة ليك
  9. 09العنوان مش هو المفتاح العام
  10. 10UTXO مقابل نموذج الحساب
  11. 11البلوكتشين مش data structure
  12. 12مونيرو والخصوصية الإجبارية
  13. 13MEV وسلطة الترتيب

02الهاش آلة بصمة

الهاش مش تشفير. مفيش مفتاح ومفيش رجوع. آلة تاخد أي كلام وتطلّع بصمة ثابتة الطول (64 خانة). ليها 3 صفات. ثابتة (نفس المدخل = نفس البصمة). باتجاه واحد (من البصمة مستحيل ترجع للكلام). وفوضوية (تغيير حرف واحد يقلب البصمة كلها). البصمة الواحدة ببلاش، ودي هتمشي معاك في اللي بعده. لو حابب تشوفها بعينك، فيه معمل حي في صفحة البيتكوين.

خاصية الفوضى في الهاشتغيير رقم واحد في الجملة يقلب البصمة بالكامل بعت 10 بيتكوين SHA-256 eaf36db… بعت 90 بيتكوين SHA-256 4c1b7d7… فرق رقم واحد ← بصمة مختلفة تماماً، مفيش أي علاقة
شكل 2.1فرق رقم واحد في الجملة، بصمة مختلفة تماماً.

03فين المجهود في التعدين؟

حساب بصمة واحدة رخيص. المجهود في إنك تلاقي كارت ناتج الـ double SHA-256 بتاعه أصغر من هدف رقمي صعب. مفيش طريق معروف غير تجربة كروت كتير. في تجربة الأصفار البسيطة هنا، كل صفر hex زيادة بيضاعف الشغل المتوقع 16 مرة. بيتكوين الحقيقي بيقارن رقم الهاش بالهدف، مش بعدد أصفار ثابت، والهدف بيتعاير كل 2016 بلوك.

حلقة التعدينابني البلوك مرة، وبعدين خمّن على الـ nonce لحد ما البصمة تنزل تحت الهدف ابني البلوك: معاملات + coinbase احسب الـ Merkle root وحطه في الكارت SHA-256 مرتين على 80 بايت البصمة تحت الهدف؟ لأ؟ غيّر nonce آه؟ اذيع البلوك للشبكة
شكل 3.1ابني البلوك مرة واحدة، وبعدين خمّن على الـ nonce لحد ما تنجح.

04الـ nonce والوقت

الـ nonce هنا مش أداة منع replay. هو أسرع حقل يغيّره الماينر بين المحاولات. الماينر يقدر كمان يغيّر الوقت، version bits، ترتيب المعاملات، أو extraNonce جوه coinbase فيتغيّر Merkle root. الوقت بيساعد في حدود الصلاحية وتعديل الصعوبة كل 2016 بلوك. لازم يبقى أكبر من وسيط آخر 11 بلوك، ومش أكتر من ساعتين قدام ساعة العقدة اللي بتتحقق.

حقول الـ headerالكارت الصغير فيه ستة حقول من بينها الـ nonce والوقت الكارت ، 80 بايت Prev hash Merkle root Version Timestamp Bits Nonce
شكل 4.1الكارت 80 بايت، والـ nonce والوقت من حقوله.

05محدش بيصدق حد

الماينر يعلن بلوكه. كل node بيعيد فحص كل حاجة بنفسه محلياً. البصمة تحت الهدف؟ التوقيعات سليمة؟ مفيش double spend؟ الـ coinbase في السقف؟ أي قاعدة تتكسر، البلوك يترمي ومبيمررش لحد. الغش مش "ممنوع". الغش خسران. أغلى طريقة تحرق بيها فلوسك.

تحقق العقد المستقلالبلوك بينتشر لعدة عقد وكل واحدة تفحص بنفسها وتقبل أو ترفض الماينر يذيع البلوك Node A Node B Node C كل واحدة تفحص بنفسها: البصمة · التوقيعات · مفيش double spend · السقف مش محتاجة تسأل حد ولا تثق في حد كله تمام → يقبل ويمرر أي قاعدة اتكسرت → يرمي
شكل 5.1كل node بتفحص البلوك بنفسها، وتقبل أو ترفض.

06ليه التاريخ بيتقفل

كل بلوك شايل جوّاه بصمة اللي قبله. ودي حرفياً الـ "chain". لو غيّرت معاملة في بلوك قديم، Merkle root يتغيّر، وبصمة الـ header تتغيّر، فالرابط في البلوك اللي بعده يبقى غلط. إعادة كتابة التاريخ تحتاج إعادة إثبات العمل من نقطة التعديل، وفي نفس الوقت السلسلة السليمة بتكمل نمو.

سلسلة الكتل المربوطة بالبصماتتعديل بلوك يكسر كل الروابط بعده بلوك 1 اتعدّل ← بصمة جديدة بصمة أصلية ✓ بلوك 2 prev بقى غلط ✗ prev سليم ✓ بلوك 3 اتكسر كمان ✗ prev سليم ✓ تعديل واحد ← كل السلسلة بعده تتكسر، لازم تعيد تعدينها كلها كل بلوك شايل بصمة اللي قبله، والسلسلة كلها سليمة
شكل 6.1تعديل بلوك قديم يكسر كل الروابط اللي بعده.

07لما اتنين يكسبوا مع بعض

ساعات اتنين بيلاقوا بلوك في نفس اللحظة (بلوكين مختلفين، مش نفس البصمة). الشبكة بتنقسم مؤقتاً. السيستم مبيختارش الأحسن. بيستنى القرعة الجاية. أول ما حد يلاقي البلوك التالي، فرعه بقى وراه شغل أكتر، والكل بينط عليه. الفرع الخسران "stale" وحوالاته بترجع الطابور. القاعدة: اللي وراها شغل أكتر، مش الأطول بالضرورة.

حسم الـ forkفرعان يتنافسان والقرعة الجاية تحسم لصالح الأطول 104 105-A 106-A 105-B الفرع الكسبان الشبكة على فرعين مؤقتاً 105-B بقى stale، حوالاته ترجع الطابور مستنين القرعة الجاية تحسم مين اللي وراه شغل أكتر
شكل 7.1القرعة الجاية بتحسم الفرعين، والخسران يبقى stale.

08إزاي الشبكة تعرف الحوالة ليك

مفيش "رصيد". الموجود شيكات موقّعة ليك (UTXO). عشان تدفع بتصرف شيكة قديمة وتكتب جديدة، والتوقيع بيثبت إنك صاحبها. زوج مفاتيح: خاص (سري) وعام (متولّد منه). المفتاح الخاص ينتج توقيع. أي حد بالعام يتأكد منه من غير ما يشوف الخاص. أي تعديل في الحوالة يكسر التوقيع.

التوقيع والتحققالمفتاح الخاص يوقّع، والعام يتحقق من غير كشف السري المرسِل مفتاح خاص (سري) يوقّع الحوالة → توقيع (r,s) على الشبكة: الحوالة + التوقيع أي node مفتاح عام يتحقق ✓ من غير كشف السري
شكل 8.1الخاص يوقّع، والعام يتحقق من غير كشف السري.

09العنوان مش هو المفتاح العام

عنوان Bitcoin القديم من نوع P2PKH مشتق من المفتاح العام. السلسلة: SHA-256 ثم RIPEMD-160، بعدين بايت نسخة وchecksum، وفي الآخر Base58Check. الـ checksum بيمسك أخطاء كتابة شائعة، وبايت النسخة بيفرّق الشبكات. عناوين SegWit وTaproot ليها ترميز وscripts مختلفين.

اشتقاق العنوانمن المفتاح العام عبر الهاش والـ checksum والترميز للعنوان النهائي مفتاح عام HASH160 + نسخة+ checksum Base58 1K1j…
شكل 9.1من المفتاح العام للعنوان في أربع خطوات.

10UTXO مقابل نموذج الحساب

بيتكوين شغّال بـ UTXO. كل output يتصرف مرة واحدة. إيثيريوم شغّال بحسابات حالتها بتتغيّر. تكرار صرف Bitcoin يشاور على output مبقاش unspent، فالتحقق يرفضه. واعتماديات UTXO الصريحة ممكن تكشف شغل مستقل. سلاسل الحسابات تستخدم nonce لكل حساب لترتيب المعاملات ورفض التكرار.

هجمة إعادة الإرسال في النموذجينالحساب بدون nonce يتسرق، UTXO يرفض النسخة الثانية تلقائياً الحساب (بدون nonce) النسخة 1: انقل 5 ✓ النسخة 2: انقل 5 ✓ عمر خد 10 ، اتسرق لازم تبني عداد nonce UTXO النسخة 1: اصرف شيكة #ab ✓ الشيكة اتشالت النسخة 2: مرفوضة ✗ الـ output المصروف مينفعش يتصرف تاني
شكل 10.1إعادة الإرسال تنجح في نموذج الحساب وترتد في UTXO.

11البلوكتشين مش data structure

مفيش import blockchain. البلوكتشين مش نوع بيانات، دي معمارية نظام في نفس خانة "قاعدة البيانات" و"نظام التشغيل". هو تركيبة من عدة بنى: hash linked list للكتل، Merkle tree للمعاملات، key value DB للتخزين، set للـ UTXO، وhash map للـ mempool. أقرب بنية واحدة بتوصف عموده: hash linked list. زي linked list، غير إن المؤشر بصمة للمحتوى، فأي تزوير يكسر السلسلة.

مكونات البلوكتشيننظام مبني من عدة هياكل بيانات "البلوكتشين" = نظام hash-linkedlistربط الكتل Merkle treeتلخيص المعاملات key-value DBتخزين الكتل setUTXO hash mapmempool
شكل 11.1البلوكتشين نظام مبني من عدة هياكل بيانات.

12مونيرو والخصوصية الإجبارية

ليدجر بيتكوين عام. مونيرو بيخبّي المستقبِل بعنوان لمرة واحدة، وبيموّه الموقّع داخل ring signature، وبيخفي المبلغ بـ RingCT مع إثبات إن الحساب متوازن. خصوصية المعاملة إجبارية. بيانات طبقة الشبكة مشكلة منفصلة. مونيرو عنده حماية relay زي Dandelion++، ولسه Tor أو I2P مهمين قدام مراقب الشبكة. الشرح والتجارب الحية في صفحة مونيرو، والمقارنة مع البراهين الصفرية في زكاش (EN).

الثلاث طبقات في مونيروإخفاء المستقبل والمرسل والمبلغ، مع بقاء طبقة الشبكة مكشوفة المستقبِلstealth address المرسِلring signature (1/16) المبلغRingCT بيانات الشبكة محتاجة حماية منفصلة
شكل 12.1تلات طبقات مخفية في مونيرو، وطبقة الشبكة لسه مكشوفة.

13MEV وسلطة الترتيب

اللي بيكتب البلوك عنده سلطة ترتيب. اختيار المعاملات الأعلى رسوماً هو مزاد مساحة البلوك. MEV يظهر لما الباني يكسب من الترتيب النسبي، زي شراء قبل الضحية وبيع بعدها. تحويلات Bitcoin البسيطة غالباً بتعرض قيمة ترتيب أقل من تداول داخل smart contract، لكن بيتكوين لسه عنده ترتيب بالرسوم وأشكال تانية من miner extractable value. الترتيب على سولانا بالتفصيل في صفحة سولانا (EN)، وسوي بترتب من زاوية تانية في صفحة سوي (EN).

هجمة الساندوتشالباني يحط شراءه قبل الضحية وبيعه بعدها 1. الباني يشتريقبل الضحية 2. الضحية تشتريبسعر أسوأبسعر السوق العادل 3. الباني يبيعويكسب الفرق كل ربح الباني بيطلع من جيب الضحية ، بس مبيسرقش رصيدها، بيسرق فرق السعر من غير باني: الضحية بتشتري بسعر السوق وخلاص
شكل 13.1الباني يشتري قبلك ويبيع بعدك، والفرق بيطلع من جيبك.

ده ناتج سلسلة محادثات عن شغل البيتكوين والكريبتو. التفاصيل والتجارب الحية في صفحة البيتكوين وصفحة مونيرو، وبالإنجليزي كمان: إثبات الحصة وزكاش وسولانا وسوي. أرقام سبتمبر 2026: مكافأة البلوك 3.125 بيتكوين. حجم الرينج في مونيرو 16. الـ FCMP++ متدقّق، ولسه مافعّلش.