قدم مفهوم إثبات العمل: اشرح أن إثبات العمل يتطلب من عمال المناجم حل لغز صعب حسابيًا لإضافة كتلة جديدة. يتضمن هذا اللغز العثور على قيمة هاش تلبي معايير معينة، مثل وجود عدد محدد من الأصفار البادئة.
الثعبان
كود بيثونكوبي
فئة بلوكشين:
ديف __init__(الذات):
السلسلة الذاتية = []
الصعوبة الذاتية = 4 # اضبط مستوى الصعوبة حسب الحاجة
وتضيف هذه الشفرة سمة صعوبة
إلى فئة بلوكتشين
، والتي تمثل عدد الأصفار البادئة المطلوبة في الهاش.
تنفيذ طريقة proof_of_work
: ستولد هذه الطريقة تجزئة صالحة عن طريق ضبط قيمة nonce حتى تستوفي التجزئة معايير الصعوبة.
الثعبان
كود بيثونكوبي
استيراد هاشليب
فئة بلوكشين:
ديف __init__(الذات):
السلسلة الذاتية = []
الصعوبة الذاتية = إثبات العمل بأربع درجات (الذات، الحظر):
الهدف = " 0 " * الصعوبة الذاتية
nonce = 0 بينما صحيح:
البيانات = نجمة (كتلة) + نجمة (نونس)
hash_value = hashlib.sha256 (data.encode ()) .hexdigest ()
في حالة hash_value [: الصعوبة الذاتية] == الهدف:
إرجاع قيمة التجزئة
أونصة += 1
يضيف هذا الرمز طريقة proof_of_work
إلى فئة
بلوكشين. يستخدم سلسلة مستهدفة
مع العدد المطلوب من الأصفار البادئة ويضبط قيمة nonce
حتى يتم العثور على تجزئة صالحة.
قم بتحديث طريقة add_block
: قم بتعديل طريقة add_block لتضمين إثبات العمل
. قم بإنشاء تجزئة صالحة للكتلة الجديدة باستخدام طريقة proof_of_work
.
الثعبان
كود بيثونكوبي
فئة بلوكشين:
ديف __init__(الذات):
السلسلة الذاتية = []
الصعوبة الذاتية = إثبات العمل بأربع درجات (الذات، الحظر):
# تفاصيل التنفيذ def add_block (الذات، الكتلة):
previous_hash = السلسلة الذاتية [-1] .hash () عدسة IF (السلسلة الذاتية) >0 آخر لا شيء
حظر الهاش السابق = الهاش السابق
block.mine (الصعوبة الذاتية)
ملحق السلسلة الذاتية (حظر)
يقوم هذا الكود بتعديل طريقة add_block
لتعيين brevious_hash
للكتلة الجديدة، واستدعاء طريقة التعدين
على الكتلة بمستوى الصعوبة، وإلحاق الكتلة بالسلسلة.
قم بتطبيق طريقة التعدين
في فئة 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
وإعادة حساب تجزئة الكتلة حتى تستوفي التجزئة معايير الصعوبة.
إنشاء مثيل بلوكشين جديد: إنشاء مثيل لكائن Blockchain
جديد وإضافة بعض الكتل إلى السلسلة.
الثعبان
كود بيثونكوبي
بلوكشين = بلوكشين ()
الكتلة 1 = الكتلة (1، datetime.now ()، "المجموعة 1 (البيانات")
الكتلة 2 = الكتلة (2، datetime.now ()، "المجموعة 2 " (البيانات)
الكتلة 3 = الكتلة (3، datetime.now ()، "المجموعة 3 " (البيانات)
يقوم هذا الرمز بإنشاء كائن Blockchain
جديد وثلاث كتل.
إضافة الكتل إلى سلسلة الكتل: استخدم طريقة add_block
لإضافة الكتل إلى السلسلة.
الثعبان
كود بيثونكوبي
بلوكشين. add_block (الكتلة 1)
بلوكشين. add_block (الكتلة 2)
بلوكشين. add_block (الكتلة 3)
يضيف هذا الرمز الكتل إلى بلوكشين.
طباعة البلوك تشين: اعرض كتل البلوك تشين وتجزئتها.
الثعبان
كود بيثونكوبي
للبلوك في بلوكتشين. تشين:
الطباعة (f {block.index}") " الكتلة:
طباعة (أو " هاش: {block.hash}")
ويتكرر هذا الرمز فوق كتل بلوكتشين ويطبع قيم الفهرس وقيم التجزئة الخاصة بها.
في هذا الدرس، قمنا بتطبيق خوارزمية إجماع إثبات العمل في بلوكشين الخاص بنا. قدمنا مفهوم إثبات العمل، وشرحنا كيف يتطلب الأمر من عمال المناجم حل لغز صعب من الناحية الحسابية، وقمنا بتطبيقه في بلوكشين الخاص بنا عن طريق تعديل قيمة nonce حتى يتم العثور على هاش صالح. كما اختبرنا أيضًا تنفيذ إثبات العمل عن طريق إضافة كتل إلى السلسلة وعرض محتويات بلوكتشين.
قدم مفهوم إثبات العمل: اشرح أن إثبات العمل يتطلب من عمال المناجم حل لغز صعب حسابيًا لإضافة كتلة جديدة. يتضمن هذا اللغز العثور على قيمة هاش تلبي معايير معينة، مثل وجود عدد محدد من الأصفار البادئة.
الثعبان
كود بيثونكوبي
فئة بلوكشين:
ديف __init__(الذات):
السلسلة الذاتية = []
الصعوبة الذاتية = 4 # اضبط مستوى الصعوبة حسب الحاجة
وتضيف هذه الشفرة سمة صعوبة
إلى فئة بلوكتشين
، والتي تمثل عدد الأصفار البادئة المطلوبة في الهاش.
تنفيذ طريقة proof_of_work
: ستولد هذه الطريقة تجزئة صالحة عن طريق ضبط قيمة nonce حتى تستوفي التجزئة معايير الصعوبة.
الثعبان
كود بيثونكوبي
استيراد هاشليب
فئة بلوكشين:
ديف __init__(الذات):
السلسلة الذاتية = []
الصعوبة الذاتية = إثبات العمل بأربع درجات (الذات، الحظر):
الهدف = " 0 " * الصعوبة الذاتية
nonce = 0 بينما صحيح:
البيانات = نجمة (كتلة) + نجمة (نونس)
hash_value = hashlib.sha256 (data.encode ()) .hexdigest ()
في حالة hash_value [: الصعوبة الذاتية] == الهدف:
إرجاع قيمة التجزئة
أونصة += 1
يضيف هذا الرمز طريقة proof_of_work
إلى فئة
بلوكشين. يستخدم سلسلة مستهدفة
مع العدد المطلوب من الأصفار البادئة ويضبط قيمة nonce
حتى يتم العثور على تجزئة صالحة.
قم بتحديث طريقة add_block
: قم بتعديل طريقة add_block لتضمين إثبات العمل
. قم بإنشاء تجزئة صالحة للكتلة الجديدة باستخدام طريقة proof_of_work
.
الثعبان
كود بيثونكوبي
فئة بلوكشين:
ديف __init__(الذات):
السلسلة الذاتية = []
الصعوبة الذاتية = إثبات العمل بأربع درجات (الذات، الحظر):
# تفاصيل التنفيذ def add_block (الذات، الكتلة):
previous_hash = السلسلة الذاتية [-1] .hash () عدسة IF (السلسلة الذاتية) >0 آخر لا شيء
حظر الهاش السابق = الهاش السابق
block.mine (الصعوبة الذاتية)
ملحق السلسلة الذاتية (حظر)
يقوم هذا الكود بتعديل طريقة add_block
لتعيين brevious_hash
للكتلة الجديدة، واستدعاء طريقة التعدين
على الكتلة بمستوى الصعوبة، وإلحاق الكتلة بالسلسلة.
قم بتطبيق طريقة التعدين
في فئة 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
وإعادة حساب تجزئة الكتلة حتى تستوفي التجزئة معايير الصعوبة.
إنشاء مثيل بلوكشين جديد: إنشاء مثيل لكائن Blockchain
جديد وإضافة بعض الكتل إلى السلسلة.
الثعبان
كود بيثونكوبي
بلوكشين = بلوكشين ()
الكتلة 1 = الكتلة (1، datetime.now ()، "المجموعة 1 (البيانات")
الكتلة 2 = الكتلة (2، datetime.now ()، "المجموعة 2 " (البيانات)
الكتلة 3 = الكتلة (3، datetime.now ()، "المجموعة 3 " (البيانات)
يقوم هذا الرمز بإنشاء كائن Blockchain
جديد وثلاث كتل.
إضافة الكتل إلى سلسلة الكتل: استخدم طريقة add_block
لإضافة الكتل إلى السلسلة.
الثعبان
كود بيثونكوبي
بلوكشين. add_block (الكتلة 1)
بلوكشين. add_block (الكتلة 2)
بلوكشين. add_block (الكتلة 3)
يضيف هذا الرمز الكتل إلى بلوكشين.
طباعة البلوك تشين: اعرض كتل البلوك تشين وتجزئتها.
الثعبان
كود بيثونكوبي
للبلوك في بلوكتشين. تشين:
الطباعة (f {block.index}") " الكتلة:
طباعة (أو " هاش: {block.hash}")
ويتكرر هذا الرمز فوق كتل بلوكتشين ويطبع قيم الفهرس وقيم التجزئة الخاصة بها.
في هذا الدرس، قمنا بتطبيق خوارزمية إجماع إثبات العمل في بلوكشين الخاص بنا. قدمنا مفهوم إثبات العمل، وشرحنا كيف يتطلب الأمر من عمال المناجم حل لغز صعب من الناحية الحسابية، وقمنا بتطبيقه في بلوكشين الخاص بنا عن طريق تعديل قيمة nonce حتى يتم العثور على هاش صالح. كما اختبرنا أيضًا تنفيذ إثبات العمل عن طريق إضافة كتل إلى السلسلة وعرض محتويات بلوكتشين.