برمجة البلوك تشين، ثاني أكثر الوظائف طلبًا، ابدأ الآن!

ابدأ الآن في برمجة البلوك تشين وأمن مستقبلك

برمجة البلوك تشين
برمجة البلوك تشين

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

في هذا المقال سنتناول الأساسيات حول برمجة البلوك تشين، لذا قبل أن نبدأ في الشأن التقني، لنناقش معًأ سؤال يكثر تداوله وهو:

هل يمكن للمبتدئين تعلم برمجة البلوك تشين؟ 

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

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

string as input and returns a fixed-size alphanumeric string

ومن أجل فهم تقنية البلوك تشين بشكل أعمق، من المهم معرفة مفهوم التوقيع الرقمي أو الهاش (Hash).

تعرف أيضًا على تطبيقات البلوك تشين التي ستغزو العالم في 2023

ما هو التوقيع الرقمي – Digital Signature 

التوقيع الرقمي هو عبارة دالة برمجية تأخذ (String) كمدخلات وتعيده كـ (String) من حروف وأرقام متسلسة بحجم ثابت.

هذا المخرج يتم تسميته بالتوقيع الرقمي أو تجزئة رسالة الإدخال. 

والنقطة المهمة التي يجب ملاحظتها هنا هي أن الدالة التي نحصل من خلالها على التوقيع الرقمي “لا رجوع فيها” (irreversible)، حيث يمكن حساب الهاش أو التجزئة من الإدخال بينما لا يمكن معرفة المدخلات من حساب الهاش.

كما أنه لا يمكن أن يتواجد قيمتين لهما نفس التجزئة أو الهاش.

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

هنا ، ما نحاول أن نقوله هو ما يلي:

  • من السهل حساب التجزئة 1 من الإدخال 1 والتجزئة 2 من الإدخال 2.
  • يكاد يكون من المستحيل حساب المدخلات 1 بالنظر إلى قيمة التجزئة 1.
  • وبالمثل بالنسبة لـ input2 و hash2.
  • يكاد يكون من المستحيل العثور على المدخلات 1 والمدخلات 2 المميزة مثل التجزئة 1 = التجزئة 2.

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

ما علاقة دالة الهاش في برمجة البلوك تشين؟

تعتمد البلوك تشين كمفهوم بشكل كبير على التجزئة، الفكرة هي أنه في البلوك تشين، لدينا سلسلة مرتبة من الكتل بحيث تحتوي كل كتلة على المعلومات التالية:

  • تجزئة الكتلة السابقة.
  • قائمة المعاملات.
  • تجزئة من الكتلة نفسها.

أمثلة على التجزئة – الهاش

لنأخذ مثالا على ذلك. 

ضع في اعتبارك الكتلة البسيطة التالية: [0, “X paid $100 to Y”, 91b452]

قام X بدفع مبلغ 100 دولار إلى Y

نظرًا لأن هذه هي الكتلة الأولى من البلوك تشين ، فإن الهاش الخاص بالكتلة السابقة هو 0. 

تحتوي قائمة المعاملات على معاملة واحدة فقط – X دفع 100 دولار إلى Y. 

يتم حساب التجزئة نفسها بالطريقة التالية:

hash_itself = Hash(List of transactions, Hash of the previous block)

أي..

hash_itself = Hash (قائمة المعاملات ، تجزئة الكتلة السابقة) 

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

تسمى هذه الكتل التي يكون فيها تجزئة الكتلة السابقة 0 على أنها Generis Blocks- كتلة التكوين. 

ويعني Genesis block هو في الأساس أول كتلة في البلوك تشين.

الآن، لنفترض أننا نريد إضافة المزيد من الكتل إلى البلوك تشين. 

block1 = [91b452, “Y paid $20 to Z, X paid $10 to P”, 8ab32k].

هنا، 91b452 ليس سوى تجزئة الكتلة السابقة (كتلة التكوين- Generis Blocks). هناك عمليتان:

Y دفع مبلغ 20 دولار إلى z، و x دفع مبلغ 10 دولار إلى P

أخيرًا، 

لدينا قيمة hash_itself التي هي أساسًا:

Hash(“Y paid $20 to Z, X paid $10 to P”, 91b452).

 اتضح أن هذا هو 8ab32k.

تبدو البلوك تشين الخاصة بنا كما يلي:

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

ما الذي يميز “بنية البيانات data structure” هذه؟

الفكرة تتمثل في أنه إذا افترضنا أن شخصًا ما قام بتشويه البلوك تشين عن طريق تغيير المعاملة في Genesis Block 

“X paid $100 to Y” to “Y paid $100 to X”

 سيؤدي ذلك إلى تغيير قيمة التجزئة 91b452

نتيجة لذلك، سيكون هناك عدم تطابق في قيمة التجزئة في الكتلة 1 (تذكر أن القيمة الأولى لكل كتلة هي قيمة التجزئة للكتلة الأصلية). 

بسبب ذلك، تصبح السلسلة غير صالحة. 

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

لذلك يوفر البلوك تشين مستوى عاليًا من أمان البيانات.

ما هو كود برمجة البلوك تشين؟

من المثال السابق من الواضح أنه يمكننا كتابة هذه الدالة بأي لغة برمجة تقريبًا. 

على سبيل المثال، يمكن تطبيق المفهوم أعلاه في

 C ++ و Python و Java وحتى JavaScript. 

كيف نكتب كود برمجة البلوك تشين بلغة برمجة بايثون Python:

كود برمجة البلوك تشين
كود برمجة البلوك تشين – بايثون

لنفترض الآن، إذا أردنا تعديل genesis_block

برمجة البلوك تشين - تعديل genesis_block
برمجة البلوك تشين – تعديل genesis_block

هنا، تختلف قيمة genesis_block_hash و block1_parent_hash بوضوح بينما يجب أن تكون هي نفسها في البلوك تشين الصحيحة. 

نتيجة لذلك ، فإن البلوك تشين تالف الآن.

نتيجة تعديل genesis_block
نتيجة تعديل genesis_block

فكر في البلوك تشين على أنها بنية بيانات موزعة وآمنة يمكن استخدامها في أنظمة بدون وسطاء.

الطبيعة اللامركزية للبلوك تشين هي التي تساعد في إزالة الوسطاء وهي تأتي من ثبات البلوك تشين ودقته.

يمكننا أن نرى بل وضوح أن بنية بيانات برمجة البلوك تشين مثيرة للاهتمام وآخذة في التوسع والانتشار،

وأكبر مثال على دقتها وصوابها وقدرتها اللامحدودة هي العملة الرقمية مثل البيتكوين BTC.

تعرف على: أشهر 7 من استخدامات البلوك تشين المتوقعة في 2023