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

كيفية كتابة ونشر رمز غير قابل للاستبدال (الجزء 1/3 من سلسلة دروس الرموز غير القابلة للاستبدال)

ERC-721
Alchemy
Solidity
عقود ذكية
المستوى المبتدئ
Sumi Mudgil
22 أبريل 2021
13 دقيقة قراءة

مع جلب الرموز غير القابلة للاستبدال (NFTs) لتقنية البلوك تشين إلى أنظار الجمهور، أصبحت الآن فرصة ممتازة لفهم هذه الضجة بنفسك من خلال نشر عقد الرمز غير القابل للاستبدال الخاص بك (رمز ERC-721) على شبكة البلوك تشين لإيثريوم!

تفخر Alchemy بشدة بتشغيل أكبر الأسماء في مجال الرموز غير القابلة للاستبدال، بما في ذلك Makersplace (التي سجلت مؤخرًا رقمًا قياسيًا في مبيعات الأعمال الفنية الرقمية في Christie’s مقابل 69 مليون دولار)، و Dapper Labs (مبتكري NBA Top Shot و Crypto Kitties)، و OpenSea (أكبر سوق للرموز غير القابلة للاستبدال في العالم)، و Zora، و Super Rare، و NFTfi، و Foundation، و Enjin، و Origin Protocol، و Immutable، والمزيد.

في هذا الدرس، سنستعرض كيفية إنشاء ونشر عقد ذكي من نوع ERC-721 على شبكة الاختبار Sepolia باستخدام MetaMask (opens in a new tab)، و Solidity (opens in a new tab)، و Hardhat (opens in a new tab)، و Pinata (opens in a new tab)، و Alchemy (opens in a new tab) (لا تقلق إذا كنت لا تفهم ما يعنيه أي من هذا حتى الآن — سنشرح ذلك!).

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

وبالطبع، إذا كانت لديك أسئلة في أي وقت، فلا تتردد في التواصل عبر Alchemy Discord (opens in a new tab) أو زيارة مستندات واجهة برمجة تطبيقات الرموز غير القابلة للاستبدال الخاصة بـ Alchemy (opens in a new tab)!

الخطوة 1: الاتصال بشبكة إيثريوم

هناك العديد من الطرق لإجراء طلبات إلى البلوك تشين لإيثريوم، ولكن لتسهيل الأمور، سنستخدم حسابًا مجانيًا على Alchemy (opens in a new tab)، وهي منصة لمطوري البلوك تشين وواجهة برمجة تطبيقات (API) تتيح لنا التواصل مع سلسلة إيثريوم دون الحاجة إلى تشغيل عقدة خاصة بنا.

في هذا الدرس، سنستفيد أيضًا من أدوات المطورين الخاصة بـ Alchemy للمراقبة والتحليلات لفهم ما يحدث خلف الكواليس في نشر عقدنا الذكي. إذا لم يكن لديك حساب Alchemy بالفعل، يمكنك التسجيل مجانًا هنا (opens in a new tab).

الخطوة 2: إنشاء تطبيقك (ومفتاح واجهة برمجة التطبيقات)

بمجرد إنشاء حساب Alchemy، يمكنك إنشاء مفتاح واجهة برمجة تطبيقات (API) عن طريق إنشاء تطبيق. سيسمح لنا ذلك بإجراء طلبات إلى شبكة الاختبار Sepolia. تحقق من هذا الدليل (opens in a new tab) إذا كنت مهتمًا بمعرفة المزيد عن شبكات الاختبار.

  1. انتقل إلى صفحة "Create App" (إنشاء تطبيق) في لوحة تحكم Alchemy الخاصة بك عن طريق التمرير فوق "Apps" (التطبيقات) في شريط التنقل والنقر على "Create App"

Create your app

  1. قم بتسمية تطبيقك (اخترنا "My First NFT!")، وقدم وصفًا قصيرًا، وحدد "Ethereum" للسلسلة (Chain)، واختر "Sepolia" لشبكتك. منذ الدمج، تم إيقاف شبكات الاختبار الأخرى.

Configure and publish your app

  1. انقر على "Create app" (إنشاء تطبيق) وهذا كل شيء! يجب أن يظهر تطبيقك في الجدول أدناه.

الخطوة 3: إنشاء حساب إيثريوم (عنوان)

نحتاج إلى حساب إيثريوم لإرسال واستقبال المعاملات. في هذا الدرس، سنستخدم MetaMask، وهي محفظة افتراضية في المتصفح تُستخدم لإدارة عنوان حساب إيثريوم الخاص بك. إذا كنت ترغب في فهم المزيد حول كيفية عمل المعاملات على إيثريوم، فتحقق من هذه الصفحة من مؤسسة إيثريوم.

يمكنك تنزيل وإنشاء حساب MetaMask مجانًا هنا (opens in a new tab). عند إنشاء حساب، أو إذا كان لديك حساب بالفعل، تأكد من التبديل إلى "Sepolia Test Network" (شبكة الاختبار Sepolia) في أعلى اليمين (حتى لا نتعامل بأموال حقيقية).

Set Sepolia as your network

الخطوة 4: إضافة إيثر من صنبور

من أجل نشر عقدنا الذكي على شبكة الاختبار، سنحتاج إلى بعض من ETH الوهمي. للحصول على ETH، يمكنك الذهاب إلى صنبور Sepolia (opens in a new tab) المستضاف بواسطة Alchemy، وتسجيل الدخول وإدخال عنوان حسابك، ثم النقر على "Send Me ETH" (أرسل لي ETH). يجب أن ترى ETH في حساب MetaMask الخاص بك بعد فترة وجيزة!

الخطوة 5: التحقق من رصيدك

للتحقق مرة أخرى من وجود رصيدنا، دعنا نُجري طلب eth_getBalance (opens in a new tab) باستخدام أداة الملحن الخاصة بـ Alchemy (opens in a new tab). سيؤدي هذا إلى إرجاع كمية ETH في محفظتنا. بعد إدخال عنوان حساب MetaMask الخاص بك والنقر على "Send Request" (إرسال الطلب)، يجب أن ترى استجابة مثل هذه:

{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}

ملاحظة هذه النتيجة بوحدة wei، وليس ETH. تُستخدم wei كأصغر فئة من الإيثر. التحويل من wei إلى ETH هو 1 eth = 1018 wei. لذا إذا قمنا بتحويل 0xde0b6b3a7640000 إلى النظام العشري نحصل على 1*1018 wei، وهو ما يساوي 1 ETH.

رائع! أموالنا الوهمية كلها موجودة.

الخطوة 6: تهيئة مشروعنا

أولاً، سنحتاج إلى إنشاء مجلد لمشروعنا. انتقل إلى سطر الأوامر واكتب:

mkdir my-nft cd my-nft

الآن ونحن داخل مجلد مشروعنا، سنستخدم npm init لتهيئة المشروع. إذا لم يكن لديك npm مثبتًا بالفعل، فاتبع هذه التعليمات (opens in a new tab) (سنحتاج أيضًا إلى Node.js (opens in a new tab)، لذا قم بتنزيله أيضًا!).

npm init

لا يهم حقًا كيف تجيب على أسئلة التثبيت؛ إليك كيف فعلنا ذلك كمرجع:

وافق على package.json، ونحن جاهزون للبدء!

الخطوة 7: تثبيت Hardhat (opens in a new tab)

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

داخل مشروع my-nft الخاص بنا، قم بتشغيل:

npm install --save-dev hardhat

تحقق من هذه الصفحة لمزيد من التفاصيل حول تعليمات التثبيت (opens in a new tab).

الخطوة 8: إنشاء مشروع Hardhat

داخل مجلد مشروعنا، قم بتشغيل:

npx hardhat

يجب أن ترى بعد ذلك رسالة ترحيب وخيارًا لتحديد ما تريد القيام به. حدد "create an empty hardhat.config.js":

888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888 888 888 "88b 888P" d88" 888 888 "88b "88b 888 888 888 .d888888 888 888 888 888 888 .d888888 888 888 888 888 888 888 Y88b 888 888 888 888 888 Y88b. 888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888 👷 Welcome to Hardhat v2.0.11 👷‍ ? What do you want to do? … Create a sample project ❯ Create an empty hardhat.config.js Quit

سيؤدي هذا إلى إنشاء ملف hardhat.config.js لنا والذي سنحدد فيه جميع إعدادات مشروعنا (في الخطوة 13).

الخطوة 9: إضافة مجلدات المشروع

للحفاظ على تنظيم مشروعنا، سنقوم بإنشاء مجلدين جديدين. انتقل إلى الدليل الجذر لمشروعك في سطر الأوامر واكتب:

mkdir contracts mkdir scripts

  • contracts/ هو المكان الذي سنحتفظ فيه بكود العقد الذكي للرمز غير القابل للاستبدال الخاص بنا

  • scripts/ هو المكان الذي سنحتفظ فيه بالبرامج النصية لنشر والتفاعل مع عقدنا الذكي

الخطوة 10: كتابة عقدنا

الآن بعد إعداد بيئتنا، ننتقل إلى أشياء أكثر إثارة: كتابة كود عقدنا الذكي!

افتح مشروع my-nft في محرر النصوص المفضل لديك (نحن نفضل VSCode (opens in a new tab)). تُكتب العقود الذكية بلغة تسمى Solidity وهي ما سنستخدمه لكتابة العقد الذكي MyNFT.sol الخاص بنا.‌

  1. انتقل إلى مجلد contracts وأنشئ ملفًا جديدًا يسمى MyNFT.sol

  2. يوجد أدناه كود العقد الذكي للرمز غير القابل للاستبدال الخاص بنا، والذي استندنا فيه إلى تنفيذ ERC-721 من مكتبة OpenZeppelin (opens in a new tab). انسخ والصق المحتويات أدناه في ملف MyNFT.sol الخاص بك.

الخطوة 14: تجميع عقدنا

للتأكد من أن كل شيء يعمل حتى الآن، دعنا نقوم بتجميع عقدنا. مهمة التجميع (compile) هي إحدى مهام hardhat المدمجة.

من سطر الأوامر قم بتشغيل:

npx hardhat compile

قد تتلقى تحذيرًا بشأن عدم توفير معرف ترخيص SPDX في الملف المصدر، ولكن لا داعي للقلق بشأن ذلك — نأمل أن يبدو كل شيء آخر جيدًا! إذا لم يكن الأمر كذلك، يمكنك دائمًا المراسلة في Alchemy discord (opens in a new tab).

الخطوة 15: كتابة البرنامج النصي للنشر

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

انتقل إلى مجلد scripts/ وأنشئ ملفًا جديدًا يسمى deploy.js، وأضف المحتويات التالية إليه:

يقوم Hardhat بعمل رائع في شرح ما يفعله كل سطر من أسطر الكود هذه في درس العقود (opens in a new tab) الخاص بهم، وقد اعتمدنا شروحاتهم هنا.

const MyNFT = await ethers.getContractFactory("MyNFT");

ContractFactory في ethers.js هو تجريد يُستخدم لنشر عقود ذكية جديدة، لذا فإن MyNFT هنا هو مصنع لمثيلات عقد الرمز غير القابل للاستبدال الخاص بنا. عند استخدام إضافة hardhat-ethers، يتم توصيل مثيلات ContractFactory و Contract بالموقّع الأول افتراضيًا.

const myNFT = await MyNFT.deploy();

سيؤدي استدعاء deploy() على ContractFactory إلى بدء النشر، وإرجاع وعد (Promise) يُحل إلى عقد (Contract). هذا هو الكائن الذي يحتوي على طريقة لكل وظيفة من وظائف العقد الذكي الخاص بنا.

الخطوة 16: نشر عقدنا

نحن مستعدون أخيرًا لنشر عقدنا الذكي! ارجع إلى الدليل الجذر لمشروعك، وفي سطر الأوامر قم بتشغيل:

npx hardhat --network sepolia run scripts/deploy.js

يجب أن ترى بعد ذلك شيئًا مثل:

Contract deployed to address: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650

إذا ذهبنا إلى Sepolia etherscan (opens in a new tab) وبحثنا عن عنوان العقد الخاص بنا، يجب أن نكون قادرين على رؤية أنه قد تم نشره بنجاح. إذا لم تتمكن من رؤيته على الفور، يرجى الانتظار لفترة حيث قد يستغرق الأمر بعض الوقت. ستبدو المعاملة هكذا تقريبًا:

View your transaction address on Etherscan

يجب أن يتطابق عنوان "From" (من) مع عنوان حساب MetaMask الخاص بك وسيشير عنوان "To" (إلى) إلى "Contract Creation" (إنشاء عقد). إذا نقرنا على المعاملة، فسنرى عنوان العقد الخاص بنا في حقل "To":

View your contract address on Etherscan

رائع! لقد قمت للتو بنشر العقد الذكي للرمز غير القابل للاستبدال الخاص بك على سلسلة إيثريوم (شبكة الاختبار)!

لفهم ما يحدث خلف الكواليس، دعنا ننتقل إلى علامة التبويب Explorer (المستكشف) في لوحة تحكم Alchemy (opens in a new tab) الخاصة بنا. إذا كان لديك تطبيقات Alchemy متعددة، فتأكد من التصفية حسب التطبيق وحدد "MyNFT".

View calls made “under the hood” with Alchemy’s Explorer Dashboard

هنا سترى مجموعة من طلبات JSON-RPC التي أجراها Hardhat/Ethers خلف الكواليس لنا عندما استدعينا وظيفة .deploy(). هناك طلبان مهمان يجب الإشارة إليهما هنا وهما eth_sendRawTransaction، وهو الطلب لكتابة عقدنا الذكي فعليًا على سلسلة Sepolia، و eth_getTransactionByHash وهو طلب لقراءة معلومات حول معاملتنا بناءً على التجزئة (هاش) (نمط نموذجي عند إرسال المعاملات). لمعرفة المزيد حول إرسال المعاملات، تحقق من هذا الدرس حول إرسال المعاملات باستخدام ويب 3.

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

آخر تحديث للصفحة: 3 مارس 2026

هل كان هذا البرنامج التعليمي مفيداً؟