العقود الآجلة
وصول إلى مئات العقود الدائمة
TradFi
الذهب
منصّة واحدة للأصول التقليدية العالمية
الخیارات المتاحة
Hot
تداول خيارات الفانيلا على الطريقة الأوروبية
الحساب الموحد
زيادة كفاءة رأس المال إلى أقصى حد
التداول التجريبي
مقدمة حول تداول العقود الآجلة
استعد لتداول العقود الآجلة
أحداث مستقبلية
"انضم إلى الفعاليات لكسب المكافآت "
التداول التجريبي
استخدم الأموال الافتراضية لتجربة التداول بدون مخاطر
إطلاق
CandyDrop
اجمع الحلوى لتحصل على توزيعات مجانية.
منصة الإطلاق
-التخزين السريع، واربح رموزًا مميزة جديدة محتملة!
HODLer Airdrop
احتفظ بـ GT واحصل على توزيعات مجانية ضخمة مجانًا
منصة الإطلاق
كن من الأوائل في الانضمام إلى مشروع التوكن الكبير القادم
نقاط Alpha
تداول الأصول على السلسلة واكسب التوزيعات المجانية
نقاط العقود الآجلة
اكسب نقاط العقود الآجلة وطالب بمكافآت التوزيع المجاني
سلسلة كاملة لعبة 101: العقود المجمعة مسبقا
** ما هو العقد المجمع مسبقًا؟ **
تعد العقود المجمعة مسبقًا طريقة حل وسط مستخدمة في EVM لتوفير وظائف مكتبة أكثر تعقيدًا (تستخدم عادةً للعمليات المعقدة مثل التشفير والتجزئة) ، ويمكن أيضًا فهمها على أنها عقد خاص ، وهذه الوظائف ليست مناسبة لكتابة أكواد التشغيل. إنها مناسبة للعقود البسيطة ولكن يتم استدعاؤها بشكل متكرر ، أو العقود الثابتة منطقيًا ولكنها مكثفة من الناحية الحسابية. يتم تنفيذ العقود المجمعة مسبقًا باستخدام كود عميل العقدة ، ولأنها لا تتطلب أداة EVM ، فإنها تعمل بسرعة. كما أنها أقل تكلفة للمطور من استخدام الوظائف التي تعمل مباشرة في EVM.
كما يتضح من الكود التالي ، فإن وظيفة التشغيل في عقد evm.go لها فرعين: الفرع الأول هو إنشاء مثيل معلمة الفهرس من خلال الفهرس المترجم مسبقًا لتحديد العقد المترجم مسبقًا ، والفرع الثاني هو تحديد المترجم مسبقًا العقد إذا لم يكن عقدًا مترجمًا مسبقًا ، فسيتم استدعاء EVM.
// run يدير العقد المحدد ويهتم بتشغيل المجمعات المسبقة مع الرجوع لمترجم كود البايت. func run (evm * EVM، contract * Contract، input [] byte، readOnly bool) ([] بايت ، خطأ) { إذا كان Contract.CodeAddr! = لا شيء { ما قبل التحويل البرمجي: = مترجم مُسبق إذا كانت evm.ChainConfig (). IsByzantium (evm.BlockNumber) { تجميعات مسبقة = compompiledContractsByzantium } إذا كان p: = تجميعات مسبقة [* contract.CodeAddr] ؛ ع! = لا شيء { إرجاع RunPrecompiledContract (ع ، إدخال ، عقد) } } بالنسبة إلى _ ، مترجم: = مجموعة evm. مترجمون فوريون { إذا مترجم. CanRun (contract.Code) { إذا كان evm.interpreter! = مترجم { // تأكد من تراجع مؤشر المترجم الفوري // لقيمته الحالية عند العودة. تأجيل func (i Interpreter) { evm.interpreter = أنا } (evm.interpreter) evm.interpreter = مترجم } عودة المترجم. تشغيل (عقد ، إدخال ، للقراءة فقط) } } إرجاع لا شيء ، ErrNoComp CompatibleInterpreter }
إذا تم التعبير عنه بيانياً ، يكون المنطق المحدد كما يلي:
! [لعبة سلسلة كاملة 101: عقد مترجم مسبقًا] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-943390fce1-dd1a6f-1c6801)
إذن أين عنق الزجاجة في العقد المجمع مسبقًا؟
لدى Ethereum حاليًا ثمانية عقود مجمعة مسبقًا:
يمكنك أن ترى أن العقود المترجمة مسبقًا من الأول إلى الرابع توفر التوقيع الأساسي والتجزئة ووظائف التشفير الأخرى ، والعقد الخامس إلى الثامن يوفر عمليات منحنى ناقص ، والتي تتعلق بـ zk-snark.
لذا فإن السؤال هو ، لماذا لا يدعم التجميع المسبق لـ Ethereum سوى ثمانية عقود مترجمة مسبقًا؟ ألا تقلل العقود المجمعة مسبقًا من استهلاك الغاز؟ ولماذا لا يتم زرع ECS (إطار عمل لعبة السلسلة بأكملها) مباشرةً في عقد Ethereum المُجمع مسبقًا؟
في الواقع ، هناك ثلاثة أسباب رئيسية:
بادئ ذي بدء ، يجب دمج رمز العقد المترجم مسبقًا في رمز عقدة العميل ، مما يزيد من تعقيد العميل. ثانيًا ، قد تقوم عقد التحقق بتصفية حساب العقود المجمعة مسبقًا لأسباب أمنية ، لذلك يتم إكمال معظم طلبات العقود المجمعة مسبقًا بواسطة العقد الكاملة. حاليًا ، لا يوجد سوى 4000-6000 عقد إيثيريوم كاملة في العالم ، وهناك 500000 عملية تحقق العقد ، والتي هي في الواقع أكثر مركزية بكثير من العقود غير المجمعة مسبقًا.
يتطلب دعم العقود المترجمة مسبقًا عملية EIP ، على سبيل المثال: يضيف EIP-196 عقدين تم تجميعهما مسبقًا ، ECADD () و ECMUL () ، على منحنى alt \ _bn128. يضيف EIP-197 وظيفة الاقتران على منحنى alt \ _bn128. في الأساس ، هو إتاحة الخصوصية على Ethereum للحصول على الدعم ، وعملية EIP بأكملها طويلة وأنيقة ، ولا يعد انتظار مرور EIP مشكلة واقعية.
هذا ليس بالكثير لشرح ، إنه بديهي للغاية.
ما هو الدور الذي يلعبه العقد المترجم مسبقًا في لعبة السلسلة بأكملها؟
تتخطى العقود المجمعة مسبقًا EVM ويتم تنفيذها مباشرة من خلال العقد ، مما قد يؤدي إلى تحسين كفاءة الحوسبة ، ولكن في نفس الوقت تقلل من درجة اللامركزية في السلسلة بأكملها. يمكن أن يؤدي التجميع المسبق للمنطق الأساسي للألعاب المستخدمة بشكل متكرر إلى تحسين أداء هذه الألعاب. أنواع الألعاب المختلفة لها منطق رئيسي مختلف. لذلك ، بالنسبة للسلسلة المخصصة لنوع معين من الألعاب ، يمكن أن يؤدي تصميمها المجمع مسبقًا إلى تحسين احتياجات هذا النوع من الألعاب. أثناء عملية تكرار اللعبة ، سيتم تحسين مجموعة العقود المجمعة مسبقًا الأكثر كفاءة تدريجيًا.