شراء العملات المشفرة
الأسواق
العقود الفورية
العقود الآجلةBTC
مدخرات
مركز الأحداث
مركز المكافآت
المزيد
مهرجان صفر رسوم
Ethers.js (مكتبة JavaScript): ما هي Ethers.js؟Ethers.js مكتبة مفتوحة المصدر لـ JavaScript وTypeScript، تُستخدم لربط التطبيقات والمحافظ والبرامج النصية وأدوات المطورين بشبكة Ethereum وشبكات البلوكشين الأخرى المتوافقة مع EVM.توفر الEthers.js (مكتبة JavaScript): ما هي Ethers.js؟Ethers.js مكتبة مفتوحة المصدر لـ JavaScript وTypeScript، تُستخدم لربط التطبيقات والمحافظ والبرامج النصية وأدوات المطورين بشبكة Ethereum وشبكات البلوكشين الأخرى المتوافقة مع EVM.توفر ال

Ethers.js (مكتبة JavaScript)

2026/10/13 15:32
#Advanced
Humanity
H$0.05544-2.18%
PX
PX$0.0128+1.58%
IO
IO$0.16201-1.74%
NODE
NODE$0.005216-0.07%
Ethereum
ETH$2,438.07-2.67%

ما هي Ethers.js؟

Ethers.js مكتبة مفتوحة المصدر لـ JavaScript وTypeScript، تُستخدم لربط التطبيقات والمحافظ والبرامج النصية وأدوات المطورين بشبكة Ethereum وشبكات البلوكشين الأخرى المتوافقة مع EVM.

توفر المكتبة للمطورين وظائف قابلة لإعادة الاستخدام لقراءة بيانات البلوكشين، وإرسال المعاملات، وإدارة الحسابات، وتوقيع الرسائل، والتفاعل مع العقود الذكية، وفك ترميز سجلات الأحداث، والعمل مع تنسيقات بيانات Ethereum.

بدلاً من إنشاء كل طلب JSON-RPC أو ترميز كل استدعاء لعقد ذكي يدويًا، يستطيع المطور استخدام كائنات ethers.js وطرائقها التي تتولى قدرًا كبيرًا من العمل التقني.

تصف وثائق ethers.js الرسمية المكتبة بأنها أداة متكاملة ومدمجة للتفاعل مع بلوكشين Ethereum ومنظومته.

تُستخدم Ethers.js عادةً في الواجهات الأمامية للتطبيقات اللامركزية، وخدمات البلوكشين من جهة الخادم، ومحافظ العملات المشفرة، وأنظمة المراقبة الآلية، والبرامج النصية للاختبار، وأدوات الدفع، وسير عمل نشر العقود الذكية.

لا تشغّل المكتبة بلوكشين خاصًا بها ولا توفر آلية إجماع Ethereum.

بل تعمل كطبقة برمجية بين التطبيق وعقدة Ethereum أو المحفظة أو خدمة RPC متوافقة.

كُتبت Ethers.js بلغة TypeScript، وتتضمن تعريفات أنواع مدمجة قد تساعد المطورين على اكتشاف بعض الأخطاء قبل تشغيل التطبيق.

يُوزع المشروع بموجب ترخيص MIT وتتم صيانته عبر مستودع الشيفرة المصدرية العام لـ ethers.js.

ما الإصدار الحالي من Ethers.js؟

اعتبارًا من 16 يوليو 2026، الإصدار الحالي الموثق هو ethers v6.17.0.

يسرد المستودع الرسمي الإصدار 6.17.0 بوصفه إصدارًا نُشر في 18 يونيو 2026.

يمكن أيضًا التحقق من الإصدار الحالي عبر قائمة حزمة ethers الرسمية.

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

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

قد يؤدي تثبيت إصدار مستقبلي غير معروف تلقائيًا من دون اختباره إلى سلوك غير متوافق أو تغييرات غير متوقعة في التبعيات.

ما الذي تفعله Ethers.js؟

توفر Ethers.js مجموعة من الأدوات للتفاعل مع أنظمة البلوكشين المتوافقة مع Ethereum.

يمكنها ربط التطبيق بعقدة Ethereum عبر JSON-RPC أو WebSocket أو واجهة محفظة المتصفح.

كما يمكنها استرداد أرصدة الحسابات والكتل والمعاملات وبيانات الرسوم وشيفرة العقود الذكية وسجلات الأحداث ومعلومات الشبكة.

ويمكنها إنشاء المحافظ وإدارتها، واشتقاق الحسابات من العبارات الأولية، وتشفير المفاتيح الخاصة، وتوقيع الرسائل أو المعاملات.

كما يمكنها استخدام ABI لعقد ذكي لترميز استدعاءات الدوال وفك ترميز القيم المُعادة.

وتستطيع إرسال معاملات تغيّر حالة البلوكشين عبر موقّع، وانتظار حصول تلك المعاملات على تأكيدات الكتل.

ويمكنها تقدير رسوم الغاز، وتنسيق وحدات العملات المشفرة، وحساب قيم التجزئة، واسترداد عناوين التوقيع، والتحقق من صحة عناوين Ethereum.

تتيح هذه الميزات للمطورين التركيز على منطق التطبيق بدلاً من إعادة بناء الاتصال منخفض المستوى بالبلوكشين من البداية.

كيفية تثبيت Ethers.js

تُثبَّت Ethers.js عادةً عبر نظام حزم npm، باستخدام اسم الحزمة ethers.

تتضمن تعليمات التثبيت الرسمية الأمر npm install ethers لمشاريع Node.js.

بعد التثبيت، يمكن للمطور استيراد مساحة أسماء ethers كاملة أو استيراد فئات ووظائف محددة.

يدعم الإصدار 6 أنماط وحدات JavaScript الحديثة، ويسمح باستيراد كثير من الوظائف مباشرةً من الحزمة الرئيسية.

قد تساعد عمليات الاستيراد الانتقائية أدوات التجميع على تضمين الشيفرة التي يحتاج إليها التطبيق فقط.

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

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

يجب التحقق من اسم الحزمة ومعلومات الناشر والمستودع والإصدار وبيانات السلامة وملف قفل التبعيات قبل التثبيت.

كيفية اتصال Ethers.js ببلوكشين

تتواصل Ethers.js مع البنية التحتية للبلوكشين عبر مزوّد (Provider).

المزوّد اتصال للقراءة فقط، يتيح للتطبيق طلب معلومات البلوكشين ومحاكاة المعاملات.

يرسل المزوّد الطلبات إلى عقدة Ethereum أو نقطة نهاية RPC متوافقة أخرى.

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

لا يحتوي المزوّد عادةً على مفتاح خاص، ولا يمكنه تفويض معاملة من حساب مستخدم بمفرده.

تشرح وثائق مزوّد ethers.js الرسمية فئات المزوّد والعمليات المتاحة عبرها على البلوكشين.

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

قد تكون نقاط النهاية العامة أو المشتركة مفيدة للاختبار، لكنها قد تصبح بطيئة أو غير متاحة عند ارتفاع الطلب.

ما هو المزوّد في Ethers.js؟

المزوّد طبقة تجريد تمثل اتصالاً بشبكة متوافقة مع Ethereum.

وهو يوفر للمطورين واجهة JavaScript موحدة حتى عند اختلاف اتصال العقدة الأساسي أو وسيلة النقل.

يتواصل مزوّد JSON-RPC مع العقدة عبر طلبات JSON-RPC قياسية.

ويمكن لمزوّد WebSocket الحفاظ على اتصال دائم يفيد في تلقي الكتل الجديدة والأنشطة المعلّقة وإشعارات الأحداث.

أما مزوّد المتصفح فيغلّف واجهة محفظة مضافة إلى المتصفح وتتبع معيار مزوّد المتصفح الشائع.

يمكن لمزوّد احتياطي الجمع بين مصادر بيانات متعددة ومقارنة استجاباتها أو ترتيب أولوياتها وفق إعداداته.

تستطيع المزوّدات استرداد البيانات العامة، لكن ينبغي عدم الخلط بينها وبين الموقّعين الذين يفوضون إجراءات الحساب.

ما هو BrowserProvider؟

BrowserProvider فئة في ethers.js v6 تُستخدم عادةً لربط تطبيق ويب بمزوّد Ethereum المضاف إلى المتصفح.

يوفر المزوّد المضاف عادةً بيئة محفظة تتيح للمستخدم الموافقة على الوصول إلى الحساب والمعاملات.

يمكن للتطبيق إنشاء BrowserProvider من الواجهة المضافة، ثم طلب موقّع لحساب تمت الموافقة عليه.

لا يمنح الاتصال بمحفظة التطبيق إمكانية الوصول تلقائيًا إلى المفتاح الخاص للمحفظة.

تحتفظ المحفظة عادةً ببيانات التوقيع داخل بيئتها المحمية، وتطلب من المستخدم الموافقة على كل توقيع أو معاملة مطلوبة.

ينبغي للتطبيقات توضيح سبب طلبها الوصول إلى الحساب، وتجنب طلب التوقيعات قبل أن يفهم المستخدم الإجراء.

ما هو الموقّع في Ethers.js؟

الموقّع طبقة تجريد تمثل حساب Ethereum القادر على تفويض الرسائل والمعاملات.

قد يعتمد الموقّع على مفتاح خاص أو محفظة مشتقة من عبارة أولية أو جهاز توقيع مادي أو محفظة متصفح أو حساب ذكي أو نظام توقيع آخر.

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

يمكن للموقّع عادةً إرجاع عنوانه، وتوقيع رسالة، وتقدير رسوم الغاز للمعاملة، وملء حقولها، وإرسال معاملة مفوضة.

تعتمد العمليات المتاحة على تنفيذ الموقّع.

يمكن للموقّع المتصل بمزوّد استخدام بيانات الشبكة عند إعداد معاملة وإرسالها.

قد يتمكن الموقّع غير المتصل من توقيع البيانات محليًا، لكنه قد لا يتمكن من بث المعاملة الناتجة.

المزوّد مقابل الموقّع في Ethers.js

يقرأ المزوّد بيانات البلوكشين، بينما يفوض الموقّع الإجراءات المرتبطة بحساب.

يمكن للمزوّد التحقق من رصيد أو محاكاة دالة عقد من دون الاحتفاظ بمفتاح خاص.

أما الموقّع فيمكنه الموافقة على تحويل توكن أو نشر عقد أو إرسال معاملة أخرى تغيّر حالة البلوكشين.

تتصرف كثير من كائنات ethers.js على نحو مختلف بحسب اتصالها بمزوّد أو بموقّع.

يمكن لعقد متصل بمزوّد فقط تنفيذ عمليات للقراءة فقط عادةً.

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

يساعد الفصل بين المزوّدات والموقّعين المطورين على عدم الخلط بين الوصول إلى البيانات العامة والتحكم الحساس بالحساب.

ما هي المحفظة في Ethers.js؟

فئة Wallet في ethers.js هي موقّع يعتمد على مفتاح خاص.

يمكنها اشتقاق عنوان Ethereum وتوقيع الرسائل والمعاملات وإرسال المعاملات عند اتصالها بمزوّد.

يمكن إنشاء محفظة من مفتاح خاص، أو توليدها عشوائيًا، أو استعادتها من عبارة أولية مدعومة، أو فك تشفيرها من ملف keystore بصيغة JSON مشفرة.

تشرح وثائق محفظة ethers.js الرسمية إنشاء المحافظ والمحافظ الحتمية الهرمية وملفات JSON المشفرة والعبارات الأولية ووظائف التوقيع.

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

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

ينبغي لأنظمة التوقيع في بيئة الإنتاج استخدام ضوابط الوصول والأسرار المشفرة والصلاحيات المحدودة والنسخ الاحتياطية الآمنة ومراقبة المعاملات بما يتناسب مع كمية العملات المشفرة التي تتم إدارتها.

هل تخزّن Ethers.js أموال المستخدمين؟

لا تعمل Ethers.js كجهة حافظة ولا تحتفظ بالعملات المشفرة نيابةً عن المستخدمين.

إنها مكتبة برمجية يمكنها إنشاء كائنات توقيع والتفاعل معها ومع حسابات البلوكشين.

تظل الأموال تحت سيطرة المفتاح الخاص أو العقد الذكي أو نظام المحفظة الخارجي المرتبط بالعنوان.

إذا استخدم المطور ethers.js لإنشاء محفظة جديدة، تقع على عاتق المطور أو المستخدم مسؤولية حماية بيانات الاسترداد بأمان.

قد يؤدي فقدان المفتاح الخاص أو العبارة الأولية إلى تعذر الوصول إلى العملات المشفرة المرتبطة بهما نهائيًا.

وقد يتيح كشف المفتاح لشخص آخر تحويل الأصول.

كيفية تفاعل Ethers.js مع العقود الذكية

تستخدم Ethers.js فئة Contract لتمثيل عقد ذكي منشور.

يُنشأ مثيل العقد باستخدام عنوان مستهدف وABI ومزوّد أو موقّع اختياري.

يصف ABI الدوال الخارجية للعقد وأحداثه وأخطاءه وأنواع بياناته.

تستخدم Ethers.js هذه المعلومات لإنشاء طرائق JavaScript قابلة للاستدعاء وفك ترميز استجابات البلوكشين.

توضح وثائق Contract API الرسمية أن المنفّذ المرتبط، وعادةً ما يكون مزوّدًا أو موقّعًا، يحدد العمليات التي يمكن للعقد تنفيذها.

يمكن لاستدعاء عقد للقراءة فقط استرداد رصيد توكن أو عنوان مالك أو إعداد بروتوكول أو قيمة عامة أخرى.

أما الاستدعاء الذي يغيّر الحالة فيمكنه تحويل التوكنات أو الموافقة على إنفاقها أو إيداع ضمان أو التصويت أو المطالبة بالمكافآت أو تنفيذ إجراء آخر يحدده العقد.

لا يثبت استدعاء دالة عقد عبر ethers.js أن العقد آمن.

يظل على المطور التحقق من عنوان العقد وABI والصلاحيات والشبكة والسلوك المتوقع والافتراضات الأمنية.

ما هو ABI؟

ABI اختصار لـ Application Binary Interface، أي واجهة التطبيق الثنائية.

وهي تحدد كيفية تواصل البرامج الخارجية مع الواجهة القابلة للاستدعاء في العقد الذكي.

يصف ABI أسماء الدوال وأنواع المدخلات والمخرجات وبنية الأحداث والأخطاء المخصصة وقواعد قابلية التغيير.

تستخدم Ethers.js ABI لتحويل قيم JavaScript المقروءة إلى بيانات معاملات مُرمّزة.

كما تفك ترميز البايتات المُعادة وسجلات الأحداث إلى قيم يستطيع التطبيق فهمها.

تغطي وثائق ABI في ethers.js الرسمية الواجهات والتجزئات والترميز وفك الترميز والأحداث والأخطاء وتنسيقات ABI المقروءة للبشر.

قد يؤدي ABI غير صحيح إلى ترميز التطبيق لاستدعاء الدالة الخاطئة أو فك ترميز البيانات المُعادة على نحو غير صحيح.

ينبغي للمطورين الحصول على ملفات ABI من مصنوعات بناء موثّقة أو مصادر موثوقة للمشروع.

ما هي فئة Interface؟

تمثل فئة Interface واجهة ABI بصيغة تستطيع ethers.js استخدامها للترميز وفك الترميز.

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

يفيد ذلك عندما يحتاج المطور إلى تحكم منخفض المستوى من دون إنشاء كائن Contract كامل.

يمكن لـ Interface أيضًا مساعدة أدوات المراقبة على تحديد دالة العقد التي حاولت المعاملة استدعاءها.

كما يمكنها فك ترميز السجلات عند معرفة تعريف الحدث الصحيح.

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

قراءة بيانات العقود الذكية

يستخدم استدعاء العقد الذكي للقراءة فقط حالة البلوكشين الحالية من دون إنشاء معاملة.

تنفّذ العقدة المتصلة الاستدعاء محليًا، ولا يكلف عادةً رسوم غاز لأنه لا يُضاف إلى البلوكشين.

يمكن للمطور استخدام ethers.js لقراءة قيم مثل أرصدة التوكنات والتفويضات ومالكي العقود ومعلمات البروتوكول والسجلات المخزنة.

تعكس النتيجة الحالة عند الكتلة التي يستخدمها المزوّد.

قد تعيد نقاط نهاية RPC مختلفة نتائج متباينة لفترة وجيزة إذا كانت متزامنة عند ارتفاعات مختلفة للكتل.

قد تتطلب القراءات التاريخية عقدة أرشيفية تحتفظ بالحالة القديمة المطلوبة.

وقد يفشل استدعاء القراءة إذا أعاد العقد خطأً، أو كان ABI غير صحيح، أو لم يتضمن العنوان الشيفرة المتوقعة، أو لم تتوفر لدى المزوّد البيانات اللازمة.

إرسال معاملات العقود الذكية

تتطلب دالة العقد التي تغيّر الحالة موقّعًا، لأنها تحتاج إلى تفويض من حساب.

ترمّز Ethers.js الدالة ووسائطها في بيانات المعاملة، ثم تطلب من الموقّع تفويضها.

قد تتضمن المعاملة أيضًا قيمة من عملة مشفرة أصلية، وحدًا لرسوم الغاز، وإعدادات للرسوم، ورقم nonce، ومعرّف السلسلة.

بعد التفويض، تُبث المعاملة عبر المزوّد المتصل.

تكون النتيجة الأولية عادةً استجابة معاملة تتضمن هاش المعاملة والتفاصيل المرسلة.

يمكن للمطور بعد ذلك انتظار إيصال المعاملة وعدد التأكيدات الذي يحدده.

لا يُضمن نجاح المعاملة المرسلة، إذ قد تتغير حالة البلوكشين قبل تنفيذها.

استجابات المعاملات وإيصالاتها

تصف استجابة المعاملة معاملة أُرسلت أو اكتُشفت عبر مزوّد.

وقد تشمل الهاش والمرسل والمستلم ورقم nonce والبيانات والقيمة ومعلومات الغاز والحقول المتعلقة بالشبكة.

يتاح إيصال المعاملة بعد إدراجها في كتلة.

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

ينبغي للتطبيقات التحقق من حالة الإيصال قبل اعتبار المعاملة ناجحة.

يثبت هاش المعاملة وجود معرّف لها، لكنه لا يثبت نجاح تنفيذ عملية العقد المطلوبة.

يمكن لطريقة waitForTransaction لدى المزوّد انتظار إدراج المعاملة وعدد التأكيدات المحدد.

تقدير رسوم الغاز في Ethers.js

يمكن لـ Ethers.js طلب تقدير من المزوّد لكمية الغاز المتوقع أن تستهلكها المعاملة.

تحاكي العقدة المعاملة المقترحة وفق حالة البلوكشين الحالية.

قد يفشل التقدير إذا كانت المعاملة المحاكاة ستُرجع خطأً.

تحذر وثائق المزوّد الرسمية من أن تقدير الغاز هو حساب تقريبي، لأن حالة البلوكشين تواصل التغير.

قد تنجح المعاملة أثناء التقدير ثم تفشل لاحقًا عند تغير الأرصدة أو التفويضات أو الأسعار أو تخزين العقد أو ظروف أخرى.

قد يضيف المطورون هامشًا معقولاً عند الاقتضاء، لكن تحديد حد مرتفع للغاية للغاز لا يصلح منطق العقد غير الصحيح.

يدفع المستخدم عادةً مقابل الغاز المستهلك فعليًا، لا كامل الجزء غير المستخدم من حد الغاز.

التعامل مع وحدات ETH والتوكنات

تُخزّن قيم Ethereum والتوكنات كأعداد صحيحة بوحداتها الأصغر.

يُقاس ETH داخليًا عادةً بوحدة wei، حيث يساوي 1 ETH مقدار 10 أس 18 wei.

توفر Ethers.js أدوات مثل parseEther وformatEther وparseUnits وformatUnits.

تساعد هذه الدوال على تحويل السلاسل العشرية المقروءة إلى قيم صحيحة على البلوكشين، وإعادة القيم الصحيحة إلى نص مقروء.

تشرح وثائق تحويل الوحدات في ethers.js الرسمية كيفية تحويل القيم العشرية بأمان.

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

ينبغي التأكد من قيمة decimals الفعلية للتوكن عبر العقد الصحيح، بدلاً من افتراضها من الرمز.

BigInt في Ethers.js v6

تستخدم Ethers.js v6 نوع BigInt في JavaScript للعديد من القيم الصحيحة الكبيرة.

قد تتجاوز مبالغ Ethereum وقيم الغاز وأرقام nonce والأعداد الصحيحة للعقود النطاق الآمن للأعداد العادية في JavaScript.

يوضح دليل الترحيل من v5 إلى v6 الرسمي أن فئة BigNumber السابقة استُبدلت في عمليات كثيرة بنوع BigInt الأصلي في ES2020.

تستخدم قيم BigInt العمليات الحسابية الصحيحة، ولا يمكن مزجها مباشرةً مع قيم Number العادية في JavaScript.

كما لا يمكنها تمثيل مبالغ التوكنات الكسرية من دون تحويلها إلى أصغر وحدات صحيحة للتوكن.

ينبغي للمطورين الذين يحدّثون شيفرات أقدم مراجعة العمليات الحسابية والمقارنات والتسلسل وتنسيق واجهة المستخدم وتخزين قواعد البيانات.

أدوات العناوين

توفر Ethers.js وظائف للتحقق من عناوين Ethereum وتوحيد صيغتها ومقارنتها وإنشائها.

يستخدم عنوان checksum أحرفًا كبيرة وصغيرة للمساعدة على اكتشاف بعض أخطاء الكتابة.

يمكن لأداة getAddress توحيد صيغة عنوان صحيح ورفض بعض صيغ checksum غير الصالحة.

لا يثبت كون العنوان صالحًا تقنيًا أنه يعود إلى المستخدم أو العقد المقصود.

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

يمكن للمهاجم إنشاء عنوان مختلف تتشابه أحرف بدايته ونهايته مع عنوان آخر.

حل الأسماء

يمكن لـ Ethers.js حل سجلات أسماء Ethereum المدعومة إلى عناوين عبر مزوّد متصل.

كما يمكنها إجراء عمليات بحث عكسي عندما يكون العنوان قد أعد اسمًا أساسيًا مدعومًا.

قد يحسن الاسم المقروء سهولة الاستخدام، لكن ينبغي للتطبيق إظهار العنوان الذي جرى حله أو إتاحته قبل إجراء تحويل ذي قيمة كبيرة.

قد تتغير سجلات الأسماء بمرور الوقت، وقد يُحل الاسم إلى عنوان مختلف على شبكة أخرى.

ينبغي للتطبيقات معالجة الأسماء غير المحلولة والسجلات غير الصالحة، بدلاً من الإرسال بصمت إلى نتيجة غير متوقعة.

توقيع الرسائل باستخدام Ethers.js

يمكن لـ Ethers.js توقيع الرسائل المقروءة للبشر واسترداد العنوان المرتبط بتوقيع صالح.

يمكن استخدام توقيع الرسائل للمصادقة على الحساب وإثبات السيطرة والتصويت والصلاحيات والتفويض خارج السلسلة.

يوصي دليل التوقيع في ethers.js الرسمي باستخدام محتوى مقروء كلما أمكن، ليفهم المستخدم ما يوافق عليه.

لا ينقل التوقيع الأموال بحد ذاته في كل الحالات، لكن بعض التوقيعات قد تفوض إجراءات لاحقة على البلوكشين.

ينبغي للتطبيقات تضمين النطاق والغرض ورقم nonce وتاريخ انتهاء الصلاحية وسياق السلسلة عند الاقتضاء.

ينبغي للمستخدمين عدم توقيع رسالة غير واضحة لمجرد أن الطلب لا يعرض رسوم الغاز.

البيانات المنظّمة EIP-712

يحدد EIP-712 تنسيقًا للتوقيع المنظّم يتيح للمحافظ عرض حقول ذات أنواع محددة بدلاً من سلسلة بايتات غير مقروءة.

يمكن لـ Ethers.js ترميز البيانات المنظّمة المدعومة وتوقيعها وحساب هاشها والتحقق منها.

يمكن استخدام البيانات المنظّمة لتفويضات التوكنات وطلبات الأسواق وإجراءات الحوكمة وتفويض الحسابات وغيرها من الموافقات خارج السلسلة.

قد تتضمن بيانات النطاق اسمًا وإصدارًا ومعرّف السلسلة وعقدًا متحققًا منه للحد من مخاطر إعادة استخدام التوقيع.

يجب على المطورين إعداد النطاق والأنواع على نحو صحيح، لأن فقدان حقل أو استخدام سياق سلسلة غير صحيح قد يضعف الحماية.

ينبغي للمستخدمين مراجعة الجهة المخوّلة بالإنفاق والمبلغ وتاريخ انتهاء الصلاحية والعقد والشبكة قبل توقيع البيانات المنظّمة.

سجلات الأحداث ومستمعو العقود

يمكن لـ Ethers.js الاستعلام عن سجلات أحداث العقود الذكية التاريخية والاستماع إلى الأحداث الجديدة.

يُعرّف حدث العقد عبر ABI، ويُخزّن في إيصالات المعاملات عند انبعاثه أثناء تنفيذ ناجح.

يمكن للمطورين إنشاء عوامل تصفية لمعلمات أحداث محددة، مثل عنوان أو معرّف توكن.

يمكن لمستمع مباشر تحديث الواجهة عند حدوث تحويل أو إيداع أو تداول أو تصويت أو إجراء آخر للعقد.

ينبغي ألا تعتمد التطبيقات على الاتصال المباشر وحده، إذ قد يؤدي انقطاع WebSocket إلى تفويت الإشعارات.

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

لا يثبت الحدث المنبعث أن العقد الذي أطلقه موثوق، إذ يمكن لأي عقد إنشاء توقيع حدث مألوف.

التجزئة والأدوات التشفيرية

تتضمن Ethers.js أدوات لتجزئة البيانات وحساب محددات الدوال ومعالجة التوقيعات واشتقاق العناوين والتعامل مع تنسيقات ترميز Ethereum.

تشمل العمليات الشائعة التجزئة Keccak-256، وتجزئة الرسائل، والترميز المعبأ، وترميز RLP، واسترداد التوقيعات.

تشرح وثائق التجزئة في ethers.js الرسمية أدوات التعامل مع الرسائل والبيانات المنظّمة والأسماء والمعرّفات وبيانات التفويض.

ينبغي استخدام واجهات التشفير البرمجية وفق معيار Ethereum المعني، لا مزجها عشوائيًا.

قد يؤدي توقيع تنسيق هاش غير صحيح إلى توقيعات غير متوافقة أو نقاط ضعف أمنية.

ينبغي للمطورين تضمين فصل النطاقات عندما يمكن إعادة استخدام البيانات نفسها في سياق آخر.

نشر العقود باستخدام Ethers.js

توفر Ethers.js فئة ContractFactory لنشر العقود الذكية.

يُنشأ المصنع من الشيفرة الثنائية للعقد وABI وموقّع.

يمكن أن تتضمن معاملة النشر وسيطات المُنشئ وقيمة اختيارية من عملة مشفرة أصلية.

بعد الإرسال، ينبغي للمطور انتظار إدراج معاملة النشر قبل افتراض وجود العقد عند العنوان المتوقع.

ينبغي حفظ العنوان المنشور مع معرّف السلسلة وإعدادات المترجم وإصدار الشيفرة المصدرية ووسيطات المُنشئ وهاش معاملة النشر.

لا يثبت نجاح النشر أن العقد آمن أو تمت تهيئته بشكل صحيح أو أن المسؤول المقصود يسيطر عليه.

ينبغي اختبار عقود الإنتاج وإخضاعها لمراجعة أمنية مناسبة قبل أن تتولى إدارة أصول ذات قيمة.

Ethers.js في تطبيقات المتصفح

يمكن لتطبيق لامركزي في المتصفح استخدام ethers.js لربط واجهة المستخدم بمحفظة ومزوّد بلوكشين.

يمكن للتطبيق عرض الأرصدة وطلب تبديل الشبكة وقراءة العقود وتقدير المعاملات وطلب توقيع إجراءات معتمدة من المحفظة.

ينبغي أن تبقى المفاتيح الخاصة في المحفظة، لا أن تُنسخ إلى شيفرة الواجهة الأمامية.

يمكن للمستخدم أو المهاجم عمومًا فحص كل الشيفرات المقدمة إلى المتصفح.

ينبغي عدم تضمين مفاتيح API السرية وبيانات التوقيع ذات الصلاحيات الواسعة في حزمة التطبيق العامة.

ينبغي للواجهة عرض تفاصيل المعاملة بوضوح ومعالجة رفض المحفظة وعدم تطابق الشبكة وتعطل RPC والمعاملات المعلّقة والأخطاء الناتجة عن التراجع وتغييرات الحساب.

Ethers.js في تطبيقات جهة الخادم

يمكن لخدمة من جهة الخادم استخدام ethers.js لمراقبة بيانات البلوكشين وإرسال معاملات مضبوطة وإنشاء التقارير والتحقق من التوقيعات وتشغيل عمليات العملات المشفرة الخلفية.

يمكن لتطبيقات الخادم الاتصال مباشرةً بعقدة RPC أو استخدام نقطة نهاية مُدارة.

يجب على الواجهة الخلفية التي توقّع المعاملات حماية بيانات التوقيع من المطورين والسجلات والنسخ الاحتياطية وأنظمة البناء والعمليات غير المصرح بها.

ينبغي للأنظمة التي تدير مبالغ كبيرة مراعاة بنية توقيع معزولة وسياسات المعاملات وحدود السحب وسير الموافقات وضوابط الطوارئ.

كما ينبغي للخادم تتبع أرقام nonce للمعاملات بعناية عندما ترسل عدة عمليات معاملات من الحساب نفسه.

قد يؤدي استخدام nonce مكرر أو متعارض إلى استبدال المعاملات بعضها ببعض أو بقائها معلّقة.

Ethers.js وشبكات EVM المتوافقة

يمكن لـ Ethers.js الاتصال بكثير من الشبكات المتوافقة مع EVM التي توفر واجهات JSON-RPC شبيهة بـ Ethereum.

يجب أن يوفر التطبيق نقطة نهاية RPC الصحيحة ومعرّف السلسلة ومعلومات أصل رسوم الغاز الأصلي وعناوين العقود للشبكة المختارة.

قد يكون للمحفظة نفسها أرصدة وسجل معاملات مختلفان على سلاسل مختلفة.

قد لا يوجد عقد منشور على عنوان معين في شبكة ما على شبكة أخرى، أو قد يحتوي على شيفرة مختلفة.

كما أن التوافق مع EVM لا يضمن تطابق سلوك الغاز أو أنواع المعاملات أو النهائية أو امتدادات RPC أو تفاصيل تنفيذ العقود الذكية.

ينبغي اختبار تكامل كل شبكة على حدة.

التغييرات الرئيسية من Ethers.js v5 إلى v6

أدخلت Ethers.js v6 تغييرات كبيرة على البنية وواجهات API مقارنةً بالإصدار 5.

يحدد دليل الترحيل زيادة استخدام ميزات ES6 الحديثة بوصفها أحد التغييرات الأساسية.

استُبدلت فئة BigNumber السابقة بنوع BigInt الأصلي في كثير من عمليات الأعداد الصحيحة.

تستخدم كائنات Contract سلوك Proxy في JavaScript لحل الدوال ديناميكيًا.

انتقلت فئات وأدوات كثيرة إلى تصدير الحزمة الرئيسية بدلاً من الوصول إليها عبر مساحات أسماء متداخلة أقدم.

استُبدلت فئة Web3Provider السابقة بـ BrowserProvider لتغليف المزوّدات الشائعة المضافة إلى المتصفح.

كما تغيرت أسماء وبنية واجهات المعاملات والتوقيعات والعقود والمزوّدات والأدوات.

ينبغي عدم ترقية شيفرة v5 الحالية بمجرد تغيير إصدار الحزمة.

ينبغي اتباع دليل الترحيل الرسمي إلى ethers.js v6 وإعادة اختبار التطبيق بالكامل.

هل ما زال Ethers.js v5 مدعومًا؟

تنص سياسة الأمان لـ ethers.js على أن معظم جهود الصيانة تركز على أحدث إصدار رئيسي.

كما تشير إلى أن الإصدار 5 يتلقى تحديثات أمنية، بينما الإصدارات الرئيسية الأقدم غير مدعومة.

ينبغي للمطورين الذين يصونون تطبيقًا يعمل بالإصدار 5 تثبيت أحدث إصدار أمني متاح من v5 ومراجعة خطة للترحيل إلى v6.

قد يؤدي الاستخدام طويل الأمد لفرع قديم إلى مخاطر التوافق والصيانة حتى مع استمرار توفير تصحيحات أمنية حرجة.

تُنشر معلومات الدعم الحالية في سياسة أمان ethers.js الرسمية.

المخاطر الأمنية عند استخدام Ethers.js

قد تساعد Ethers.js التطبيقات على التفاعل مع أنظمة البلوكشين، لكنها لا تجعل منطق التطبيق غير الآمن آمنًا.

يمكن للمطور استخدام المكتبة على نحو صحيح، ومع ذلك استدعاء عقد ذكي ضار أو توقيع معاملة مؤذية.

قد تؤدي معرّفات السلاسل أو عناوين العقود أو ملفات ABI أو قيم decimals أو افتراضات الغاز أو نطاقات التوقيع غير الصحيحة إلى خسائر مالية.

قد تعيد نقطة RPC مخترقة بيانات زائفة أو ناقصة، أو تؤخر المعاملات، أو تخفي أنشطة مهمة على البلوكشين.

قد تغيّر تبعية أو عملية بناء مخترقة سلوك التطبيق قبل وصول الشيفرة إلى المستخدمين.

قد يتيح تسرب مفتاح خاص للمهاجم تجاوز جميع وسائل الحماية في واجهة المستخدم.

يتطلب الأمان إدارة آمنة للمفاتيح وتبعيات موثوقة والتحقق من العقود والتحقق من المدخلات ومحاكاة المعاملات والمراقبة والاختبار المستقل.

سلامة المفتاح الخاص

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

كما ينبغي عدم تضمينه مباشرةً في ملف إعدادات عام أو تذكرة دعم أو لقطة شاشة أو سجل للتطبيق.

قد تقلل متغيرات البيئة من احتمال كشفه عن طريق الخطأ، لكنها لا توفر نظام أمان متكاملاً.

فقد يظل بإمكان أي شخص يصل إلى بيئة العملية أو منصة النشر أو ذاكرة الخادم أو إعدادات البناء الوصول إليه.

ينبغي لأنظمة الإنتاج فصل صلاحيات التوقيع عن صلاحيات الوصول العامة للتطبيق.

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

سلامة التبعيات وسلسلة الإمداد

ينبغي للمطورين تثبيت ethers.js من مصدر الحزمة الأصلي فقط.

قد تحتوي حزمة ذات اسم مكتوب بطريقة خاطئة على شيفرة ضارة مصممة لسرقة المفاتيح الخاصة أو تغيير وجهات المعاملات.

تساعد ملفات قفل الحزم وفحوصات السلامة على ضمان استخدام عمليات التثبيت الآلية لإصدارات تبعيات خضعت للمراجعة.

ينبغي متابعة إشعارات التحديثات الأمنية عبر المستودع الرسمي وسجلات الحزم.

ينبغي اختبار ترقيات التبعيات في تطبيقات الإنتاج قبل نشرها.

ينبغي إزالة الحزم والبرامج النصية غير المستخدمة، لأن كل تبعية تزيد مساحة الهجوم المحتملة.

مخاطر مزوّد RPC

يوفر مزوّد RPC معلومات البلوكشين التي يستخدمها تطبيق ethers.js.

إذا لم يكن المزوّد متاحًا، فقد يعجز التطبيق عن تحميل الأرصدة أو إرسال المعاملات.

وإذا تأخر، فقد يعرض التطبيق معلومات قديمة.

قد تحاول نقطة نهاية ضارة تحريف حالة السلسلة أو تقديرات الغاز أو حالة المعاملة.

يمكن للتطبيقات التي تتخذ قرارات مالية مهمة مقارنة استجابات عقد مستقلة متعددة أو تشغيل بنيتها التحتية الخاصة بالعقد.

ينبغي التحقق من معرّف السلسلة الذي يعيده المزوّد قبل طلب توقيع.

ينبغي استخدام نقل مشفر وبيانات اعتماد مضبوطة لاتصال المزوّد عند الاقتضاء.

محاكاة المعاملات ومعالجة الأخطاء

يمكن لـ Ethers.js محاكاة الاستدعاءات وتقدير الغاز قبل إرسال المعاملة.

قد تكشف المحاكاة عن كثير من حالات التراجع المحتملة، لكنها لا تضمن النجاح لاحقًا.

قد تتغير حالة البلوكشين بين المحاكاة والتنفيذ الفعلي.

ينبغي للتطبيقات فك ترميز أخطاء العقود متى أمكن وعرض شرح مفيد للمستخدم.

وينبغي لها التمييز بين رفض المحفظة وتعطل RPC وعدم كفاية الأموال وفشل تقدير الغاز واستبدال المعاملة والتراجع أثناء التنفيذ وانتهاء مهلة التأكيد.

قد تدفع رسالة خطأ عامة المستخدمين إلى تكرار المعاملة بلا داعٍ أو توقيع إجراء مختلف من دون فهم المشكلة الأصلية.

مزايا Ethers.js

توفر Ethers.js واجهة مدمجة تغطي كثيرًا من مهام تطوير Ethereum الشائعة.

ويدعم الفصل بين المزوّد والموقّع حدودًا أمنية أوضح.

تقلل فئة Contract مقدار الترميز اليدوي لـ ABI المطلوب للتفاعل مع العقود الذكية.

تحسن تعريفات TypeScript المدمجة دعم المحررات وقد تكشف بعض الاستخدامات غير الصحيحة للوسائط.

تتضمن المكتبة أدوات المحافظ والتوقيعات والعناوين والوحدات والتجزئة والمعاملات والأحداث ضمن حزمة واحدة.

وهي مفتوحة المصدر ومدعومة بوثائق واختبارات موسعة.

يجعل تصميمها الموجه إلى EVM منها أداة مفيدة في كثير من بيئات البلوكشين المتوافقة.

قيود Ethers.js

لا تشغّل Ethers.js عقدة Ethereum، وما زالت تتطلب الوصول إلى البنية التحتية للبلوكشين.

ولا تدقق العقود الذكية أو تضمن موثوقية العنوان.

ولا تحمي تلقائيًا المفاتيح الخاصة التي يخزنها التطبيق بإهمال.

ولا يمكنها عكس معاملة مؤكدة على البلوكشين.

ولا تضمن استمرار دقة تقدير الغاز أو نتيجة المحاكاة أو استجابة RPC.

ولا تلغي الحاجة إلى فهم حسابات Ethereum ومعاملاتها ورسوم الغاز وتوقيعاتها وملفات ABI وسجلات الأحداث وصلاحيات العقود الذكية.

كما يجب على المطورين إدارة أمن واجهة المستخدم وقواعد البيانات والوصول إلى الواجهة الخلفية والنشر والمراقبة والمتطلبات التنظيمية بشكل مستقل.

مثال على سير عمل معاملة باستخدام Ethers.js

لنفترض أن تطبيقًا لامركزيًا يتيح للمستخدم تحويل توكن مدعوم.

ينشئ التطبيق أولاً مزوّدًا متصلاً بالشبكة المختارة.

ثم يؤكد معرّف السلسلة ويطلب الوصول إلى الحساب الذي وافق عليه المستخدم عبر واجهة المحفظة.

ينشئ التطبيق موقّعًا وكائن Contract باستخدام عنوان التوكن الموثّق وABI الخاص به.

ويقرأ عدد المنازل العشرية للتوكن ورصيد المستخدم.

يُحوّل مبلغ التحويل المقروء إلى أصغر وحدة صحيحة للتوكن باستخدام parseUnits.

ويطلب التطبيق من دالة العقد تقدير الغاز ويُعد المعاملة.

تعرض المحفظة للمستخدم المستلم والعقد والشبكة والمبلغ ومعلومات الرسوم ليوافق عليها.

بعد توقيع المستخدم، يبث الموقّع المعاملة عبر المزوّد.

يتلقى التطبيق استجابة المعاملة ويعرض هاشها.

ثم ينتظر الإيصال ويتحقق من نجاح التنفيذ.

بعد ذلك، يحدّث رصيد التوكن ويسجل المعاملة المؤكدة.

يوضح هذا السير كيف تعمل المزوّدات والموقّعون والعقود وملفات ABI وتحويل الوحدات وتقدير الغاز والإيصالات معًا في ethers.js.

أخطاء شائعة في Ethers.js

من الأخطاء الشائعة تضمين مفتاح خاص في JavaScript للواجهة الأمامية.

ومنها أيضًا استخدام عنوان عقد أو ABI غير موثّق.

ومن الأخطاء كذلك مزج قيم Number العادية بقيم BigInt.

كما يُعد اعتبار المعاملة المرسلة مؤكدة قبل استلام إيصال ناجح خطأً شائعًا.

ومن الأخطاء افتراض أن نجاح تقدير الغاز يضمن نجاح التنفيذ.

واستخدام العمليات الحسابية ذات الفاصلة العائمة لمبالغ التوكنات خطأ آخر.

كما أن تجاهل معرّف السلسلة عند ربط محفظة أو توقيع بيانات منظّمة خطأ شائع.

ومن الأخطاء عدم معالجة استبدال المعاملات أو إسقاطها أو إعادة تنظيم البلوكشين.

كذلك، تُعد الترقية من ethers.js v5 إلى v6 من دون مراجعة تغييرات API غير المتوافقة خطأً.

وأخيرًا، لا ينبغي الوثوق بحزمة أو نقطة نهاية RPC أو عقد ذكي لمجرد استخدامه اسمًا مألوفًا.

الأسئلة الشائعة

ما استخدام ethers.js؟

تُستخدم Ethers.js لبناء تطبيقات JavaScript وTypeScript التي تقرأ بيانات البلوكشين وتدير المحافظ وتوقّع الرسائل وترسل المعاملات وتتفاعل مع العقود الذكية على Ethereum.

هل ethers.js عملة مشفرة؟

لا، ethers.js مكتبة برمجية، وليس لها عملة مشفرة رسمية أو توكن استثماري.

هل ethers.js محفظة؟

تتضمن Ethers.js فئات للمحافظ وأدوات للتوقيع، لكن المكتبة نفسها ليست خدمة محفظة حاضنة.

ما أحدث إصدار من ethers.js؟

اعتبارًا من 16 يوليو 2026، أحدث إصدار موثّق هو ethers v6.17.0، المنشور في 18 يونيو 2026.

هل يمكن لـ ethers.js الاتصال بـ Ethereum؟

نعم، تتصل ethers.js بـ Ethereum عبر مزوّد يتواصل مع عقدة Ethereum أو نقطة نهاية RPC متوافقة.

هل تعمل ethers.js مع سلاسل EVM أخرى؟

نعم، يمكنها العمل مع كثير من الشبكات المتوافقة مع EVM التي توفر واجهات JSON-RPC شبيهة بـ Ethereum.

ما الفرق بين المزوّد والموقّع؟

يقرأ المزوّد بيانات البلوكشين العامة، بينما يفوض الموقّع الرسائل والمعاملات التي تغيّر حالة الحساب.

ما كائن Contract في ethers.js؟

يجمع كائن Contract عنوان عقد وABI ومزوّدًا أو موقّعًا لتوفير طرائق JavaScript قابلة للاستدعاء لعقد ذكي منشور.

هل تتطلب ethers.js ملف ABI؟

يكون ABI مطلوبًا عمومًا لترميز وفك ترميز دوال العقود الذكية وأحداثها وأخطائها ذات الأسماء بسهولة.

هل تخزّن ethers.js المفاتيح الخاصة؟

يمكن للمكتبة إنشاء كائنات محفظة تحتوي على بيانات التوقيع في ذاكرة التطبيق، لكن تظل مسؤولية تخزين المفاتيح وحمايتها على عاتق المطور.

هل من الآمن وضع مفتاح خاص في تطبيق متصفح؟

لا، يمكن للمستخدمين أو المهاجمين أو الإضافات أو النصوص البرمجية المخترقة فحص المفاتيح الخاصة الموضوعة في شيفرة المتصفح وسرقتها.

هل يكلّف استدعاء العقد للقراءة فقط رسوم غاز؟

يحاكي مزوّد العقدة عادةً الاستدعاء للقراءة فقط، ولا ينشئ رسومًا على السلسلة.

لماذا تستخدم ethers.js نوع BigInt؟

يدعم BigInt الأعداد الصحيحة الكبيرة والدقيقة المطلوبة لأرصدة العملات المشفرة وقيم الغاز وأرقام nonce وبيانات العقود الذكية، من دون فقدان الدقة المعتاد في أعداد JavaScript.

هل تستطيع ethers.js تقدير الغاز؟

نعم، يمكنها طلب تقدير للغاز من عقدة، لكن التقدير يستند إلى الحالة الحالية ولا يضمن نجاح المعاملة مستقبلًا.

هل تستطيع ethers.js عكس معاملة؟

لا، يمكن لـ ethers.js إرسال المعاملات، لكنها لا تستطيع عكس تغيير مؤكد في حالة البلوكشين.

هل تستطيع ethers.js الاستماع إلى أحداث العقود الذكية؟

نعم، يمكنها الاستعلام عن السجلات التاريخية والاشتراك في أحداث العقود الجديدة عبر مزوّد مناسب.

ما الذي تغير بين ethers.js v5 وv6؟

قدم الإصدار 6 نوع BigInt الأصلي وميزات JavaScript الحديثة وتغييرات في الاستيراد وفئات المزوّد وطرائق العقود المعتمدة على Proxy وتغييرات متعددة في API.

هل ethers.js مفتوحة المصدر؟

نعم، تتاح ethers.js علنًا بموجب ترخيص MIT.

هل لدى ethers.js توكن رسمي؟

لا، يذكر المشروع الرسمي أن ethers ليس لها توكن.

أين ينبغي للمطورين الإبلاغ عن مشكلة أمنية في ethers.js؟

ينبغي للمطورين اتباع تعليمات الإبلاغ الخاص عن الثغرات في سياسة أمان ethers.js الرسمية، بدلاً من الكشف علنًا عن مشكلة لم تُصلح.

الخلاصة

Ethers.js مكتبة لـ JavaScript وTypeScript تتيح لمطوري العملات المشفرة طريقة منظمة للتفاعل مع Ethereum وشبكات البلوكشين المتوافقة مع EVM.

توفر مزوّدات لقراءة بيانات البلوكشين، وموقّعين لتفويض إجراءات الحساب، ومحافظ لإدارة بيانات التوقيع، وكائنات Contract للتفاعل مع العقود الذكية.

كما تتضمن أدوات لترميز ABI وفك ترميز الأحداث وتوقيع الرسائل والبيانات المنظّمة والعناوين والهاشات وتقديرات الغاز وإيصالات المعاملات وتحويل وحدات العملات المشفرة.

الإصدار الرئيسي الحالي هو ethers.js v6، الذي يستخدم ميزات JavaScript الحديثة مثل BigInt وطرائق العقود المعتمدة على Proxy.

اعتبارًا من 16 يوليو 2026، أحدث إصدار موثّق هو ethers v6.17.0.

قد تبسّط Ethers.js تطوير البلوكشين، لكنها لا تزيل مخاطر كشف المفاتيح الخاصة أو العقود الضارة أو العناوين غير الصحيحة أو نقاط RPC غير الموثوقة أو اختراق التبعيات أو المعاملات غير القابلة للعكس.

ينبغي للمطورين التحقق من مصادر الحزم وتثبيت إصدارات التبعيات وحماية بيانات التوقيع وتأكيد معرّفات السلاسل والتحقق من عناوين العقود واستخدام ملفات ABI الصحيحة واختبار كل مسارات المعاملات.

كما ينبغي للتطبيقات معالجة فشل المحاكاة ورفض المحفظة وانقطاع RPC والمعاملات المعلّقة والاستبدالات والتراجع والتأكيدات وإعادة تنظيم السلاسل.

عند استخدامها مع ممارسات أمنية دقيقة، توفر ethers.js أساسًا قويًا لبناء المحافظ وأنظمة الدفع بالعملات المشفرة والتطبيقات اللامركزية وأدوات التحليلات وخدمات المراقبة وأتمتة العقود الذكية.

يساعد فهم ethers.js المطورين على ربط تطبيقات JavaScript بأنظمة البلوكشين من دون الخلط بين المكتبة وخدمة المحفظة أو شبكة البلوكشين أو العملة المشفرة.
تراجع أم فرصة؟
تراجع أم فرصة؟تراجع أم فرصة؟
تدفق 2.4 مليار دولار إلى ETF BTC وسط التصفية