
المؤلف: Vitalik ، مؤسس Ethereum ؛
في Ethereum ، حتى وقت قريب ، تكون الموارد محدودة ، ويتم استخدام سعر مورد واحد يسمى “الغاز”.الغاز هو كمية “الحساب” المطلوبة لمعاملة معينة أو كتلة.يدمج الغاز أنواعًا مختلفة من “الجهد” معًا.
-
الحساب الأصلي (مثل إضافة ، مضاعفة)
-
اقرأ واكتب إلى Ethereum Storage (مثل Sstore ، Sloadeth Transfer)
-
عرض النطاق الترددي للبيانات
-
تكلفة توليد ZK-Snark لتوليد الكتل
على سبيل المثال ، المعاملة التي أرسلتها (https://etherscan.io/tx/0xc5195b64cc333b8098d71fbd032e05d4545917e3be8d123ab06e1ad7998e)))))))))> “>ما مجموعه 47،085 غاز تنفق.هذه “التكلفة الأساسية” مقسمة إلى (I) 21000 غاز.تتناسب رسوم المعاملة التي يجب على المستخدمين دفعها مباشرة مع الغاز الذي تستهلكه المعاملة.> “>يمكن أن تحتوي الكتلة على ما يصل إلى 30 مليون غاز ، ويتم ضبط سعر الغاز بشكل مستمر من خلال آلية EIP-1559 المستهدفة لضمان أن الكتلة تحتوي على 15 مليون غاز.
هذه الطريقة لها كفاءة رئيسية: نظرًا لأن كل شيء يتم دمجه في مورد افتراضي ، فإنه يؤدي إلى تصميم بسيط للغاية في السوق.من السهل تقليل المعاملات المحسنة إلى الحد الأدنى من التكاليف.
لكن> “>هناك أيضًا مشكلة كبيرة غير فعالة في هذه الطريقة: إنها تعتبر موارد مختلفة كتحويل متبادل ، ولكن الحد الأقصى الفعلي الذي يمكن للشبكة معالجته ليس هو الحال.طريقة واحدة لفهم هذه المشكلة هي رؤية هذه الصورة:
يحد الغاز القيود التالية: x1*البيانات+caction & lt ؛عادة ما تكون قيود الأمان الأساسية أقرب إلى MAX (X1*بيانات X2*) & lt ؛يؤدي هذا الاختلاف إلى تقييد الغاز الاستبعاد غير الضروري للكتل الأمنية الفعلية ، أو قبول الكتل الفعلية غير الآمنة ، أو مزيج معين من الاثنين.
إذا كان هناك مورد له قيود أمان مختلفة ، فإن الغاز الأبعاد قد يقلل من إنتاجية ما يصل إلى عامل واحد؟لذلك ، كان الناس مهتمين منذ فترة طويلة بمفهوم الغاز متعدد الأبعاد لفترة طويلة من خلال EIP-4844 ، قمنا بالفعل بتشغيل غاز متعدد الأبعاد على Ethereum اليوم.تناقش هذه المقالة فوائد هذه الطريقة وآفاق مزيد من تعزيز هذه الطريقة.
النقش: غاز متعدد الأبعاد في Dencun
في وقت سابق من هذا العام ، كان متوسط حجم كتلة Ethereum 150 كيلو بايت.جزء كبير من هذا الحجم هو بيانات Rollup: لأسباب أمنية ، يقوم بروتوكول الطبقة الثانية بتخزين البيانات الموجودة على السلسلة.هذه البيانات مكلفة للغاية: على الرغم من أن تكلفة معاملات Rollup أقل من 5 إلى 10 مرات من المعاملات المقابلة على Ethereum L1 ، إلا أن هذه التكلفة لا تزال مرتفعة للغاية بالنسبة للعديد من الحالات.
لماذا لا تقلل من تكلفة CallData (حاليًا 16 غازًا لكل بايت غير عدد و 4 غاز لكل عدد من البايتات) ، بحيث يكون Rollup أرخص؟لقد فعلنا هذا من قبل ، ويمكننا القيام بذلك مرة أخرى.الجواب هنا هو: حجم الكتلة في أسوأ الحالات هو 300،000/16 = 1875000 بايت غير عدد ، ومن المستحيل تقريبًا التعامل مع الشبكة مع كتلة هذا الحجم.إذا تم تخفيض التكلفة بمقدار 4 مرات ، فسيتم زيادة الحد الأقصى للسعة إلى 7.5 ميغابايت ، مما سيؤدي إلى مخاطر أمنية ضخمة.
يتم حل هذه المشكلة أخيرًا من خلال إدخال مساحة بيانات منفصلة (تسمى “blob”) من خلال إدخال مساحة بيانات منفصلة سهلة في كل كتلة.هذان الموارد لهما أسعار مختلفة وقيود مختلفة: بعد شوكة Dencun ، يمكن أن تشمل كتلة Ethereum (1) 30 مليون غاز ، (2) 6 نقطة.يتمتع كل من الموارد بسعر منفصل.
نتيجة لذلك ، تم تخفيض تكلفة Rollups بمقدار 100 مرة ، وزاد حجم المعاملة على Rollups بأكثر من 3 مرات ، وزاد حجم الكتلة النظري بشكل طفيف فقط: من حوالي 1.9 ميجابايت إلى حوالي 2.6 ميجابايت.
يتم توفير رسوم تداول Rollup بواسطة CrowderePie.xyz.حدثت شركة Dencun Fork في 13 مارس 2024 ، وقدم Blob متعددة الأبعاد.
غاز متعدد الأبعاد وعميل عديمة الجنسية
في المستقبل القريب ، ستحدث أيضًا مشاكل مماثلة مع شهادات التخزين دون عميل خالٍ من الولاية.العميل عديمة الجنسية هو نوع جديد من العميل يمكنه التحقق من blockchain دون الحاجة إلى تخزين الكثير أو أي بيانات محليًا.يقوم العميل عديمي الجنسية بتنفيذ هذا من خلال قبول إثبات جزء Ethereum المحدد من المعاملة في الكتلة.
يتلقى العميل الخالي من الحالة كتلة ويثبت إثبات القيمة الحالية للجزء المحدد من الحالة (مثل رصيد الحساب ، والرمز ، والتخزين) المشاركة في تنفيذ تنفيذ الكتلة.هذا يسمح للعقد بالتحقق من الكتلة دون أي تخزين نفسه.
يتطلب الأمر 2100-2600 غاز لتخزين القراءة في وقت واحد ، اعتمادًا على نوع القراءة ، وتكون تكلفة كتابة التخزين أعلى.في المتوسط ، ستنفذ الكتلة حوالي 1000 تخزين وقراءة (بما في ذلك التحقق من رصيد ETH ، SSTORE CALL SLOAD ، قراءة رمز العقد وغيرها من العمليات).ومع ذلك ، فإن القيمة القصوى النظرية هي 30000000/2100 = 14285 قراءة.يتناسب حمولة عرض النطاق الترددي لعميل خالي من الحالة مع الرقم.
اليوم ، يتم نقل الخطة من شجرة Merkle Patricia إلى شجرة Verkle من خلال تصميم شجرة State of Ethereum لدعم العميل عديمي الجنسية.ومع ذلك ، فإن شجرة Verkle لا تحتوي على مقاومة كمية ، وهي ليست الخيار الأفضل لنظام إثبات Stark المحدث.لذلك ، يهتم الكثير من الناس بدعم عميل خالٍ من الدولة من خلال شجرة Merkle المزدوجة وتخطي Verkle تمامًا ، أو بعد انتقالات Verkle لبضع سنوات ، بمجرد أن يصبح الصارخ أكثر نضجًا ، سيتم ترقيته.
تتمتع Stark of the Binary Hash Tree بالكثير من المزايا ، لكن لديهم ضعفًا رئيسيًا يستغرق وقتًا طويلاً في توليده: على الرغم من أن شجرة Verkle يمكن أن تثبت أن أكثر من 100000 قيمة في الثانية ، إلا أن الصارخ القائم على التجزئة عادة عادةً ما يكون Stark القائم على التجزئة فقط هو فقط فقط لا يمكنه إثبات آلاف التجزئة في الثانية ، ويثبت أن كل قيمة تتطلب “فرع” تحتوي على العديد من قيم التجزئة.
بالنظر إلى أنه من خلال نظام الشهادات المحسّنة الفائقة (مثل Binius و Plonky3) وتجزئة خاصة (مثل Mark-Mark-32) ، من المحتمل أن نكون في فترة من الوقت في أقل من ثانية. ليس 14،285.كل كتلة ليست مشكلة ، ولكن أسوأ حالة (قد يتم نشرها من قبل مهاجم) سوف تدمر الشبكة.
تتمثل الطريقة “الافتراضية” التي نتعامل معها مع هذا الموقف في إعادة السعر: اجعل التخزين قراءة أكثر تكلفة ، وذلك لتقليل القيمة القصوى لكل كتلة إلى مستوى أكثر أمانًا.ومع ذلك ، فعلنا ذلك عدة مرات.> “>طريقة أفضل هي الغاز متعدد الأبعاد: قيود ورسوم الوصول إلى التخزين ، على التوالي ، الحفاظ على متوسط استخدام 1000 وصول للتخزين في كل كتلة ، ولكن حدد الحد من كل كتلة إلى 2000 مرة.
غاز متعدد الأبعاد أكثر شيوعا
مورد آخر يستحق النظر فيه هو نمو الدولة: زيادة تشغيل حالة Ethereum ، وسوف تحتاج العقدة بأكملها إلى عقد حالة كاملة.تفرد نمو الدولة هو أن سبب تقييد نمو الدولة هو الاستخدام المستمر على المدى الطويل ، وليس الذروة.لذلك ، قد تكون إضافة بُعد غاز منفصل لزيادة زيادة حجم الدولة (على سبيل المثال ، من الصفر إلى غير الصفر ، إنشاء العقد) ذات قيمة ، لكن الهدف مختلف: يمكننا تحديد سعر العائم لمتوسط الاستخدام المحدد ، ولكن لم يتم تعيينها على الإطلاق.
هذا يوضح واحدة من الخصائص القوية لغاز الفيتامينات المتعددة: يسمح لنا بطرح الأسئلة التالية: ((> “>ط) ما هو متوسط الاستخدام المثالي لكل مورد والحد الأقصى لاستخدام الأمان (2) كل كتلة.لا نضع سعر الغاز بناءً على أقصى قيمة لكل كتلة ، ولكنه يحتوي على معلمات 2؟
يمكن معالجة الحالات الأكثر تعقيدًا ، مثل بعض الاعتبارات الأمنية المتراكمة لموارد ، عن طريق جعل رمز التشغيل أو المورد تكلف عدد معين من الغاز (على سبيل المثال ، من الصفر إلى غير الصدر قد يكلف 5000 غاز دليل عالي الجنسية و 20000 غاز التخزين).
الحد الأقصى لقيمة كل معاملة: الطريقة الأضعف ولكن أبسط للحصول على الغاز متعدد الأبعاد
دع X1 هي تكلفة البيانات ، و X2 هي تكلفة الغاز المحسوبة.
في الخطة الجديدة ، نحدد تكلفة الغاز للمعاملة على النحو التالي: الغاز = أقصى (بيانات x1*، حساب x2*)
بمعنى آخر ، لا يتم شحن المعاملة بناءً على حساب Data Plus ، ولكن يتم شحنها أكثر بناءً على الموارد للموارد اللتين تستهلكها.يمكن أن يتوسع هذا بسهولة لتغطية المزيد من الأبعاد (على سبيل المثال Max (… ، X3*Storage_Access)).
يجب أن يكون من السهل معرفة كيف يزيد هذا الإنتاجية مع ضمان السلامة.لا يزال الحد الأقصى لمقدار البيانات في كتلة هو gaslimit/x1 ، وهو بالضبط نفس محلول الغاز الأبعاد.بالطريقة نفسها ، فإن الحد الأقصى لنظرية حساب الحساب هو Gaslimi/x2 ، وهو بالضبط نفس محلول الغاز الأبعاد مرة أخرى.ومع ذلك ، سيتم تقليل تكلفة أي بيانات يتم استهلاكها والمعاملات المحسوبة.
هذا يتعلق بالمخطط المقترح في EIP-7623 المقترح لتقليل الحد الأقصى لحجم الكتلة وزيادة عدد النقطة.الآلية الدقيقة في EIP-7623 أكثر تعقيدًا قليلاً: فهي تحافظ على سعر CallData الحالي البالغ 16 غازًا ، ولكنه يضيف “سعر الاحتياطي” من 48 غازًا لكل بايت ؛لذلك ، يقلل EIP-7623 من أقصى بيانات اتصال المعاملة في الكتلة من حوالي 1.9 ميجابايت إلى حوالي 0.6 ميجابايت ، مع الحفاظ على تكلفة معظم التطبيقات دون تغيير.ميزة هذه الطريقة هي أنها تغيرت قليلاً مقارنةً بمحلول الغاز الحالي ، لذلك من السهل جدًا تحقيقه.
له عيوبان:
1. حتى لو كانت جميع المعاملات الأخرى في الكتلة تستخدم فقط مورد صغير جدًا ، فإن عددًا كبيرًا من المعاملات التي تشغل موردًا لن تحتاج إلى شحن الكثير من الرسوم.
2. إنها تلهم المعاملات الكثيفة المكثفة والمحسوبة لحزمة حزمة لتوفير التكاليف.
في رأيي ، يمكن أن يجلب قواعد نمط EIP-7623 فوائد كافية لبيانات الاتصال المعاملات أو الموارد الأخرى ، حتى لو كانت هناك أوجه القصور هذه ، فإن الأمر يستحق ذلك.ومع ذلك ، إذا كنا على استعداد لاستثمار الجهود التنموية (المهمة والأعلى) ، فهناك طريقة أكثر مثالية.
متعددة الأبعاد EIP-1559: استراتيجية أكثر صعوبة ولكن مثالية
دعنا أولاً نراجع مبدأ العمل لـ “التقليدي” EIP-1559.سوف نركز على الإصدار الذي أدخلته Blob في EIP-4844 لأنه أكثر أناقة في الرياضيات.
نحن نتتبع معلمة ، الزائدة _blobs.خلال كل فترة ، أنشأنا:
vers_blobs & lt ؛ – max (vers_blobs + len (block.blobs) -target ، 0)
هنا الهدف = 3.بمعنى آخر ، إذا كان عدد كتل الكتلة أكثر من الهدف ، فإن الزائد يزداد ، وإذا كان عدد الكتل في الكتلة أقل من الهدف ، فسوف ينخفض.ثم قمنا بإعداد blob_basefee = exp (verge_blobs / 25.47) ، حيث يكون EXP قيمة تقريبية (x) لوظيفة الفهرس.
وبعبارة أخرى ، كلما زادت الزائدة _blobs بنحو 25 مرة ، ستزداد التكلفة الأساسية للنقطة بنحو 2.7 مرة.إذا أصبحت النقطة باهظة الثمن ، فسيتم انخفاض متوسط الاستخدام ، ثم يبدأ الزائدة في الانخفاض ، وبالتالي تقليل السعر تلقائيًا مرة أخرى.يتم تعديل سعر Blob باستمرار لضمان أن تكون الكتلة نصف ممتلئة ، وهذا هو ، كل كتلة تحتوي على 3 نقاط.
إذا ظهرت كمية الاستخدام على المدى القصير ، فستكون هناك قيود: يمكن أن تحتوي كل كتلة فقط على ما يصل إلى 6 Blob.ومع ذلك ، في ظل الظروف العادية ، تحتاج كل نقطة فقط إلى دفع blob_basefee وإضافة رسوم أولوية إضافية صغيرة كمصدر إلهام.
كان تسعير الغاز هذا في Ethereum لسنوات عديدة: في وقت مبكر من عام 2020 ، قدم EIP-1559 آلية مماثلة للغاية.من خلال EIP-4844 ، لدينا الآن اثنين من الأسعار العائمة من الغاز والنقط.
التكلفة الأساسية للغاز في غضون ساعة واحدة في 8 مايو 2024 ، الوحدة هي GWEI.المصدر: الموجات فوق الصوتية
من حيث المبدأ ، يمكننا إضافة المزيد من التكاليف الفردية إلى قراءة التخزين وأنواع أخرى من العمليات ، ولكن هناك تحذير بأنني سأشرح ذلك بالتفصيل في القسم التالي.
بالنسبة للمستخدمين ، فإن هذه التجربة تشبه إلى حد كبير اليوم: لم تعد تدفع رسومًا أساسية ، ولكن تدفع تكاليف أساسية ، لكن محفظتك يمكنها أن تمنعها منك ، تبين لك فقط أنه يمكنك توقع أن تتوقع دفع النفقات المتوقعة والحد الأقصى للنفقات .
بالنسبة لبناة الكتل ، فإن أفضل استراتيجية في معظم الوقت هي نفسها اليوم: بما في ذلك أي محتوى فعال.معظم الكتل ليست ممتلئة -سواء كان الغاز أو النقطة.الموقف الصعب هو أنه عندما يكون هناك غاز كافي أو نقط كافية لتجاوز القيود المفروضة على الحظر ، يحتاج المنشئ إلى حل مشكلة التعادل متعدد الأبعاد لزيادة أرباحه إلى الحد الأقصى.ومع ذلك ، حتى لو كانت هناك خوارزمية تقريبًا جيدة ، في هذه الحالة ، فإن الفوائد التي تم الحصول عليها من خلال تحسين الربح من خلال صياغة الخوارزمية الملكية أصغر بكثير من استخدام MEV لنفس العملية.
بالنسبة للمطورين ، يتمثل التحدي الرئيسي في إعادة تصميم وظائف EVM والبنية التحتية المحيطية.تتمثل إحدى المشكلات التي يواجهها مطورو التطبيقات في أن التحسين يصبح صعبًا بعض الشيء: في بعض الحالات ، لم يعد بإمكانك القول بوضوح أن A أكثر كفاءة من B ، لأنه إذا كان A يستخدم المزيد من CallData و B ، فسيتم استخدام المزيد من التنفيذ ، ثم التنفيذ ، ثم التنفيذ ، ثم يتم التنفيذ ، ثم التنفيذ عندما تكون Calldata رخيصة ، يكون الأمر أكثر تكلفة عندما تكون CallData مكلفة.ومع ذلك ، لا يزال بإمكان المطورين الحصول على نتائج جيدة من خلال تحسين متوسط سعر المتوسط التاريخي طويل المدى.
التسعير متعدد الأبعاد ، EVM والمكالمات الفرعية (المكالمات الفرعية)
لن تظهر إحدى المشكلات في Blob ، كما أنها لا تظهر في EIP-7623 ، أو حتى في تنفيذ التسعير “الكامل” متعدد الأبعاد لـ Calldata ، ولكن إذا حاولنا التسعير أو أي موارد أخرى ، فإننا نحاول الحصول على حالة التسعير أو أي موارد أخرى.
يقتصر الغاز في EVM على مكانين.بادئ ذي بدء ، يتم إعداد كل معاملة بحد من الغاز ، مما يحد من كمية الغاز الإجمالية التي يمكن استخدامها في المعاملة.ثانياً ، عندما يستدعي عقد ما عقدًا آخر ، يمكن للمكالمة تحديد حد الغاز الخاص به.يتيح هذا العقد استدعاء العقود الأخرى التي لا يثقون بها ، ولا يزالون يضمنون أن لا يزال لديهم الغاز المتبقي بعد الاتصال لإجراء حسابات أخرى.
تتبع المعاملة المجردة للحساب ، وأحد الحسابات يتصل بالحساب الآخر ، ويوفر للمتصل فقط عددًا محدودًا من الغاز للتأكد من أنه حتى لو كانت المكالمة تستهلك جميع الغازات المخصصة لها ، فقد تستمر المكالمة الخارجية في التشغيل .
التحدي هو: يصبح الغاز متعدد الأبعاد بين أنواع التنفيذ المختلفة.
هذا هو أحد الأسباب التي تجعل اقتراح الغاز متعدد الأبعاد يبقى عادة في بعدين: البيانات والتنفيذ.يتم تخصيص البيانات (سواء كانت التداول هو CallData أو Blob) فقط خارج EVM ، لذلك ليست هناك حاجة لتغيير المحتوى داخل EVM لجعل CallData أو blob بسعر منفصل.
يمكننا التوصل إلى “حل EIP-7623” لحل هذه المشكلة.هذا تطبيق بسيط: أثناء التنفيذ ، تكون تكلفة شحن عملية التخزين 4 مرات ؛في نهاية المعاملة ، الاسترداد دقيقة (7500 * storage_operations ، execution_gas).نتيجة لذلك ، بعد خصم الاسترداد ، يحتاج المستخدم إلى دفع النفقات التالية:
execution_gas + 10000 * storage_operations -min (7500 * storage_operations ، execution_gas)
هذا يساوي:
Max (execution_gas + 2500 * storage_operations ، 10000 * storage_operations)
هذا يعكس بنية EIP-7623.هناك طريقة أخرى تتمثل في تتبع storage_operations و execution_gas في الوقت الفعلي ، ويتم فرض مبلغ 2500 أو 10000 غاز بواسطة Max (execution_gas + 2500 * storage_operations ، 10000 * storage_operations) وفقًا لرمز تشغيل المكالمات.هذا يتجنب المعاملة التي تتطلب تخصيصًا مفرطًا لغاز السماء ، ويتم استرداد هذه الغاس بشكل أساسي عن طريق المبالغ المستردة.
لم نحصل على رخصة حبيبية جيدة للرسائل الفرعية: قد تستهلك الجدران الفرعية جميع “بدلات” المعاملات لعمليات التخزين الرخيصة.لكننا نحصل على ما يكفي من الأشياء الجيدة.
أبسط “حل التسعير متعدد الأبعاد الكامل” الذي يمكنني التفكير فيه هو: نحن نعتبر الطول الفرعي للغاز الذي يطلق عليه الغاز كنسبة.بمعنى آخر ، على افتراض ذلك
؟على افتراض نقطة التنفيذ الحالية ، الغاز المتبقي
ل؟على افتراض أن المكالمات تستدعي رمز التشغيل مع حد الغاز الفرعي S.دع S1 = S ، ثم S2 = S1/G1*G2 ، S3 = S1/G1*G3 ، إلخ.
بمعنى آخر ، نعتبر النوع الأول من الغاز (في الواقع تنفيذ الجهاز الظاهري) كامتياز “وحدة حساب” ، ثم تعيين أنواع أخرى من الغاز بحيث يمكن استدعاء الطفل في كل نوع.هذا قبيح بعض الشيء ، لكنه يزيد من التوافق المتخلف.إذا كنا نريد أن يكون المخطط أكثر “محايدة” بين أنواع مختلفة من الغاز ، على حساب التضحية بالتخلف ، يمكننا ببساطة السماح للطفل بالاتصال بمعلمة حد الغاز تمثل جزءًا صغيرًا من الغاز المتبقي (على سبيل المثال [1 .. 63] / 64).
> “>ومع ذلك ، على أي حال ، تجدر الإشارة إلى أنه بمجرد إدخال التنفيذ متعدد الأبعاد للغاز ، ستزداد القبح المتأصل ، والذي يبدو من الصعب تجنبه.
لذلك ، تتمثل مهمتنا في إجراء تجارة معقدة: ما إذا كنا نقبل بعض الأشياء القبيحة على مستوى EVM ، وذلك لإصدار دخل L1 المهم بأمان.
من المحتمل أنه ليس أي شخص ذكرته أعلاه ، ولا يزال هناك مجال لأشياء أكثر أناقة وأفضل.
شكرًا لك على ملاحظات ومراجعة Ansgar Dietrichs و Barnabe Monoton و Davide Crapis.