العقود الآجلة
وصول إلى مئات العقود الدائمة
TradFi
الذهب
منصّة واحدة للأصول التقليدية العالمية
الخیارات المتاحة
Hot
تداول خيارات الفانيلا على الطريقة الأوروبية
الحساب الموحد
زيادة كفاءة رأس المال إلى أقصى حد
التداول التجريبي
مقدمة حول تداول العقود الآجلة
استعد لتداول العقود الآجلة
أحداث مستقبلية
"انضم إلى الفعاليات لكسب المكافآت "
التداول التجريبي
استخدم الأموال الافتراضية لتجربة التداول بدون مخاطر
إطلاق
CandyDrop
اجمع الحلوى لتحصل على توزيعات مجانية.
منصة الإطلاق
-التخزين السريع، واربح رموزًا مميزة جديدة محتملة!
HODLer Airdrop
احتفظ بـ GT واحصل على توزيعات مجانية ضخمة مجانًا
منصة الإطلاق
كن من الأوائل في الانضمام إلى مشروع التوكن الكبير القادم
نقاط Alpha
تداول الأصول على السلسلة واكسب التوزيعات المجانية
نقاط العقود الآجلة
اكسب نقاط العقود الآجلة وطالب بمكافآت التوزيع المجاني
تفسير تقنية MetaMask Snap: تحليل تجربة التطوير وقيود القدرات والأمن وإمكانات الأعمال
المحتوى | لي داماو، بروس
التحرير والتنسيق | Cikey
تصميم | وانج تينج
ما هو MetaMask Snap؟
قبل بضعة أيام، أعلنت ConsenSys عن إطلاق MetaMask Snaps Open Beta للجمهور. يمكن لـ MetaMask Snaps توسيع إمكانيات المحفظة، ويمكنك تثبيت التطبيقات (Snaps) التي أنشأها مطورو الطرف الثالث للحصول على وظائف جديدة.
إذا قامت ConsenSys ببناء MetaMask في WeChat، فإن Snap هو تطبيق WeChat الصغير. لذلك، يمكننا أن نرى طموح MetaMask، فبالإضافة إلى حجم ConsenSys وعدد مستخدمي MetaMask، سيتغير نمط حقل المحفظة.
في الوقت الحالي، أعلن المسؤول عن 35 طرازًا متاحًا من Snap وأصدر متجر Snap App Store
** قائمة المفاجئة الجزئية **
إذن، كيف يبدو MetaMask Snap بالضبط من منظور تقني؟ ما هي حدود قدراتهم؟ هل هو آمن؟ كيف كانت تجربة التطوير؟ قد تحدد كل هذه الإمكانات المستقبلية لـ MetaMask Snap.
منذ العام الماضي، أجرت LXDAO بحثًا متعمقًا حول تنفيذ Snap، حاليًا، شارك العديد من الأعضاء في تطوير Snap وشاركوا بنشاط في الهاكاثونات ذات الصلة. اليوم، سوف نتعمق في المشكلات المذكورة أعلاه من منظور تقني وسنقوم فعليًا بتطوير Snap للسماح لك بتجربة تجربة مطور Snap.
التجربة الأولى لـ MetaMask Snap
تثبيت MetaMask Snap
يمكن عادة تثبيته من خلال سوق MetaMask Snap الرسمي، أو مباشرة على الموقع الرسمي للمشروع. لنأخذ UniPass كمثال، عند الوصول إلى صفحة التطبيق، سيتم توفير زر للسماح لك بالربط بـ MetaMask.
بعد الضغط سيتم تثبيت Snap:
استخدم MetaMask Snap
بعد اكتمال التثبيت، يمكنك البدء في استخدام المنتجات والوظائف المقابلة.في هذا التطبيق، يقوم UniPass بإنشاء حساب عقد ذكي لك لتسهيل التحكم من خلال حساب EOA الخاص بـ MetaMask.
عند إجراء عملية نقل، سينبثق UniPass Snap ليؤكد لك ما إذا كنت تريد إجراء هذه العملية على محفظة UniPass AA.
بعد التأكيد من خلال MetaMask، يمكن تنفيذ العمليات ذات الصلة. في هذا السيناريو، يتمتع MetaMask بالقدرة على التحكم في محفظة UniPass AA من خلال Snap، ويتيح UniPass للمستخدمين تشغيل المحفظة دون تطوير مكون إضافي للمحفظة، ويمكن أيضًا استخدام MetaMask لتعريف المستخدمين بتكلفة منخفضة جدًا!
ما هي المعلومات التي يمكننا الحصول عليها من عملية التثبيت والاستخدام هذه؟
بالنسبة لمنتج المحفظة، يأتي الأمان دائمًا في المقام الأول، وبعد ذلك، دعنا نحلل تصميم أمان Snap.
هل Snap آمن؟
تحليل وقت تشغيل كود Snap
كما ذكرنا أعلاه، يعتمد Snap على NPM لإدارة الحزم والإصدارات، مما يوضح أن Snap هو في الواقع تطبيق يستند إلى الويب وJava. كما نعلم جميعًا، فإن بناء جملة JS مرن للغاية ومجاني، ويمكن أن يؤدي بسهولة إلى هجمات مثل XSS والتصيد الاحتيالي. كيف يعالج MetaMask Snap هذا التحدي؟
بعد إجراء بعض الأبحاث، ليس من الصعب العثور على أن MetaMask يمول Agoric ويدمج بعمق JavaS المقوى لفريق Agoric (المعروف أيضًا باسم Secure Ecma) كحل “المحاكاة الافتراضية الكاملة” الخاص به. صمم Agoric واجهة برمجة تطبيقات مقيدة لـ Java وأرسل مسودة اقتراح إلى TC-39 (اتحاد معايير JS) على:
ببساطة، تعد Hardened Java مجموعة فرعية أكثر أمانًا من Java القياسية. بمساعدة بعض إمكانيات وآليات JS، يتم تقليل بعض أذونات وأساليب استدعاء JS API، وبالتالي تقليل بعض المخاطر. فهو ينشئ صندوق حماية آمنًا لتنفيذ التعليمات البرمجية المقابلة، ويتبع أيضًا **مبدأ الامتياز الأقل لتخطيط التحكم في أذونات التعليمات البرمجية. **
تعاونت Agoric مع MetaMask لتطوير LavoMoat (هذا المشروع لتعزيز أمان Snap. LavaMoat عبارة عن مجموعة من الأدوات التي تركز على حل المخاطر الأمنية للتبعيات الخارجية في مشاريع JS وتضيف قيودًا على بعض واجهات برمجة التطبيقات والمنطق.
أطلق Agoric وMetaMask بشكل مشترك هجمات أمنية واختبارات دفاعية للصندوق الأسود والصندوق الأبيض، وأصدرا تقارير أمنية مفصلة. لذلك، على مستوى وقت تشغيل التعليمات البرمجية، لدينا سبب وجيه للاعتقاد بأن Snap آمن.
يجب أن يكون رمز Snap مفتوح المصدر ومدققًا
بالإضافة إلى وجود عملية ترخيص واضحة للمستخدم وتصميم الحد الأدنى من الامتيازات، لكي تصبح شركة Snap معترف بها رسميًا، يجب عليها فتح الكود المصدري، ومن خلال قوة المجتمع، يمكن تقليل إمكانية قيام Snap بإحضار التعليمات البرمجية الضارة الخاصة بها إلى حد كبير. .
بالإضافة إلى ذلك، وجدنا أيضًا أن Snap على الموقع الرسمي يجب أن يخضع لمراجعة التعليمات البرمجية من قبل شركة أمان تابعة لجهة خارجية قبل إصدارها. يؤدي هذا إلى تحسين مصداقية أمان Snap بشكل كبير، ومن بين المدققين SlowMist، وهو أمر مألوف لدى الجميع.
المخاطر الأمنية المكتشفة حاليًا لـ Snap
نظرًا لأن Snap يعتمد حاليًا على حزمة NPM وإدارة الإصدار، فهناك احتمال لإجراء تغييرات معينة على مستوى التعليمات البرمجية، وقد تتسبب عمليات التدقيق غير الإلزامية في حدوث مخاطر أمنية معينة.
نظرًا لأن MetaMask لا يمكنه التحكم في إصدار إصدار النظام الأساسي NPM، فيمكن للمشروع إصدار إصدار جديد في أي وقت ليتمكن المستخدمون من تثبيته. نظرًا لتكلفة التدقيق، لن تقوم شركة التدقيق بمراجعة كل إصدار، لذلك سينشأ موقف: قد لا تكون التغييرات في الإصدار الأخير مفتوحة المصدر أو مدققة.
ومع ذلك، نظرًا لأن بيئة التنفيذ هي بيئة وضع الحماية وتستخدم الحد الأدنى من تصميم الأذونات، ما لم يؤكد المستخدم يدويًا تغييرات الأذونات الجديدة، فإن الإصدار الجديد من Snap سيحصل فقط على أذونات الإصدار السابق لتنفيذ العمليات. ومع ذلك، إذا طلب Snap الكثير من الأذونات، فسيظل يسبب مخاطر، لذلك لا تزال بحاجة إلى توخي الحذر عند تثبيت Snap واستخدامه.
الإمكانيات الفنية والقيود الخاصة بـ MetaMask Snap
على الرغم من الإعلان رسميًا عن MetaMask Snap مؤخرًا، إلا أنه تم تطوير Snap بالفعل منذ 4 سنوات! تم نشر الفكرة الأصلية لـ MetaMask Snap على موقع Medium بواسطة Dan Finlay في 10 أكتوبر 2019
يعد تحقيق التوازن بين الأمان والمرونة والفعالية تحديًا كبيرًا للغاية، ويمكن ملاحظة أيضًا أن MetaMask دفع الكثير من المال وقام بالكثير من الاستعدادات لهذا اليوم.
حاليًا، هناك ثلاث واجهات برمجة تطبيقات رئيسية مفتوحة:
فيما يلي مقدمة مختصرة عن القدرات والتأثيرات المفتوحة المحددة لـ MetaMask Snap، بحيث يمكنك الحصول على تصور أكثر حيوية.
إمكانية الإعلام بالإشعارات
يمكن لواجهة Snap_notify عرض الإشعارات في MetaMask أو المتصفح. ويمكن لشركة Snap إرسال الرسائل مباشرة إلى المستخدمين من خلال هذه الواجهة، كما هو موضح في الشكل أدناه
إمكانيات الرؤى المتعلقة بالمعاملات
عندما يتفاعل المستخدم مع العقد الذكي، سيقوم MetaMask بتشغيل حدث onTransaction الخاص بـ Snap. سيقوم MetaMask بتمرير المعاملة الأصلية غير الموقعة إلى طريقة معالج onTransaction. يمكن لـ Snap إرجاع واجهة على صفحة التأكيد الثانوية للمعاملة وتخصيص محتوى العرض.
من خلال هذه القدرة، يمكن تحقيق وظائف مثل التدقيق الأمني لمعلومات المعاملات وعرض المعلومات الموسعة.
واجهة الحوار وإمكانيات الواجهة المخصصة
ستسمح إمكانية الحوار لـ Snap بفتح نافذة مستقلة مباشرة، وتحقيق إمكانات مشابهة لنافذة /التأكيد/ المنبثقة التقليدية (كما هو موضح أدناه)، والتي يمكن استخدامها للتذكيرات والتأكيدات وإرسال المعلومات وما إلى ذلك.
من خلال الحوار، ستتمكن من تخصيص واجهات وعمليات تفاعلية بسيطة للاتصال بتطبيقك اللامركزي.
ما نوع الوظائف غير المتاحة حاليًا لـ MetaMask Snap؟
نظرًا للأمان وأسباب أخرى، لا يدعم Snap حاليًا أطر عمل الواجهة الأمامية لجهات خارجية ويوفر فقط عددًا صغيرًا نسبيًا من UIKit.لا يزال ما يلي يستخدم Insight كمثال لإظهار مكتبات مكونات واجهة المستخدم التي يمكن لجميع المطورين الاتصال بها.
كما هو موضح في الشكل، يوجد حاليًا فقط العنوان (نص كبير)، والنص (نص صغير)، واللوحة (البطاقة ويمكن استخدامها مرة واحدة فقط)، والمقسم (خط التقسيم)، والقابل للنسخ (انقر للنسخ)، ومجموعة فرعية صغيرة من Markdown ( **غامق ** و مائل)، لذلك يبدو أن بناء التفاعلية مستحيل مؤقتًا، ومن المستحيل استخدام HTML المضمن لتحقيق العمليات التفاعلية. ومع ذلك، بعد طرح الأسئلة في Discord الرسمي، ادعى المسؤول أن هذه لأسباب أمنية وسيتم إصدارها في الإصدار التالي.
بالإضافة إلى ذلك، واستنادًا إلى الاعتبارات الأمنية أيضًا، يتم دعم طريقة الجلب فقط للطلبات الخارجية، ولا يتم دعم المزيد من بروتوكولات الطلب مثل WebSocket. نظرًا للقيود المتعلقة بالأمان والقدرة والخصوصية، من المستحيل أيضًا الحصول على معلومات العميل، مثل عنوان URL الحالي الذي يستدعي Snap، ولا يمكن تنفيذ وظائف أكثر ثراءً وتنوعًا.
معظم هذه المشاكل والقيود ترجع إلى اعتبارات أمنية، وأعتقد أنه في المستقبل، بعد التحقق من الأمان، سيتم النظر في المزيد من الأذونات.
لقد أصبح MetaMask، الذي يوفر واجهات برمجة التطبيقات هذه، منتجًا مشابهًا لمنصة مفتوحة. يشبه هذا الشعور تمامًا عندما أطلق WeChat حسابات رسمية وبرامج صغيرة، مما جعل الناس يشعرون على الفور أنها لم تعد أداة دردشة بسيطة.
توقع MetaMask هيكل السوق اليوم في عام 2019، أي أن هناك العديد من السلاسل العامة وحفلات المشاريع، واحتياجات المحفظة المخصصة المختلفة. بدلاً من أن يحتاج كل طرف في المشروع إلى تطوير مكون إضافي خاص به ويحتاج المستخدمون إلى تثبيت العديد من المكونات الإضافية في نفس الوقت، فمن الأفضل التطوير بناءً على MetaMask Snap. من بين الدفعة الأولى من Snaps التي تم إصدارها، وجدنا أيضًا محافظًا بيئية أخرى غير تابعة لـ EVM مثل Sui Wallet وSolana Wallet وArweave Wallet. بفضل قاعدة المستخدمين الحالية، لا بد أن يكون لـ MetaMask Snap تأثير كبير على مشهد المحفظة.
في الواقع، قد يكون خيال MetaMask Snap أكبر مما توقعنا، حتى خارج نطاق المحافظ. يمكننا أيضًا رؤية العمل الذي قام به فريق EthSign، الذي يقوم بإنشاء KeyChain لمدير كلمات المرور العالمي استنادًا إلى MetaMask Snaps، ويمكن تشفير كلمات المرور في جميع المتصفحات بواسطة مفتاح المحفظة وتخزينها. اعتني جيدًا بمحفظتك بهذه الطريقة واحتفظ بجميع كلمات المرور الخاصة بك معك.
إن Snap مناسب جدًا للمطورين، مع واجهة برمجة التطبيقات المفتوحة، كيف تبدو تجربة المطور المحددة؟ ربما يتعين علينا أيضًا تطوير Snap بأنفسنا لتجربتها.
قم بتطوير اختبار Snap مباشرةً
أفكار الاغتراب
كما نعلم جميعًا، فإن معظم المستخدمين لا يعرفون فعليًا ما هو العقد الذكي الذي يتفاعلون معه في معظم الحالات، ويتضمن هذا بشكل أساسي المشكلات التالية:
بالنسبة للمستخدمين العاديين، من المستحيل أن نطلب منهم قراءة رمز صلابة العقد قبل التشغيل. في الوقت الحالي، من المناسب جدًا استخدام وظيفة Transaction Insight لتنفيذ بعض تحليلات العقود الذكية، على سبيل المثال، قد يؤدي استخدام الذكاء الاصطناعي لإجراء تدقيق أمني بسيط نسبيًا للعقد الذكي إلى تصفية 80٪ من هجمات التصيد الاحتيالي منخفضة المستوى. **
قم بإعداد بيئة التطوير و****قم بتنزيل المحفظة
تحتاج أولاً إلى تثبيت MetaMask Flask
MetaMask Flask هو توزيع ملحق MetaMask يركز على المطورين، ويستخدم بشكل أساسي لمعاينات الميزات الجديدة وتطوير الميزات التجريبية. لاحظ أن هذه هي نسخة المطورين من MetaMask. يرجى عدم استخدامها يوميًا، وعدم استيراد المفتاح الخاص الذي تستخدمه يوميًا. يتم استخدام Flask هنا بشكل أساسي لتسهيل المعاينة المحلية وفي الوقت الفعلي لـ Snap الذي قمنا بتطويره.
إنشاء حساب
بعد تثبيت المحفظة، قم بإنشاء محفظة جديدة تمامًا مثل إنشاء محفظة MetaMask بشكل طبيعي، يرجى ملاحظة أن هذه المحفظة مخصصة للاختبار، يرجى عدم استيراد محفظتك اليومية الخاصة.
بعد ذلك، نحتاج إلى إعادة شحن بعض العملات التجريبية في المحفظة التي تم إنشاؤها حديثًا، ويمكن الحصول على العملات التجريبية من خلال الصنبور، يستخدم Snap المذكور في هذه المقالة Goerli، لذا ستركز المقالة التالية على Goerli.
تهيئة Snap بناءً على القالب
وفقًا للوثائق الرسمية، استخدم أولاً @metamask/create-snap CLI لإنشاء مشروع Snap جديد، ونستخدم القالب الرسمي للتهيئة:
غزل إنشاء @metamask/snap communication-insights-snap && cd communication-insights-snap
بنية الملف المفاجئة
الملفات الرئيسية لـ Snap موجودة في ./packages/snap، وبنية دليل الملف هي كما يلي
يتم وضع ملف تكوين Snap في snap.mainfest.json، والملف الرئيسي لـ Snap هو ./src/index.ts، وهو موجز للغاية.
تمكين الأذونات
نحتاج أولاً إلى تمكين الأذونات، أولاً نضيف العناصر الثلاثة التالية في snap.mainfest.json
“الأذونات الأولية”: {
“endowment:transaction-insight”: {}, // رؤى المعاملات
“endowment:ethereum-provider”: {}, //احصل على rpc
“endowment:network-access”: {}//طلب الشبكة
}
يمكنك أيضًا تعديل deion وprojectName في ملف Mainfest لتعديل وصف المشروع واسمه.
الحصول على المعاملة
بعد ذلك، في هذه الحالة، ما عليك سوى تعديل ملف Index.ts لإكمال جميع الوظائف، مثال التعليمات البرمجية البسيط هو كما يلي، يرجى الانتقال إلى التعليمات البرمجية التي يمكن تشغيلها بالكامل:
استيراد { OnTransactionHandler، OnRpcRequestHandler } from’@metamask/snaps-types’؛ استيراد { عنوان، لوحة، نص، قابل للنسخ، مقسم } من’@metamask/snaps-ui’؛ تصدير const onTransaction: OnTransactionHandler = async ({ معاملة }) => {
// تتضمن المعاملة (عنوان العقد) والبيانات (بيانات التفاعل) وقيم أخرى
//ما يلي هو مثال رمزي للحصول على بيانات تدقيق العقد
معلومات ثابتة = جلب (
//ما يلي هو مثال التعليمات البرمجية لجزء واجهة المستخدم
يعود {
محتوى: [
نص(
عنصر المخاطرة ${info.riskList.length}،
)،
عنوان(${info.riskList.length ? ‘قائمة المخاطر’ : ‘’}),
…info.riskList.map((item, i) => text(${i + 1} ${item.text})),
مقسم ()،
نص(
مزيد من معلومات التدقيق من عنوان url التالي،
)،
قابلة للنسخ(
)
]
};
};
لمزيد من المعلومات، يرجى الرجوع إلى وثائق مطور MetaMask Snap لإكمال منتجات Snap الأكثر تعقيدًا.
بعد التثبيت، سترى معلومات تحذيرية مماثلة للمخاطر لكل معاملة:
في الوقت الحاضر، تجربة تطوير Snap سلسة للغاية، مع عدم وجود أي مشاكل تقريبًا، كما أن القوالب الرسمية غنية جدًا ومتنوعة. يمكن للمطورين ذوي الخبرة الواسعة عادةً البدء والبدء في تطوير اللقطات التي يحتاجونها في غضون ساعات قليلة. ولكن لابد من إصداره رسمياً وإتاحته للمستخدمين العاديين. وسوف تتمثل العقبة الأكبر في عمليات التدقيق الأمني. لا يمتلك جميع المطورين المستقلين والفرق الصغيرة الموارد اللازمة لتدقيق اللقطات الخاصة بهم. لذلك، من المتوقع ألا يشهد عدد Snap وثرواته نموًا هائلاً لفترة طويلة في المستقبل.
دعم المطورين
إذا تمكنت من الاطلاع على الأمثلة المذكورة أعلاه، تهانينا لك على أن تصبح مطورًا مؤهلاً للمبتدئين في Snap!
أنشأ مسؤولو MetaMask أيضًا MetaMask Grants DAO العام الماضي لتمويل المشاريع عالية القيمة في نظام MetaMask البيئي من خلال برنامج المنح. MetaMask Grants DAO هو برنامج تجريبي بقيادة الموظفين يمنح المنح للمطورين الخارجيين حول العالم لبناء تجارب مؤثرة داخل نظام MetaMask البيئي. تضخ MetaMask جزءًا من أرباحها في هذه DAO كل ثلاثة أشهر، وتبلغ الميزانية السنوية الحالية لـ MetaMask Grants DAO 2.4 مليون دولار أمريكي.
حاليًا، يمكن لأي مشروع يمكنه إثراء نظام MetaMask البيئي التقدم بطلب للحصول على MetaMask Grants DAO الرسمية (MetaMask Grant). لمزيد من المعلومات، يرجى الانتقال هنا
ومن الجدير بالذكر أن LXDAO تتشرف بالتقدم للحصول على منح MetaMask هذا العام والمشاركة في تطوير المشاريع ذات الصلة، وقد أنشأت قناة اتصال، إذا كنت عضوًا في LXDAO ولديك أفكار ذات صلة، فيمكنك الاتصال بهم بشكل أكثر كفاءة تقديم طلبك.
خاتمة
أعلاه، قمنا بتحليل ماهية Snap من منظور تقني، وما إذا كانت آمنة، وقيود القدرة، وتجربة المطور. ملخص موجز هو كما يلي:
في الوقت الحاضر، لا يزال MetaMask Snap يتكرر بسرعة، وأعتقد أنه سيتم فتح المزيد من الأذونات والإمكانيات في المستقبل. ومن المأمول أن يتم تقديم آليات أكثر انفتاحًا وأمانًا، مثل آلية التدقيق الرسمية من Apple والتحكم في إصدار مستودع الأكواد الرسمي، حتى يتمكن المزيد من المطورين من المشاركة بتكلفة منخفضة. إذا تم تحسين هذه المشكلة، فمن المتوقع أن يكون هناك الكثير من الطلب في المستقبل. سيكون هناك أيضًا مناصب مخصصة لمطوري Snap.
مع العدد الهائل من مستخدمي MetaMask، قد يكون لدى المطورين المستقلين أيضًا فرص معينة. دعونا ننتظر ونرى ما سيأتي به الابتكار المذهل القادم من Snap.