محلل Blockchain مع 300 خطوط في بيثون

صورة

مرة أخرى في عام 2015 ، عندما لم تحصل عملات التشفير على نفس القدر من الاهتمام من عامة الناس كما هي الآن ، حدث لي أن اكتشف بالتفصيل ماهية blockchain و cryptocurrency و Bitcoin على وجه الخصوص.

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

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

و كذلك. قام عميل Bitcoin Core الرسمي بتحميل الكتل blockchain بأكمله إلى مجلد على الجهاز المحلي ، وكانت هذه بعض الملفات ، كما هو مذكور في المستندات الرسمية ، تحتوي على كل ما يسمى Bitcoin. الأكثر إثارة للاهتمام بالنسبة لي هي ما يسمى بملفات RAW Blockchain Data (blk00000.dat ... blk01234.dat ، وما إلى ذلك من مجلد Bitcoin / blocks) ، أي ملفات قاعدة بيانات blockchain كما هي ، في شكلها الأصلي.

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

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

تتوفر مواصفات نسق الكتل والمعاملات في المصادر المفتوحة ، في شكل أوصاف منفصلة لهذه الهياكل. ولكن لا يمكن العثور على أي شيء يمكن أن يعطي فكرة كاملة عن كيفية تفسير البيانات المخزنة في ملفات قاعدة البيانات blockchain "الخام" للغاية (قاعدة بيانات RAW Blockchain).

كان الخيار الوحيد ، في رأيي ، هو تحليل البنية الخطية للملفات وتقديمها في شكل بنية قابلة للقراءة ، والتي ينبغي أن تعطي فهماً كاملاً لأي نوع من أنواع الفاكهة.

والنتيجة هي برنامج نصي مكتوب في Python مع حوالي 300 سطر ، والذي يحول ملفات البيانات "الخام" المخزنة محليًا blkXXXXX.dat إلى تنسيق نص عادي مع الإشارة إلى ما هو موجود هناك وما معنى كل حقل بيانات. تعد الملفات النصية الناتجة مناسبة لمزيد من المعالجة والاستخراج منها ، على سبيل المثال ، كل تجزئات الكتلة ، تجزئة المعاملات ، العناوين ، كميات المعاملات ، إلخ لغرض التحليل ، وأكثر من ذلك بكثير لأي غرض ...

في رأيي ، يتم ضمان الراحة والشفافية في استخدام المحلل اللغوي بأقصى قدر من الرؤية ، نظرًا للتنفيذ من خلال تحويل بيانات القراءة المتسلسلة للبايت.

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

جزء لا يتجزأ من هذا العمل هو مساعدة أصحاب المصلحة على التعرف على تكنولوجيا blockchain.

نعم ، كما اتضح فيما بعد ، فإن البرنامج النصي مناسب أيضًا لمعظم عملات التشفير الأخرى ، مثل Dash و Dogecoin و Bitcoin Cash و Litecoin و altcoins الأخرى ، على الرغم من ذلك ، يتعين عليك القيام ببعض الحيل. هذه المقالة لا تخطط للكشف عن هذه الحيل.

يمكنك تنزيل المحلل اللغوي blockchain من github .

Source: https://habr.com/ru/post/ar482978/


All Articles