Lección 3

تنفيذ إثبات العمل على بلوكتشين

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

3.1 فهم إثبات العمل

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

    الثعبان
    كود بيثونكوبي
    فئة بلوكشين:
     ديف __init__(الذات):
     السلسلة الذاتية = []
     الصعوبة الذاتية = 4 # اضبط مستوى الصعوبة حسب الحاجة
    

    وتضيف هذه الشفرة سمة صعوبة إلى فئة بلوكتشين ، والتي تمثل عدد الأصفار البادئة المطلوبة في الهاش.

  2. تنفيذ طريقة proof_of_work: ستولد هذه الطريقة تجزئة صالحة عن طريق ضبط قيمة nonce حتى تستوفي التجزئة معايير الصعوبة.

    الثعبان
    كود بيثونكوبي
    استيراد هاشليب
    فئة بلوكشين:
     ديف __init__(الذات):
     السلسلة الذاتية = []
     الصعوبة الذاتية = إثبات العمل بأربع درجات (الذات، الحظر):
     الهدف = " 0 " * الصعوبة الذاتية
     nonce = 0 بينما صحيح:
     البيانات = نجمة (كتلة) + نجمة (نونس)
     hash_value = hashlib.sha256 (data.encode ()) .hexdigest ()
             في حالة hash_value [: الصعوبة الذاتية] == الهدف:
     إرجاع قيمة التجزئة
     أونصة += 1
    

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

3.2 إضافة إثبات العمل إلى إنشاء الكتلة

  1. قم بتحديث طريقة add_block: قم بتعديل طريقة add_block لتضمين إثبات العمل. قم بإنشاء تجزئة صالحة للكتلة الجديدة باستخدام طريقة proof_of_work.

    الثعبان
    كود بيثونكوبي
    فئة بلوكشين:
     ديف __init__(الذات):
     السلسلة الذاتية = []
     الصعوبة الذاتية = إثبات العمل بأربع درجات (الذات، الحظر):
     # تفاصيل التنفيذ def add_block (الذات، الكتلة):
     previous_hash = السلسلة الذاتية [-1] .hash () عدسة IF (السلسلة الذاتية) >0 آخر لا شيء
     حظر الهاش السابق = الهاش السابق
     block.mine (الصعوبة الذاتية)
         ملحق السلسلة الذاتية (حظر)
    

    يقوم هذا الكود بتعديل طريقة add_block لتعيين brevious_hash للكتلة الجديدة، واستدعاء طريقة التعدين على الكتلة بمستوى الصعوبة، وإلحاق الكتلة بالسلسلة.

  2. قم بتطبيق طريقة التعدين في فئة Block: ستقوم طريقة التعدين بضبط قيمة nonce للكتلة حتى يتم العثور على تجزئة صالحة.

    الثعبان
    كود بيثونكوبي
    استيراد هاشليب
    بلوك الفئة:
     def __init__(الذات، الفهرس، الطابع الزمني، البيانات، previous_hash، nonce=0):
     الفهرس الذاتي = الفهرس
     الطابع الزمني الذاتي = الطابع الزمني
     البيانات الذاتية = البيانات
     الصفحة الذاتية. الهاش السابق = الهاش السابق
     self.nonce = أونصة
     self.hash = self.culate_hash ()
    
     حساب قيمة التجزئة (القيمة الذاتية):
     البيانات = str (الفهرس الذاتي) + نجمة (طابع زمني ذاتي) + نجمة (بيانات ذاتية) + str (الصفحة الذاتية.الصفحة السابقة_hash) + نجمة (بدون مقابل)
         إرجاع hashlib.sha256 (data.encode ()) .hexdigest ()
    
     التحدي الخاص بي (الذات، الصعوبة):
     الهدف = " " 0* الصعوبة
     بينما self.hash [: الصعوبة] ! = الهدف:
     الاسم الذاتي += 1
     self.hash = self.culate_hash ()
    

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

3.3 اختبار تنفيذ إثبات العمل

  1. إنشاء مثيل بلوكشين جديد: إنشاء مثيل لكائن Blockchain جديد وإضافة بعض الكتل إلى السلسلة.

    الثعبان
    كود بيثونكوبي
    بلوكشين = بلوكشين ()
    الكتلة 1 = الكتلة (1، datetime.now ()، "المجموعة 1 (البيانات")
    الكتلة 2 = الكتلة (2، datetime.now ()، "المجموعة 2 " (البيانات)
    الكتلة 3 = الكتلة (3، datetime.now ()، "المجموعة 3 " (البيانات)
    

    يقوم هذا الرمز بإنشاء كائن Blockchain جديد وثلاث كتل.

  2. إضافة الكتل إلى سلسلة الكتل: استخدم طريقة add_block لإضافة الكتل إلى السلسلة.

    الثعبان
    كود بيثونكوبي
    بلوكشين. add_block (الكتلة 1)
    بلوكشين. add_block (الكتلة 2)
    بلوكشين. add_block (الكتلة 3)
    

    يضيف هذا الرمز الكتل إلى بلوكشين.

  3. طباعة البلوك تشين: اعرض كتل البلوك تشين وتجزئتها.

    الثعبان
    كود بيثونكوبي
    للبلوك في بلوكتشين. تشين:
     الطباعة (f {block.index}") " الكتلة:
     طباعة (أو " هاش: {block.hash}")
    

    ويتكرر هذا الرمز فوق كتل بلوكتشين ويطبع قيم الفهرس وقيم التجزئة الخاصة بها.

3.4 الخلاصة

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

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.
Catálogo
Lección 3

تنفيذ إثبات العمل على بلوكتشين

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

3.1 فهم إثبات العمل

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

    الثعبان
    كود بيثونكوبي
    فئة بلوكشين:
     ديف __init__(الذات):
     السلسلة الذاتية = []
     الصعوبة الذاتية = 4 # اضبط مستوى الصعوبة حسب الحاجة
    

    وتضيف هذه الشفرة سمة صعوبة إلى فئة بلوكتشين ، والتي تمثل عدد الأصفار البادئة المطلوبة في الهاش.

  2. تنفيذ طريقة proof_of_work: ستولد هذه الطريقة تجزئة صالحة عن طريق ضبط قيمة nonce حتى تستوفي التجزئة معايير الصعوبة.

    الثعبان
    كود بيثونكوبي
    استيراد هاشليب
    فئة بلوكشين:
     ديف __init__(الذات):
     السلسلة الذاتية = []
     الصعوبة الذاتية = إثبات العمل بأربع درجات (الذات، الحظر):
     الهدف = " 0 " * الصعوبة الذاتية
     nonce = 0 بينما صحيح:
     البيانات = نجمة (كتلة) + نجمة (نونس)
     hash_value = hashlib.sha256 (data.encode ()) .hexdigest ()
             في حالة hash_value [: الصعوبة الذاتية] == الهدف:
     إرجاع قيمة التجزئة
     أونصة += 1
    

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

3.2 إضافة إثبات العمل إلى إنشاء الكتلة

  1. قم بتحديث طريقة add_block: قم بتعديل طريقة add_block لتضمين إثبات العمل. قم بإنشاء تجزئة صالحة للكتلة الجديدة باستخدام طريقة proof_of_work.

    الثعبان
    كود بيثونكوبي
    فئة بلوكشين:
     ديف __init__(الذات):
     السلسلة الذاتية = []
     الصعوبة الذاتية = إثبات العمل بأربع درجات (الذات، الحظر):
     # تفاصيل التنفيذ def add_block (الذات، الكتلة):
     previous_hash = السلسلة الذاتية [-1] .hash () عدسة IF (السلسلة الذاتية) >0 آخر لا شيء
     حظر الهاش السابق = الهاش السابق
     block.mine (الصعوبة الذاتية)
         ملحق السلسلة الذاتية (حظر)
    

    يقوم هذا الكود بتعديل طريقة add_block لتعيين brevious_hash للكتلة الجديدة، واستدعاء طريقة التعدين على الكتلة بمستوى الصعوبة، وإلحاق الكتلة بالسلسلة.

  2. قم بتطبيق طريقة التعدين في فئة Block: ستقوم طريقة التعدين بضبط قيمة nonce للكتلة حتى يتم العثور على تجزئة صالحة.

    الثعبان
    كود بيثونكوبي
    استيراد هاشليب
    بلوك الفئة:
     def __init__(الذات، الفهرس، الطابع الزمني، البيانات، previous_hash، nonce=0):
     الفهرس الذاتي = الفهرس
     الطابع الزمني الذاتي = الطابع الزمني
     البيانات الذاتية = البيانات
     الصفحة الذاتية. الهاش السابق = الهاش السابق
     self.nonce = أونصة
     self.hash = self.culate_hash ()
    
     حساب قيمة التجزئة (القيمة الذاتية):
     البيانات = str (الفهرس الذاتي) + نجمة (طابع زمني ذاتي) + نجمة (بيانات ذاتية) + str (الصفحة الذاتية.الصفحة السابقة_hash) + نجمة (بدون مقابل)
         إرجاع hashlib.sha256 (data.encode ()) .hexdigest ()
    
     التحدي الخاص بي (الذات، الصعوبة):
     الهدف = " " 0* الصعوبة
     بينما self.hash [: الصعوبة] ! = الهدف:
     الاسم الذاتي += 1
     self.hash = self.culate_hash ()
    

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

3.3 اختبار تنفيذ إثبات العمل

  1. إنشاء مثيل بلوكشين جديد: إنشاء مثيل لكائن Blockchain جديد وإضافة بعض الكتل إلى السلسلة.

    الثعبان
    كود بيثونكوبي
    بلوكشين = بلوكشين ()
    الكتلة 1 = الكتلة (1، datetime.now ()، "المجموعة 1 (البيانات")
    الكتلة 2 = الكتلة (2، datetime.now ()، "المجموعة 2 " (البيانات)
    الكتلة 3 = الكتلة (3، datetime.now ()، "المجموعة 3 " (البيانات)
    

    يقوم هذا الرمز بإنشاء كائن Blockchain جديد وثلاث كتل.

  2. إضافة الكتل إلى سلسلة الكتل: استخدم طريقة add_block لإضافة الكتل إلى السلسلة.

    الثعبان
    كود بيثونكوبي
    بلوكشين. add_block (الكتلة 1)
    بلوكشين. add_block (الكتلة 2)
    بلوكشين. add_block (الكتلة 3)
    

    يضيف هذا الرمز الكتل إلى بلوكشين.

  3. طباعة البلوك تشين: اعرض كتل البلوك تشين وتجزئتها.

    الثعبان
    كود بيثونكوبي
    للبلوك في بلوكتشين. تشين:
     الطباعة (f {block.index}") " الكتلة:
     طباعة (أو " هاش: {block.hash}")
    

    ويتكرر هذا الرمز فوق كتل بلوكتشين ويطبع قيم الفهرس وقيم التجزئة الخاصة بها.

3.4 الخلاصة

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

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.