
قدم مطورو Litecoin Cash شوكة نسخة مسبقة من الوثيقة الفنية "
The Hive: Mining Based Mining in Litecoin Cash " ، حيث وصفوا اقتراحهم لحماية
blockchain cryptocurrency blockchain استنادًا إلى خوارزمية إثبات العمل من "هجوم 51٪". يجمع حلها بين التعدين باستخدام أجهزة ASIC (SHA-256) القديمة والتعدين الافتراضي الديمقراطي باستخدام "النحل العامل" (HiveMine). في حالة التنفيذ الكفء لسلسلة الكتل ، سوف تحل LCC واحدة من أكبر مشاكل مشاريع البلوكتشين الحديثة (من Bitcoin إلى Ethereum): التهديد بالهجوم عندما يتركز أكثر من نصف إجمالي طاقة الشبكة في أيدي المهاجم.
مشكلة هجوم 51٪
لا يمكن لأولئك الذين يراقبون سوق العملات الرقمية أن يفشلوا في ملاحظة اندلاع
الهجمات الأخيرة
بنسبة 51 ٪ على مشاريع PoW الصغيرة نسبيًا (إثبات العمل - "إثبات العمل المنجز") ، عندما يعيد المهاجمون كتابة المعاملات وتحويل الأموال في أسرع وقت ممكن من خلال التبادلات. تعني كلمة "نسبي" في هذه الحالة أن جزءًا صغيرًا من الأجهزة التي تدعم أمان التشفير لسلسلة blockchain كبيرة (Bitcoin أو Ethereum ، على سبيل المثال) سيكون كافيًا لكسر إجماع كتلة blockchain صغيرة تعمل على نفس خوارزمية التجزئة (Bitcoin Cash أو Bitcoin Gold ، على التوالي) .
في حالة العملات المشفرة التي تأخذ خوارزمية SHA-256 (LCC أو BCH) كأساس للتشفير ، تتفاقم المخاطر من حقيقة أن أكبر عملة مشفرة وأكثرها أمانًا في العالم - Bitcoin (BTC) - تعمل على نفس الخوارزمية.
في هذه المقالة ، سنركز على النموذج الرياضي للحماية ضد هجمات 51 ٪ ونسلط الضوء بشكل سطحي على المصطلحات والمفاهيم الرئيسية ذات الصلة المستخدمة في تشفير blockchains.
مقدمة في التعدين العالي
في نظام تأمين بلوكشين الكلاسيكي PoW ، يتنافس عمال المناجم عن طريق حساب عدد كبير من تجزئات الكتل المحتملة للعثور على واحد يلبي شروط التعقيد المحددة في توافق الشبكة. إذا كان التعقيد صفريًا وقبلت الشبكة أي تجزئة على أنها صالحة ، فلن يعمل إثبات العمل ويمكن لأي عقدة في الشبكة أن تقوم بسهولة بالتعدين.
للوهلة الأولى ، هذا ليس سيئًا: سيصبح التعدين ديمقراطيًا ومنخفض التكلفة من حيث الطاقة. ولكن من الناحية العملية ، سوف يقوم الجميع بتعدين الكتل الرخيصة ودفعها إلى الشبكة ، مما يعني أنه سيكون هناك العديد من المرشحين لاستمرارية سلسلة الكتل. نظرًا لأن عمال المناجم لن يعودوا يفهمون أي كتلة لبناء استمرار سلسلة الكتل ، ستظهر العديد من السلاسل اليتيمة. ستكون هناك فوضى ، لوحظت من خلال عملات PoW مع خوارزمية غير كافية لضبط تعقيد التعدين.
إذا كان التعقيد صفرًا ولن يتكبد إنتاج الكتلة أي تكاليف ، فلن يتمكن أحد من تحديد السلاسل المرشحة التي تستحق أكثر ، مما يعني أنه لن تكون هناك أولوية. سيتمكن عمال المناجم أيضًا من العمل على سلاسل مختلفة دون فقدان أي شيء.
توضح هذه التجربة الفكرية ببساطة أن الغرض الرئيسي من خوارزمية إثبات العمل أو إثبات الحصة أو إثبات أي شيء بشكل عام هو تزويد الشبكة بطريقة حتمية لتحديد الحق في التعدين أو سكب أو تزوير كتلة ، وهو ما سيوافق عليه المشاركون الآخرون . بالإضافة إلى ذلك ، هناك شرط مهم آخر لجميع الباحثين عن الكتل وهو عدم العمل على سلاسل متعددة في وقت واحد مع الإفلات من العقاب. في نظام إثبات الحصة ، يعاقب مثل هذا النهج بالحرمان الجزئي أو الكامل للحصة.
التعدين العالي هو شكل بديل من أشكال النضال عندما يتم تأمين الحق في إنتاج كتلة من قبل وكيل يعمل نيابة عن المستخدم. هذه العوامل - "النحل العامل" - موجودة على البلوكتشين نفسها. فهي لا مركزية بالكامل ويتم إنشاؤها عندما يقوم المستخدم بإجراء معاملة خاصة لإنشاء وكيل.
بعد الإنشاء ، يبدأ النحل العامل في العمل كأجهزة افتراضية للتعدين (الحفارة) ، ويصبح أصحابها "مربي النحل". عندما يحصل النحل العامل على الكتلة بنجاح ، يتم دفع مكافأة الكتلة (بما في ذلك العمولات المرفقة في الكتلة) لمربي النحل. يتطلب النحل العامل القليل من الطاقة ولا يحتاج إلى معدات متخصصة لإنتاج الكتل. أيضا ، عمرهم محدود وخلق النحل هو عمل المضاربة بسعر معين ؛ هذا يمنع محاولات العمل على سلاسل متعددة في نفس الوقت. يعتمد نجاح النحلة الفردية فقط على عدد النحل الذين يعيشون في الشبكة بأكملها. لن يجد بعض النحل كتلة أبدًا ، بينما سيكون البعض الآخر محظوظًا بشكل غير متناسب (على غرار التعدين الفردي).
التين. 1: تتم إضافة نحلة عاملة إلى blockchain من خلال معاملة إنشاء النحل (BCT) وكتل الألغام خلال فترة حياتهاتكوين الوكلاء (النحل العامل)
لإنشاء نحلة عاملة ، يرسل المستخدم المعاملة إلى عنوان "ميت" خاص ، على سبيل المثال:
CReateLitecoinCashWorkerBeeXYs19YQ
. لاحظ أن الجميع يستخدم نفس العنوان لإنشاء النحلة. تم تحليل هذا العنوان على أنه موجود وصحيح ، ولكن لا يوجد مفتاح خاص به لأحد ؛ تحدد الأداة المساعدة vanitygen أن البحث عن مفتاح خاص باستخدام نوى 24 * 2 جيجاهرتز سيستغرق حوالي 1.7 * 10 ^ 31 عامًا (مع احتمال نجاح بنسبة 50 بالمائة).
يجب أن يكون للمعاملة التي تخلق نحلة نتيجتان على الأقل. يحدد الأول رسمًا ثابتًا لإنشاء نحلة ، والتي يتم إرسالها إلى عنوان لا يمكن الوصول إليه. على الرغم من أن سعر إنشاء النحلة سيتم تحديده ديناميكيًا ، فمن المفترض أنه سيكون نسبة مئوية من مكافأة الكتلة. يتضمن هذا الحساب الحد الأدنى للتكلفة ، بحيث أنه في الوقت الذي يتم فيه استخراج جميع العملات المعدنية ، يكون من المنطقي استخدام التعدين العالي لتلقي رسوم المعاملات.
الاستنتاج الثاني له تكلفة صفرية ، لكنه يحدد العنوان الأساسي ، والذي سيحصل على أي مكافأة للكتلة التي تم العثور عليها من قبل النحلة في المستقبل. يمكنك تسميته "العنوان المستقبلي لمربي النحل". عند الرغبة ، يمكن للمستخدم نفسه توضيح ذلك ؛ بشكل افتراضي ، سيتم إنشاء عنوان جديد في كل مرة في محفظته.
مثال:
"vout": [ { // Bee creation fee "addr": "CReateLitecoinCashWorkerBeeXYs19YQ" "value": 1.0000000 }, { // Address to receive block rewards for any blocks this bee mines "addr": "CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR" "value": 0.0000000 }, { // Change address for change from creation fee "addr": "Cd6CRuWCu6p4NLR6XG7BKyC8hzvEoYuKbn" "value": 123.5274346 } ]
النحل ينضج ويصبح قادرًا على إنتاج الكتل بعد ظهور 576 كتلة على سلسلة الكتل منذ لحظة إنشاء النحل. هذا هو العدد المتوقع للكتل الجديدة المضافة إلى بلوكتشين Litecoin Cash في غضون 24 ساعة. بعد نضج النحل ، هناك 4032 كتلة (حوالي أسبوع واحد) وابحث عن الكتل ، ثم تموت.
يتم إنشاء النحلة في محفظة QT. شيء من هذا القبيل يبدو كالتالي:
التين. 2: تخطيط محفظة LCC مع النحل العاملالنحل في العمل: حظر البحث
على سبيل المثال ، لنفترض أن ارتفاع blockchain = 1000 ، ويجب أن تحدد الشبكة النحل الذي تم تعيينه للعثور على الكتلة 1001. يحتوي مربي النحل في Alice الآن على 4 نحل (تم إنشاؤها بين 576 و 4608 كتلة).
عندما تظهر الكتلة 1000 ، تقوم محفظة Alice بحساب قيمتين.
الأول هو قيمة حتمية لا يمكن التنبؤ بها ولكن يمكن التحقق منها بسهولة. من السهل القيام بذلك عن طريق إضافة تجزئات كتلة على أعماق مختلفة (مشفرة بشدة) بين ، على سبيل المثال ، 0 و 500000 كتلة ، مما يضمن أن قيمتنا العشوائية متجذرة جيدًا في blockchain:
string deterministicRandString = blocks[blockHeight].hash + blocks[blockHeight-13].hash + blocks[blockHeight-173].hash + blocks[blockHeight-1363].hash + blocks[blockHeight-27363].hash + blocks[blockHeight-496393].hash;
بعد ذلك ، تقوم
beeTargetHash
التجزئة المستهدفة
beeTargetHash
،
beeTargetHash
. يتم تحديد هذه القيمة من خلال المتوسط المتحرك الأسي مع نطاق ديناميكي مرتفع للغاية ، والذي يحدد
beeTargetHash
بحيث يتم تحديد تكرار الكتل التي تم الحصول عليها أثناء عملية التعدين لأي مجموعة معينة من النحل. على الجانب الإيجابي ، تم استخراج المزيد من كتل PoW منذ آخر كتلة منجم عالية ، و
beeTargetHash
الأعلى (الأبسط). يتم تعريف الخوارزمية على النحو التالي ؛ سيتم تحديد قيم
maxTarget
و
emaWindowsSize
و
emaDesiredSpacing
أثناء المحاكاة.
beeHashTarget = previousBeeHashTarget (default to highest (easiest) target maxTarget) numPowBlocks = number of pow blocks since the previous hive mined block; emaInterval = emaWindowSize / emaDesiredSpacing; beeHashTarget *= (interval - 1) * emaDesiredSpacing + numPowBlocks + numPowBlocks; beeHashTarget /= (interval + 1) * emaDesiredSpacing;
يمكن حساب كل من
beeHashTarget
و
beeHashTarget
بواسطة أي عقدة على الشبكة.
تمر محفظة أليس الآن بكل من نحلها الحي من خلال سلسلة عشوائية حتمية ، تجمع بين معاملات BCT للنحل وتجزيئها للحصول على تجزئة جديدة - تجزئة النحل لفرد من النحل. لذلك ، يولد كل نحلة تجزئة واحدة لكل كتلة. يشبه هذا التجزئة التجزئة الأفضل الذي تم إنشاؤه بواسطة جهاز تعدين PoW خلال نفس الفترة الزمنية.
hash beeHash = sha256(deterministicRandString + bee.creationTransaction.ID)
نظرًا لأن محفظة Alice تتعقب النحل ، وكل منها يحسب
beeHash
، فإنه يحتفظ بسجل لأفضل (أدنى) التجزئة التي تم اكتشافها. ونتيجة لذلك ، إذا كان أفضل تجزئة اكتشفتها محفظة Alice يفي بشرط
beeHash < beeTargetHash
، تحصل Alice على الحق في إضافة كتلة.
لنفترض أن Alice لديها نحلة حية ، وتجزئة التجزئة أقل من الهدف ، ومعرف معاملات BCT للنحلة الناجحة هو كما يلي:
0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841.
مع العلم أن محفظة Alice لها الحق في توقيع كتلة ، تنتج الشبكة كتلة مع معاملة خاصة مع نتيجتين:
"vout": [ { // Zero-value output identifies the bee and proves it's really minting for Alice "value": 0, "n": 0, "scriptPubKey": { "asm": "OP_RETURN OP_BEE 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841 IH3Emz49KJeRbw0q4R48pD6GWPQtvHCxLeQOxxH+yv14Tn5KzUFIXBe9Td8EHudejzebMYt/XpusENzNkGM/a4I=" } }, { // Block reward (subsidy + fees) - must pay to bee's correct coinbase address "value": 250.0001125, "n": 1, "scriptPubKey": { "addresses": [ "CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR" ] } }
vout[0]
هو ناتج بقيمة صفرية لا يمكن إنفاقه. يتم استخدامه لتحديد النحلة التي حصلت على الكتلة ، وإثبات أنها حصلت عليها من أجل أليس.
vout[1]
هو المخرج الذي يدفع لـ Alice مكافأة كتلة.
تأكيد الحظر
يجب أن تتأكد محفظة بوب ، التي تتلقى كتلة أليس ، من أنه يرضي الإجماع. أولاً ، يتأكد من أن المعاملة تتضمن مدخلين ، أولهما صفر ، وأن النص البرمجي يبدأ بـ
OP_RETURN OP_BEE
. ثم يسترد معرف معاملة نحلة أليس:
0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841.
الاستطراد: نظرًا لأن عملية إنشاء نحلة يتم نقلها إلى عنوان لا يمكن الوصول إليه ، يظل إخراج المعاملات غير المنفقة (UTXO) فيه. وبالتالي ، لا تحتاج محفظة Bob إلى تمكين خيار سطر أوامر txindex
(الذي يفهرس جميع المعاملات تمامًا بسبب تأخر التحقق وزيادة استخدام القرص) للتحقق بسهولة من مخرجات BCT الخاصة بـ Alice. نظرًا لاستخدام UTXO ، لا تحتاج محفظة QT إلى أي قواعد بيانات أو تعديلات لدعم التعدين العالي. يدمج علامة النحل أيضًا ديناميكيًا.
من خلال التحقق من كتلة الألغام العالية ، تنفذ محفظة Bob ما يعادل RPC (استدعاء الإجراء عن بُعد):
gettxout 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841 0
هذا يعطيه أول إخراج BTC ،
vout [0]
، ويضمن أن 1) عمق المعاملة يقع في نطاق عمر النحلة ؛ 2) تم دفع عمولة لإنشاء نحلة ؛ 3) تم إرسالها إلى عنوان الطريق المسدود الصحيح.
في حالة نجاح التحقق ، ستنتج محفظة Bob ما يلي:
gettxout 0f6953f0a0816483c71ae3df45650a997e678588a315d72e9ae06e6a3f1c1841 1
وبالتالي الحصول على الناتج الثاني من BCT ،
vout [1]
، مع التأكيد على أن 1) القيمة صفر ؛ 2) العنوان هو نفس عنوان استلام تحويل العملات المعدنية في الكتلة (في المثال
CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR
).
يتحقق الاختيار التالي من توقيع الرسالة من الجزء الأخير من
vout [0]
. يجب أن تحتوي الرسالة على رقم الكتلة الحالي ، الموقَّع بواسطة العنوان لاستلام تحويل العملة ، لذلك تنتج محفظة بوب:
verifymessage CTrdm8YDfjmFJwFnKbvNZ9NYznhMqrNgFR "IH3Emz49KJeRbw0q4R48pD6GWPQtvHCxLeQOxxH+yv14Tn5KzUFIXBe9Td8EHudejzebMYt/XpusENzNkGM/a 4I=" "1001"
أخيرًا ، يحسب بوب
deterministicRandString
beeHashTarget
و
beeHashTarget
للكتلة الحالية ، ثم يحسب
beeHash
من Alice ويتحقق منه مقابل
beeHashTarget
. إذا تم تمرير جميع عمليات التحقق ، فسيتم اعتبار الكتلة صالحة وتم التحقق منها. عملية التحقق من صحة الكتل سريعة ولا تتطلب تحققًا مكلفًا من الكتل التاريخية.
إقران Hi-Mining و PoW Mining
من المفترض أن التعدين العالي ليس الطريقة الوحيدة لضمان أمن الشبكة. لا يريد مطورو Litecoin Cash فقط إنقاذ مجتمع التعدين ، ولكن أيضًا عدم التدخل فيه بأي شكل من الأشكال. يجب إقران التعدين العالي مع تعدين PoW على blockchain واحد.
حاليا ، يتم حساب تشغيل الدائرة على النحو التالي:

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

وبالتالي ، سيتم مكافأة كل كتلة من خلايا النحل اعتمادًا على كمية العمل المنجز في كتلة PoW السابقة ، ويتم تحديد الثابت
k
تجريبيًا.
الخلاصة: ارتفاع التعدين كدفاع ضد الهجوم 51٪
وفقًا لرئيسة مطوري Litecoin Cash جين 'Tanner' Craig ، فإن فكرة HiveMine ليست فقط توفير حماية موثوقة ضد هجوم 51 ٪ ، ولكن أيضًا لإضفاء الطابع الديمقراطي على اللامركزية والتعدين. على عكس بلوكتشين PoS ، عندما يصبح "الأغنياء أكثر ثراء" ، ويجمعون حصتهم ، لا يزال HiveMine يتطلب تكلفة إنشاء نحلة قد لا تؤتي ثمارها. يفي التعدين القائم على الوكيل بالمهام الثلاث الرئيسية للفريق: تعقيد الهجوم بنسبة 51 ٪ بشكل كبير ، وإضفاء الطابع الديمقراطي على التعدين وحرية عمال المناجم باستخدام خوارزمية SHA-256 ، مما يضمن أمانًا عاليًا لشبكة Bitcoin نفسها. للنجاح في الهجوم ، سيحتاج المهاجم إلى الاستحواذ على أكثر من 51٪ من قوة الشبكة ، بالإضافة إلى 51٪ من سكان النحل في الشبكة ، وبالنظر إلى عملية تكوين النحل ، سيصبح هذا واضحًا على الفور.
وفقًا لـ Craig ، بعد اختبار وتنفيذ نموذج HiveMine في شبكة Litecoin Cash ، والتي لا يتم توفيرها بنفس معدل تجزئة SHA-256 مثل نفس Bitcoin Cash ، فإنها مع ذلك ستكون أسرع وأكثر موثوقية من شبكات Bitcoin Cash أو Bitcoin .
المراجع:
1. "
الخلية: التعدين القائم على الوكيل في Litecoin Cash " ، Iain CRAIG ، Sebastian CLARKE ، Michał WYSZYŃSKI و Federico DE GONZÁLEZ-SOLER. (2018)