فتح المجلد
اختر مجلد المشروع كمجلد عمل لمحادثة جديدة وحدد Ask first، بحيث تنتظر كل تغيير يكتب ملفاً قرارك. ضع ملف ABI في هذا المجلد قبل البدء.
لإنشاء تطبيق dApp، ابدأ بمجلد لا يحتوي إلا على ملف ABI الخاص بعقدك. افتح هذا المجلد كمجلد عمل لمحادثة جديدة، اختر Ask first ووصف الصفحة التي تريدها: زر لربط المحفظة، عرض الرصيد، وسطر لحالة المعاملة. يقوم الوكيل بمسح المجلد، ويقترح الملفات كاختلافات (diffs) وينشئ الصفحة فقط بعد قبولك لكل تغيير. قرر قبل البدء أين سيعمل المشروع. تناسب السلسلة المحلية على جهاز الكمبيوتر الخاص بك المحاولة الأولى، لأن العملات عليها لا قيمة لها، وتكون الشبكة العامة للاختبار هي الخطوة التالية بمجرد عمل الصفحة. استخدم حسابات مؤقتة على أي منهما، ولا تستخدم حسابًا يحتوي على أموال حقيقية، واحتفظ بكل مفتاح خاص أو عبارة استعادة خارج المجلد، والمحادثة، ومستودع الكود. النتيجة هي صفحة صغيرة ومختبرة، وملف README يمكن لأي شخص آخر اتباعه.
اختر مجلد المشروع كمجلد عمل لمحادثة جديدة وحدد Ask first، بحيث تنتظر كل تغيير يكتب ملفاً قرارك. ضع ملف ABI في هذا المجلد قبل البدء.
اكتب البيانات التي تعرضها الصفحة وحالات المعاملات التي يجب أن تتعامل معها، بجمل واضحة. سمّ دالة العقد التي يستدعيها والشبكة التي تتحدث إليها، على سبيل المثال سلسلتك المحلية.
اقرأ كل تغيير مقترح في الملف في المحادثة، ثم اقبله أو ارفضه بملاحظة قصيرة. وسّع البطاقة عندما تريد رؤية الاختلاف الكامل، ورفض أي شيء لا يمكنك شرحه في جملة واحدة.
دع Shell يشغل أمر البناء الخاص بك وأمر الاختبار، واقرأ رمز الخروج على كل بطاقة. افتح الصفحة مقابل السلسلة المحلية وقارن ما تعرضه مع ما تتوقعه. أصلح ما يفشل قبل إضافة الميزة التالية.
balance-abi.jsonتم التحميلapp.jsتم الحفظindex.html+4 أسطرyour build commandexit 0[
{
"type": "function",
"name": "balanceOf",
"stateMutability": "view",
"inputs": [{ "type": "address", "name": "account" }],
"outputs": [{ "type": "uint256" }]
}
]يصف هذا الجزء من JSON دالة قراءة واحدة فقط، balanceOf، وهي دالة قراءة الرصيد التي تستخدمها رموز ERC-20. تأخذ عنوانًا باسم account وتعيد قيمة uint256. يستخدم الواجهة الأمامية ABI مثل هذا لاستدعاء العقد، ولا يحتوي الملف على مفتاح أو سر. احفظه باسم balance-abi.json في مجلد المشروع، واستبدله بـ ABI الكامل لعقدك الخاص بمجرد عمل الصفحة، لأن العقد الحقيقي يحتوي عادةً على وظائف أكثر.
طريقة جيدة للبدء في تعلم web3 هي قراءة ملف ABI صغير واحد قبل كتابة أي شيء. اطلب من الوكيل فتح balance-abi.json. يظهر read_file الملف، ويظهر list_dir ما هو موجود آخر في المجلد، ويؤكد grep الاسم الدقيق للدالة. يشرح الوكيل بعد ذلك في المحادثة أن balanceOf هي دالة view: تقرأ البيانات ولا ترسل معاملة، لذا فإن استدعاؤها لا يغير شيئًا على السلسلة. لم يتم كتابة أي شيء بعد. كما يدرج ما ستحتاجه الصفحة، وهي اتصال بعقدة، وعنوان العقد المنشر، وحساب للنظر فيه. تحقق من كل بيان مقابل JSON على البطاقة، لأن النموذج قد يقرأ نوعًا بشكل خاطئ أو يسمي دالة لا يحتوي عليها الملف، واطلب التصحيح قبل المضي قدمًا.
اطلب صفحة تقرأ رصيد حساب اختبار مؤقت. تنشئ write_file app.js مع استدعاء لسلسلتك المحلية عبر JSON-RPC، وتضيف edit_file سطرًا برمجيًا إلى index.html. تحتاج إلى أدوات عبر السلسلة لتطبيق dApp فقط عندما يتحدث إلى سلاسل متعددة؛ مشروع أولي على سلسلة محلية واحدة لا يحتاج إلى أي منها، لذا اتركها خارجًا. في وضع Ask first، ينتظر كلا التغييرين كاختلافات. اقرأها وقبلها. ثم يشغل Shell أمر البناء الخاص بك، وتظهر البطاقة رمز الخروج الفعلي. افتح الصفحة، وقارن الرقم الذي تعرضه بالرقم الذي تقرره السلسلة المحلية لنفس الحساب، واطلب من الوكيل إصلاح الصفحة إذا اختلف الاثنان. احتفظ بعنوان السلسلة في مكان واحد، بحيث يعني تغيير الشبكة لاحقًا تعديل سطر واحد فقط.
الانتقال من web2 إلى web3 كمطور يعني في الغالب إضافة محفظة، وشبكة، وحالة معاملة إلى الشاشات التي تعرف كيفية بنائها بالفعل. اطلب من الوكيل إضافة سطر حالة مع 5 حالات: غير مرسل، في انتظار المحفظة، قيد التنفيذ، مؤكد وفشل. تغير edit_file السكربت وملف التنسيق، ويعثر grep على أي مكان حيث لا تزال الحالة مفقودة. توقعم المحفظة؛ لا يلمس كودك المفتاح الخاص أو عبارة الاستعادة أبدًا. اطلب أيضًا رسائل لمحفظة مفقودة، أو شبكة خاطئة، أو توقيع مرفوض، لأن المستخدم الحقيقي سيواجهها عاجلاً أم آجلاً. شغل الصفحة على شبكة اختبار بحساب مؤقت، ارفض التوقيع عن قصد وتحقق من ظهور حالة الفشل برسالة واضحة.
اطلب من الوكيل كتابة اختبار واجهة أمامية لكل حالة وملف README قصير يشرح كيفية تشغيل المشروع. تنشئ write_file كلا الملفين، ويشغل Shell أمر الاختبار الخاص بك، وتبلغ البطاقة رمز الخروج الفعلي. سيقوم مطور dApp الذي يعود إلى المشروع بعد شهر بقراءة ملف README أولاً، لذا تحقق من أنه يسمي فقط الأوامر التي تستخدمها فعليًا وأنه يقول أي شبكة تتوقعها الصفحة. استخدم وضع Plan only أولاً إذا كنت تريد رؤية قائمة الخطوات قبل إنشاء أي ملف، ثم انتقل إلى Ask first لتنفيذها. اقرأ كل اختلاف، وشغل الاختبارات بنفسك مرة واحدة على شبكة اختبار بحسابات مؤقتة، واحتفظ بملف README بجانب ملف ABI بحيث يظل الاثنان متزامنين.