تخطي إلى المحتوى الرئيسي
Change page

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

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

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

المتطلبات الأساسية

يجب أن تفهم:

طريقتان للتفاعل مع العقد الذكي

ينقسم التفاعل مع العقد الذكي إلى فئتين:

القراءة من العقد

القراءة هي عملية مجانية لا تنشئ معاملة ولا تغير أي حالة على سلسلة الكتل.

عندما تقرأ من عقد، فأنت ببساطة تستعلم عن بيانات موجودة بالفعل. على سبيل المثال:

  • التحقق من رصيد رمز مميز من نوع ERC-20
  • قراءة السعر الحالي من منصة تداول لامركزية
  • الحصول على مالك رمز غير قابل للاستبدال (NFT)

نظرًا لأن عمليات القراءة لا تعدل الحالة، فإنها لا تكلف غاز ويمكن لأي شخص إجراؤها دون الحاجة إلى ETH.

الكتابة إلى العقد

الكتابة هي عملية تغيير للحالة تتطلب معاملة وتكلف غاز.

عندما تكتب إلى عقد، فأنت تقوم بتشغيل دالة تعدل حالة سلسلة الكتل. على سبيل المثال:

  • تحويل الرموز المميزة
  • مبادلة الرموز المميزة على منصة تداول لامركزية
  • عملية سك رمز غير قابل للاستبدال (NFT)

تتطلب الكتابة دائمًا:

  1. حساب مملوك خارجيًا (EOA) يحتوي على ما يكفي من ETH للغاز
  2. معاملة موقعة بواسطة مفتاح خاص للحساب
  3. أن يتم تعدين المعاملة وتضمينها في كتلة

مع تجريد الحساب، يمكن لحساب العقد الذكي أيضًا بدء عمليات الكتابة، ويمكن لمدير الدفع تغطية الغاز نيابة عن المستخدم — لذلك لا يُشترط بالضرورة وجود حساب مملوك خارجيًا (EOA) يحتفظ بـ ETH.

فهم واجهات التطبيق الثنائية (ABIs) للعقود

للتفاعل مع عقد ذكي، يحتاج تطبيقك إلى معرفة ما يمكن للعقد القيام به. وهنا يأتي دور واجهة التطبيق الثنائية (ABI).

واجهة التطبيق الثنائية (ABI) هي مستند JSON يصف:

  • كل دالة يعرضها العقد (الاسم، المدخلات، المخرجات)
  • كل حدث يمكن للعقد إصداره
  • كيفية تشفير وفك تشفير البيانات عند التحدث إلى العقد

فكر في واجهة التطبيق الثنائية (ABI) كدليل تعليمات العقد — بدونها، لا يعرف تطبيقك الدوال الموجودة أو المعلمات التي تتوقعها.

أين تجد واجهة التطبيق الثنائية (ABI) للعقد

  • العقود الموثقة على Etherscan - يعرض Etherscan (يفتح في علامة تبويب جديدة) تلقائيًا واجهة التطبيق الثنائية (ABI) للكود المصدري الموثق
  • من المطور - تنشر العديد من المشاريع واجهات التطبيق الثنائية (ABIs) الخاصة بها في وثائقها أو حزم npm
  • الإنشاء من المصدر - إذا كان لديك الكود المصدري بلغة Solidity، فيمكنك تصريفه لإنتاج واجهة التطبيق الثنائية (ABI)

أدوات ومكتبات للتفاعل مع العقود

يستخدم المطورون عادةً مكتبة JavaScript/TypeScript للتفاعل مع العقود من تطبيق ويب أو واجهة خلفية أو برنامج نصي.

مكتبات العميل (JavaScript/TypeScript)

مكتبات الواجهة الخلفية

مثال: قراءة رصيد رمز مميز باستخدام Viem

مثال: إرسال معاملة باستخدام Ethers.js

الأحداث والسجلات

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

محاكاة المعاملات

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

تدعم معظم مكتبات العميل ذلك من خلال eth_call:

// باستخدام Viem
const result = await client.simulateContract({
  address: contractAddress,
  abi,
  functionName: 'swap',
  args: [amountIn],
  account: userAddress,
})

المحافظ والتوقيع

في تطبيق لامركزي (dapp)، تتولى محفظة المستخدم (مثل ميتاماسك أو Rainbow أو WalletConnect) عملية التوقيع. أنت لا تدير مفاتيح خاصة بشكل مباشر.

تقوم مكتبات المحافظ وأدوات الاتصال بتجريد ذلك حتى تتمكن من التركيز على بناء منطق تطبيقك.

قراءة إضافية