لقد تحدثنا عن التعدين في Ethereum مثل الطريقة التي تؤكد بها الشبكة وتنشر تغييرات الحالة. ومع ذلك ، في أغسطس 2021 ، أصدر مجتمع مطوري Ethereum الأساسي ، بعد سنوات عديدة من البحث والتطوير والاختبار ، تغييرًا كبيرًا في عملية التعدين في Ethereum المعروفة باسم EIP-1559 (تذكر مقترحات تحسين Ethereum أو EIPs هي الطريقة التي يتبعها مجتمع Ethereum يتضمن تغييرات على البروتوكول).
قبل EIP-1559 ، كانت رسوم معاملات Ethereum مدفوعة بالسوق. بمعنى ، سعر الغاز ، أو الرسوم، يملي مدى سرعة قيام المُعدِّن بتضمين المعاملة في الكتلة. وقد أدى ذلك إلى بعض التقلبات الهائلة في الأسعار ودفع مطوري الشبكات إلى إيجاد حل أكثر استقرارًا. هنا يدخل EIP-1559.
يستبدل EIP-1559 رسوم الغاز بسعر ثابت. الآن ، لن يضطر الأشخاص الذين يرسلون المعاملات إلى تخمين مقدار الغاز المطلوب ، حيث سيكون هناك “رسوم أساسية” صريحة ليتم تضمينها في الكتلة التالية. بالنسبة للمستخدمين أو التطبيقات التي ترغب في تحديد أولويات معاملاتهم ، يمكنهم إضافة “إكرامية” للدفع لعامل منجم. سيتم “حرق” الرسم الأساسي ، أي إتلافه ، بينما تذهب الإكرامية إلى عامل المنجم.
في أوقات ارتفاع نشاط الشبكة ، سيتم تعديل الرسوم الأساسية بطريقة يمكن التنبؤ بها لتحديد تدفق المعاملات.
رسم بياني يوضح قبل وبعد 1559 من معاملات معالجة الشبكة
كقياس لشرح الرسوم الأساسية والإكرامية ، تخيل تجربة استخدام تطبيق خدمة مشاركة الرحلات على هاتفك (مثل Uber أو Lyft أو Didi). تريد استخدام هذا التطبيق للحصول على توصيلة للانتقال من A إلى B. تكلفة الانتقال من A إلى B هي نفسها ، بغض النظر عن السائق الذي سيقلك (الرسوم الأساسية في EIP-1559). الآن ، تخيل ما إذا كنت قادرًا على إضافة إكرامية إلى سائقك قبل الركوب. إذا كانت إكرامية أعلى مما يقدمه الآخرون في ذلك الوقت ، فسيتم تحفيز السائقين لاصطحابك بدلاً من الركاب المحتملين الآخرين الذين لا يقدمون إكرامية.
تشبه هذه العملية معاملات ETH الخاصة بك: يمكنك تعيين إكرامية لعمال المناجم (“السائق” في المثال أعلاه) لتضمين معاملتك في المجموعة التالية (“الركوب” في المثال أعلاه). تعني الإكرامية الأعلى فرصة أكبر لإدراج معاملتك في الكتلة التالية وبالتالي إكمالها.
بشكل حاسم ، يجعل EIP-1559 أسعار الغاز أكثر شفافية ولكنه لا يخفض الأسعار. هذا هو مفهوم خاطئ شائع. قد يقلل EIP-1559 من مقدار الوقت الذي تستغرقه الشبكة في ارتفاع أسعار الغاز ، ولكن الطريقة الوحيدة للتعامل مع أسعار الغاز المرتفعة هي تحسين قابلية التوسع (والتي سنناقشها في قسم لاحق).
لا يزال الوقت مبكرًا جدًا لـ 1559 وسنرى كيف تتطور معًا!
التغييرات للمطورين
EIP-1559 هو ترقية متوافقة مع الإصدارات السابقة. سوف تتذكر من المقال الخاص بالإجماع الموزع ، هذا يعني أن بنية المعاملات السابقة لـ EIP-1559 لا تزال مدعومة. ومع ذلك ، بعد EIP-1559 ، يتم حساب سعر المعاملة باستخدام المعادلة التالية:
transaction fee = baseFee + min(maxFee – baseFee, priorityFee)
شرح للمتغيرات الثلاثة:
- baseFee – رسم يتم تعويمه بناءً على ازدحام الشبكة ويمكن جلب أحدث قيمة عبر استدعاء JSON RPC جديد eth_feeHistory
- اpriorityFee (وتسمى أيضًا الإكرامية) رسوم لإغراء منتج الكتلة لتضمين المعاملة.
- maxFee أعلى رسوم الشبكة التي يرغب المستخدم في دفعها.
فيما يلي بعض التغييرات على تنسيق Ethereum JSON-RPC التي ستراها على مستوى البروتوكول والتي قد تؤثر على طريقة تطويرك أيضًا ، مقسمة حسب جزء من بروتوكول Ethereum المتأثر:
الكتل
- eth_getBlockBy قاعدة ميدانية جديدة تم تضمين FeePerGas في كتل ما بعد لندن
- eth_getUncleBy * تم تضمين قاعدة ميدانية جديدة FeePerGas في كتل ما بعد لندن
- قاعدة بيانات رأس الكتلة FeePerGas هي الرسوم الأساسية التي تدفعها جميع المعاملات في هذه الكتلة. (الحقل فارغ لجميع الكتل قبل التشعب.)
بيانات المعاملات
- maxPriorityFeePerGas تحدد الإكرامية (رسوم الأولوية) لإغراء منتج الكتلة لتضمين معاملتك.
- maxFeePerGas هو الحد الأقصى للرسوم التي يرغب المستخدم في دفعها لمنتج الكتلة لتضمين هذه المعاملة.
- المعاملات القديمة التي تتضمن فقط سعر الغاز لا تزال سارية وسيتم قبولها في الكتل. سيدفع المستخدم ببساطة رسوم الشبكة المقترحة بالكامل ونتيجة لذلك قد يدفع علاوة مقارنة بالمستخدمين الآخرين على الشبكة.
- تم إهمال سعر eth_gas واستبداله بـ eth_feeHistory ، والذي يقوم بإرجاع بيانات رسوم المعاملات لما يصل إلى 1024 كتلة. لكل كتلة ، يُبلغ eth_feeHistory عن الرسوم الأساسية ، والقائمة المئوية لرسوم الأولوية الفعالة ونسبة الغاز المستخدم / الحد. لاحظ أنه يتم إرجاع الرسوم الأساسية المطلوبة للكتلة التالية أيضًا.
محاكاة المعاملات
- eth_call قد يطلب من المطور تحديد سعر الغاز أو سعر الغاز الجديد 1559 ليعكس التنفيذ الحقيقي للمعاملة. لدى فريق مطوري Go-Ethereum (geth) المزيد حول التغييرات التي تم إجراؤها على eth_call هنا.
- eth_estimateGas قد يفشل في تقدير الغاز إذا لم يتم ملء سعر الغاز أو تسعير الغاز الجديد 1559 (أي أكبر من ن 0).
- تقوم London Fork ، التي تنفذ EIP-1559 ، بتنفيذ EIP-3198 ذي الصلة. يؤدي هذا إلى إضافة رمز تشغيل جديد ، BASEFEE ، يقوم بإرجاع الرسوم الأساسية للكتلة الحالية التي يتم تنفيذها فيها. يوصى للمطورين بتعيين تسعير الغاز بشكل صريح لكل من استدعاءات JSON RPC لتجنب فشل استجابة مكالمة JSON RPC.
مصادر اضافية
- مقال: What is EIP-1559? (ConsenSys) مقال توضيحي تمهيدي رائع استخدمناه في الكثير من مواد الدورة التدريبية.
- مقال:What is EIP-1559? (MetaMask) مقالة تمهيدية أخرى ، هذه المرة من منظور مستخدم MetaMask
- الفيديو: How To Set Transaction Priority in MetaMask مقطع فيديو رائع يتجول في الطرق التي يتم بها ضبط MetaMask على EIP-1559.
- تفاعلي: Ultrasound Money يوفر موقع الويب تحديثات في الوقت الفعلي حول مقدار حرق الأثير كجزء من EIP-1559
تقني
- مقال: London Fork (Infura) نظرة عامة تقنية رائعة على تغييرات البروتوكول القادمة للعملاء ، وتحديداً لاستدعاءات واجهة برمجة تطبيقات JSON-RPC التي يجب على جميع عملاء Ethereum استخدامها.
- مقال: EIP-1559 JSON-RPC Changes (Tim Beiko) ) نظرة على تغييرات JSON-RPC
- ويكي : 1559 Resources (Tim Beiko) قائمة شاملة بالموارد لاستكشاف أي جانب من جوانب EIP-1559 ، من تجربة المستخدم أو الأمن أو الاقتصاد أو التعدين أو المحاكاة
غيتهاب : eth_call invocations post 1559 من فريق Geth حول التغييرات على استدعاء eth_call JSON-RPC
إضافة تعليق