طويل القصة القصيرة: تقترب ترقية كانكون ، وتشمل هذه الترقية بشكل أساسي تغييرات الطبقة التنفيذية المقترحة من قبل EIPs الستة ، EIP-1153 و EIP-4788 و EIP-4844 و EIP-5656 و EIP-6780 و EIP-7516. EIP-4844 هو بطل الرواية لهذه الترقية ، والتي تهدف إلى تحسين قابلية التوسع في إثيريوم ، اسقاط كلفة العملية L2 ، وزيادة سرعة المعاملات. تم الانتهاء من ترقية كانكون في 17 يناير و 30 يناير و 7 فبراير في إثيريوم Testnet Goerli و Sepolia و Holesky ، ومن المقرر تفعيلها في 13 مارس في إثيريوم الشبكة الرئيسية. قبل الترقية ، قامت Salus بتجميع اعتبارات أمنية مهمة لهذه الترقية للمطورين للتحقق منها بأنفسهم.
مراجعة مقترح برنامج EIP
الاعتبارات الأمنية المفصح عنها رسميا
العقد الذكي المخاطر المرتبطة بها
طالع المزيد
يقدم EIP-1153 رمز العملية تخزين سريعة الزوال ، والتي تستخدم رمز العملية لحالة التشغيل وتتصرف بشكل مماثل تقريبا للتخزين ، ولكن يتم تجاهلها بعد اكتمال كل معاملة. هذا يعني أن التخزين المؤقت لا يلغي تسلسل القيم من التخزين ولا يقوم بتسلسل القيم إلى التخزين ، لذا فإن التخزين المؤقت أقل تكلفة لأنه لا يتطلب الوصول إلى القرص. مع اثنين من رموز التشغيل الجديدة ، TLOAD و TSTORE (حيث “T” تعني “مؤقت”) ، يمكن العقد الذكي الوصول إلى التخزين المؤقت. يهدف هذا الاقتراح إلى توفير حل مخصص وفعال للتواصل بين أطر التنفيذ المتداخلة طويل في تنفيذ معاملات إثيريوم.
يهدف EIP-4788 إلى تعريض جذور شجرة التجزئة لكتل سلسلة المنارة إلى EVM للسماح بالوصول إلى هذه الجذور داخل العقد الذكي. يوفر القيام بذلك وصولا غير موثوق به إلى حالة الطبقة الإجماع ، مما يدعم حالات استخدام طويل مثل تجمعات التخزين ، وهياكل استعادة ، وجسور العقد الذكي ، وتخفيف MEV ، والمزيد. يخزن الاقتراح هذه الجذور من خلال العقد الذكي ويستخدم مخزن مؤقت حلقي للحد من استهلاك التخزين ، مما يضمن أن كل كتلة تنفيذ يحتاج فقط إلى قصير ثابت لتمثيل هذه المعلومات.
يقدم EIP-4844 تنسيقا جديدا للمعاملات يسمى “معاملات Blob مشاركة” مصمم لتوسيع نطاق توفر بيانات إثيريوم بطريقة بسيطة ومتوافقة مع المستقبل. يقوم هذا الاقتراح بذلك عن طريق تقديم “معاملات تحمل blob” التي تحتوي على كمية كبيرة من البيانات التي لا يمكن الوصول إليها عن طريق تنفيذ EVM ، ولكن يمكنها الوصول إلى وعودها. هذا التنسيق متوافق تماما مع التنسيق المستخدم من قبل مشاركة الكامل في المستقبل ، مما يوفر راحة مؤقتة ولكنها مهمة للتحجيم المتداول.
يقدم EIP-5656 تعليمة EVM جديدة ، MCOPY ، للنسخ المتماثل الفعال لمناطق الذاكرة. يهدف هذا الاقتراح إلى اسقاط النفقات العامة لأداء عمليات نسخ الذاكرة على EVM من خلال تمكين نسخ البيانات مباشرة بين الذاكرة عبر تعليمات MCOPY. يسمح MCOPY بتداخل العنوان العنوان المصدر والهدف ، وهو مصمم مع مراعاة التوافق مع الإصدارات السابقة ، وهو مصمم لتحسين كفاءة التنفيذ في سيناريوهات طويل ، بما في ذلك إنشاء بنية البيانات ، والوصول الفعال إلى الكائنات الموجودة في الذاكرة ، والنسخ المتماثل.
يعدل EIP-6780 وظائف رمز العملية التدمير الذاتي. في هذا الاقتراح ، ستقوم SELFDESTRUCT فقط بحذف الحساب ونقل جميع ايثر في نفس المعاملة التي تم إنشاء العقد بها ، باستثناء أنه عند تنفيذ SELFDESTRUCT ، لن يتم حذف العقد ، ولكن ببساطة ستنقل جميع ايثر إلى الوجهة المحددة. يهدف هذا التغيير إلى استيعاب استخدام أشجار Verkle في المستقبل ، ويهدف إلى تبسيط تطبيقات EVM وتقليل تعقيد تغييرات الحالة ، مع الاحتفاظ ببعض السيناريوهات الشائعة التي يستخدمها SELFDESTRUCT.
يقدم EIP-7516 تعليمة EVM جديدة ، BLOBBASEFEE ، والتي ترجع قيمة الرسوم الأساسية blob في تنفيذ الكتلة الحالي. يشبه هذا التوجيه رمز العملية BASEFEE في EIP-3198، باستثناء أنه يرجع الرسوم الأساسية للنقطة كما هو محدد في EIP-4844. تسمح هذه الميزة للعقد بالنظر برمجيا في سعر الغاز لبيانات blob ، على سبيل المثال ، من خلال السماح لعقود التجميع بحساب تكلفة استخدام بيانات blob بشكل موثوق ، أو لتنفيذ العقود الآجلة لغاز blob بناء على ذلك لتخفيف تكاليف بيانات blob.
يجب على مطوري العقد الذكي فهم دورة حياة متغيرات التخزين العابرة قبل استخدامها. نظرا لأنه يتم مسح التخزين المؤقت تلقائيا في نهاية المعاملة ، فقد يحاول مطورو العقد الذكي تجنب مسح الفتحات أثناء المكالمات لتوفير الغاز. ومع ذلك ، قد يمنع هذا المزيد من التفاعل مع العقد في نفس المعاملة (على سبيل المثال ، في حالة قفل العائد) أو يتسبب في أخطاء أخرى ، لذلك يجب العقد الذكي المطورين توخي الحذر للحفاظ على القيم غير الصفرية فقط عند حجز الفتحة المؤقتة. مخصص للاستخدام من قبل المكالمات المستقبلية في نفس المعاملة. SSTORE خلاف ذلك ، تتصرف رموز التشغيل هذه تماما مثل و SLOAD ، لذلك تنطبق جميع الاعتبارات الأمنية الشائعة ، خاصة عندما يتعلق الأمر بمخاطر إعادة الدخول.
قد يحاول مطورو العقد الذكي أيضا استخدام التخزين العابر كبديل لتعيين الذاكرة. يجب أن يدركوا أن التخزين المؤقت لا يتم تجاهله مثل الذاكرة عند عودة المكالمة أو استئنافها ، ويجب إعطاء الأولوية للذاكرة في حالات الاستخدام هذه لتجنب السلوك غير المتوقع عند إعادة الدخول في نفس المعاملة. التخزين العابر على الذاكرة مكلف بالضرورة ، مما كان يجب أن يمنع نمط الاستخدام هذا. يمكن تحقيق الاستخدام طويل الكبير لرسم الخرائط في الذاكرة بشكل أفضل من خلال قوائم الإدخال المصنفة بالمفاتيح ، ونادرا ما يكون التعيين في الذاكرة مطلوبا في العقد الذكي (أي أن المؤلف يعرف أنه لا توجد حالات استخدام معروفة في الإنتاج).
يزيد EIP هذا من متطلبات النطاق الترددي بحوالي 0.75 ميجابايت بحد أقصى طويل لكل كتلة منارة. هذا أكبر بنسبة 40٪ من الحد الأقصى النظري لحجم كتلة اليوم (30 مليون غاز / 16 غاز لكل بايت بيانات مكالمة = 1.875 مليون بايت) ، لذلك لا يزيد بشكل كبير من عرض النطاق الترددي الأسوأ. بعد الاندماج ، يكون الوقت كتلة ثابتا وليس توزيعا بواسون غير متوقع ، مما يوفر فترة زمنية مضمونة لنشر كتلة الكبيرة.
حتى مع بيانات المكالمات المحدودة ، فإن الحمل المستمر ل EIP هذا أقل طويل من البدائل التي يمكن أن اسقاط تكلفة بيانات المكالمة لأنك لست بحاجة إلى تخزين الكائنات الثنائية كبيرة الحجم طالما كان تحميل التنفيذ. هذا يجعل من الممكن تنفيذ سياسة يجب الاحتفاظ بهذه النقط لفترة زمنية معينة على الأقل. القيمة المحددة المحددة هي حقبة MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS ، والتي تبلغ حوالي 18 يوما ، مع زمن انتقال يبلغ طويل مقارنة بالتناوب الموصى به (ولكن لم يتم تنفيذه بعد) لمدة عام واحد لسجل حمولة التنفيذ.
يجب أن يدرك العملاء أن تطبيقاتهم لا تستخدم مخازن مؤقتة وسيطة (على سبيل المثال ، لا تستخدم وظيفة C stdlibmemmove مخازن مؤقتة) ، لأن هذا متجه محتمل لرفض الخدمة (DoS). طويل وظائف المكتبة المضمنة / القياسية للغة لنقل البايتات لها خصائص الأداء الصحيحة هنا.
بخلاف ذلك ، فإن تحليل هجمات رفض الخدمة (DoS) واستنفاد الذاكرة هو نفسه رمز العملية الأخرى للمس الذاكرة ، لأن توسيع الذاكرة يتبع نفس قواعد التسعير.
سيتم اختراق تطبيقات التدمير الذاتي التالية ، ولم تعد التطبيقات التي تستخدمها بهذه الطريقة آمنة:
يتم استخدام WhereCREATE 2 لإعادة نشر العقد في نفس الموقع بحيث يكون العقد قابلا للترقية. لم تعد هذه الميزة مدعومة ويجب استخدام ERC-2535 أو نوع آخر من عقود الوكيل بدلا من ذلك.
إذا كان العقد يعتمد على حرق ايثر عن طريق أخذ عقد التدمير الذاتي كمستفيد ، فلن يتم إنشاء العقد في نفس المعاملة.
ضع في اعتبارك سيناريوهين باستخدام رمز العملية TLOAD و TSTORE:
الخطر 1 :
بالمقارنة مع SSTORE و SLOAD التقليديين ، فإن التخزين العابر الجديد يغير بشكل أساسي فترة تخزين البيانات ، ويتم قراءة البيانات المخزنة بواسطة tstore من خلال التحميل ، وسيتم إصدار البيانات بعد تنفيذ المعاملة ، بدلا من كتابتها في العقد حيث يتم تسجيل sstore بشكل دائم. يجب على المطورين التعرف على ميزات رمز العملية عند استخدام رمز العملية ، وذلك لتجنب الخسائر الناجمة عن الاستخدام غير الصحيح للبيانات التي لا يمكن كتابتها في العقد بشكل صحيح. بالإضافة إلى ذلك ، تعد بيانات tstore متغيرا خاصا ولا يمكن الوصول إليها إلا من خلال العقد نفسه. إذا كنت ترغب في استخدام البيانات خارجيا ، فيمكنك فقط تمريرها كمعلمة أو تنظيمها في متغير stroage عام.
الخطر 2 :
هناك خطر محتمل آخر وهو أنه إذا لم يقم مطورو العقد الذكي بإدارة دورة حياة متغيرات التخزين العابرة بشكل صحيح ، فقد يؤدي ذلك إلى إزالة البيانات أو الاحتفاظ بها بشكل غير صحيح في أوقات لا داعي لها. إذا كان العقد يتوقع استخدام البيانات المخزنة في التخزين العابر في المكالمات اللاحقة للمعاملة، ولكنه فشل في إدارة دورة حياة تلك البيانات بشكل صحيح، فقد تتم مشاركة البيانات عن طريق الخطأ أو فقدها بين مكالمات مختلفة، مما يؤدي إلى أخطاء منطقية أو انتهاكات أمنية. بالنظر إلى أن بيانات الرصيد أو البدل لمشروع عملة مماثل لا يتم تخزينها بشكل صحيح ، فسيؤدي ذلك إلى أخطاء في منطق العقد ويسبب خسائر. أو سيؤدي استخدام هذا رمز العملية عند تحديد العنوان المالك إلى عدم تسجيل العنوان المميز بشكل صحيح ، وبالتالي فقدان تعديل المعلمات المهمة للعقد.
ضع في اعتبارك العقد الذكي يستخدم التخزين العابر لتسجيل أسعار المعاملات مؤقتا على منصة تداول الأصول الرقمية. يقوم العقد بتحديث السعر عند اكتمال كل معاملة ويسمح للمستخدمين بالاستعلام عن أحدث سعر لفترة قصيرة من الزمن. ومع ذلك ، إذا كان تصميم العقد لا يأخذ في الاعتبار حقيقة أن التخزين العابر يتم مسحه تلقائيا في نهاية الصفقة ، فقد يحصل المستخدم على سعر خاطئ أو قديم في الفترة بين نهاية صفقة واحدة وبداية الصفقة التالية. قد لا يؤدي هذا إلى اتخاذ المستخدمين قرارات بناء على معلومات مضللة فحسب ، بل يمكن أيضا استغلالها بشكل ضار ، مما يؤثر على سمعة النظام الأساسي وأمن أصول المستخدمين.
يغير الاقتراح السلوك السابق رمز العملية التدمير الذاتي ، وليس تدمير العقد ، ونقل الرمز المميز فقط ، وسيتم تدمير العقد الذي تم إنشاؤه في نفس المعاملة مثل التدمير الذاتي فقط. تأثير EIP هذا كبير نسبيا.
أعد نشر العقد في نفس العنوان مع إنشاء 2 لترقية العقد. لم تعد هذه الميزة مدعومة ويجب استخدام ERC-2535 أو نوع آخر من عقود الوكيل بدلا من ذلك. (قد يؤثر ذلك على أمان العقود على السلسلة التي تستخدم create 2 لتنفيذ العقود القابلة للتطوير)
تسمح عملية SELFDESTRUCT في العقد الذكي بتدمير العقد ويتم إرسال رصيد العقد إلى العنوان الوجهة المحددة. في هذه الحالة ، يستخدم العقد SELFDESTRUCT لحرق ايثر ويرسل ايثر المحروقة إلى العقد. ومع ذلك ، يمكن أن يكون العقد فقط عقدا تم إنشاؤه في نفس المعاملة (عقد تم إنشاؤه بواسطة هذا العقد أو عقد آخر في نفس المعاملة). خلاف ذلك ، سيتم نقل ايثر فقط دون إتلاف العقد (على سبيل المثال ، التدمير الذاتي والمستفيد هو عقد تدمير ذاتي ، والذي لن يغير شيئا). سيؤثر هذا على أي عقود تعتمد على التدمير الذاتي لعمليات السحب أو العمليات الأخرى.
يعمل رمز الغاز المشابه ل CHI عملة 1 بوصة: احتفظ بالإزاحة ، وقم دائما بتنفيذ CREATE 2 أو SELFDESTRUCT عند هذا الإزاحة. بعد هذا التحديث، إذا لم يتم بالفعل تدمير العقد مع الإزاحة الحالية بشكل صحيح، فلن يتمكن CREATE 2 اللاحق من نشر العقد بنجاح.
لن يؤدي تنفيذ هذا الاقتراح إلى هجوم مباشر على العقد ، ولكنه سيضر بالمنطق الطبيعي للعقد الأصلي المنشور الذي يعتمد على عملية التدمير الذاتي (لن يتأثر العقد الذي يعتمد فقط على التدمير الذاتي لتحويل الأموال ، وإذا كانت العملية اللاحقة تتطلب حذف عقد التدمير الذاتي ، فسوف يتأثر) ، مما يؤدي إلى عدم عمل العقد على النحو المنشود ، وفقط للعقد والمستخدمين ، فقد يؤدي ذلك إلى إضراب العقد وفقدان الأموال وأضرار أخرى (مثل الاستخدام الأصلي ل Create 2). نشر عقد جديد في العنوان الأصلي، ولم يعد من الممكن نشر العقد الذي يدمر العقد الأصلي للترقية بنجاح). على المدى الطويل ، يمكن أن تؤدي القدرة على تعديل رمز العملية إلى مشاكل المركزية.
على سبيل المثال، هناك مخزن عقد مخزن موجود لتحديثه:
وسيؤدي تحديث كانكون إلى زيادة تعزيز الميزة التنافسية لشركة إثيريوم. ومع ذلك ، تشكل هذه الترقية خطرا على التغييرات التي تطرأ على طبقة العقد الذكي الأساسية ، مما سيؤثر على التشغيل الآمن ل DApps الحالية. في عملية تطوير العقد الذكي ، يجب أيضا إيلاء اهتمام وثيق لهذه التغييرات والمخاطر التي قد تنشأ. يمكنك الاتصال ب Salus لفحص المخاطر أو دعم التدقيق ، أو يمكنك قراءة المزيد لفهم التغييرات.
مواصفات ترقية شبكة كانكون
EIP-1153
EIP-4788
EIP-4844
EIP-5656
EIP-6780
EIP-7516
عقد ميتابود
عقد غازتوكين 2