في نظام السلسلة الكتلية، المحافظ بتنسيق تمديد المتصفح هي تطبيقات المحافظ التي توجد على شكل إضافات المتصفح. تتيح للمستخدمين التفاعل بشكل مريح مع حسابات سلسلة الكتل مباشرة داخل التطبيقات اللامركزية، مثل إرسال المعاملات، توقيع الرسائل، أو التفاعل مع العقود الذكية. أحد أمثلة الأمثلة النموذجية هو MetaMask، الذي أصبح تقريبًا أداة قياسية لاستخدام تطبيقات النظام البيئي لإثيريوم. على عكس التطبيقات التقليدية، تكون المحافظ بتنسيق تمديد المتصفح مضمنة في بيئة المتصفح. يسهل هذا الأسلوب عملية تفاعل المستخدم مع سلسلة الكتل ويزيل الحواجز التقنية لعمليات العقد المعقدة أو إدارة المفتاح الخاص. يحتاج المستخدمون فقط إلى تثبيت التمديد لبدء استخدام شبكة السلسلة الكتل بسرعة.
في هذا السياق، يشير "مزود الخدمة" إلى التقنية الأساسية أو الواجهة التي تدعم وظائف هذه المحافظ. على سبيل المثال، تتواصل المحافظ مع عقد البلوكشين من خلال بروتوكول إثيريوم JSON-RPC، بينما يقدم مزود الخدمة الواجهة البرمجية البعيدة المناظرة للسمح للمحفظة بالتعامل بشكل آمن مع التفاعلات على السلسلة.
تخيل أنك تريد استخدام بورصة لامركزية (DEX) أو سوق NFT. تفتح موقع dApp على الويب ، متحمسا لبدء التفاعل. ومع ذلك ، تنشأ مشكلة - يحتوي متصفحك على العديد من ملحقات المحفظة المثبتة ، مثل MetaMask و Coinbase Wallet و Brave Wallet ، لكن dApp يفشل في تحديد المحفظة التي تستخدمها حاليا بشكل صحيح وحتى يلقي رسالة خطأ: "لم يتم اكتشاف محفظة ، يرجى تثبيت ملحق محفظة". حاول تحديث الصفحة وإعادة تشغيل المستعرض ، لكن المشكلة لا تزال قائمة. يسلط هذا السيناريو الشائع الضوء على مشكلة عملية: آليات تحديد وتفاعل محافظ امتداد المتصفح غير كافية. مع ظهور المزيد من ملحقات المحفظة ومقدمي الخدمات ، تصبح تجربة المستخدم أكثر تعقيدا وإرباكا.
لمعالجة مشكلات التفاعل بين المحافظ وdApps، قدمت المجتمع EIP-1193 (واجهة برمجة تطبيقات إثيريوم JavaScript)، وهو معيار عالمي يحدد كيف يمكن لتطبيقات dApps التواصل مع المحافظ عبر بيئة المتصفح. الفكرة الأساسية لـ EIP-1193 هي التعامل مع وظائف سلسلة الكتل التي توفرها المحفظة من خلال واجهة موحدة. على سبيل المثال، يتواصل dApp مع المحفظة عبر كائن window.ethereum، إرسال الطلبات أو استقبال أحداث سلسلة الكتل.
على الرغم من أن EIP-1193 يعالج جزئيًا قضايا التوافق بين المحافظ وتطبيقات الويب اللامركزية، إلا أن لديه بعض القيود الواضحة:
لحل هذه المشكلة، اقترحت المجتمع EIP-6963 (معيار اكتشاف محفظة متصفح التمديد)، خطة تحسين لمحافظ تمديد المتصفح تهدف إلى تحسين اكتشاف المحفظة وآليات التفاعل. تهدف الحل إلى خفض حاجز الدخول لمقدمي المحافظ الجدد، وتعزيز المنافسة الأكثر عدالة، وتعزيز تجربة المستخدم على شبكة إثيريوم. على وجه التحديد، يقدم مجموعة من أحداث النافذة ويوفر بروتوكول اتصال ثنائي الاتجاه، مما يسمح لمكتبات إثيريوم والنصوص التي يتم حقنها بواسطة تمديدات المتصفح بالتفاعل. سيتيح هذا للمستخدمين اختيار محفظتهم المفضلة استنادًا إلى احتياجاتهم، مما يحسن من التجربة العامة.
يضمن الـ RDNS (Reverse DNS) استقرار معرفات مزود المحفظة مع منع تضارب أسماء النطاقات. يؤكد EIP-6963 على القواعد التي يجب أن تتبعها تقاليد RDNS، مثل تنسيقات النطاق الصالحة وأجزاء النطاق التي يتحكم فيها المزود. كما يشدد على أن التطبيقات اللامركزية (dApps) يجب ألا تعتمد على قيمة RDNS لاكتشاف الميزات لتجنب إمكانية وجود حوافز مزورة أو ضارة. واجهة ProviderDetail في EIP-6963 توفر لتطبيقات الـ dApps البيانات الوصفية لمزود المحفظة، مساعدة في تفاعل المحفظة.
واجهة EIP6963ProviderDetail هي واجهة تستخدم للإعلان عن وصف مزود المحفظة ومعلومات المحفظة. من خلال تضمين خصائص مثل المعلومات (بيانات المحفظة) والمزود (واجهة مزود المحفظة)، يتيح لتطبيقات dApps الحصول على معلومات مفصلة حول المحافظ والتفاعل معها عبر واجهات موحدة. تعتبر هذه الواجهة أساسًا لتحقيق التوافقية والتوافق بين التطبيقات اللامركزية والمحافظ المختلفة.
آلية الحدث تضمن أن يمكن لتطبيقات الويب اللامركزية والمحافظ اكتشاف بعضها البعض والتفاعل مع بعضها البعض دون أن تعتمد على ترتيب تنفيذ ثابت. يسمح ذلك بأن يكون اكتشاف وتفاعل تطبيقات الويب اللامركزية والمحافظ غير متأثر بترتيب التنفيذ، مما يجنب الصراعات والأخطاء.
إعلان حدث EIP6963Provider: يستخدم هذا الحدث من قبل المحافظ للإعلان عن وجودها. يحتوي على معلومات حول المحفظة (EIP6963ProviderDetail) وواجهة المحفظة (EIP1193Provider). تحتوي خاصية التفاصيل لهذا الحدث على البيانات الجديدة المجمدة للمحفظة (باستخدام Object.freeze()) لضمان عدم التغيير.
حدث EIP6963RequestProviderEvent: يتم استخدام هذا الحدث من قبل التطبيقات اللامركزية لطلب موفر المحفظة. يستخدم التطبيق اللامركزي هذا الحدث لإخطار المحفظة بأنه جاهز ويطلب التفاعل.
نظرًا لترتيب تنفيذ غير المحدد لشفرة dApp والمحفظة، قد تحدث ظروف السباق. تم تصميم آلية الحدث بشكل خاص لضمان أن يمكن لتطبيقات dApps والمحافظ التعامل بشكل صحيح مع الأحداث عند اكتشافها لبعضها البعض. قد تقوم المحفظة بإطلاق حدث الإعلان أولاً، في حين قد لا يكون التطبيق جاهزًا للاستماع إليه حتى في وقت لاحق. لمنع الأخطاء، ستعيد المحفظة تشغيل حدث الإعلان بعد الحدث الأولي، مما يضمن أن يتلقى التطبيق الرسالة في الوقت المناسب.
يجب أن تستمع التطبيقات اللامركزية لحدث EIP6963AnnounceProviderEvent ولا يجوز إزالة مستمع الحدث أثناء تحميل الصفحة. يضمن هذا أن يمكن للتطبيق اللامركزي الاستماع والاستجابة باستمرار لحدث إعلان المحفظة خلال دورة حياته. بعد التعامل مع حدث الإعلان، يجب على التطبيق اللامركزي تشغيل حدث EIP6963RequestProviderEvent لطلب مزيد من التفاعل مع المحفظة.
يمكن لتطبيقات الويب اللامركزية تخزين عدة كائنات EIP6963ProviderDetail لمحافظ مختلفة، مما يتيح للمستخدمين اختيار بين محافظ مختلفة للتفاعل داخل التطبيق. وهذا يوفر مرونة أكبر للمستخدمين، حيث يمكنهم تبديل المحافظ دون إعادة تحميل الصفحة.
تحقق هذا التصميم اكتشافًا سلسًا وتفاعلًا بين التطبيقات اللامركزية والمحافظ من خلال EIP6963AnnounceProviderEvent و EIP6963RequestProviderEvent. من خلال استخدام مستمعي الأحداث ومشغلات الأحداث، يمكن للتطبيقات اللامركزية والمحافظ تنسيق إجراءاتها على الرغم من ترتيب التنفيذ غير المحدد، وتجنب ظروف السباق، وضمان سلوك مستقر. علاوة على ذلك، يمكن للتطبيقات اللامركزية تبديل المحافظ بناءً على تفضيلات المستخدم، مما يعزز تجربة المستخدم والتوافقية للمحافظ.
لا يتطلب هذا EIP استبدال window.ethereum، مما يعني أنه لن يكسر مباشرة التطبيقات الحالية التي لا يمكن تحديثها لاستخدام طريقة اكتشاف المحفظة هذه. ومع ذلك، من المُوصَى بشدة بتنفيذ هذا EIP من قبل تطبيقات الويب اللامركزية لضمان قدرتها على اكتشاف موفري المحفظة المتعددين، وتعطيل استخدام window.ethereum، ما لم يتم استخدامه كطريقة احتياطية عند فشل الاكتشاف. بالمثل، يجب على موفري المحفظة الحفاظ على التوافقية مع window.ethereum لضمان التوافقية مع تطبيقات الويب اللامركزية التي لا تنفذ هذا EIP. ولتجنب مشكلات تضارب الأسماء السابقة، من المُوصَى بأن تقوم المحافظ بحقن كائن موفرها في مساحة أسم محددة للمحفظة ثم استخدام كائن الوسيط إلى مساحة أسم window.ethereum.
تمتلك ملحقات المتصفح، وخاصة ملحقات المحفظة، القدرة على تعديل محتوى الصفحة وكائنات المزود، وهو ميزة أساسية في تصميمها. تعتبر كائنات المزود للمحافظ المختلفة واجهات موثوقة لنقل بيانات المعاملات. لتجنب التعديلات غير المقصودة على التفاعل بين التطبيق اللامركزي والمحفظة من قبل الصفحة أو ملحقات أخرى، الأفضلية هي تجميد كائن EIP1193Provider باستخدام Object.freeze() قبل أن ترسل المحفظة حدث eip6963:announceProvider. يضمن هذا أن لا يمكن تعديل الكائن. ومع ذلك، في بعض الحالات، قد تتطلب التوافقية مع الويب تعديل هذا الكائن. في مثل هذه الحالات، يحتاج مطورو المحافظ إلى إيجاد توازن بين الأمان والتوافقية مع الويب.
يجب على التطبيقات اللامركزية اكتشاف بنشاط ما إذا كانت خصائص أو وظائف كائن مزود المحفظة قد تم تزويرها لمنع تزوير أو تعديل المحافظ الأخرى. أحد الطرق لاكتشاف التزوير هو البحث عما إذا كانت خاصية uuid في كائنات معلومات EIP6963Provider متسقة. يجب على التطبيقات اللامركزية ومكتبات الاكتشاف الخاصة بها النظر في طرق التزوير الأخرى المحتملة واتخاذ إجراءات وقائية إضافية لمنع مثل هذا السلوك، مما يضمن أمان المستخدم.
استخدام صور SVG يمكن أن يؤدي إلى هجمات البرمجة النصية عبر المواقع المتقاطعة (XSS)، حيث يمكن لملفات SVG أن تحتوي على كود JavaScript. يُنفذ هذا الكود ضمن سياق الصفحة ويمكن أن يعدل محتوى الصفحة بشكل محتمل أو يؤثر على محافظ أخرى. لذلك، عند تقديم الرموز، يحتاج التطبيقات اللامركزية إلى النظر في كيفية التعامل مع مثل هذه المخاطر الأمنية لمنع استخدام الصور الخبيثة كتقنيات التحجيم، مما يخفي التعديلات الخبيثة على الصفحة أو المحفظة.
تتمثل إحدى مزايا آلية حلقة الحدث المتزامن المستخدمة في هذا التصميم في أنه يمكن لكل من dApp والمحفظة بدء العملية للإعلان عن المزود. لذلك ، يمكن لمنفذي المحفظة اختيار ما إذا كانوا سيعلنون عن أنفسهم لجميع الصفحات أو يتخذون تدابير أخرى لتقليل احتمالية أخذ بصمات أصابع المستخدمين عبر كائن window.ethereum المحقون. أحد البدائل الممكنة هو أن تؤخر المحفظة حقن كائن الموفر حتى يعلن dApp عن الحدث eip6963: requestProvider. في هذه المرحلة ، يمكن للمحفظة بدء تدفق موافقة واجهة المستخدم ، وسؤال المستخدم عما إذا كان على استعداد لمشاركة عنوان محفظته. يسمح هذا النهج للمحفظة بتمكين ميزة "الاتصال الخاص". ومع ذلك ، عند اتباع هذا النهج ، تحتاج المحفظة أيضا إلى التفكير في كيفية ضمان التوافق مع الإصدارات السابقة مع dApps التي لا تدعم EIP هذا.
يهدف EIP-6963 ، المقترح في مايو 2023 كمعيار Ethereum جديد وتم تمريره في أكتوبر من نفس العام ، إلى معالجة عدم وجود معايير محددة بوضوح مثل window.ethereum. يقدم المعيار آلية اكتشاف مزود الحقن المتعدد ، مما يسمح ل dApps باكتشاف جميع المحافظ المثبتة على متصفح المستخدم والاتصال بها بشكل موثوق. هذا يتغلب على القيود والصراعات التي تطرحها الطرق التقليدية. بالمقارنة مع نهج window.ethereum التقليدي ، يبسط EIP-6963 عملية اكتشاف المحفظة ، ويدعم التعايش بين ملحقات المحفظة المتعددة في نفس المتصفح. يعزز هذا الابتكار بشكل كبير قابلية التشغيل البيني لنظام Ethereum البيئي ويحسن تجربة المستخدم.
EIP-6963 ليس مجرد تحسين وظيفي؛ بل يعزز أيضًا قابلية التعرف على المحافظ وتجربة المستخدم من خلال السماح للمحافظ بحقن معلومات مثل الاسم والشعار و UUID و reverse DNS (RDNS). يمكن لتطبيقات الويب اللامركزية عرض هذه المعلومات، مما يتيح للمستخدمين فهمًا واضحًا للمحفظة التي يتفاعلون معها، مما يجنب الالتباس والعمليات الخاطئة. يؤدي ذلك إلى واجهة أكثر وضوحًا وموثوقية وسهولة استخدام. وبهذه الطريقة، يوفر EIP-6963 تجربة أكثر سلاسة للمستخدمين، مما يقلل من النزاعات المحتملة والصعوبات التشغيلية غير الضرورية، مساهمًا بشكل إيجابي في البيئة الإيثيريوم العامة.
تقدم تصميم EIP-6963 ثغرات أمنية محتملة. من خلال توفير قائمة بجميع المحافظ المسجلة، يسهل التفاعل بين تطبيقات اللامركزية والمستخدمين، ولكن يمكن أيضًا استغلالها من قبل تطبيقات خبيثة. قد تقوم تطبيقات اللامركزية الخبيثة بقراءة قائمة المحافظ المثبتة من قبل المستخدمين، مستنتجة أنشطتهم على البلوكشين أو توزيع الأصول الخاصة بهم. إذا كان آلية تسجيل الخدمة تفتقر إلى التحقق الصارم، يمكن للمحافظ الخبيثة التنكر كمقدمي خدمات شرعيين، وخداع المستخدمين لمنح الوصول وسرقة الأصول. لذلك، تتطلب تدابير أمنية إضافية (مثل موافقة المستخدم والتحقق من التسجيل).
من حيث تجربة المستخدم، فإن دعم المحفظة المتعددة لـ EIP-6963، على الرغم من كونه تحسينًا كبيرًا، قد يزيد أيضًا من التعقيد. على سبيل المثال، بعد تثبيت مستخدم لعدة محافظ، قد يقدم التطبيق اللامركزي العديد من الخيارات، مما يربك المستخدم بشأن أي محفظة يجب اختيارها. بالإضافة إلى ذلك، قد تحمل بعض المحافظ أسماء أو شعارات ليست بديهية، مما يزيد من صعوبة التعرف عليها. بالنسبة للمستخدمين الذين يحتاجون للتبديل بين المحافظ بشكل متكرر، قد يصبح هذا اللين متعبًا بدلاً من فائدة.
يقدم EIP-6963 نهجا قائما على الأحداث لمعالجة مشكلات مثل التعايش متعدد المحافظ وتعارضات مساحة الاسم وحماية خصوصية المستخدم في تطبيقات Web3 ، مما يحسن تجربة المستخدم بشكل كبير. تسمح هذه الآلية الموحدة ل dApps باكتشاف محافظ متعددة وتوصيلها تلقائيا دون التبديل اليدوي ، مع تجنب المنافسة والصراعات بين المحافظ ، مما يعزز سلاسة واستقرار الاتصالات. يعزز EIP-6963 أيضا الأمان عن طريق تجميد كائنات مزود المحفظة لمنع العبث ، مما يقلل من المخاطر الأمنية المحتملة. فيما يتعلق بالخصوصية ، يمكن للمستخدمين اختيار ما إذا كانوا يريدون مشاركة عنوان محفظتهم ، ومنع تسرب الهوية وبصمات الأصابع. يحافظ EIP-6963 على التوافق مع الإصدارات السابقة مع الواجهات القديمة ، مما يضمن انتقالا سلسا للأنظمة الحالية ، مع تبسيط العمل لمطوري dApp وتعزيز الدعم عبر الأنظمة الأساسية والأجهزة المتعددة. بشكل عام ، يعمل EIP-6963 على تحسين قابلية التشغيل البيني والأمان وحماية الخصوصية في Web3 ويوفر للمطورين أدوات أكثر كفاءة ، مما يعزز التطوير الإضافي لنظام Web3 البيئي.
Share
Content
في نظام السلسلة الكتلية، المحافظ بتنسيق تمديد المتصفح هي تطبيقات المحافظ التي توجد على شكل إضافات المتصفح. تتيح للمستخدمين التفاعل بشكل مريح مع حسابات سلسلة الكتل مباشرة داخل التطبيقات اللامركزية، مثل إرسال المعاملات، توقيع الرسائل، أو التفاعل مع العقود الذكية. أحد أمثلة الأمثلة النموذجية هو MetaMask، الذي أصبح تقريبًا أداة قياسية لاستخدام تطبيقات النظام البيئي لإثيريوم. على عكس التطبيقات التقليدية، تكون المحافظ بتنسيق تمديد المتصفح مضمنة في بيئة المتصفح. يسهل هذا الأسلوب عملية تفاعل المستخدم مع سلسلة الكتل ويزيل الحواجز التقنية لعمليات العقد المعقدة أو إدارة المفتاح الخاص. يحتاج المستخدمون فقط إلى تثبيت التمديد لبدء استخدام شبكة السلسلة الكتل بسرعة.
في هذا السياق، يشير "مزود الخدمة" إلى التقنية الأساسية أو الواجهة التي تدعم وظائف هذه المحافظ. على سبيل المثال، تتواصل المحافظ مع عقد البلوكشين من خلال بروتوكول إثيريوم JSON-RPC، بينما يقدم مزود الخدمة الواجهة البرمجية البعيدة المناظرة للسمح للمحفظة بالتعامل بشكل آمن مع التفاعلات على السلسلة.
تخيل أنك تريد استخدام بورصة لامركزية (DEX) أو سوق NFT. تفتح موقع dApp على الويب ، متحمسا لبدء التفاعل. ومع ذلك ، تنشأ مشكلة - يحتوي متصفحك على العديد من ملحقات المحفظة المثبتة ، مثل MetaMask و Coinbase Wallet و Brave Wallet ، لكن dApp يفشل في تحديد المحفظة التي تستخدمها حاليا بشكل صحيح وحتى يلقي رسالة خطأ: "لم يتم اكتشاف محفظة ، يرجى تثبيت ملحق محفظة". حاول تحديث الصفحة وإعادة تشغيل المستعرض ، لكن المشكلة لا تزال قائمة. يسلط هذا السيناريو الشائع الضوء على مشكلة عملية: آليات تحديد وتفاعل محافظ امتداد المتصفح غير كافية. مع ظهور المزيد من ملحقات المحفظة ومقدمي الخدمات ، تصبح تجربة المستخدم أكثر تعقيدا وإرباكا.
لمعالجة مشكلات التفاعل بين المحافظ وdApps، قدمت المجتمع EIP-1193 (واجهة برمجة تطبيقات إثيريوم JavaScript)، وهو معيار عالمي يحدد كيف يمكن لتطبيقات dApps التواصل مع المحافظ عبر بيئة المتصفح. الفكرة الأساسية لـ EIP-1193 هي التعامل مع وظائف سلسلة الكتل التي توفرها المحفظة من خلال واجهة موحدة. على سبيل المثال، يتواصل dApp مع المحفظة عبر كائن window.ethereum، إرسال الطلبات أو استقبال أحداث سلسلة الكتل.
على الرغم من أن EIP-1193 يعالج جزئيًا قضايا التوافق بين المحافظ وتطبيقات الويب اللامركزية، إلا أن لديه بعض القيود الواضحة:
لحل هذه المشكلة، اقترحت المجتمع EIP-6963 (معيار اكتشاف محفظة متصفح التمديد)، خطة تحسين لمحافظ تمديد المتصفح تهدف إلى تحسين اكتشاف المحفظة وآليات التفاعل. تهدف الحل إلى خفض حاجز الدخول لمقدمي المحافظ الجدد، وتعزيز المنافسة الأكثر عدالة، وتعزيز تجربة المستخدم على شبكة إثيريوم. على وجه التحديد، يقدم مجموعة من أحداث النافذة ويوفر بروتوكول اتصال ثنائي الاتجاه، مما يسمح لمكتبات إثيريوم والنصوص التي يتم حقنها بواسطة تمديدات المتصفح بالتفاعل. سيتيح هذا للمستخدمين اختيار محفظتهم المفضلة استنادًا إلى احتياجاتهم، مما يحسن من التجربة العامة.
يضمن الـ RDNS (Reverse DNS) استقرار معرفات مزود المحفظة مع منع تضارب أسماء النطاقات. يؤكد EIP-6963 على القواعد التي يجب أن تتبعها تقاليد RDNS، مثل تنسيقات النطاق الصالحة وأجزاء النطاق التي يتحكم فيها المزود. كما يشدد على أن التطبيقات اللامركزية (dApps) يجب ألا تعتمد على قيمة RDNS لاكتشاف الميزات لتجنب إمكانية وجود حوافز مزورة أو ضارة. واجهة ProviderDetail في EIP-6963 توفر لتطبيقات الـ dApps البيانات الوصفية لمزود المحفظة، مساعدة في تفاعل المحفظة.
واجهة EIP6963ProviderDetail هي واجهة تستخدم للإعلان عن وصف مزود المحفظة ومعلومات المحفظة. من خلال تضمين خصائص مثل المعلومات (بيانات المحفظة) والمزود (واجهة مزود المحفظة)، يتيح لتطبيقات dApps الحصول على معلومات مفصلة حول المحافظ والتفاعل معها عبر واجهات موحدة. تعتبر هذه الواجهة أساسًا لتحقيق التوافقية والتوافق بين التطبيقات اللامركزية والمحافظ المختلفة.
آلية الحدث تضمن أن يمكن لتطبيقات الويب اللامركزية والمحافظ اكتشاف بعضها البعض والتفاعل مع بعضها البعض دون أن تعتمد على ترتيب تنفيذ ثابت. يسمح ذلك بأن يكون اكتشاف وتفاعل تطبيقات الويب اللامركزية والمحافظ غير متأثر بترتيب التنفيذ، مما يجنب الصراعات والأخطاء.
إعلان حدث EIP6963Provider: يستخدم هذا الحدث من قبل المحافظ للإعلان عن وجودها. يحتوي على معلومات حول المحفظة (EIP6963ProviderDetail) وواجهة المحفظة (EIP1193Provider). تحتوي خاصية التفاصيل لهذا الحدث على البيانات الجديدة المجمدة للمحفظة (باستخدام Object.freeze()) لضمان عدم التغيير.
حدث EIP6963RequestProviderEvent: يتم استخدام هذا الحدث من قبل التطبيقات اللامركزية لطلب موفر المحفظة. يستخدم التطبيق اللامركزي هذا الحدث لإخطار المحفظة بأنه جاهز ويطلب التفاعل.
نظرًا لترتيب تنفيذ غير المحدد لشفرة dApp والمحفظة، قد تحدث ظروف السباق. تم تصميم آلية الحدث بشكل خاص لضمان أن يمكن لتطبيقات dApps والمحافظ التعامل بشكل صحيح مع الأحداث عند اكتشافها لبعضها البعض. قد تقوم المحفظة بإطلاق حدث الإعلان أولاً، في حين قد لا يكون التطبيق جاهزًا للاستماع إليه حتى في وقت لاحق. لمنع الأخطاء، ستعيد المحفظة تشغيل حدث الإعلان بعد الحدث الأولي، مما يضمن أن يتلقى التطبيق الرسالة في الوقت المناسب.
يجب أن تستمع التطبيقات اللامركزية لحدث EIP6963AnnounceProviderEvent ولا يجوز إزالة مستمع الحدث أثناء تحميل الصفحة. يضمن هذا أن يمكن للتطبيق اللامركزي الاستماع والاستجابة باستمرار لحدث إعلان المحفظة خلال دورة حياته. بعد التعامل مع حدث الإعلان، يجب على التطبيق اللامركزي تشغيل حدث EIP6963RequestProviderEvent لطلب مزيد من التفاعل مع المحفظة.
يمكن لتطبيقات الويب اللامركزية تخزين عدة كائنات EIP6963ProviderDetail لمحافظ مختلفة، مما يتيح للمستخدمين اختيار بين محافظ مختلفة للتفاعل داخل التطبيق. وهذا يوفر مرونة أكبر للمستخدمين، حيث يمكنهم تبديل المحافظ دون إعادة تحميل الصفحة.
تحقق هذا التصميم اكتشافًا سلسًا وتفاعلًا بين التطبيقات اللامركزية والمحافظ من خلال EIP6963AnnounceProviderEvent و EIP6963RequestProviderEvent. من خلال استخدام مستمعي الأحداث ومشغلات الأحداث، يمكن للتطبيقات اللامركزية والمحافظ تنسيق إجراءاتها على الرغم من ترتيب التنفيذ غير المحدد، وتجنب ظروف السباق، وضمان سلوك مستقر. علاوة على ذلك، يمكن للتطبيقات اللامركزية تبديل المحافظ بناءً على تفضيلات المستخدم، مما يعزز تجربة المستخدم والتوافقية للمحافظ.
لا يتطلب هذا EIP استبدال window.ethereum، مما يعني أنه لن يكسر مباشرة التطبيقات الحالية التي لا يمكن تحديثها لاستخدام طريقة اكتشاف المحفظة هذه. ومع ذلك، من المُوصَى بشدة بتنفيذ هذا EIP من قبل تطبيقات الويب اللامركزية لضمان قدرتها على اكتشاف موفري المحفظة المتعددين، وتعطيل استخدام window.ethereum، ما لم يتم استخدامه كطريقة احتياطية عند فشل الاكتشاف. بالمثل، يجب على موفري المحفظة الحفاظ على التوافقية مع window.ethereum لضمان التوافقية مع تطبيقات الويب اللامركزية التي لا تنفذ هذا EIP. ولتجنب مشكلات تضارب الأسماء السابقة، من المُوصَى بأن تقوم المحافظ بحقن كائن موفرها في مساحة أسم محددة للمحفظة ثم استخدام كائن الوسيط إلى مساحة أسم window.ethereum.
تمتلك ملحقات المتصفح، وخاصة ملحقات المحفظة، القدرة على تعديل محتوى الصفحة وكائنات المزود، وهو ميزة أساسية في تصميمها. تعتبر كائنات المزود للمحافظ المختلفة واجهات موثوقة لنقل بيانات المعاملات. لتجنب التعديلات غير المقصودة على التفاعل بين التطبيق اللامركزي والمحفظة من قبل الصفحة أو ملحقات أخرى، الأفضلية هي تجميد كائن EIP1193Provider باستخدام Object.freeze() قبل أن ترسل المحفظة حدث eip6963:announceProvider. يضمن هذا أن لا يمكن تعديل الكائن. ومع ذلك، في بعض الحالات، قد تتطلب التوافقية مع الويب تعديل هذا الكائن. في مثل هذه الحالات، يحتاج مطورو المحافظ إلى إيجاد توازن بين الأمان والتوافقية مع الويب.
يجب على التطبيقات اللامركزية اكتشاف بنشاط ما إذا كانت خصائص أو وظائف كائن مزود المحفظة قد تم تزويرها لمنع تزوير أو تعديل المحافظ الأخرى. أحد الطرق لاكتشاف التزوير هو البحث عما إذا كانت خاصية uuid في كائنات معلومات EIP6963Provider متسقة. يجب على التطبيقات اللامركزية ومكتبات الاكتشاف الخاصة بها النظر في طرق التزوير الأخرى المحتملة واتخاذ إجراءات وقائية إضافية لمنع مثل هذا السلوك، مما يضمن أمان المستخدم.
استخدام صور SVG يمكن أن يؤدي إلى هجمات البرمجة النصية عبر المواقع المتقاطعة (XSS)، حيث يمكن لملفات SVG أن تحتوي على كود JavaScript. يُنفذ هذا الكود ضمن سياق الصفحة ويمكن أن يعدل محتوى الصفحة بشكل محتمل أو يؤثر على محافظ أخرى. لذلك، عند تقديم الرموز، يحتاج التطبيقات اللامركزية إلى النظر في كيفية التعامل مع مثل هذه المخاطر الأمنية لمنع استخدام الصور الخبيثة كتقنيات التحجيم، مما يخفي التعديلات الخبيثة على الصفحة أو المحفظة.
تتمثل إحدى مزايا آلية حلقة الحدث المتزامن المستخدمة في هذا التصميم في أنه يمكن لكل من dApp والمحفظة بدء العملية للإعلان عن المزود. لذلك ، يمكن لمنفذي المحفظة اختيار ما إذا كانوا سيعلنون عن أنفسهم لجميع الصفحات أو يتخذون تدابير أخرى لتقليل احتمالية أخذ بصمات أصابع المستخدمين عبر كائن window.ethereum المحقون. أحد البدائل الممكنة هو أن تؤخر المحفظة حقن كائن الموفر حتى يعلن dApp عن الحدث eip6963: requestProvider. في هذه المرحلة ، يمكن للمحفظة بدء تدفق موافقة واجهة المستخدم ، وسؤال المستخدم عما إذا كان على استعداد لمشاركة عنوان محفظته. يسمح هذا النهج للمحفظة بتمكين ميزة "الاتصال الخاص". ومع ذلك ، عند اتباع هذا النهج ، تحتاج المحفظة أيضا إلى التفكير في كيفية ضمان التوافق مع الإصدارات السابقة مع dApps التي لا تدعم EIP هذا.
يهدف EIP-6963 ، المقترح في مايو 2023 كمعيار Ethereum جديد وتم تمريره في أكتوبر من نفس العام ، إلى معالجة عدم وجود معايير محددة بوضوح مثل window.ethereum. يقدم المعيار آلية اكتشاف مزود الحقن المتعدد ، مما يسمح ل dApps باكتشاف جميع المحافظ المثبتة على متصفح المستخدم والاتصال بها بشكل موثوق. هذا يتغلب على القيود والصراعات التي تطرحها الطرق التقليدية. بالمقارنة مع نهج window.ethereum التقليدي ، يبسط EIP-6963 عملية اكتشاف المحفظة ، ويدعم التعايش بين ملحقات المحفظة المتعددة في نفس المتصفح. يعزز هذا الابتكار بشكل كبير قابلية التشغيل البيني لنظام Ethereum البيئي ويحسن تجربة المستخدم.
EIP-6963 ليس مجرد تحسين وظيفي؛ بل يعزز أيضًا قابلية التعرف على المحافظ وتجربة المستخدم من خلال السماح للمحافظ بحقن معلومات مثل الاسم والشعار و UUID و reverse DNS (RDNS). يمكن لتطبيقات الويب اللامركزية عرض هذه المعلومات، مما يتيح للمستخدمين فهمًا واضحًا للمحفظة التي يتفاعلون معها، مما يجنب الالتباس والعمليات الخاطئة. يؤدي ذلك إلى واجهة أكثر وضوحًا وموثوقية وسهولة استخدام. وبهذه الطريقة، يوفر EIP-6963 تجربة أكثر سلاسة للمستخدمين، مما يقلل من النزاعات المحتملة والصعوبات التشغيلية غير الضرورية، مساهمًا بشكل إيجابي في البيئة الإيثيريوم العامة.
تقدم تصميم EIP-6963 ثغرات أمنية محتملة. من خلال توفير قائمة بجميع المحافظ المسجلة، يسهل التفاعل بين تطبيقات اللامركزية والمستخدمين، ولكن يمكن أيضًا استغلالها من قبل تطبيقات خبيثة. قد تقوم تطبيقات اللامركزية الخبيثة بقراءة قائمة المحافظ المثبتة من قبل المستخدمين، مستنتجة أنشطتهم على البلوكشين أو توزيع الأصول الخاصة بهم. إذا كان آلية تسجيل الخدمة تفتقر إلى التحقق الصارم، يمكن للمحافظ الخبيثة التنكر كمقدمي خدمات شرعيين، وخداع المستخدمين لمنح الوصول وسرقة الأصول. لذلك، تتطلب تدابير أمنية إضافية (مثل موافقة المستخدم والتحقق من التسجيل).
من حيث تجربة المستخدم، فإن دعم المحفظة المتعددة لـ EIP-6963، على الرغم من كونه تحسينًا كبيرًا، قد يزيد أيضًا من التعقيد. على سبيل المثال، بعد تثبيت مستخدم لعدة محافظ، قد يقدم التطبيق اللامركزي العديد من الخيارات، مما يربك المستخدم بشأن أي محفظة يجب اختيارها. بالإضافة إلى ذلك، قد تحمل بعض المحافظ أسماء أو شعارات ليست بديهية، مما يزيد من صعوبة التعرف عليها. بالنسبة للمستخدمين الذين يحتاجون للتبديل بين المحافظ بشكل متكرر، قد يصبح هذا اللين متعبًا بدلاً من فائدة.
يقدم EIP-6963 نهجا قائما على الأحداث لمعالجة مشكلات مثل التعايش متعدد المحافظ وتعارضات مساحة الاسم وحماية خصوصية المستخدم في تطبيقات Web3 ، مما يحسن تجربة المستخدم بشكل كبير. تسمح هذه الآلية الموحدة ل dApps باكتشاف محافظ متعددة وتوصيلها تلقائيا دون التبديل اليدوي ، مع تجنب المنافسة والصراعات بين المحافظ ، مما يعزز سلاسة واستقرار الاتصالات. يعزز EIP-6963 أيضا الأمان عن طريق تجميد كائنات مزود المحفظة لمنع العبث ، مما يقلل من المخاطر الأمنية المحتملة. فيما يتعلق بالخصوصية ، يمكن للمستخدمين اختيار ما إذا كانوا يريدون مشاركة عنوان محفظتهم ، ومنع تسرب الهوية وبصمات الأصابع. يحافظ EIP-6963 على التوافق مع الإصدارات السابقة مع الواجهات القديمة ، مما يضمن انتقالا سلسا للأنظمة الحالية ، مع تبسيط العمل لمطوري dApp وتعزيز الدعم عبر الأنظمة الأساسية والأجهزة المتعددة. بشكل عام ، يعمل EIP-6963 على تحسين قابلية التشغيل البيني والأمان وحماية الخصوصية في Web3 ويوفر للمطورين أدوات أكثر كفاءة ، مما يعزز التطوير الإضافي لنظام Web3 البيئي.