سلسلة الكتل Blockchain - الجزء ٢
تُعتبر عملة البتكوين هي أول وأهم التطبيقات الناجحة لتقنية سلسلة الكتل. وهي عملة افتراضية مشفرة يحصل عليها المُعدن كمكافأة عند تمكنه من تكوين كتلة جديدة واضافتها للسلسلة، ويمكن للمُعدن فيما بعد مبادلة هذه العملة وشراء أي شيء يريده من المتاجر التي تقبل التعامل بها.
في المقال السابق "سلسلة الكتل - الجزء ١" تحدثنا عن تعريف اللامركزية وسلسلة الكتل والهاش. والآن نستكمل حديثنا عن هذه التقنية المثيرة ونواصل شرح بعض التعريفات المهمة التي توضح كيفية عمل تلك الشبكات.
البتكوين
ظهر مشروع البتكوين للنور عام ٢٠٠٧ على يد "ساتوشي ناكاموتو". ولا أحد يعرف هوية هذا الشخص تحديدا، ويُقال إنه مجموعة من الأشخاص وليس فردا واحدا. وفي أغسطس ٢٠٠٨، تم تسجيل موقع bitcoin.org كنطاق وتم إطلاق النسخة الأولى من العملة في شهر يناير ٢٠٠٩. وأول تعامل عالمي حقيقي باستخدام البتكوين حدث عندما تم دفع ١٠,٠٠٠ بتكوين مقابل بيتزا على منتدى بتكوين.
ولكي تتمكن من جمع البتكوين وتداولها، فإنك تحتاج إلى محفظة مشفرة Crypto Wallet تقوم بإنشائها باستخدام كلمة سر خاصة بك وحدك. ويكون لتلك المحفظة عنوان فريد خاص بك لا يتكرر - مثل البريد الاليكتروني – يمكنك من استقبال العملات وارسالها من خلاله.
المحفظة الرقمية Crypto Wallet
الحقيقة انه لا يوجد برنامج محدد على السلسلة مخصص للمحفظة الرقمية، يتم فيه حساب رصيدك. ولكن مفهوم المحفظة يُطلق على عنوانك في السلسلة ويكون عبارة عن رمز هاش Hash مكون من ٦٤ رقم سداسي عشري Hexadecimal. مثال: 0x46244Ce8Cc9953b635104Fe16F8f11E388dc514D ويتم تخصيص هذا العنوان لك عند انشاء حساب جديد على السلسلة.
خوارزمية التشفير RSA
هو نظام تشفير معقد يقوم على مبدأ المفتاحين، مفتاح خاص private key ومفتاح عام public key. قام بتطويره العلماء Rivest, Shamir, Adleman ويتكون الاسم من أحرفهم الأولى. ويتم تشفير البيانات باستخدام المفتاح الخاص، وفك التشفير بالمفتاح العام، والعكس صحيح. ولا يمكن فك التشفير الذي تم بمفتاح، الا باستخدام المفتاح الآخر.
لاحظ الفارق بين ال RSA والهاش Hash. فالأول تشفير ثنائي الاتجاه، أي يمكن استرجاع البيانات الأصلية وعكس عملية التشفير إذا كان معك المفتاح المقابل. أما مع الثاني - الهاش - فلا يمكن ذلك.
ممتاز. عودة إلى المحفظة. عند انشاء محفظة جديدة على السلسلة يتم تعيين مفتاحين جديدين لك، عام وخاص. حيث تقوم بتوقيع - تشفير - جميع معاملاتك على الشبكة باستخدام مفتاحك الخاص. ويمكن لباقي الأعضاء التأكد من هويتك عن طريق فك التشفير بالمفتاح العام. فإن فشلت عملية فك التشفير، نعلم أن هذه المعاملة مزورة ولا تخصك ويتم رفضها.
ملاحظة: عند حصولك على المفتاحين يجب عليك حفظ المفتاح الخاص جيدا ولا تشاركه مع أحد ابدا مهما كان، حتى لا يمكنه سرقة هويتك وحسابك.
أيضا، يجب أن تحفظه بطريقة آمنة ويمكنك استرجاعه بها. فلو ضاع هذا المفتاح، لن تتمكن من استعادته ابدا ولن يستطيع أحد مساعدتك في ذلك. وسيكون حسابك قد ضاع للأبد.
أما المفتاح العام، فيمكن مشاركته مع الغير، فعن طريقه سيتمكن باقي الأعضاء من التأكد من هويتك وسلامة معاملاتك.
كإجراء سلامة إضافي ولتوحيد شكل المفاتيح، يتم عمل هاش للمفتاح العام الخاص بك، لينتج عنه الرقم السداسي عشري والذي هو بمثابة عنوانك على السلسلة. ويمكن اعتباره مثل البريد الالكتروني الخاص بك أو رقم حسابك البنكي، والذي يتواصل معك الناس عن طريقه، ويمكنهم ارسال الأموال عليه لتصل إليك. فعنوان محفظتك ما هو إلا الهاش الناتج من مفتاحك العام. ويمكن مشاركته مع الشبكة أيضا.
يجب عليك حفظ المفتاح الخاص لمحفظتك جيدا ولا تشاركه مع أحد ابدا، حتى لا تُسرق هويتك وحسابك.
كما قلنا سابقا، لا يوجد برنامج مخصص لتخزين وحفظ ارصدة المتعاملين على السلسلة، فكيف يتم حساب تلك الارصدة؟ الحقيقة أنك حين تفتح محفظتك الرقمية لمراجعة رصيدك، فإن كل ما تفعله المحفظة هو استرجاع جميع المعاملات على الشبكة والتي يكون عنوانك فيها إما راسل او مُرسل اليه، ثم تقوم بجمع المعاملات الواردة وطرح المعاملات الصادرة منها. ويكون الباقي هو رصيدك الحالي.
مثال، لنفرض أن معاملاتك كانت كالتالي:
- قُمت باستقبال ١ بتكوين
- قُمت باستقبال ١ بتكوين
- قُمت بإنفاق ٠،٥٠ بتكوين
- قُمت بإنفاق ٠،٢٥ بتكوين
الان تقوم المحفظة باسترجاع كل تلك المعاملات وجمع الوارد وطرح الصادر منها فيكون الباقي ١،٢٥ بتكوين والذي هو رصيدك الحالي.
بنك الذاكرة Mempool ومصاريف التحويل Transaction fees
الكتلة هي وحدة بناء السلسلة، وفيها يتم اجراء المعاملات المالية ونقل العملات بين الأعضاء. فحتى يتم نقل عملة من شخص لأخر، يجب أن تٌكتب تلك العملية على إحدى الكتل المكونة للسلسلة والا ستظل معاملة معلقة. ولكن، ماذا يحدث للمعاملات التي لم تُكتب في كتلة جديدة بعد؟ أين تُحفظ تلك المعاملات المعلقة pending transactions؟
عند اجراء معاملة جديدة، فإنها تُكتب في ذاكرة مخصصة تُسمى بنك الذاكرة أو ال Mempool، ويحتوي بنك الذاكرة على جميع المعاملات التي لم يتم تسجيلها في الكتل بعد. فعند اجراء معاملة جديدة، فإنها تُكتب في بنك الذاكرة بانتظار أن يقوم أحد المعدنين بتسجيلها على الكتلة الجديدة. ولا يتم تنفيذ التحويل المطلوب في المعاملة ونقل العملات فعليا من شخص لأخر إلا بعد تسجيلها في الكتلة وضمها للسلسلة.
إذا كنت تريد سرعة تنفيذ معاملاتك فمن الأفضل أن تقوم برصد مصاريف مغرية حتى يتسابق المعدنون لتسجيلها عندهم.
عندما يقوم المُعدن بمحاولة انشاء كتلة جديدة، فإنه يحاول ضم وتسجيل أكبر قدر ممكن من المعاملات الموجودة في بنك الذاكرة. لاحظ ان مساحة الكتلة على سلسلة البتكوين هي ١ ميجا فقط، لذلك فكمية العمليات الممكن كتابتها في كل كتلة محدودة. فكيف يقوم المعدنون باختيار المعاملات التي يقومون بتسجيلها؟ هنا يبرز مصطلح مصاريف التحويل Transaction fees.
عند قيام أحد ما بإنشاء معاملة جديدة يمكنه رصد قدر صغير من العملات كمصاريف تحويل تذهب للمُعدن الذي أنشأ الكتلة التي ضمت هذه المعاملة. ويقوم المعدنون باختيار المعاملات ذات المصاريف الأعلى لتسجيلها في كتلهم، لتعظيم الربح الناتج عن تكوينهم للكتلة.
لذلك، إذا كنت تريد سرعة تنفيذ معاملاتك فمن الأفضل أن تقوم برصد مصاريف ملائمة ومغرية حتى يتسابق المعدنون لضمها وتسجيلها عندهم. أما المعاملات ذات المصاريف الضئيلة والغير مغرية فقد تضطر للانتظار طويلا قبل تسجيلها في كتلة جديدة وتنفيذها.
السلسلة الأطول The Longest Chain
السلسلة الأطول هو أحد المبادئ التي تقوم عليها سلسلة الكتل. والهدف الأساسي منه هو ضمان وجود نسخة واحدة فقط من السلسلة عند جميع النقاط المشاركة.
لنتخيل سلسلة من الكتل تعمل بصورة طبيعية وتُضاف إليها الكتل بشكل عادى، وكانت أخر كتلة هي (س). ثم لنفرض أن النقطة (أ) نجحت في إنتاج كتلة جديدة متوافقة مع شروط السلسلة وقامت بإعلام باقي النقاط. وفي نفس الوقت، توصلت النقطة (ب) أيضا الى كتلة جديدة متوافقة مع شروط السلسلة وقامت هي الأخرى بإعلام باقي النقاط.
لاحظ، النقاط التي ستصلها إعلان (أ) أولا ستعتمد الكتلة (أ)، وعندما يصلها إعلان (ب) لاحقا، ستقوم برفضها لأن الهاش السابق للكتلة (ب) سيكون غير متوافق مع (أ) حيث أنه لا يزال يشير إلى الكتلة السابقة لها (س).
وبالمثل، النقاط التي ستصلها إعلان (ب) أولا ستعتمد الكتلة (ب)، وعندما يصلها إعلان (أ) لاحقا، ستقوم برفضها لأن الهاش السابق سيكون غير متوافق مع (ب) حيث أنه لا يزال يشير إلى الكتلة السابقة لها (س) كذلك. فهذا يعتمد بشكل أساسي على سرعة الاتصال وانتقال البيانات بين النقاط.
مبدأ السلسلة الأطول يهدف إلى ضمان وجود نسخة واحدة فقط من السلسلة عند جميع النقاط المشاركة.
في النهاية سيصبح لدينا نسختين من السلسلة، واحدة تنتهي بالكتلة (أ) وأخرى تنتهي بالكتلة (ب). فما الحل؟
الحل هو انتظار تكوين كتلة جديدة في أي من النسختين. فلو نجحت احدى النقاط في الفريق (أ) بتكوين الكتلة الجديدة (ج) أولا، صارت هى السلسلة الأطول وعلى الفريق (ب) أن يتخلى عن سلسلته واعتماد السلسلة (أ). وتكون الكتلة (ب) هنا ملغية ويتم عكس كل المعاملات التي تمت عليها وإعادة العملات إلى عناوينها السابقة. وتسمى الكتلة (ب) هنا كتلة يتيمة Orphan Block لأنها صارت بلا سلسلة تحتويها.
أما لو نجحت احدى النقاط في الفريق (ب) بتكوين الكتلة الجديدة (ج) أولا، صارت هي السلسلة الأطول وعلى الفريق (أ) أن يتخلى عن سلسلته واعتماد السلسلة (ب). وتكون الكتلة (أ) هنا هي الملغية ويتم عكس كل المعاملات التي تمت عليها وإعادة العملات إلى عناوينها السابقة. وتصبح الكتل (أ) هنا كتلة يتيمة.
البتكوين والإيثريوم Ethereum
يُعتبر الإيثريوم هو ثاني أشهر عملة رقمية موجودة. وهو مشابه للبتكوين في كثير من التفاصيل وآلية العمل، ولكنه يختلف عنها في بعض النقاط التي سنذكرها سريعا دون الدخول في تفاصيل تقنية قد لا تهم البعض.
كما قلنا سابقا، فسلسلة الكتل هو نظام قائم على اللامركزية وعدم وجود خادم أو مجموعة خوادم رئيسية لتزويد الخدمة، وإنما تتشارك كل الأجهزة على الشبكة في القيام بتلك المهام. وهنا يبرز سؤال، ماذا لو قام أحد ما بوضع برنامج خبيث على السلسلة، مثل الفيروسات التي تصيب أجهزة الحاسوب؟ عندها سينتقل الفيروس إلى جميع أجهزة الشبكة فورا مسببا خسائر فادحة.
لتفادي تلك المشكلة فإن شبكة البتكوين تم بنائها باستخدام لغة برمجة تسمى Bitcoin script. وهي لغة برمجية بسيطة تفتقد الكثير من مقومات لغات البرمجة الأخرى مثل الحلقات أو ال loops. وهي خاصية تمكن المبرمج من تكرار تشغيل جزء من البرنامج للعديد من المرات.
بغياب تلك الخصائص، أصبحت ال Bitcoin scriptلغة غير مكتملة Non Turing ولا يمكن استخدامها إلا للمعاملات المالية فقط. فشبكة البتكوين مقتصرة على تداول العملة فقط ولا يمكن استضافة أي من التطبيقات الأخرى عليها.
فيتاليك بوتيرين
"فيتاليك" هو مبرمج روسي كندي تعرف على البتكوين في عام ٢٠١١ ولم تعجبه فكرة اقتصار شبكة البتكوين على المعاملات المالية فقط، وقرر أن ينشأ شبكة جديدة تمكن الجميع من انشاء العديد من التطبيقات اللامركزية عليها.
فيتاليك بوتيرين
قام "فيتاليك" بتأسيس شبكة الإيثريوم باستخدام لغة جديدة تسمى سوليديتي Solidity وهي - على عكس لغة ال Bitcoin script - لغة كاملة Turing فيها كل ما تحتويه لغات البرمجة الأخرى من إمكانات. وقدم فيها مصطلح جديد وهو الوقود أو Gas.
الوقود Gas
الوقود هو قدر ضئيل جدا من المال يجب دفعه حتى تتمكن من تشغيل برنامج ما على الشبكة. فكل عملية يقوم بها البرنامج ستستهلك مقدارا معينا من الوقود. فمثلا عملية الجمع تستهلك وحدة وقود واحدة، وكذلك الطرح. عمليه الضرب تستهلك وحدات أكثر من الوقود. وعملية القراءة من الذاكرة تستهلك وحدات أكثر، وهكذا. وكلما كثرت العمليات في برنامجك، زادت كلفة الوقود.
بهذه الفكرة الجديدة، استطاع "فيتاليك" معالجة مشكلة سلامة البرامج على الشبكة، والتي عجزت شبكة البتكوين عن حلها. فلو أراد أحد ما وضع برنامج خبيث على الشبكة، فإن كلفة تشغيله ستكون مرتفعة ولن يتم تشغيله أبدا.
كما ان الوقود سيدفع المبرمجين إلى تحسين جودة برامجهم وتفادي العمليات الغير ضرورية لتقليل الوقود اللازم للتشغيل إلى أقصى درجة ممكنة. وبهذا يساهم الوقود في تحسين أداء الشبكة.
نتيجة لتلك الإضافات أصبحت الإيثريوم أكبر الشبكات القائمة على سلسلة الكتل وتمكن المبرمجين من بناء العديد من التطبيقات اللامركزية عليها مثل تطبيقات الرعاية الصحية لتخزين ومعالجة بيانات المرضى بصورة مشفرة وآمنة. وتطبيقات الخدمات المالية كالبنوك الرقمية. وغيرها الكثير.
ختاما
إن تقنية سلسلة الكتل من التقنيات الواعدة في المستقبل والتي تجتذب الكثير من العقول المتميزة والاستثمارات الضخمة. وهي تقنية لا تزال في مهدها وامامها الكثير من التحديات والصعاب. ولكنها تخطوا بخطى ثابتة لتكون هي مستقبل الأنظمة. ورغم أنها اليوم شبه مقصورة على العملات الرقمية المشفرة إلا أن الكثير بدأ ينظر إليها كبديل آمن وقوي للأنظمة المركزية الحالية.
لا تنس أن تشاركنا رأيك بالتعليق والإعجاب . وأيضا، إعادة نشر المقال مع أصدقائك
ما هو رد فعلك؟