المكاسب:
- القدرة على استخدام الذكاء الاصطناعي لإنتاج الأطر والاختبارات ومسودات المراجعة بناءً على مكتبات مثبتة (مثل OpenZeppelin) وفهم أن البشر يضمنون أمان الإنتاج
- القدرة على التحقق من إصدار الكود والنمط والتحكم في الوصول الذي ينتجه الذكاء الاصطناعي من خلال التجميع والاختبار وشبكة الاختبار
- إن القدرة على التمييز بين هذا التجميع لا تعني أنه آمن وأن شبكة الاختبار والتدقيق ضروريان.
تختلف كتابة العقد الذكي عن البرامج العادية: فالرمز الذي تكتبه عام وغير قابل للتغيير، وهو برنامج ينقل الأموال مباشرة. في هذه الوحدة، ستتعلم كيفية استخدام الذكاء الاصطناعي كمساعد لتطوير العقود الذكية؛ سوف نتعلم من مسودة الإنتاج إلى اختبار الكتابة، ومن استدعاء الأنماط إلى تحسين الغاز (رسوم المعاملة). ولكن لنكن واضحين منذ البداية: الذكاء الاصطناعي ينتج المخططات؛ يضمن البشر وجود كود آمن يدخل في مرحلة الإنتاج.
المطلب الأول: اللغة والبيئة
لغة العقود الذكية الأكثر شيوعًا هي Solidity (لغة Ethereum وEVM — آلة Ethereum الافتراضية، الآلة الافتراضية التي يتم تشغيل العقود عليها — سلاسل متوافقة). البديل هو Vyper (لغة تشبه لغة بايثون تهدف إلى أن تكون أكثر تقييدًا وقابلية للقراءة). يستهلك الكود الخاص بك الغاز (تكلفة كل معاملة إلى blockchain)؛ الكود غير الفعال مكلف. يعد إبقاء هذه المصطلحات واضحة في السياق الذي تقدمه للذكاء الاصطناعي أمرًا أساسيًا للحصول على مخرجات دقيقة.
حيث يكون الذكاء الاصطناعي أكثر قيمة ليس في "الكتابة من الصفر" ولكن في إنتاج إطار العمل + القالب الجيد: بداية متوافقة مع المعايير، مخطط لإضافة خبرتك إليه.
طبقات استخدام الذكاء الاصطناعي في البرمجة
1. توليد الهياكل العظمية. يقوم الذكاء الاصطناعي باستخراج الهيكل العظمي للرمز القياسي (ERC-20) أو NFT (ERC-721 - وهو معيار أصول رقمية فريد) بسرعة. ولكن تأكد من جعل الذكاء الاصطناعي يستخدم مكتبة مثبتة: على سبيل المثال، OpenZeppelin (مكتبة التعاقد القياسية الموثوقة والمدققة من قبل المجتمع). القاعدة هي استخدام الكتلة التي تم اختبارها بدلاً من كتابة الأمان من البداية.
2. وصف الوظيفة ومراجعتها. يتيح لك شرح وظيفة موجودة للذكاء الاصطناعي اكتشاف الأخطاء المنطقية مبكرًا.
3. توليد الاختبار. يعد الذكاء الاصطناعي جيدًا في إنشاء حالات اختبار لحالات الحافة: صفر إدخال، وعدد كبير جدًا، ومتصل غير مصرح به، ومكالمة متكررة. هذا يذكرنا بأحد السيناريوهات التي يتخطاها المرء.
4. الغاز وسهولة القراءة. يشير الذكاء الاصطناعي إلى أنماط باهظة الثمن مثل عمليات الكتابة والتخزين غير الضرورية ويقترح البدائل.
تلميح: قم بتوجيه الذكاء الاصطناعي إلى "البناء على عقود OpenZeppelin المدققة، وإعادة كتابة الأمان من الصفر." إن قيام الذكاء الاصطناعي بكتابة رمز الأمان الأصلي أكثر خطورة بكثير من استخدام مكتبة تم اختبارها.
موجه ضعيف / موجه قوي
حث ضعيف:
اكتب لي عقدًا رمزيًا.
هذه المطالبة خطيرة: ليس من الواضح أي معيار، أي سلسلة، أي مكتبة، أي متطلبات أمنية. يقوم الذكاء الاصطناعي بإنشاء تعليمات برمجية عشوائية، وربما قديمة أو غير آمنة.
مطالبة قوية:
دورك: كبير مطوري Solidity. قم بإنشاء مسودة رمزية ERC-20 لسلسلة متوافقة مع EVM. القواعد: - استنادًا إلى عقود ERC20 وOwnable المدققة من OpenZeppelin. - اكتب إصدار Solidity وسطر الترخيص (SPDX) بشكل صريح. - المالك فقط هو الذي لديه إذن بسك العملة؛ إضافة غطاء ضد الضغط اللانهائي. - أضف تعليق NatSpec إلى كل وظيفة. - كتابة الأمن من الصفر. استخدم الكتلة القياسية. - أضف تحذيرًا في النهاية: "هذه مسودة، مطلوب التدقيق والاختبار". حدد المناطق التي لست متأكدًا منها باستخدام // TODO.
الفرق: موجه قوي يعطي دورًا واضحًا ومعيارًا ومكتبة وحدودًا أمنية وتوثيقًا وتوقعات التحقق من الصحة.
أربعة قوالب قابلة للنسخ
1) الهيكل العظمي القائم على المعايير:
دورك: مطور Solidity. قم بإنشاء إطار عقد [ERC-20 / ERC-721 / التوقيع المساحي] استنادًا إلى مكتبة OpenZeppelin المدققة. اكتب ترخيص SPDX وإصدار البراجما. إضافة التحكم في الوصول (من يمكنه الاتصال) إلى كل وظيفة خارجية. إعادة اختراع الأمن؛ استخدم الكتل القياسية. هذه مسودة.
2) مراجعة الوظيفة:
افحص الوظيفة التالية كمطور كبير: ماذا تفعل، ما الحالات التي تتغير، من يمكنه الاتصال بها؟ قم بوضع علامة على الأخطاء المنطقية المحتملة والمخاطر الأمنية على أنها فرضيات، مع ربط كل منها بسطر في التعليمات البرمجية. لا تقل "آمن" صراحةً؛ فقط قم بإدراج نقاط الاهتمام.
3) مسودة سيناريو الاختبار:
اقتراح حالات اختبارية لهذا العقد (يمكن أن تكون مسودة للمسبك/الهاردهات). تغطية الحالات المحددة على وجه التحديد: صفر إدخال، عدد كبير جدًا، مكالمة غير مصرح بها، مكالمة إعادة الدخول، أموال غير كافية. اكتب ما يؤكده كل اختبار.
4) مراجعة الغاز وسهولة القراءة:
في هذا العقد، حدد الأنماط التي يمكن أن تقلل من تكلفة الغاز: الكتابة غير الضرورية للتخزين، والاتصال الخارجي في الحلقة، والحسابات المتكررة. اشرح الفرق قبل/بعد في كل اقتراح. التوصية بالتحسينات التي تخرق الأمان؛ إذا لم يكن الأمر واضحًا، فقل "اسأل المدقق".
ثلاث حالات صغيرة (بالأرقام)
الحالة 1 - تم حفظ الهيكل العظمي لمدة 4 ساعات. قام أحد الفرق باستخراج الهيكل العظمي لعقد استحقاق قائم على المكتبة مع الذكاء الاصطناعي في 30 دقيقة؛ استغرق الأمر حوالي 4 ساعات يدويًا. خصص الفريق وقتًا للأمن والاختبار. ولم يأت المكسب من نقل الأمن، بل من تسريع الإطار الممل.
الحالة 2 - فخ الإصدار القديم. أنتج الذكاء الاصطناعي نمطًا يرسل الأثير الخام عن طريق النقل، وهو ما لم يعد موصى به لأن بيانات التدريب قديمة. لاحظ المطور ذلك وقام بتغييره إلى النمط الحالي القائم على الاتصال والمحمي بإعادة الدخول. الدرس المستفاد: يتم التأكد دائمًا من تحديث مكتبة/نمط الذكاء الاصطناعي؛ لا تعرف منظمة العفو الدولية ما بعد الموعد النهائي للتدريب.
الحالة 3 - برزت مسودة الاختبار خطأ مخفي. كشف اختبار "المتصل غير المصرح به" الذي أنتجه الذكاء الاصطناعي أن المطور قد نسي التحكم في الوصول إلى إحدى الوظائف. أضاع المالك الوحيد سطرًا واحدًا، وتم اكتشافه خلال 5 دقائق على شبكة الاختبار؛ من الممكن أن تكون هناك خسارة للأموال على الشبكة الرئيسية. الدرس المستفاد: يغطي الذكاء الاصطناعي النقطة العمياء البشرية في الاختبار.
تذكر أنماط الأمان باستخدام الذكاء الاصطناعي
يعد الذكاء الاصطناعي جيدًا في تذكيرك بأنماط الضعف المعروفة مثل قائمة التحقق. الأنماط الأكثر شيوعًا:
- إعادة الدخول: إجراء مكالمة خارجية دون تحديث الحالة. الحل: أمر التحقق من التأثيرات والتفاعلات، وحارس إعادة الدخول.
- عدم وجود التحكم في الوصول: يمكن لأي شخص استدعاء الوظيفة الحرجة.
- تجاوز/تجاوز الأعداد الصحيحة: تلتقط Modern Solidity معظمها، ولكنها لا تزال تمثل خطرًا في التعليمات البرمجية ذات المستوى المنخفض.
- عدم كفاية التحقق من صحة الإدخال: عنوان صفر، تحكم في الكمية صفر.
- تبعية أوراكل: الثقة العمياء في البيانات الخارجية (مثل السعر).
انتبه: يمكن للذكاء الاصطناعي أن يتذكر هذه القائمة، لكنه لا يستطيع ضمان ما إذا كان أحد العناصر في القائمة موجودًا في الكود الخاص بك أم لا. القائمة المرجعية هي البداية؛ إنه ليس بديلاً للتحكم في الحاويات.
الحصول على السياق الصحيح: سر الكود الجيد من الذكاء الاصطناعي
تعتمد جودة الكود الذي ينتجه الذكاء الاصطناعي بشكل مباشر على جودة السياق الذي تقدمه له. في Web3، يعد هذا أمرًا بالغ الأهمية بشكل خاص لأن تفصيلًا صغيرًا واحدًا (أي سلسلة، أي إصدار من Solidity، أي معيار رمزي) يغير المخرجات بأكملها. السياق الجيد يشمل:
- السلسلة المستهدفة والبيئة: شبكة إيثريوم الرئيسية أم الطبقة الثانية (سلسلة جانبية أرخص تعمل فوق السلسلة الرئيسية)؟ تختلف تكلفة الغاز وبعض الميزات حسب السلسلة.
- الإصدار والمكتبة: أي إصدار من Solidity، أي إصدار من OpenZeppelin؟ إذا لم يتم تحديد أي إصدار، فقد ينتج الذكاء الاصطناعي أنماطًا قديمة ومهملة.
- متطلبات الأمان: هل هناك حد أقصى، هل يمكن إيقافه مؤقتًا، هل يمكن زيادته؟ يجب أن يقال هذا منذ البداية.
- القيود: حدود واضحة مثل "لا تستخدم التجميع"، "تجنب الاتصال الخارجي"، "تحسين استهلاك الوقود مع الحفاظ على سهولة القراءة".
هناك أسلوب قوي آخر وهو أن تطلب من الذكاء الاصطناعي الخطة أولاً، ثم الكود: "قم أولاً بإدراج وظائف هذا العقد وما سيفعله كل منها؛ اكتب الكود بمجرد الموافقة عليه". يؤدي هذا إلى اكتشاف الذكاء الاصطناعي وهو يسير في الاتجاه الخاطئ مبكرًا ويسمح لك بالاحتفاظ بالقرار المعماري.
تلميح: اسأل الذكاء الاصطناعي "لماذا كتبت هذا الرمز بهذه الطريقة؟" بسأل. سيؤدي شرح الأساس المنطقي إلى تسريع تعلمك وإظهار أي أخطاء منطقية (على سبيل المثال، افتراض أمني خاطئ). لا تثق في مخرجات الذكاء الاصطناعي الذي لا يستطيع الدفاع عن الكود الخاص به.
الأخطاء الشائعة
- وضع الأمن في الذكاء الاصطناعي من الصفر. استخدم مكتبة تم اختبارها.
- عدم تأكيد الإصدار/النمط الذي ينتجه الذكاء الاصطناعي. قد تكون بيانات التدريب قديمة.
- تجاوز شبكة الاختبار. يجب تشغيل كل مسودة على شبكة الاختبار قبل البث المباشر.
- عدم إضافة NatSpec/documentation. التفتيش والصيانة تصبح صعبة.
- مفهوم خاطئ "تم تجميعه، لذا فهو آمن". يجري تجميعها لا يعني كونها آمنة.
- نسيان التحكم في الوصول. وهو من الأخطاء الأكثر شيوعًا والمكلفة.
باختصار
- في كتابة العقود الذكية، ينتج الذكاء الاصطناعي أطر عمل واختبارات ومسودات مراجعة؛ يضمن الإنسان سلامة الإنتاج.
- بناء الأمان ليس من الصفر ولكن بناءً على المكتبات التي أثبتت جدواها (مثل OpenZeppelin).
- يتم دائمًا تأكيد حداثة الإصدارات والأنماط التي تنتجها YZ.
- تعتبر بذرة الاختبار ذات قيمة في التقاط النقاط العمياء البشرية (الحالات المحدودة، التحكم في الوصول).
- لا يعني التجميع أن تكون آمنًا؛ إن شبكة الاختبار والتدقيق أمر لا بد منه.
مهمة التطبيق
للحصول على رمز ERC-20 بسيط، قم بإنشاء مسودة باستخدام موجه "الهيكل القائم على المعايير" أعلاه. بعد ذلك: (1) تحقق مما إذا كان يستخدم مكتبة محددة، (2) تحقق من عناصر التحكم في الوصول، (3) قم بإنشاء اختبارات باستخدام موجه "مسودة حالة الاختبار" وقم بالفعل بإجراء اختبار واحد على الأقل للمتصلين المارقين. ابحث عن نقطة أمان واحدة على الأقل غاب عنها الذكاء الاصطناعي ولاحظها.
قائمة مرجعية
- [ ] لقد ذكرت بوضوح المعيار والسلسلة في الموجه.
- [ ] كنت أرغب في إنتاج معتمد على المكتبات.
- [ ] يتوفر ترخيص SPDX وإصدار براغما.
- [ ] يوجد تحكم في الوصول في كل وظيفة مهمة.
- [ ] لقد قمت بإنشاء وإجراء اختبارات للحالات المحدودة.
- [ ] لقد أكدت أن المكتبة/النمط محدث.
- [ ] قمت بوضع علامة على رمز التدقيق والاختبار؛ لم أحصل عليه دون إشراف على الشبكة الرئيسية.