سلسلة الكتل Blockchain - الجزء ١

هل سمعت عن العملات المشفرة أو ال crypto currencies من قبل؟ قد يكون الاسم قد مر عليك من قبل أو في هذه الأيام خصوصا مع الضجة الكبيرة التي خلفها الانهيارات الكبيرة في سعر تلك العملات الآن نتيجة الظروف الاقتصادية الحالية. فتعالى معي لتعرف المزيد عنها.

سلسلة الكتل Blockchain - الجزء ١

العملات المشفرة هي عملات نقدية للتداول مبنية على تقنية سلسلة الكتل أو ال Blockchain. وهي تقنية تعتمد على علوم التشفير وتتبنى مبدأ اللامركزية Decentralization والذي يعني عدم وجود خادم أو مركز بيانات مركزي يقوم بمعالجة وتخزين البيانات، وإنما تقوم أجهزة المستخدمين بتلك المهام.


اللامركزية

تقليديا والمتعارف عليه هو أنك إذا أردت أن تطلق خدمة جديدة كتطبيق أو موقع اليكتروني ما، فإنك ستحتاج لخوادم Servers لتقوم باستضافة الخدمة، معالجة البيانات والرد على طلبات المستخدمين. وتقوم إما باستئجار تلك الخوادم أو تأسيس مركزك الخاص إن كانت امكاناتك تسمح بذلك.

وفي هذا النموذج، فإن جميع البيانات والمعاملات تتم من خلال هذه الخوادم المركزية. وأي عطل بهذه الخوادم يؤدي لتعطل الخدمة عند المستخدمين، كالأعطال التي حدثت في بعض الأحيان مع Facebook وغيرها من المنصات. كما أن هذه الخوادم تكون أكثر عرضه للهجوم والاختراق من قبل القراصنة أو المخربين، فكل شيء متركز في مكان واحد.

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

أما اللامركزية، فهي لا تعتمد على خوادم معينة لتقديم الخدمة، وإنما تتوزع المهام على جميع أجهزة المستخدمين المنتشرة حول العالم. ففي هذه الحالة، يكون جهاز اللابتوب الخاص بك أو الحاسوب المنزلي هو جزء من ذلك النظام اللامركزي. ويقوم جهازك بجزء من المهام المطلوبة لتقديم الخدمة، كمعالجة بعض المعلومات أو تخزين بعض البيانات.

وبما أن الخدمة هنا لم تعد متركزة في مجموعة محددة من الخوادم، فإن فرص تعطل الخدمة تكون شبه معدمة، فليس من الوارد تعطل جميع أجهزة المستخدمين حول العالم. كما أن الهجوم على تلك الشبكة يكون شبه مستحيل، فمن المستحيل اختراق جميع أجهزة المستخدمين في آن واحد.

ولأن اللامركزية توفر الكثير من المميزات مثل الأمن واستدامة الخدمة وعدم تعطلها وأيضا قلة التكاليف وتوفير ثمن الخوادم والاستضافة وغيرها، إضافة إلى توفر أجهزة الحاسوب لدى الجميع بسهولة وأسعار مناسبة، فإن الكثير من الشركات العاملة في مجالات التقنية بدأت تتجه إليها لتقديم خدماتها.


سلسلة الكتل

والآن لنتعمق أكثر في مفهوم "سلسلة الكتل" أو ال Blockchain ونعرف بعض التفاصيل عن مكوناتها وكيفية عملها.

سلسلة الكتل هي مجموعة من الكتلblocks ، متسلسلة بالترتيب ويتم إضافة كتلة جديدة للسلسلة حسب خوارزميات وشروط معينة سنتكلم عنها لاحقا.

كل كتلة تحتوي على بيانات معينة وهي:

  • رقم الكتلة Block number: هو رقم الكتلة في السلسلة ويزيد ١ مع كل كتلة جديدة.

  • التوقيع الزمني Timestamp: وهو الزمن بالثواني الذي تم إنشاء الكتلة فيه وإضافته للسلسلة.

  • معامل التجزئة The Nonce: وهو رقم متغير وعامل مهم جدا في عملية إنشاء الكتلة، سنتكلم عنه لاحقا.

  • الهاش Block Hash: هو عملية تشفير للبيانات في اتجاه واحد. يعني لا أستطيع استعادة البيانات من الهاش مرة ثانية. وسنتكلم عنها بالتفصيل لاحقا.

  • الهاش السابق Previous Block Hash: وهو الهاش الخاص بالكتلة السابقة، وهذا يضمن ترابط السلسلة.

  • بيانات الكتلة Block Data: وهي البيانات المضافة مثل المعاملات المالية التي تمت بين الأعضاء.

يعتبر البتكوين هو أول تطبيق عملي ناجح لتقنية "سلسلة الكتل".

"سلسلة الكتل" هي فكرة قديمة طرحت كثيرا ولكن يعتبر البتكوين Bitcoin هو أول تطبيق عملي ناجح للفكرة. وتهدف سلسلة الكتل إلى خلق نظام لا مركزي يتم الاستغناء فيه عن الهيئات المركزية لإدارة وحماية وتوثيق البيانات والتعاملات وتنتقل تلك المسؤولية إلى عموم المتعاملين على الشبكة. حيث ستقوم كل الأجهزة على الشبكة بمراجعة جميع العمليات، كل جهاز على حدا. وعند اعتماد كتلة جديدة واضافتها للسلسلة يصبح من المستحيل تغييرها أو حذفها بعد ذلك. ويمكنك الاطلاع على مما تتكون الكتلة في سلسلة البتكوين.

وهنا تظهر عدة مشكلات يجب حلها.

  • كيف يمكن توثيق ومراجعة البيانات والعمليات بدقة ومصداقية؟
  • كيف يمكن حماية الشبكة من محاولات الاختراق وتزوير البيانات؟
  • كيف يمكن التنسيق بين الاف أو ملايين الأجهزة المتعاملة على الشبكة؟


الهاش Hashing

قلنا سابقا أن الهاش هو عملية تشفير للمحتوى ولكن في اتجاه واحد. بمعنى أنه لا يمكنني استعادة المحتوى الأصلي من الهاش. هناك عدة خوارزميات للهاش مثل md5 وSHA256 وSHA512 وسنأخذ SHA256 كمثال.

تقوم دالة ال SHA256 بعمل هاش للبيانات ويكون ناتج العملية قيمة مكونة من ٦٤ رقم سداسي عشري HexaDecimal وهذا العدد هو ثابت دائما مهما كان حجم البيانات المدخلة. فلو أدخلت بيانات بمساحة ١ميجا، سيكون الناتج ٦٤ رقم. ولو أدخلت بيانات بمساحة ١ جيجا، سيكون الناتج ٦٤ رقم كذلك.

مثال، لو أدخلنا جملة "Learning Blockchain" في هاش SHA256 سيكون الناتج:

C1295C037056D4029428669B3CBF6868B863978C8400106E94CDB1D2DA9FD798

الهاش Hashing هو عملية تشفير للمحتوى ولكن في اتجاه واحد. فلا يمكنني استعادة المحتوى الأصلي من الهاش.

ولكي تكون دالة الهاش Hashing Function قوية ويمكن استخدامها، يجب أن يتوفر بها ٤ شروط:

  • احادية الاتجاه:
    حيث لا يمكن استعادة البيانات الأصلية من الهاش. فلا يجب أن تكون الخوارزمية بسيطة بحيث يمكن عكس عملية الهاش بصورة أو بأخرى للحصول على البيانات الأصلية... في المثال السابق: لا يمكننا استنتاج الجملة "Learning Blockchain" من الهاش الناتج.

  • حتمية Deterministic:
    حيث تعطي نفس ناتج الهاش دائما لنفس المدخل... في المثال السابق: في كل مرة ندخل الجملة "Learning Blockchain" في SHA256 سيكون الناتج دائما نفس الهاش C1295C037056D4029428669B3CBF6868B863978C8400106E94CDB1D2DA9FD798

  • تأثير انهيار الجليد Avalance Effect:
    ويعني أن أي تغيير بسيط في المدخل سيؤدي الى تغيير جذري في الهاش الناتج... في المثال السابق: عندما كان المدخل "Learning Blockchain" كان الناتج C1295C037056D4029428669B3CBF6868B863978C8400106E94CDB1D2DA9FD798... أما لو غيرنا المدخل الى "Learning blockchain" حيث استبدلنا ال b بال B فقط. فسيكون الناتج 650B8DC5695965DC264092444F4894E930862937C2F911E22DCE7FB2F47119CE
    ويمكننا هنا أن نرى الفرق الشاسع بين الناتجين رغم التغيير البسيط في المدخل.

  • مقاومة التصادم Withstand Collision:
    والتصادم هنا هو ايجاد قيمتين للمدخلات ينتجان نفس الهاش النهائي.
    نظرا لأن ناتج الهاش دائما ٦٤ رقم فقط، فان الهاش الناتج سيكون بين القيمتين 0000000000000000000000000000000000000000000000000000000000000000 وFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    وهي 16^64 قيمة. وهي محدودة بالنظر إلى كم البيانات الممكن ادخالها للدالة. ونظريا من الممكن ايجاد قيمتين من البيانات ينتج عنهما نفس الهاش. ولكن يجب على دالة الهاش أن تجعل ذلك في غاية الصعوبة بحيث لا يمكن أن يحدث ذلك عمدا.


التعدين Mining والتجزئة Nonce وإثبات الجهد PoW

التعدين هي عملية إنشاء وإضافة كتلة جديدة للسلسلة. كالتالي:

  • يقوم المُعدن ببناء الكتلة حسب المكونات التي ذكرناها في الجزء الأول.
  • يقوم بحساب الهاش لكل المكونات معا.
  • يقوم المُعدن بعرض الكتلة الجديدة على أعضاء السلسلة للتحقق منها، وإضافتها للسلسلة.

احتمالية ايجاد هاش مناسب في شبكة البتكوين لا تتعدى 0.000000000000000000001%

وهنا قد يسأل البعض.. وأين الصعوبة في ذلك؟ ولماذا ينفق المعدنون أموالا كثيرة لشراء أجهزة قوية؟ الإجابة في مبدأ إثبات الجهد Proof of Work (PoW).


مبدأ الإجماع Consensus Protocol

مفهوم الإجماع داخل السلسلة هي القواعد التي ستتبعها جميع النقاط للتأكد من صحة ومصداقية الكتل الجديدة. ومبدأ إثبات الجهد أو ال PoW هو أحد طرق الإجماع وهو المستخدم في البتكوين وهناك طرق أخرى مثل ال Proof of Stake وغيرها.

لضمان أمان ومصداقية السلسلة فلن تُقبل أي كتلة جديدة مالم يكن الهاش الخاص بها أقل من قيمة معينة، أو بعبارة أخرى، يبدأ بعدد معين من الأصفار؟ ... لنراجع سريعا الهاش.

الهاش هو عملية تشفير ينتج عنها رمز مكون من ٦٤ رقم سداسي عشري Hexadecimal والهاش الناتج سيكون بين القيمتين 00000... 000 وFFF...FFFFF.

سلسلة الكتل - المدى المتاح للهاش الصحيح

فلو افترضنا أن الهاش المقبول يجب أن يبدأ ب٤ أصفار، وكان ناتج الهاش للكتلة C1295C0 ... 9798 فهذه الكتلة مرفوضة، ويجب على المُعدن البحث عن كتلة جديدة. أما إذا كان: 00005C03705 ... 2DA9FD798 فهذه الكتلة مقبولة وستتضاف للسلسلة بعد مزيد من التحقق. وبمرور مدة معينة يتم زيادة الصعوبة بزيادة عدد الأصفار المطلوبة في البداية.

حاليا - وقت كتابة المقال - أخر كتلة تم تعدينها للبتكوين كان لها هاش 0000000000000000000B1EBCFBA026FCCBCFF67BA915B6071B312007B8C67FCF ويبدأ ب١٩ صفر.

لتتخيل مدى الصعوبة. إذا حسبنا المدى المتاح من قيم الهاش واستثنينا ال ١٩ صفر في البداية، فستكون احتمالية ايجاد هاش مناسب لا تتعدى 16^ (-19) = 0.000000000000000000001%. وعلى المُعدن أن يكرر العملية مرارا حتى يحصل على هاش مقبول.

وهنا سؤال أخر. قلنا إن الهاش هي عملية حتمية أي ستعطي نفس النتيجة لنفس المدخلات. وبالنظر إلى مكونات الكتلة المذكورة سابقا:

  • رقم الكتلة.
  • التوقيع الزمني.
  • الهاش السابق.
  • البيانات.
سلسلة الكتل - تغيير الnonce للحصول على هاش جديد

وكلها محددة مسبقا ولا يمكن تغييرها. فكيف سيتمكن المُعدن من تغيير الهاش إذا كانت كل المكونات ثابتة؟!! الحل إذا، الانتظار حتى تمر ثانية ويتغير التوقيع الزمني حتى يُمكن حساب هاش جديد. صحيح؟ ولكن ذلك تضييع للوقت. فعملية حساب الهاش لا تتعدى الجزء من الثانية. وأجهزة التعدين تستطيع حساب الملايين من العمليات في الثانية الواحدة فيما يعرف بمعدل الهاش Hash Rate، فلماذا نقصرها على عملية واحدة كل ثانية؟

هنا تظهر أهمية قيمة التجزئة Nonce وهي رقم متغير تتراوح قيمته بين ٠ و٤ مليار تقريبا. ويقوم المعُدن بزيادة قيمته بعد كل هاش خاطئ للحصول على هاش مختلف. وبعد مرور الثانية، يبدأ من جديد. وهكذا حتى يحصل على هاش مناسب.

لذلك فالمُعدن يحتاج للكثير من الأجهزة القادرة على حساب أكبر قدر ممكن من العمليات في الثانية لزيادة فرصة الحصول على هاش مقبول ويكون الفائز في سباق تكوين الكتلة الجديدة.

تابع قراءة "سلسلة الكتل Blockchain - الجزء ٢"

لا تنس أن تشاركنا رأيك بالتعليق والإعجاب . وأيضا، إعادة نشر المقال مع أصدقائك

ما هو رد فعلك؟

like

dislike

love

funny

angry

sad

wow