أهلاً بكم أيها المبرمجون والمحاضرون التقنيون!
ماذا سنبني اليوم؟ سنتعلم كيف نستخدم محرر Remix IDE لكتابة ونشر أول عقد ذكي بسيط على شبكة اختبار، مباشرة من متصفح الويب.
الخطوة الأولى: تهيئة بيئة Remix IDE وكتابة هيكل العقد الأساسي
نبدأ بفتح Remix IDE في متصفحك. بمجرد الدخول، أنشئ ملفًا جديدًا (على سبيل المثال، MyFirstContract.sol) في مجلد contracts.
ملاحظة تقنية: Remix IDE هي بيئة تطوير متكاملة (IDE) قائمة على الويب لتطوير العقود الذكية باستخدام لغة Solidity. إنها مثالية للمبتدئين وتتيح النشر والاختبار السريع.
في هذا الملف، سنبدأ بكتابة هيكل العقد الذكي الأساسي:
// SPDX-License-Identifier: MIT
// هذا السطر يحدد رخصة الكود. MIT هي رخصة مفتوحة المصدر شائعة.
pragma solidity ^0.8.0;
// هذا السطر يحدد إصدار مترجم Solidity الذي يجب استخدامه.
// علامة ^ تعني "متوافق مع أي إصدار بدءًا من 0.8.0 وحتى ما قبل 0.9.0".
contract MyFirstContract {
// هنا سنكتب منطق العقد الذكي.
}
شرح الكود:
SPDX-License-Identifier: يحدد نوع الترخيص.pragma solidity ^0.8.0;: يخبر مترجم Solidity بالإصدار الذي يجب استخدامه.contract MyFirstContract { ... }: هذا هو تعريف العقد الذكي نفسه.
الخطوة الثانية: إضافة متغير حالة ودالة لتحديثه
العقود الذكية يمكنها تخزين البيانات على البلوكشين. هذه البيانات تسمى "متغيرات الحالة" (State Variables). لنضف متغيرًا لتخزين رسالة، ودالة لتغيير هذه الرسالة.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MyFirstContract {
string public message;
// هذا متغير حالة عام (public) من نوع سلسلة نصية (string) لتخزين رسالتنا.
// كلمة 'public' تجعل Remix ينشئ تلقائياً دالة getter لقراءة قيمة هذا المتغير.
constructor() {
// الدالة البانية (constructor) يتم تنفيذها مرة واحدة فقط عند نشر العقد.
message = "Hello, Solidity World!";
// نقوم بتهيئة الرسالة الافتراضية عند نشر العقد.
}
function setMessage(string memory _newMessage) public {
// هذه دالة عامة (public) تسمح بتحديث قيمة متغير 'message'.
// 'string memory _newMessage' هو المعامل الذي تستقبله الدالة.
// 'memory' يعني أن السلسلة النصية ستخزن مؤقتًا في الذاكرة أثناء تنفيذ الدالة.
message = _newMessage;
// نقوم بتحديث متغير الحالة 'message' بالقيمة الجديدة.
}
}
شرح الكود:
string public message;: تعريف متغير حالة عام من نوع سلسلة نصية.constructor() { ... }: الدالة البانية التي تعمل مرة واحدة عند النشر.function setMessage(string memory _newMessage) public { ... }: دالة عامة لتحديث قيمةmessage.
الخطوة الثالثة: تجميع (Compile) ونشر (Deploy) العقد
الآن بعد أن كتبنا العقد، حان وقت تجميعه ونشره.
-
التجميع (Compile):
انتقل إلى أيقونة "Solidity Compiler" (التي تشبه ملفًا). تأكد من تحديد إصدار المترجم الصحيح (على سبيل المثال، 0.8.0). انقر على زر "Compile MyFirstContract.sol". إذا لم تكن هناك أخطاء، سترى علامة خضراء.
-
النشر (Deploy):
انتقل إلى أيقونة "Deploy & Run Transactions" (التي تشبه شعار الإيثيريوم). في قائمة "Environment"، اختر
JavaScript VM (London). هذا سيوفر لك بيئة بلوكشين وهمية داخل المتصفح للاختبار. تأكد من أن العقدMyFirstContractمحدد في قائمة "Contract".انقر على زر "Deploy". ستظهر تفاصيل العقد المنشور أسفل قسم "Deployed Contracts".
-
التفاعل مع العقد:
ضمن "Deployed Contracts"، ستجد عقدك. يمكنك الآن التفاعل معه:
- انقر على زر
message(الأزرق) لقراءة الرسالة الافتراضية. - في حقل الإدخال بجانب
setMessage، اكتب رسالة جديدة (على سبيل المثال، "Hello from my first DApp!"). - انقر على زر
setMessage(البرتقالي). - انقر مرة أخرى على زر
message(الأزرق) لترى الرسالة وقد تم تحديثها.
- انقر على زر
ملاحظة تقنية:
JavaScript VMهي بيئة محاكاة للبلوكشين تعمل داخل متصفحك. لا تتطلب أي عملات حقيقية وهي مثالية للاختبار والتطوير الأولي. عند النشر على شبكات حقيقية (مثل Sepolia أو Mainnet)، ستحتاج إلى إعدادات أخرى ومحفظة متصلة.
الكود النهائي الكامل
إليكم الكود الكامل للعقد الذكي الذي قمنا ببنائه:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MyFirstContract {
string public message; // متغير حالة عام لتخزين الرسالة
constructor() {
// الدالة البانية: يتم تنفيذها مرة واحدة عند نشر العقد
message = "Hello, Solidity World!"; // تهيئة الرسالة الافتراضية
}
function setMessage(string memory _newMessage) public {
// دالة عامة لتحديث قيمة متغير 'message'
message = _newMessage; // تحديث الرسالة بالقيمة الجديدة
}
}
النتيجة المتوقعة
بعد اتباع الخطوات، ستكون قد قمت بما يلي:
- كتابة عقد ذكي بسيط بلغة Solidity.
- تجميع العقد بنجاح في Remix IDE.
- نشر العقد على بيئة اختبار (JavaScript VM) داخل المتصفح.
- التفاعل مع العقد عن طريق قراءة الرسالة الافتراضية، ثم تحديثها، ثم قراءتها مرة أخرى للتأكد من التغيير.
تهانينا، لقد قمت بنشر أول عقد ذكي لك! هذا يمثل خطوتك الأولى في عالم تطوير تطبيقات البلوكشين اللامركزية (dApps).