تمرير الرسائل عبر السلاسل في Hyperlane (General Message Passing, GMP) هو إجراء معياري يُنفذ بشكل متكرر بين جميع الشبكات المدعومة: يستدعي التطبيق دالة dispatch على Mailbox في الشبكة الأصلية لإرسال الرسالة، ثم ينقل ناقل خارج السلسلة الرسالة مع بيانات التحقق إلى الشبكة الهدف، وبعد التحقق من وحدة الأمان بين الشبكات (ISM)، يستدعي Mailbox دالة handle في العقد المستقبل لإتمام التوصيل. دليل Hyperlane (HYPER) يشرح الإطار الكامل لطبقة التوافقية في Hyperlane من خلال ثلاثة مكونات رئيسية: Mailbox وISM وWarp Route.
في التطبيقات متعددة الشبكات، ينبغي على المطورين فهم المسار الكامل من إرسال الرسالة حتى تسليمها، لتكوين وحدات الأمان بدقة، وتقدير الرسوم، ومعالجة الرسائل غير الموصلة. ISM وWarp Route يستعرضان توزيع المهام بين أنواع ISM (مثل Multisig وAggregation) وWarp Route، لمساعدة المطورين على اختيار مستوى التحقق الأنسب في كل مرحلة.
كل رسالة عبر السلاسل لها messageId فريد عالميًا، ويحتفظ Mailbox بسجل للرسائل الموصلة لمنع هجمات الإعادة. Hyperlane vs LayerZero vs Wormhole يقارن بنية هذه البروتوكولات الثلاثة من حيث مسارات التحقق وصلاحيات النشر. يدفع مرسل الرسالة رسوم التوصيل مقدمًا على الشبكة الهدف باستخدام Interchain Gas Payment (IGP)، بينما يتحمل الناقل تكاليف الغاز على الشبكة الهدف لاستكمال العملية. يتيح Explorer تتبع دورة حياة الرسالة بالكامل من الإرسال حتى التسليم.
تتكون دورة الرسالة في Hyperlane من ست مراحل متتابعة: dispatch (إرسال على الشبكة الأصلية)، كتابة شجرة Merkle، توقيع المُدقِّق (إذا تطلب ISM ذلك)، فهرسة الناقل وجمع البيانات، process (تقديم على الشبكة الهدف)، والتحقق عبر ISM مع handle (تسليم على الشبكة الهدف). هذا التدفق لا يعتمد على تطبيق محدد أو حدث لمرة واحدة؛ أي عقد متكامل مع Mailbox يمكنه تفعيل هذه الدورة باستمرار.
| المرحلة | الشبكة | الإجراء الأساسي | المشاركون الرئيسيون |
|---|---|---|---|
| Dispatch | الشبكة الأصلية | ترميز الرسالة، كتابة في شجرة Merkle، إصدار أحداث | عقدة المرسل، Mailbox |
| Attestation (توقيع) | الأصل (خارج السلسلة) | توقيع جذر Merkle | المُدقِّق (في Multisig ISM) |
| Relay | خارج السلسلة → الشبكة الهدف | فهرسة الأحداث، جمع البيانات، تقديم العملية | الناقل |
| Verify | الشبكة الهدف | التحقق من أصل الرسالة وسلامتها | ISM |
| Deliver | الشبكة الهدف | استدعاء handle لدى المستقبل لتنفيذ المنطق | Mailbox، المستقبل |
يعرض هذا الجدول تسلسل Hyperlane GMP من الشبكة الأصلية إلى الشبكة الهدف، حيث تحدث عمليتا الإرسال والتسليم على عقود Mailbox في كل شبكة. يتولى الناقلون والمُدقِّقون النقل خارج السلسلة وشهادات الأمان، بينما يعمل ISM كبوابة تحقق على الشبكة الهدف.
الشكل 1. نظرة عامة على تدفق الرسائل عبر السلاسل في Hyperlane: المسار الكامل من إرسال الشبكة الأصلية، مرورًا بالناقل/المُدقِّق، حتى تحقق ISM وتسليم handle على الشبكة الهدف.
تبدأ هذه المرحلة عندما يستدعي عقد المرسل Mailbox.dispatch(). يستلم Mailbox ثلاث معطيات: معرف نطاق الشبكة الهدف (destinationDomain)، عنوان المستقبل (recipientAddress بصيغة bytes32)، ومحتوى الرسالة (messageBody). يضيف Mailbox رأسًا قياسيًا إلى محتوى الرسالة، ويشمل حقولًا مثل version، nonce، origin، sender، destination، وrecipient، ما يضمن أن الرسالة فريدة وغير قابلة للتلاعب.
بعد التنفيذ، يضيف Mailbox الرسالة كعنصر ورقي في شجرة Merkle التزايدية (عبر عقدة MerkleTreeHook) ويصدر أحداث Dispatch وDispatchId. الـ messageId هو تجزئة keccak256 للرسالة مع الرأس، ويعاد من dispatch ويمكن تتبعه في Explorer. الـ nonce عداد متزايد في Mailbox الشبكة الأصلية. حتى مع تكرار نفس نص الرسالة، تنتج nonces المختلفة معرفات رسائل فريدة.
يمكن للمرسل الاستعلام عن رسوم العبور عبر quoteDispatch()، والتي تغطي رسوم الإرسال على الشبكة الأصلية ورسوم الغاز المدفوعة مسبقًا لتسليم الرسالة على الشبكة الهدف. يمكن أيضًا لوظيفة Post-Dispatch Hook دفع رسوم الغاز للشبكة الهدف إلى الناقل عبر InterchainGasPaymaster (IGP) بعد الإرسال. عقب dispatch، تدخل الرسالة في حالة انتظار النقل. يتم إنشاء messageId من تجزئة الرسالة الكاملة، ويمنع Mailbox على الشبكة الهدف التكرار من خلال خريطة delivered(messageId).
يقوم الناقل والمُدقِّق بمهام متكاملة: المُدقِّق مسؤول عن التحقق الأمني، حيث يقرأ جذر Merkle عند كل رسالة جديدة، يوقع نقطة التحقق، وينشر التوقيع في تخزين عام مثل AWS S3 أو Google Cloud Storage. الناقل يتابع أحداث Mailbox، يجمع بيانات ISM اللازمة (مثل توقيعات المُدقِّق وإثبات Merkle)، ويستدعي Mailbox.process() على الشبكة الهدف لتقديم الرسالة.
يتطلب المُدقِّق فقط في حالات Multisig ISM أو وحدات الأمان الاقتصادية، بينما يمكن للناقل فقط جمع بيانات ISM حسب متطلبات الوحدة. يمكن للمستقبل تحديد عناوين المُدقِّقين وعتبة التوقيع في Multisig ISM.
يتكون الناقل داخليًا من مفهرس (Indexer) ومقدم (Submitter): المفهرس يستعلم الأحداث من الشبكة الأصلية عبر RPC ويخزنها في قاعدة بيانات محلية، والمقدم يتحقق من دفع الغاز المسبق، يسترجع البيانات الوصفية، يحاكي العملية، ثم يبث استدعاء العملية. إذا فشل التسليم، يعيد الناقل المحاولة تلقائيًا باستخدام استراتيجية تراجع أُسّي. تواقيع المُدقِّق متاحة للعامة ويمكن لأي شخص حملها واستدعاء دالة process. يختار مرسل الرسالة المتلقي المدفوع له مسبقًا عبر IGP، ويجب على مشغل الناقل إعادة موازنة الإيرادات في حساب الشبكة الهدف.
يبدأ التسليم عندما يستدعي الناقل دالة Mailbox.process(metadata, message). يتحقق Mailbox أولًا من توصيل messageId مسبقًا؛ إذا تم توصيله، يُرفض التكرار. بعدها، يستعلم Mailbox عن ISM المحدد من قبل المستقبل ويمرر الرسالة والبيانات لدالة ISM.verify().
عند اجتياز التحقق، يستدعي Mailbox دالة handle(origin, sender, body) في عقد المستقبل، لتمرير محتوى الرسالة ومعلومات المصدر. يجب أن يدعم عقد المستقبل دالة handle ضمن واجهة IMessageRecipient، والتي تنفذ عمليات الأعمال مثل التصويت على الحوكمة عبر السلاسل، سك أو إصدار الأصول، أو تحديث الحالة. بعد النجاح، يُميز Mailbox messageId كمُسلّم ويصدر أحداث Process وProcessId.
في تطبيقات Warp Route للأصول، تُفعّل دالة handle عمليات قفل أو سك أو حرق أو إصدار الرموز. أما في الحوكمة، تسجل التصويتات أو تنفذ المقترحات. يتحمل الناقل رسوم الغاز في هذه المرحلة على الشبكة الهدف، بينما يكون المرسل قد دفع الرسوم عبر IGP.
الشكل 2. تسلسل التسليم: process في Mailbox يُفعّل التحقق عبر ISM، ثم استدعاء handle للمستقبل، مع منع التكرار عبر messageId.
ISM هو عقد ذكي على الشبكة الهدف يتحقق من صحة الرسائل العابرة للسلاسل. قبل التسليم، يمرر Mailbox الرسالة والبيانات إلى ISM.verify(). تختلف خوارزمية التحقق حسب نوع ISM. النوع الافتراضي هو Multisig ISM الذي يتطلب توقيعات عدد معين من المُدقِّقين على جذر Merkle. يمكن نشر ISMs مخصصة أو استخدام Aggregation ISM للجمع بين عدة مسارات تحقق.
للتحقق من إعدادات ISM، يمكن الاستعلام عن عنوان ISM الخاص بعقد المستقبل، مراجعة عتبة المُدقِّقين ونوع ISM، وتأكيد حالة التحقق والبيانات لأي رسالة في Explorer.
| نوع ISM | طريقة التحقق | حالة الاستخدام |
|---|---|---|
| Multisig ISM | توقيع المُدقِّقين على جذر Merkle حتى بلوغ العتبة | النموذج الأمني الافتراضي، الرسائل العامة |
| Aggregation ISM | تحقق جميع وحدات ISM المعينة | أمان متعدد الطبقات |
| Rate Limited ISM | تحديد حجم الرسائل/التحويلات لكل وحدة زمنية | أصول عالية القيمة عبر السلاسل |
| Routing ISM | تعيين ISM مختلف لكل شبكة أصلية | استراتيجيات أمان مختلفة متعدد الشبكات |
| Custom ISM | منطق تحقق مخصص للتطبيق | متطلبات أعمال خاصة |
في Multisig ISM، يسترجع الناقل التواقيع من التخزين العام للمُدقِّقين ويقدمها مع إثبات Merkle. توفر وحدة الأمان الاقتصادية حماية اقتصادية عبر EigenLayer AVS؛ أي احتيال من المُدقِّق يؤدي إلى slashing. عند النجاح، يُرجع ISM القيمة true ويستدعي Mailbox دالة handle؛ عند الإخفاق، تُرجع العملية ويعيد الناقل المحاولة حسب استراتيجية التراجع.
يمثل تمرير الرسائل عبر السلاسل في Hyperlane مخاطر بنيوية يجب فهمها من منظور طبقة الرسائل، طبقة النقل، والطبقة الاقتصادية. تشمل مخاطر الرسائل: تكوين ISM غير صحيح، أو وجود ثغرات في دالة handle في عقد المستقبل. تشمل مخاطر النقل: تأخير أو توقف الناقل، تقلب رسوم الغاز على الشبكة الهدف، أو تعطل المُدقِّق في ISM متعدد التواقيع مع عتبة عالية.
تشمل المخاطر الاقتصادية احتمال احتيال المُدقِّق (مما يؤدي إلى خفض HYPER)، أو تكوين رسوم IGP بشكل خاطئ، ما يسبب نقصًا في رسوم التسليم. يُتطلب انتظار نهائية الشبكة الأصلية وتقديم الناقل، ويعتمد الاعتماد على جودة الدفع المسبق عبر IGP وتشغيل الناقل.
| مصدر الخطر | المظهر النموذجي | إستراتيجية التخفيف |
|---|---|---|
| تكوين ISM | عتبة تحقق منخفضة أو مُدقِّقون غير موثوقين | تدقيق ISM، استخدام Aggregation ISM |
| تأخير الناقل | الرسالة عالقة قيد الانتظار | تتبع عبر Explorer، كفاية رسوم IGP، ناقل احتياطي |
| تعطل المُدقِّق | عدم تحقيق عتبة Multisig | مُدقِّقون احتياطيون، مراقبة التحقق |
| ثغرة في العقد | استغلال منطق handle أو ISM | تدقيق، ISM محدود المعدل، ISM قابل للإيقاف |
| هجوم التكرار | توصيل messageId نفسه مرارًا | خريطة delivered في Mailbox ترفض تلقائيًا |
قبل التشغيل، تحقق من عناوين Mailbox وISM وعقود المستقبل، وميّز بين إعدادات البروتوكول الافتراضية والتخصيصات. في سيناريوهات مثل نقل الأصول عبر Warp Route، انتبه لعقد التوجيه وربط الرموز.
تتبع رسائل Hyperlane تدفقًا متكررًا: dispatch → attestation → relay → verify → deliver. تُشفّر الرسالة وتكتب في شجرة Merkle عبر Mailbox.dispatch() في الشبكة الأصلية؛ يوقع المُدقِّق نقطة التحقق (في Multisig ISM)؛ يجمع الناقل البيانات ويستدعي process على الشبكة الهدف؛ بعد تحقق ISM، يستدعي Mailbox دالة handle لإتمام التسليم. الـ messageId فريد عالميًا، ولا يُسمح بتكرار التسليم. يدفع IGP رسوم غاز الشبكة الهدف مقدمًا، ويوفر Explorer تتبع دورة حياة الرسالة بالكامل.
يستدعي المرسل على الشبكة الأصلية Mailbox.dispatch() لإرسال الرسالة، ثم يكتبها Mailbox في شجرة Merkle ويصدر أحداثًا. يتابع الناقل الأحداث، يجمع بيانات ISM، ويستدعي Mailbox.process() على الشبكة الهدف. بعد تحقق ISM، يستدعي Mailbox دالة handle للمستقبل لإتمام التسليم.
يتم الإرسال عبر عقد Mailbox في الشبكة الأصلية ويبدأه عقد المرسل. أما التسليم فيتم عبر عقد Mailbox في الشبكة الهدف، ويبدأه الناقل باستدعاء process، وبعد تحقق ISM تُستدعى دالة handle للمستقبل.
المُدقِّق يوقع جذر Merkle للشبكة الأصلية، موفرًا شهادة لوحدات الأمان مثل Multisig ISM. الناقل يدير طبقة النقل خارج السلسلة، يفهرس أحداث الشبكة الأصلية، يجمع البيانات، ويقدم استدعاء العملية على الشبكة الهدف. وظائفهما متكاملة: الناقل أساسي لكل عمليات التسليم، والمُدقِّق يُطلب فقط لأنواع ISM محددة.
كل رسالة لها messageId فريد (تجزئة keccak256 تعاد عند الإرسال). يمكنك عبر Hyperlane Explorer تتبع حالة الرسالة كاملة من الإرسال حتى العملية، بما في ذلك وقت الإرسال، سجلات الناقل، نتائج تحقق ISM، وتأكيد التسليم على الشبكة الهدف.
الأسباب الشائعة: عدم كفاية رسوم IGP، تأخير أو إعادة محاولة الناقل، عدم بلوغ توقيعات المُدقِّق عتبة Multisig، ارتفاع رسوم الغاز على الشبكة الهدف، أو فشل تحقق ISM. استخدم Explorer لمعرفة سبب الانتظار وسجلات إعادة المحاولة لأي رسالة.
لا. يحتفظ Mailbox بسجل delivered(messageId). إذا تم تسليم messageId، تُرفض العملية على الشبكة الهدف لمنع التكرار. كما يضمن nonce أن كل عملية إرسال—even لنفس نص الرسالة—تنتج معرف رسالة مختلف.





