تقدم تقنية Blockchain أساليب مبتكرة لتحقيق الإجماع والأمان والخصوصية. أحد هذه الابتكارات هو مخطط الكشف عن الالتزام، وهو بروتوكول تشفير يعزز الخصوصية والأمان لمستخدمي بلوكتشين. أثناء التنقل في هذه الدورة التدريبية، ستكشف عن طبقات الثقة والشفافية والابتكار التي يجلبها مخطط Commit-Reveal إلى المجال الرقمي اللامركزي. تم تصميم كل وحدة في هذه المقالة بدقة لتوفير فهم شامل لمخطط Commit-Reveal وتنفيذه وتأثيره على مشهد blockchain.
في جوهرها، تشبه بلوكتشين دفتر الأستاذ الرقمي مع تطور. وعلى عكس دفاتر الأستاذ التقليدية، فإنها لا مركزية، مما يعني أنه لا يوجد كيان واحد يتحكم في بلوكتشين بالكامل، ويمكن لأي شخص يمثل جزءًا من شبكتها الوصول إليها. تحتوي كل «كتلة» في بلوكتشين على قائمة بالمعاملات. بمجرد ملء الكتلة بالمعاملات، يتم تشكيل كتلة جديدة، مما يؤدي إلى إنشاء «سلسلة» متصلة من الكتل - ومن هنا جاء اسم «blockchain».
تتمثل إحدى الميزات اللامعة لـ blockchain في تركيزها على الثقة والشفافية. يمكن لأي شخص في الشبكة الوصول إلى كل معاملة على blockchain ويمكنه عرضها. هذا الانفتاح يثبط عدم الأمانة ويعزز الثقة بين المجتمع. قد تتساءل، كيف يمكن تحقيق هذا المستوى من الشفافية؟ تكمن الإجابة في آليات الإجماع الفريدة ومبادئ التشفير، والتي سنتعمق فيها أثناء تقدمنا في هذه الدورة.
الآن بعد أن تعرفت على ماهية بلوكتشين، دعنا نقدم لها نكهة خاصة - مخطط Commit-Reveal. إنه مثل عرض سحري حيث يلتزم الساحر (المستخدم) أولاً بعمل معين دون الكشف عنه للجمهور (الشبكة) ثم يكشف النقاب عن الفعل في مرحلة لاحقة. ومن منظور بلوكتشين، فإن هذه العملية تتكون من خطوتين: «مرحلة الالتزام» و «مرحلة الكشف».
في مرحلة الالتزام، يقوم المستخدم بإرسال نسخة مجزأة من معلوماته إلى بلوكتشين. هذه النسخة المجزأة تشبه النسخة المختلطة من المعلومات الأصلية التي تخفي المحتوى الفعلي. يكمن سحر دالة التجزئة في أنها رحلة ذات اتجاه واحد؛ لا يمكنك فك رموز التجزئة إلى شكلها الأصلي، وبالتالي الحفاظ على سرية المعلومات في الوقت الحالي. ثم تأتي مرحلة الكشف، حيث يكشف المستخدم عن المعلومات الأصلية، والتي يتم التحقق منها بعد ذلك بواسطة الشبكة عن طريق تجزئتها مرة أخرى ومقارنتها بالهاش الأولي الملتزم به إذا تطابقت، فويلا! تؤكد الشبكة الكشف، وتكتمل الخدعة السحرية.
من خلال مخطط Commit-Reveal، يمكن لشبكات blockchain تحقيق مستوى جديد من المشاركة في تطبيقات مثل المزادات وأنظمة التصويت والمزيد، والتي سنستكشفها بالتفصيل في الوحدات القادمة.
بينما نبحر إلى أعماق مخطط Commit-Reveal، فإن محطتنا الأولى هي «مرحلة الالتزام». في هذه المرحلة، «يلتزم» المستخدمون بقيمة معينة، لكنهم يفعلون ذلك بطريقة تحافظ على سرية القيمة الفعلية. تخيل أن لديك رقمًا سريًا في ذهنك، ولكن بدلاً من إخبار الجميع بما هو عليه، يمكنك وضعه في صندوق مغلق وإظهاره للجميع. إنهم يعرفون أن لديك رقمًا، لكنهم لا يعرفون ما هو. هذا هو جوهر الالتزام في بلوكتشين!
الآن، كيف يمكننا إخفاء قيمتنا السرية؟ في عالم بلوكتشين، نستخدم شيئًا يسمى دالة التجزئة للقيام بذلك. وظيفة الهاش تشبه الخلاط السحري. تقوم بإدخال القيمة السرية الخاصة بك، وتقوم بإخراج نسخة مختلطة منها، تُعرف باسم الهاش. هذه التجزئة فريدة من نوعها؛ حتى التغيير الطفيف في القيمة الأصلية يخلق تجزئة مختلفة تمامًا. يكمن جمالها في أنها عملية أحادية الاتجاه - بمجرد تجزئة القيمة، لا توجد طريقة سهلة لمعرفة القيمة الأصلية من التجزئة. لذلك، عندما يلتزم المستخدمون بقيمتهم، فإن ما يفعلونه حقًا هو مشاركة تجزئة قيمتهم مع الجميع على بلوكتشين.
بعد التشويق المدمج في مرحلة الالتزام، حان وقت الكشف الكبير! مرحلة الكشف هي المكان الذي يتم فيه الكشف أخيرًا عن القيم الملتزمة لجميع المشاركين في blockchain. بالعودة إلى تشبيه الصندوق المقفل، هذه هي اللحظة التي يتم فيها فتح الصندوق، وسيتمكن الجميع من رؤية الرقم الذي قمت بإخفائه. في عالم بلوكتشين، يعد الكشف عملية مباشرة ولكنها حاسمة توفر الشفافية والإنصاف في مختلف التطبيقات.
عندما يكشف المستخدم عن قيمته الملتزم بها، يمكن للشبكة التحقق بسهولة من صحتها عن طريق تجزئة القيمة التي تم الكشف عنها ومقارنتها بالتجزئة الأصلية التي تمت مشاركتها خلال مرحلة الالتزام. في حالة تطابق علامات التجزئة، فهذا يؤكد أن المستخدم لم يغير رأيه في منتصف الطريق. تساعد عملية التحقق البسيطة والقوية هذه في الحفاظ على بيئة موثوقة حيث يلتزم الجميع بالقواعد. إنه مثل وجود حكم في لعبة، مما يضمن التزام جميع اللاعبين بالشروط المتفق عليها.
الآن بعد أن كشفنا عن سحر مخطط Commit-Reveal، دعونا نرى كيف يأتي الأمر إلى الحياة في عالم blockchain من خلال العقود الذكية. العقد الذكي يشبه العقد التقليدي، ولكنه رقمي وقابل للتنفيذ الذاتي. تخيل روبوتًا محايدًا يضمن تلقائيًا التزام جميع الأطراف باتفاقياتهم، ولديك فكرة العقد الذكي. إنها الأداة التي تأخذ الفكرة النظرية لـ Commit-Reveal وتجعلها عملية في المجال الرقمي. إن تنفيذ مخطط Commit-Reveal عبر عقد ذكي يشبه تصميم رقصة حيث تتبع كل خطوة إيقاعًا محددًا. دعونا نتصفح هذا الكوريغرافيا خطوة بخطوة.
ابدأ بإنشاء عقد ذكي على منصة blockchain مثل Ethereum. سيحتوي هذا العقد على قواعد المشاركة الخاصة بمخطط Commit-Reveal المشفر فيه.
صمم وظيفة الالتزام ضمن العقد الذكي. ستسمح هذه الوظيفة للمستخدمين بإرسال قيمهم المجزأة (مرحلة الالتزام) إلى العقد.
ومع التزام المستخدمين بقيمهم، سيخزن العقد الذكي هذه التجزئات بأمان على بلوكتشين، في انتظار مرحلة الكشف.
بعد ذلك، ضمن العقد الذكي، قم بإنشاء وظيفة الكشف. عندما يحين الوقت، ستسمح هذه الوظيفة للمستخدمين بالكشف عن قيمهم الأصلية.
عند الكشف، سيتحقق العقد الذكي من القيم التي تم الكشف عنها عن طريق تجزئتها ومقارنتها بالتجزئات التي تم الالتزام بها في البداية. في حالة تطابق كل شيء، يتم التحقق من صحة الكشف.
بمجرد جمع كل ما تم الكشف عنه والتحقق منه، يمكن للعقد الذكي تنفيذ الخطوات التالية تلقائيًا، سواء كان ذلك في فرز الأصوات أو تحديد الفائزين بالمزاد أو أي إجراء آخر خاص بالتطبيق.
قبل النشر، اختبر العقد الذكي بدقة للتأكد من أنه يعمل على النحو المنشود وأنه آمن من عمليات الاستغلال المحتملة. من خلال هذه الخطوات، ينظم العقد الذكي رقصة Commit-Reveal، مما يضمن عملية عادلة وشفافة.
//معرف ترخيص SPDX: معهد ماساتشوستس للتكنولوجيا
صلابة البراغما ^ 0.8.0؛
كشف الالتزام بالعقد {
التزام صارم {
bytes32 hash;
bool revealed;
}
رسم الخرائط (العنوان = > الالتزام) للالتزامات العامة؛
رسم الخرائط (العنوان = > uint256) القيم العامة المكشوفة؛
//تسمح وظيفة الالتزام للمستخدمين بإرسال قيمهم المجزأة
وظيفة الالتزام (bytes32 _hash) للجمهور {
require(commits[msg.sender].hash == 0, "Already committed");
commits[msg.sender].hash = _hash;
}
//تسمح وظيفة الكشف للمستخدمين بالكشف عن قيمهم الأصلية
كشف الوظيفة (uint256 _value، ذاكرة السلسلة _salt) للجمهور {
require(commits[msg.sender].revealed == false, "Already revealed");
require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes don't match");
commits[msg.sender].revealed = true;
revealedValues[msg.sender] = _value;
}
//مثال لوظيفة الإنهاء التي يمكنها فرز الأصوات
ترجع الدالة tallyVotes () طريقة العرض العام (uint256) {
الوحدة 256 مجموع الأصوات = 0؛
لـ (عنوان العنوان = العنوان (0)؛ إضافة سجل؛ العنوان (-1)؛ & add++) {
if (يرتكب [addr] .reaveled) {
totalVotes += revealedValues[addr];
}
}
إرجاع إجمالي الأصوات؛
}
//وظيفة لتدقيق حالة العقد (مجرد مثال، ليست عملية لمجموعات البيانات الكبيرة)
مراجعة الوظيفة () إرجاع العرض العام (تعيين الذاكرة (العنوان = > uint256)) {
return revealedValues;
}
}
الشرح:
هذا مثال مبسط للغاية ويفتقر إلى العديد من الاعتبارات العملية التي قد تحتاجها لنظام الإنتاج (مثل منع الفيضانات وتحسين استخدام الغاز وإدارة مجموعات البيانات الكبيرة وإضافة التحكم المناسب في الوصول). وظيفة الإنهاء، على وجه الخصوص، غير عملية بسبب التكرار على جميع العناوين الممكنة وستحتاج إلى تصميم مختلف في سيناريو العالم الحقيقي. تم تصميم هذا الرمز كنقطة بداية وأداة تعليمية، وليس حلاً جاهزًا للإنتاج.
المزادات عبر الإنترنت هي أحد التطبيقات المثالية لمخطط Commit-Reveal. لمنع الآخرين من استخدام مبالغ العطاء كرافعة مالية، يمكن للمشاركين تقديم عروضهم سراً خلال مرحلة الالتزام. عندما تنتهي فترة تقديم العطاءات، تبدأ مرحلة الكشف، مما يسمح للمشاركين بالكشف عن عروضهم. يتم تحديد أعلى عرض صالح، مما يضمن عملية مزاد عادلة وتنافسية.
يمكن أن تستفيد أنظمة التصويت بشكل كبير من مخطط Commit-Reveal، خاصة في السيناريوهات التي تتطلب إخفاء الهوية والصدق من الناخبين. في هذا الإعداد، أثناء الانتخابات أو أي حدث تصويت، يلتزم الناخبون بخياراتهم في مرحلة الالتزام دون الكشف عنها للآخرين، مما يضمن نزاهة وسرية الأصوات. بمجرد انتهاء فترة التصويت، تبدأ مرحلة الكشف، مما يسمح للناخبين بالكشف عن أصواتهم. ثم يتم فرز هذه الأصوات لتحديد النتيجة، وتعزيز عملية تصويت عادلة وشفافة.
في عقود العطاءات المختومة، يقدم مقدمو العطاءات عروضهم المخفية باستخدام مخطط Commit-Reveal. تضمن هذه العملية عدم معرفة أي من مقدمي العطاءات بمبالغ العطاءات الخاصة بالآخرين، مما يعزز المنافسة العادلة. بعد فترة تقديم العطاء، تحدث مرحلة الكشف، ويتم منح العقد لمقدم العطاء المؤهل الذي لديه أفضل عرض.
يجد مخطط Commit-Reveal تطبيقًا ممتعًا في سيناريوهات اللعبة مثل الإصدار الرقمي من Rock و Paper و Scissors. يلتزم اللاعبون باختياراتهم دون الكشف عنها، مما يضمن لعبة عادلة. بمجرد التزام كلا اللاعبين، تتبع مرحلة الكشف، وتحديد الفائز بناءً على الاختيارات التي تم اتخاذها.
في بيئات بلوكتشين، يعد التشغيل الأمامي مصدر قلق حيث يمكن للجهات الخبيثة الاستفادة من معرفة المعاملات المعلقة. يساعد مخطط Commit-Reveal في التخفيف من مثل هذه المشكلات عن طريق إخفاء تفاصيل المعاملة في البداية. بحلول الوقت الذي تأتي فيه مرحلة الكشف، يكون قد فات الأوان على الجهات الخبيثة التصرف بناءً على المعلومات، وبالتالي الحفاظ على سلامة المعاملات.
لقد تطورت البنى الأحدث مثل F3B لتقليل النفقات العامة المرتبطة بمخططات Commit-Reveal التقليدية. يقلل F3B من كتابة البيانات على بلوكتشين، مما يوفر بنية الالتزام والكشف بزمن انتقال منخفض. هذا التطور جدير بالملاحظة لأنه يشير إلى التحسين المستمر والابتكار في مخططات Commit-Reveal، مما يجعلها أكثر كفاءة لتطبيقات العالم الحقيقي.
في بيئات بلوكتشين، يمكن أن يمثل إنشاء أرقام عشوائية تحديًا بسبب الطبيعة الحتمية لبروتوكولات بلوكتشين. يعمل مخطط Commit-Reveal كبديل لامركزي لتوليد أرقام عشوائية على بلوكشين إيثريوم. على سبيل المثال، يستخدم Randao، وهو أحد تطبيقات Commit-Reveal RNG، خلاصات البيانات العامة ويحفز المشاركة في توليد الأرقام العشوائية.
مع اقتراب هذه النظرة المثيرة للاهتمام على مخطط Commit-Reveal من نهايتها، من المهم التفكير في كيفية مساعدة هذه الآلية البسيطة والقوية في بناء الثقة والانفتاح في تطبيقات blockchain. لقد ألقينا نظرة خاطفة على الكيفية التي يمكن بها لتقنية بلوكتشين أن تغير العديد من المجالات من خلال جعل المزادات عادلة، وأنظمة التصويت صادقة، وسيناريوهات اللعبة أكثر إبداعًا، من بين أمور أخرى، باستخدام مخطط Commit-Reveal. لا تنتهي الرحلة هنا؛ تقدم الطبيعة المتطورة باستمرار لتقنية blockchain آفاقًا جديدة للاستكشاف. مسلحًا بالمعرفة المكتسبة من خلال هذه الدورة، فأنت في وضع جيد للتعمق في بلوكتشين واستكشاف إمكانياتها اللانهائية والمساهمة في تشكيل مستقبل رقمي شفاف وعادل ولامركزي.
تقدم تقنية Blockchain أساليب مبتكرة لتحقيق الإجماع والأمان والخصوصية. أحد هذه الابتكارات هو مخطط الكشف عن الالتزام، وهو بروتوكول تشفير يعزز الخصوصية والأمان لمستخدمي بلوكتشين. أثناء التنقل في هذه الدورة التدريبية، ستكشف عن طبقات الثقة والشفافية والابتكار التي يجلبها مخطط Commit-Reveal إلى المجال الرقمي اللامركزي. تم تصميم كل وحدة في هذه المقالة بدقة لتوفير فهم شامل لمخطط Commit-Reveal وتنفيذه وتأثيره على مشهد blockchain.
في جوهرها، تشبه بلوكتشين دفتر الأستاذ الرقمي مع تطور. وعلى عكس دفاتر الأستاذ التقليدية، فإنها لا مركزية، مما يعني أنه لا يوجد كيان واحد يتحكم في بلوكتشين بالكامل، ويمكن لأي شخص يمثل جزءًا من شبكتها الوصول إليها. تحتوي كل «كتلة» في بلوكتشين على قائمة بالمعاملات. بمجرد ملء الكتلة بالمعاملات، يتم تشكيل كتلة جديدة، مما يؤدي إلى إنشاء «سلسلة» متصلة من الكتل - ومن هنا جاء اسم «blockchain».
تتمثل إحدى الميزات اللامعة لـ blockchain في تركيزها على الثقة والشفافية. يمكن لأي شخص في الشبكة الوصول إلى كل معاملة على blockchain ويمكنه عرضها. هذا الانفتاح يثبط عدم الأمانة ويعزز الثقة بين المجتمع. قد تتساءل، كيف يمكن تحقيق هذا المستوى من الشفافية؟ تكمن الإجابة في آليات الإجماع الفريدة ومبادئ التشفير، والتي سنتعمق فيها أثناء تقدمنا في هذه الدورة.
الآن بعد أن تعرفت على ماهية بلوكتشين، دعنا نقدم لها نكهة خاصة - مخطط Commit-Reveal. إنه مثل عرض سحري حيث يلتزم الساحر (المستخدم) أولاً بعمل معين دون الكشف عنه للجمهور (الشبكة) ثم يكشف النقاب عن الفعل في مرحلة لاحقة. ومن منظور بلوكتشين، فإن هذه العملية تتكون من خطوتين: «مرحلة الالتزام» و «مرحلة الكشف».
في مرحلة الالتزام، يقوم المستخدم بإرسال نسخة مجزأة من معلوماته إلى بلوكتشين. هذه النسخة المجزأة تشبه النسخة المختلطة من المعلومات الأصلية التي تخفي المحتوى الفعلي. يكمن سحر دالة التجزئة في أنها رحلة ذات اتجاه واحد؛ لا يمكنك فك رموز التجزئة إلى شكلها الأصلي، وبالتالي الحفاظ على سرية المعلومات في الوقت الحالي. ثم تأتي مرحلة الكشف، حيث يكشف المستخدم عن المعلومات الأصلية، والتي يتم التحقق منها بعد ذلك بواسطة الشبكة عن طريق تجزئتها مرة أخرى ومقارنتها بالهاش الأولي الملتزم به إذا تطابقت، فويلا! تؤكد الشبكة الكشف، وتكتمل الخدعة السحرية.
من خلال مخطط Commit-Reveal، يمكن لشبكات blockchain تحقيق مستوى جديد من المشاركة في تطبيقات مثل المزادات وأنظمة التصويت والمزيد، والتي سنستكشفها بالتفصيل في الوحدات القادمة.
بينما نبحر إلى أعماق مخطط Commit-Reveal، فإن محطتنا الأولى هي «مرحلة الالتزام». في هذه المرحلة، «يلتزم» المستخدمون بقيمة معينة، لكنهم يفعلون ذلك بطريقة تحافظ على سرية القيمة الفعلية. تخيل أن لديك رقمًا سريًا في ذهنك، ولكن بدلاً من إخبار الجميع بما هو عليه، يمكنك وضعه في صندوق مغلق وإظهاره للجميع. إنهم يعرفون أن لديك رقمًا، لكنهم لا يعرفون ما هو. هذا هو جوهر الالتزام في بلوكتشين!
الآن، كيف يمكننا إخفاء قيمتنا السرية؟ في عالم بلوكتشين، نستخدم شيئًا يسمى دالة التجزئة للقيام بذلك. وظيفة الهاش تشبه الخلاط السحري. تقوم بإدخال القيمة السرية الخاصة بك، وتقوم بإخراج نسخة مختلطة منها، تُعرف باسم الهاش. هذه التجزئة فريدة من نوعها؛ حتى التغيير الطفيف في القيمة الأصلية يخلق تجزئة مختلفة تمامًا. يكمن جمالها في أنها عملية أحادية الاتجاه - بمجرد تجزئة القيمة، لا توجد طريقة سهلة لمعرفة القيمة الأصلية من التجزئة. لذلك، عندما يلتزم المستخدمون بقيمتهم، فإن ما يفعلونه حقًا هو مشاركة تجزئة قيمتهم مع الجميع على بلوكتشين.
بعد التشويق المدمج في مرحلة الالتزام، حان وقت الكشف الكبير! مرحلة الكشف هي المكان الذي يتم فيه الكشف أخيرًا عن القيم الملتزمة لجميع المشاركين في blockchain. بالعودة إلى تشبيه الصندوق المقفل، هذه هي اللحظة التي يتم فيها فتح الصندوق، وسيتمكن الجميع من رؤية الرقم الذي قمت بإخفائه. في عالم بلوكتشين، يعد الكشف عملية مباشرة ولكنها حاسمة توفر الشفافية والإنصاف في مختلف التطبيقات.
عندما يكشف المستخدم عن قيمته الملتزم بها، يمكن للشبكة التحقق بسهولة من صحتها عن طريق تجزئة القيمة التي تم الكشف عنها ومقارنتها بالتجزئة الأصلية التي تمت مشاركتها خلال مرحلة الالتزام. في حالة تطابق علامات التجزئة، فهذا يؤكد أن المستخدم لم يغير رأيه في منتصف الطريق. تساعد عملية التحقق البسيطة والقوية هذه في الحفاظ على بيئة موثوقة حيث يلتزم الجميع بالقواعد. إنه مثل وجود حكم في لعبة، مما يضمن التزام جميع اللاعبين بالشروط المتفق عليها.
الآن بعد أن كشفنا عن سحر مخطط Commit-Reveal، دعونا نرى كيف يأتي الأمر إلى الحياة في عالم blockchain من خلال العقود الذكية. العقد الذكي يشبه العقد التقليدي، ولكنه رقمي وقابل للتنفيذ الذاتي. تخيل روبوتًا محايدًا يضمن تلقائيًا التزام جميع الأطراف باتفاقياتهم، ولديك فكرة العقد الذكي. إنها الأداة التي تأخذ الفكرة النظرية لـ Commit-Reveal وتجعلها عملية في المجال الرقمي. إن تنفيذ مخطط Commit-Reveal عبر عقد ذكي يشبه تصميم رقصة حيث تتبع كل خطوة إيقاعًا محددًا. دعونا نتصفح هذا الكوريغرافيا خطوة بخطوة.
ابدأ بإنشاء عقد ذكي على منصة blockchain مثل Ethereum. سيحتوي هذا العقد على قواعد المشاركة الخاصة بمخطط Commit-Reveal المشفر فيه.
صمم وظيفة الالتزام ضمن العقد الذكي. ستسمح هذه الوظيفة للمستخدمين بإرسال قيمهم المجزأة (مرحلة الالتزام) إلى العقد.
ومع التزام المستخدمين بقيمهم، سيخزن العقد الذكي هذه التجزئات بأمان على بلوكتشين، في انتظار مرحلة الكشف.
بعد ذلك، ضمن العقد الذكي، قم بإنشاء وظيفة الكشف. عندما يحين الوقت، ستسمح هذه الوظيفة للمستخدمين بالكشف عن قيمهم الأصلية.
عند الكشف، سيتحقق العقد الذكي من القيم التي تم الكشف عنها عن طريق تجزئتها ومقارنتها بالتجزئات التي تم الالتزام بها في البداية. في حالة تطابق كل شيء، يتم التحقق من صحة الكشف.
بمجرد جمع كل ما تم الكشف عنه والتحقق منه، يمكن للعقد الذكي تنفيذ الخطوات التالية تلقائيًا، سواء كان ذلك في فرز الأصوات أو تحديد الفائزين بالمزاد أو أي إجراء آخر خاص بالتطبيق.
قبل النشر، اختبر العقد الذكي بدقة للتأكد من أنه يعمل على النحو المنشود وأنه آمن من عمليات الاستغلال المحتملة. من خلال هذه الخطوات، ينظم العقد الذكي رقصة Commit-Reveal، مما يضمن عملية عادلة وشفافة.
//معرف ترخيص SPDX: معهد ماساتشوستس للتكنولوجيا
صلابة البراغما ^ 0.8.0؛
كشف الالتزام بالعقد {
التزام صارم {
bytes32 hash;
bool revealed;
}
رسم الخرائط (العنوان = > الالتزام) للالتزامات العامة؛
رسم الخرائط (العنوان = > uint256) القيم العامة المكشوفة؛
//تسمح وظيفة الالتزام للمستخدمين بإرسال قيمهم المجزأة
وظيفة الالتزام (bytes32 _hash) للجمهور {
require(commits[msg.sender].hash == 0, "Already committed");
commits[msg.sender].hash = _hash;
}
//تسمح وظيفة الكشف للمستخدمين بالكشف عن قيمهم الأصلية
كشف الوظيفة (uint256 _value، ذاكرة السلسلة _salt) للجمهور {
require(commits[msg.sender].revealed == false, "Already revealed");
require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes don't match");
commits[msg.sender].revealed = true;
revealedValues[msg.sender] = _value;
}
//مثال لوظيفة الإنهاء التي يمكنها فرز الأصوات
ترجع الدالة tallyVotes () طريقة العرض العام (uint256) {
الوحدة 256 مجموع الأصوات = 0؛
لـ (عنوان العنوان = العنوان (0)؛ إضافة سجل؛ العنوان (-1)؛ & add++) {
if (يرتكب [addr] .reaveled) {
totalVotes += revealedValues[addr];
}
}
إرجاع إجمالي الأصوات؛
}
//وظيفة لتدقيق حالة العقد (مجرد مثال، ليست عملية لمجموعات البيانات الكبيرة)
مراجعة الوظيفة () إرجاع العرض العام (تعيين الذاكرة (العنوان = > uint256)) {
return revealedValues;
}
}
الشرح:
هذا مثال مبسط للغاية ويفتقر إلى العديد من الاعتبارات العملية التي قد تحتاجها لنظام الإنتاج (مثل منع الفيضانات وتحسين استخدام الغاز وإدارة مجموعات البيانات الكبيرة وإضافة التحكم المناسب في الوصول). وظيفة الإنهاء، على وجه الخصوص، غير عملية بسبب التكرار على جميع العناوين الممكنة وستحتاج إلى تصميم مختلف في سيناريو العالم الحقيقي. تم تصميم هذا الرمز كنقطة بداية وأداة تعليمية، وليس حلاً جاهزًا للإنتاج.
المزادات عبر الإنترنت هي أحد التطبيقات المثالية لمخطط Commit-Reveal. لمنع الآخرين من استخدام مبالغ العطاء كرافعة مالية، يمكن للمشاركين تقديم عروضهم سراً خلال مرحلة الالتزام. عندما تنتهي فترة تقديم العطاءات، تبدأ مرحلة الكشف، مما يسمح للمشاركين بالكشف عن عروضهم. يتم تحديد أعلى عرض صالح، مما يضمن عملية مزاد عادلة وتنافسية.
يمكن أن تستفيد أنظمة التصويت بشكل كبير من مخطط Commit-Reveal، خاصة في السيناريوهات التي تتطلب إخفاء الهوية والصدق من الناخبين. في هذا الإعداد، أثناء الانتخابات أو أي حدث تصويت، يلتزم الناخبون بخياراتهم في مرحلة الالتزام دون الكشف عنها للآخرين، مما يضمن نزاهة وسرية الأصوات. بمجرد انتهاء فترة التصويت، تبدأ مرحلة الكشف، مما يسمح للناخبين بالكشف عن أصواتهم. ثم يتم فرز هذه الأصوات لتحديد النتيجة، وتعزيز عملية تصويت عادلة وشفافة.
في عقود العطاءات المختومة، يقدم مقدمو العطاءات عروضهم المخفية باستخدام مخطط Commit-Reveal. تضمن هذه العملية عدم معرفة أي من مقدمي العطاءات بمبالغ العطاءات الخاصة بالآخرين، مما يعزز المنافسة العادلة. بعد فترة تقديم العطاء، تحدث مرحلة الكشف، ويتم منح العقد لمقدم العطاء المؤهل الذي لديه أفضل عرض.
يجد مخطط Commit-Reveal تطبيقًا ممتعًا في سيناريوهات اللعبة مثل الإصدار الرقمي من Rock و Paper و Scissors. يلتزم اللاعبون باختياراتهم دون الكشف عنها، مما يضمن لعبة عادلة. بمجرد التزام كلا اللاعبين، تتبع مرحلة الكشف، وتحديد الفائز بناءً على الاختيارات التي تم اتخاذها.
في بيئات بلوكتشين، يعد التشغيل الأمامي مصدر قلق حيث يمكن للجهات الخبيثة الاستفادة من معرفة المعاملات المعلقة. يساعد مخطط Commit-Reveal في التخفيف من مثل هذه المشكلات عن طريق إخفاء تفاصيل المعاملة في البداية. بحلول الوقت الذي تأتي فيه مرحلة الكشف، يكون قد فات الأوان على الجهات الخبيثة التصرف بناءً على المعلومات، وبالتالي الحفاظ على سلامة المعاملات.
لقد تطورت البنى الأحدث مثل F3B لتقليل النفقات العامة المرتبطة بمخططات Commit-Reveal التقليدية. يقلل F3B من كتابة البيانات على بلوكتشين، مما يوفر بنية الالتزام والكشف بزمن انتقال منخفض. هذا التطور جدير بالملاحظة لأنه يشير إلى التحسين المستمر والابتكار في مخططات Commit-Reveal، مما يجعلها أكثر كفاءة لتطبيقات العالم الحقيقي.
في بيئات بلوكتشين، يمكن أن يمثل إنشاء أرقام عشوائية تحديًا بسبب الطبيعة الحتمية لبروتوكولات بلوكتشين. يعمل مخطط Commit-Reveal كبديل لامركزي لتوليد أرقام عشوائية على بلوكشين إيثريوم. على سبيل المثال، يستخدم Randao، وهو أحد تطبيقات Commit-Reveal RNG، خلاصات البيانات العامة ويحفز المشاركة في توليد الأرقام العشوائية.
مع اقتراب هذه النظرة المثيرة للاهتمام على مخطط Commit-Reveal من نهايتها، من المهم التفكير في كيفية مساعدة هذه الآلية البسيطة والقوية في بناء الثقة والانفتاح في تطبيقات blockchain. لقد ألقينا نظرة خاطفة على الكيفية التي يمكن بها لتقنية بلوكتشين أن تغير العديد من المجالات من خلال جعل المزادات عادلة، وأنظمة التصويت صادقة، وسيناريوهات اللعبة أكثر إبداعًا، من بين أمور أخرى، باستخدام مخطط Commit-Reveal. لا تنتهي الرحلة هنا؛ تقدم الطبيعة المتطورة باستمرار لتقنية blockchain آفاقًا جديدة للاستكشاف. مسلحًا بالمعرفة المكتسبة من خلال هذه الدورة، فأنت في وضع جيد للتعمق في بلوكتشين واستكشاف إمكانياتها اللانهائية والمساهمة في تشكيل مستقبل رقمي شفاف وعادل ولامركزي.