في الفهم العمق لحدث الصلابة -event

المصدر: مجتمع Dengchain

في مقال اليوم ، سننظر في الصلابةحدثيطلق عليه في Ethereum أكثر شيوعًا و EVMسجلاتجوهرسنرى كيفية استخدامها ، وتعريفاتهم ، وكيفية استخدام موضوع الحدث والتوقيع لتصفية السجل ، وبعض الاقتراحات حول متى.

سنقوم أيضًا بتغطية التفتيش-حدث-وضع التفاعل ، يتم تطبيق هذا النموذج الشهير تقليديًا على إعادة صياغة متغيرات الدولة ، لكننا سنرى لماذا يجب تطبيق هذا النموذج أيضًا على إحداث أحداث ومخاطر محتملة ومواطن أمنية.

كيف تحدد الأحداث في صلابة؟

تكون متاحةحدثتحدد الكلمة الرئيسية الحدث في صلابة ، كما هو موضح أدناه.

     interface ilight {< br/> event switchedon () ؛

يمكنك تمرير اسم العقد من خلال وصول محدود كامل ، يليه المتابعةثم ، ثمللوصول إلى الحدث من عقد آخر مع اسم الحدث ، كما هو موضح أدناه:

ust dress user)

توقيع الحدث هو:

ust dress user)

موضوع الحدث هو:

bytes32 topichash = uccess .

يرجى ملاحظة أنه بعد الصلابة فقط v0.8.15 ، سوف الحادث.selectorيمكن للأعضاء استخدامه.

إذا قمت بالتحقق من أي سجل blockchain ، فستجد فهرس السجل0(الأول) الغرض يتوافق مع موضوع الحدث.نظرًا لأن الموضوع هو المحتوى الذي يمكن البحث فيه من خلال السجل ، يمكنناتصفية مع موضوع الحدث:

  • ابحث عن أحداث محددة في العقد الذكي لعنوان معين.

  • ابحث عن أحداث محددة في جميع العقود على blockchain.

سوف نراها أكثر أدناه ،مجهولحدث مجهول هو استثناء هذه القاعدة.مجهولالكلمات الرئيسية تجعلها غير قادرة على البحث ، لذا استخدم المصطلح"مجهول"جوهر

بناءً على هذه الحقيقة ، يمكننا أيضًا أن نستنتج أن أبسط حدث محدد في الصلابة لا يحتوي على معلمات ، مثل الحدث المحدد أعلاهbulbreplacedأوSwitchedon، سيتم استخدامه في الأسفلlog1يثير رمز التشغيل السمة في السجل لأن الحادث نفسه قابل للبحث.

يمكنك إضافة المزيد من الموضوعات ، وسيتم استخدام موضوعات أخرىlog2،log3،log4وlog5طالما تم وضع علامة على هذه المعلماتمفهرسةجوهردعنا نلقي نظرة على معلمة الفهرس في القسم التالي.

معلمات الحدث ومعلمات الفهرس

يمكن أن يقبل الحدث أي نوع من المعلمات ، بما في ذلك نوع القيمة (uintn،Bytesn،بول،عنوان...) ،،بنية،التعدادونوع القيمة المحدد من قبل المستخدم.

وفقًا لبحثي في ​​هذه المقالة ، فإن النوع الوحيد غير المسموح به هو نوع الوظيفة الداخلية.يُسمح بنوع الوظيفة الخارجية ، لكن نوع الوظيفة الداخلية غير مسموح به.على سبيل المثال ، لن يتم تجميع الكود التالي.

// spdx- Sidefier: غير مرخص
Pragma Salidity ^0.8.0 ؛ >

إذا كان بيان الحدثمجهولفي العقد ABI ، الحادث متاح"مجهول"سيتم تمييز الحقل باسمحقيقيجوهر

<الشكل النمط = "النص": المركز ؛ ">

IMG https://github.com/ethereum/solidity/issues/13086

ميزة مجهولة هي أنها تجعل عقدك أرخص وأرخص ، والغاز أرخص عند تشغيله.

حالة جيدة من الحدث المجهول هو عقد مع حدث واحد فقط.جميع الأحداث في عقد التفاوض مفيدة ، لأن هذا الحادث فقط سيظهر في سجل الأحداث.الاشتراك في اسمه غير ذي صلة ، لأنه يتم تعريف حدث واحد فقط لإصدار العقد.لذلك ، يمكنك تحديد الأحداث المجهولة ، والاشتراك في جميع سجلات الأحداث من العقد ، وتأكيد أنها نفس الأحداث.

تحقق من استخدام الاستخدام المجهول في مكتبة الرموز الشائعة ، مثل عقد DS-Note في DapppHub[7]وسط.

<الشكل النمط = "النص": المركز ؛ ">

IMGرمز المصدر[8]

يمكننا أن نرى في جزء الكود أعلاه أنه نظرًا لأن بيان الحدث مجهول ، فإن هذا يمكن أن يحدد المعلمة "المفهرسة" الرابعة.

يرجى ملاحظة أنه نظرًا لأن الحدث المجهول لا يحتوي على موضوع BYTES32 ، فإن الحدث المجهول لا يدعم.selectorعضو.

استخدم رمز التشغيل السجل لتشغيل الأحداث في التجميع

<الشكل النمط = "النص": المركز ؛ ">

img https://docs.soliditlylang.org/en/v0.8.19/yul.html#evm-dialect

من الممكن تشغيل حدث في التجميع ، والاستخدامlognالتعليمات ، التعليمات تتوافق مع رمز التشغيل المركز بواسطة تعليمات EVM.

لتشغيل حدث في التجميع ، يجب عليك تخزين جميع البيانات الصادرة عن الحادث فيذاكرةموقف محدد.

بمجرد قيامك بتخزين البيانات من الحدث في الذاكرة ، وبعد ذلك يمكنك تحديد المعلمات التالية إلى تعليمات logn:

  • P = احصل على موضع ذاكرة البيانات منه.في الأساس ، هذا مؤشر ذاكرة ، أو "إزاحة" أو "فهرس الذاكرة" ، اعتمادًا على كيفية تسميته.

  • S = تريد عدد البايتات الصادرة من P في الحدث.

  • جميع المعلمات الأخرىT1إلى جانبT2إلى جانبT3وT4إنها معلمات الحدث التي تريد فهرستها.يرجى ملاحظة أن هناك شيئين مهمين هنا: 1) يجب أن تكون هذه المعلمات هي نفس المعلمات المحددة في نفس ترتيب تعريف الأحداث الخاصة بك ، 2) يجب وضع هذه المعلمات في الذاكرة للحصول على البيانات.

يوضح جزء الكود التالي كيفية تنفيذ هذه العملية في التجميع.

bytes32 topichash = مثال على ذلك /> log2 (
freemomorypointer ، /// `p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p` p" " p` p` p` p` p` = بدء الإزاحة في الذاكرة
64 ، // `s` = عدد البايتات في الذاكرة من p` لتضمين في بيانات الحدث
موضوع تصفية الحدث It Self
tokenid // 1st parameter
)
}
}

تكلفة الغاز للحدث

<الشكل النمط = "النص": المركز ؛ ">

جميع رمز تشغيل السجلات (log0إلى جانبlog1إلى جانبlog2إلى جانبlog3إلى جانبlog4) تحتاج إلى استهلاك الغاز.كلما زاد عدد المعلمات (الموضوعات) ، زادت الغاز الذي يستهلكونه.

<الشكل النمط = "النص": المركز ؛ ">

Image-20240226195203141

بالإضافة إلى ذلك ، يمكن أن تتسبب عوامل أخرى مثل الفهارس أو البيانات في استهلاك الحدث المزيد من الغاز.

تحقق -وضع -وضع نشط

وضع الفحص الفعال التفاعلي[9]كما أنها مناسبة للحوادث.

تتمثل إحدى الطرق لاكتشاف هذه الأوضاع في استخدام أداة التحليل الثابت Remix.

يمكن أيضًا اكتشاف هذا النموذج بواسطة Slither.عندما يقوم العقد بتشغيل عقد مع مكالمة خارجية ، ستحصل على اكتشاف لمطالبة "حدث إعادة".

لذلك ، بالنسبة إلى DAPP ، يكون الأمر مهمًا للغاية ، بحيث يمكنك التحقق بشكل صحيح من الحادث أولاً ، التالي ، وأصدره أخيرًا.هذا مهم بشكل خاص عندما تكون مكالمات متكررة أو إعادة إدخالها.إذا تم تشغيل الحدث بعد مكالمات خارجية ، وتم إجراء هذه المكالمة الخارجية من مكالمة متكررة ، ثم:

  1. كان الحادث الأول هو المرة الثانية بعد اكتمال المكالمة.

  2. تم إصدار الحدث الثاني بعد المعاملة الأولية.

  3. يتيح فهم هذا أيضًا تتبع التدقيق الواضح تحت السلسلة لمراقبة مكالمات العقد.يمكنك معرفة الوظائف التي يتم استدعاؤها أولاً وأخيراً ، وترتيب تشغيل كل روتين أثناء تنفيذ المعاملة.

    وثيقة الكاشف النازع[10]-قيمة ومحللات فيبر الثابتة.

    هذا الضعف المحتمل على درب البتات[11]وجدت والتقرير في مراجعة العقود الذكية.

    <الشكل النمط = "النص": المركز ؛ ">

    IMG

    <الشكل النمط = "النص": المركز ؛ ">

    IMG

    متى يجب تشغيل الحادث؟

    قد يكون هناك عدة حالات في عقدك قد تكون مهمة ومفيدة لإطلاق الأحداث.

    • عندما يقوم المستخدمون المقيدون والعناوين بتنفيذ عمليات معينة (على سبيل المثال ، المالك أو مسؤول العقد).وهذا يشمل مثل تلك الشعبيةنقل الملكية (العنوان)الوظيفة ، لا يمكن استدعاء هذه الوظيفة إلا من قبل المالك لتغيير مالك العقد.

    <الشكل النمط = "النص": المركز ؛ ">

    IMG
    • تغيير بعض المتغيرات الرئيسية أو المعلمات الحسابية ، والتي هي المسؤولة عن المنطق الأساسي للعقد.إنه مهم بشكل خاص في خلفية بروتوكول Defi.

    <الشكل النمط = "النص": المركز ؛ ">

    IMG

    وثيقة الكاشف النازع[12]صف المزيد من المعلومات حول هذه الحالات.

    هذا موصوف أيضًا في تقرير تدقيق الممرات عن Looksrare.

    <الشكل النمط = "النص": المركز ؛ ">

    IMG
    • عقود المراقبة المنتشرة في الإنتاج للكشف عن تشوهات.

    <الشكل النمط = "النص": المركز ؛ ">

    IMG

    عرض 0xprotocol[13]تفاصيل لفهم القضايا المتعلقة بالسلامة المتعلقة بالحادث.

    الرجوع إلى

    1. المستند المفقود لغرض استخدام الحدث المجهول (تعرف لماذا)[14]

    2. [مزايا حدث مجهول]

    3. <-style-type>

  • Related Posts

    Binance تطلق ALPHA Points ، وتفهم جميع القواعد

    جيسي ، رؤية Baitchain متطلبات المشاركة في Binance Wallet TGE ترتفع وأعلى! في السابق ، جلبت شعبية TGE الحصرية لـ Binance Wallet كمية كبيرة من البيانات والمستخدمين الجدد إلى Binance…

    Bankless: ما هي منصات إنشاء المحتوى اللامركزية التي تستحق الاهتمام بها؟

    المؤلف: وليام م. بيستر ، بلا بنك ؛تم تجميعه بواسطة: Tao Zhu ، رؤية Baitchain لقد كنت أكتب في مجال Crypto منذ عام 2017. ومنذ ذلك الحين ، حولت الكتابة…

    اترك تعليقاً

    لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

    You Missed

    ما وراء الدافع: كيفية بناء نظام بيئي دائم دائم

    • من jakiro
    • أبريل 25, 2025
    • 0 views
    ما وراء الدافع: كيفية بناء نظام بيئي دائم دائم

    Binance تطلق ALPHA Points ، وتفهم جميع القواعد

    • من jakiro
    • أبريل 25, 2025
    • 0 views
    Binance تطلق ALPHA Points ، وتفهم جميع القواعد

    الاستفادة من Lianchuang: قد يجلب Ethereum سلسلة إنتاجية عالية من خلال توسيع L2s المتعددة

    • من jakiro
    • أبريل 25, 2025
    • 3 views
    الاستفادة من Lianchuang: قد يجلب Ethereum سلسلة إنتاجية عالية من خلال توسيع L2s المتعددة

    Paradigm Huang Gongyu: تفاصيل الاستثمار المبكر في Zhang Yiming ، اتجاهات تكنولوجيا التشفير

    • من jakiro
    • أبريل 25, 2025
    • 2 views
    Paradigm Huang Gongyu: تفاصيل الاستثمار المبكر في Zhang Yiming ، اتجاهات تكنولوجيا التشفير

    Glassnode: هل تغيرت المشاعر في سوق التشفير تمامًا؟من يحقق ربحًا؟

    • من jakiro
    • أبريل 25, 2025
    • 0 views
    Glassnode: هل تغيرت المشاعر في سوق التشفير تمامًا؟من يحقق ربحًا؟

    ما هو الجزء السفلي من Ethereum؟هل سيأتي سوق Eth Bull قريبًا؟

    • من jakiro
    • أبريل 25, 2025
    • 3 views
    ما هو الجزء السفلي من Ethereum؟هل سيأتي سوق Eth Bull قريبًا؟
    Home
    News
    School
    Search