لفهم تقنية البلوك تشين أو لتقريب فهمها للأذهان أرى أنه من المفيد فهم تقنيات وأفكار اجتمعت لتكون هذه التقنية التي أبهرت من تعلمها وقرأ عنها. تقنية حديثة فتحت أبوابا كبيرة في المجال المالي والتقني فاستخدمت للمعاملات المالية الغير مركزية وللعقود الذكية ولتخزين البيانات وسلاسل التوريد الغذائية. سأبحث في هذه السلسلة عن بعض التقنيات التي كانت أساسا لسلسلة الكتل.
اللامركزية
اولى أساسات هذه التقنية، ولندخل في المثال مباشرة. لنقل أن لدي عقد شراء سيارة أريد تسجيله فأحمل هذا العقد إلى دائرة السجلات ويسجل هناك لدى دائرة السجلات تلك. لكن هذه السيارة كي تكون مسجلة على إسمي يجب أن لا تكون مرتبطة بدائرة السجلات هذه فقط. بل أريدها أن تكون في بلدات عدة فقد أبيعها في مدينة أخرى بعيدة ولا أكون بحاجة للتواجد في تلك المدينة التي فيها دائرة السجلات الأولى. هنا تأتي تقنية اسمها السجلات الموزعة فيحدث أن يكون هناك غرف عديدة ترسل لها السجلات. ثم إن السجلات الموافقة للشروط توزع على كل دوائر السجلات المرتبطة.
لماذا لا أستخدم موقع شابكة واحدا مشتركا لهذا الغرض تجمع فيه كل البيانات؟
لا نستخدم موقع إنترنت، لأن هذا يعني أن كل البيانات مخزنة في موقع مركزي واحد فإذا تعطل الموقع أو أخترقه المخترقون أو تعرض لكارثة فإن السجلات ستختفي لمدة إلى أن نتمكن من استرجاعها من نسخة احتياطية. كذلك يمكن لكن من يتصل بالسلسلة اللامركزية أن يراقب المعاملات ويتحقق من توافقها. فإذا غيّر أحد ما في سجل من السجلات فسيظهر هذا التغيير للجميع.
فوجود البيانات في مكان مركزي واحد تعني أن مدير النظام وكل من له صلاحية تعديل البيانات يمكنه التعديل على أي سجل من السجلات دون معرفة الآخرين وهنا باب للتزوير والتلاعب.
إذا اللامركزية والشفافية وصعوبة التلاعب أحد خصائص سلسلة الكتل. لننقل إلى ميزة أخرى من ميزات سلسلة الكتل التي تعنى بالمعاملات المالية.
كيف تحافظ شبكة بيتكوين على نفسها من التلاعب؟
تستخدم بتكوين وغيرها من الشبكات المشابهة تقنيات التهشيم checksums (تحقق جمعي)، البعض يلاحظ أحيانا عند تنزيل ملف من الإنترنت أن الموقع يقدم لك بيانات مرمزة بهذه الصيغة وهذا مثال من موقع أبونتو الرسمي:
b45165ed3cd437b9ffad02a2aad22a4ddc69162470e2622982889ce5826f6e3d *ubuntu-20.04.1-desktop-amd64.iso 443511f6bf12402c12503733059269a2e10dec602916c0a75263e5d990f6bb93 *ubuntu-20.04.1-live-server-amd64.iso
تمكنك هذه التهشيمات من التحقق من وصول الملف بسلامة إلى جهازك وعدم وجود تزوير أو نقص أو خطأ في تنزيله وتدعى هذه الخاصية بالـتحقق الجمعي. لكل ملف أو نص رمز معين خاص به وفق الخوارزمية فإن تغير حرف في نص في داخل ملف فإن ناتج الخوارزمية سيتغير. الرمز السابق هو ناتج خوارزمية SHA256. مثل هذه الخوارزميات تستخدم في سلسلة الكتل وهي خوارزميات قطعية Deterministic algorithm أي أنك إذا أعطيتها نفس المدخلات فستحصل على نفس المخرجات دائما.
فترويسة الكتلة الواحدة في سلسلة بيتكوين تتكون من معلومات التواقيع ومعلومات الحركات التي جرت وغيرها من المعلومات. تجمع مع بعضها في كتلة ويشكل من محتواها ناتج تهشيم رقمي (Hash) مميز. فبعد تهشيم البيانات هذه يخرج نص مميز خاص بها لا يمكن أن يتكرر إلا من جمع نفس البيانات المكونة لها. لهذا إذا حدث تلاعب في محتوى أي معاملة أو كتلة فإن التلاعب سيسبب تغيير التهشيم وهذا يعني سهولة كشفه من كل الموجودين على نفس الشبكة.
لماذا يعدن الناس على شبكة بيتكوين وأمثالها؟
عندما صمم ساتوشي الشبكة وضع محفزا للمساهمة فيها. فمن يتواجد على الشبكة ويساهم في جمع بيانات المعاملات ووضعها في كتلة سيأخذ عوائد تشكيل الكتلة وتدعى Block Rewards. وسبب طفرة التعدين التي نراها الآن وازدياد شركات التعدين هو ارتفاع قيمة البيتكوين بشكل كبير مما شجع أفرادا وشركات على الدخول في التعدين وجني الأرباح.
في بداية بيتكوين كان يمكن التعدين باستخدام أجهزة شخصية لكن بعد دخول عدد كبير جدا من المساهمين فإن المساهمين مع أجهزة قوية جدا هم فقط من يحصلون على العوائد ولم يعد التعدين على الأجهزة الشخصية مجديا خصوصا أن أجهزة التعدين الحديثة تستخدم قدرا كبيرا من الكهرباء ومراوحها تصدر ضجيجا عاليا.
بما أن موضوعنا فيه تشفير فرأيت أن أشفّر صورة هذا الرجل أيضا :)
العمولات على شبكة بيتكوين
أحد المحفزات الرئيسية الأخرى في تصميم بيتكوين هو أجور المعاملات. فكل معاملة على الشبكة يقتطع جزء صغير منها كعمولة تقدم للمعدنين الذين يجمعون الحركات ويسجلونها. وتختلف العمولات على شبكات العملات الرقمية في طريقة التحصيل وطريقة حسابها وهذا موضوع كبير نتكلم فيه لاحقا.
كيف تنتج الكتلة؟
صمم ساتوشي تعدين بيتكوين بحيث تنتج الشبكة كتلة واحدة كل 10 دقائق. وكما قلنا كان الناس يعدنون باستخدام حواسيبهم الشخصية والتعدين هو في الواقع حل أحجية، لكنها ليست عمليات يمكن للإنسان حلها بل تتطلب آلة. كيف ذلك؟
من يعرف Brute-Force سيسهل عليه معرفة طريقة عملها. يدعى هجوم القوة العمياء أو الغاشمة ويعني تجربة كل المفاتيح الممكنة لحل النص المشفر. تخيل أنك تجلس أمام حاسب نسيت كلمة سره وتحاول تجربة كل كلمات السر الممكنة، لكن في هذا الهجوم تجري تجربة إحتمالات كثيرة جدا حتى تصل للكلمة المطلوبة. في بيتكوين المطلوب ليس كلمة معينة بل إنتاج تهشيم Hash فيه عدد معين من الأصفار.
مثلا:
لنقل عليك أن تجد تهشيم فيه ثلاثة أصفار في بدايته فحاولنا في عدد كبير جدا من الكلمات حتى وجدنا أن كلمة "Succeed87” إذا أدخلت لخوارزمية sha256 فإنها تنتج الهاش التالي:
000b51a78de93dc706a42826fcce70d36a951aefe799ed9604073363d637fcc5
وفي بدايته 3 أصفار. يمكنك تجربة نفس ذلك باستخدام برنامج GtkHash أو الأمر التالي:
echo -n "Succeed87" | sha256sum
أحجيات بيتكوين على نفس المبدأ هذا. يتطلب منك إيجاد تهشيم يبدأ بعدد معين من الأصفار. لكن المدخلات هنا لا تتألف من مجرد كلمة على مزاجنا بل هناك مدخلات معينة مثل تهشيم الكتلة السابقة والوقت الحالي ومعلومات أخرى إضافية ومجموع هذه كلها يجب أن يخرج بنتيجة تحوي عدد من الأصفار. من يحل الأحجية يجمع كل المعاملات المنتظرة ويشكل كتلة جديدة.
الشكل السابق يظهر تمثيلا لمحاولات حل الأحجية ثم العثور على تهشيم يبدأ بصفرين. إن لم تظهر الصورة أو أردتها بدقة أعلى أو أردت السكربت الذي ولدها إضغط هنا
كيف ترسل الأموال عبر سلسلة الكتل؟
لنضرب لذلك مثالا وهو تشفير البريد الالكتروني باستخدام تقنية PGP. كل من المرسل والمستقبل لديه مفتاحين واحد عام يعطى لأي شخص Public Key وآخر خاص يحتفظ به ولا يشاركه مع أحدPrivate key.
كي إرسل لك رسالة مشفرة فإني آخذ مفتاحك العام وأكتب لك رساله لا تستطيع قراءتها إلا باستخدام مفتاحك الخاص. كيف يعمل هذا الأمر؟ ذلك يحتاج لقراءتك عن تشفير المفتاح العام Public Key Encryption وهي تقنية تشفير مستخدمة في كثير من التطبيقات. ما يهمنا الآن أني أستخدم مفتاحاً عام تضعه على موقعك أو ترسله لي وأنا بناء على هذا العنوان (المفتاح) أشفر البيانات وأرسلها بحيث تستطيع أنت فقط فتحها باستخدام مفتاحك الخاص.
بيتكوين مبنية على هذا. عندما يتداول شخصين بيتكوين فإن أحدهما يأخذ المفتاح العام الذي هو يمثل عنوان المستلم ويشفر قدر معين من العملة باستخدام مفتاح ذلك الشخص بحيث يستطيع المستلم فقط الوصول لها وصرفها مع أنها موجودة على شبكة عامة يطلع عليها آلاف الأشخاص لكنها كما قلنا مشفرة.
سنبحث مزيدا من التفاصيل إن شاء الله في مقال لاحق خشية الإطالة فمازال هناك مصطلحات كثيرة مثل UTXO و Merkle Tree و UASF وسعة الكتلة وغيرها قد نبحثها. لملاحظتكم واستفساركم يمكنكم الكتابة في قسم التعليقات.