في هذا القسم، سنقدم وظيفتين جديدتين: إزالة العنصر من
البيع
وتحديث سعر العنصر . ستسمح هذه الوظائف للبائع بإزالة سلعته من البيع وتحديث سعر السلعة، على التوالي.
Marketplace
المحسّن:صلابة
//معرف ترخيص SPDX: معهد ماساتشوستس للتكنولوجيا
صلابة البراغما ^0.8.6؛
سوق العقود {
//تحديد هيكل جديد للعناصر
عنصر الهيكل {
string name;
uint price;
address payable seller;
bool forSale;
}
//مصفوفة لاستيعاب جميع العناصر
البند [] البنود العامة؛
//تم حذف تعريفات الأحداث للإيجاز
//تم حذف تعريفات الوظائف الأخرى للإيجاز
//وظيفة لإزالة عنصر من البيع
وظيفة إزالة عنصر من البيع (uint _itemID) عامة {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can remove the item from sale");
item.forSale = false;
}
//وظيفة لتحديث سعر السلعة
تحديث الوظيفة/سعر العنصر (unt _itemID، uint _newPrice) متاح للجمهور {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can update the price");
item.price = _newPrice;
}
}
في وظيفة removeItemFromSale
، نقوم أولاً باسترداد العنصر باستخدام _itemID
المقدم. ثم نتحقق من أن الشخص الذي يتصل بالوظيفة (msg.sender
) هو بائع السلعة. إذا كانت هذه هي الحالة، فقد قمنا بتعيين خاصية ForSale
للعنصر على أنها خاطئة، مما
يؤدي إلى إزالته فعليًا من البيع.
وبالمثل، في وظيفة updateItemPrice ، نقوم
باسترداد العنصر باستخدام _itemID
المقدم، ونتحقق من أن msg.sender
هو البائع، وإذا كان الأمر كذلك، فإننا نقوم بتحديث سعر العنصر إلى _newPrice
المقدم.
بعد تحسين عقد Marketplace
، قم بتجميعه ونشره تمامًا كما فعلت في الدروس السابقة. تذكر تحديد العقد الصحيح من القائمة المنسدلة في المكون الإضافي لـ Solidity compiler قبل التجميع والنشر.
بمجرد نشر العقد، سيظهر ضمن قسم العقود المنشورة في المكون الإضافي لنشر & وتشغيل المعاملات. هنا، يمكنك التفاعل مع العقد.
لإزالة عنصر من البيع، أدخل معرف العنصر في وظيفة RemoveItemFromSale
وانقر فوق الزر. لتحديث سعر عنصر ما، أدخل معرف العنصر والسعر الجديد في وظيفة UpdateItemPrice
وانقر فوق الزر.
وبهذا، تكون قد قمت الآن ببناء سوق لامركزي أساسي ولكنه عملي على بلوكشين الإيثيريوم. يمكنك إنشاء العناصر وإدراجها وشرائها وإزالتها وتحديثها باستخدام هذا العقد الذكي. عمل رائع!
في الدرس التالي، سنناقش كيفية التعامل مع الثغرات الأمنية المحتملة في عقدنا ونقدم المعدلات لزيادة تبسيط التعليمات البرمجية الخاصة بنا. ترقبوا!
في هذا القسم، سنقدم وظيفتين جديدتين: إزالة العنصر من
البيع
وتحديث سعر العنصر . ستسمح هذه الوظائف للبائع بإزالة سلعته من البيع وتحديث سعر السلعة، على التوالي.
Marketplace
المحسّن:صلابة
//معرف ترخيص SPDX: معهد ماساتشوستس للتكنولوجيا
صلابة البراغما ^0.8.6؛
سوق العقود {
//تحديد هيكل جديد للعناصر
عنصر الهيكل {
string name;
uint price;
address payable seller;
bool forSale;
}
//مصفوفة لاستيعاب جميع العناصر
البند [] البنود العامة؛
//تم حذف تعريفات الأحداث للإيجاز
//تم حذف تعريفات الوظائف الأخرى للإيجاز
//وظيفة لإزالة عنصر من البيع
وظيفة إزالة عنصر من البيع (uint _itemID) عامة {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can remove the item from sale");
item.forSale = false;
}
//وظيفة لتحديث سعر السلعة
تحديث الوظيفة/سعر العنصر (unt _itemID، uint _newPrice) متاح للجمهور {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can update the price");
item.price = _newPrice;
}
}
في وظيفة removeItemFromSale
، نقوم أولاً باسترداد العنصر باستخدام _itemID
المقدم. ثم نتحقق من أن الشخص الذي يتصل بالوظيفة (msg.sender
) هو بائع السلعة. إذا كانت هذه هي الحالة، فقد قمنا بتعيين خاصية ForSale
للعنصر على أنها خاطئة، مما
يؤدي إلى إزالته فعليًا من البيع.
وبالمثل، في وظيفة updateItemPrice ، نقوم
باسترداد العنصر باستخدام _itemID
المقدم، ونتحقق من أن msg.sender
هو البائع، وإذا كان الأمر كذلك، فإننا نقوم بتحديث سعر العنصر إلى _newPrice
المقدم.
بعد تحسين عقد Marketplace
، قم بتجميعه ونشره تمامًا كما فعلت في الدروس السابقة. تذكر تحديد العقد الصحيح من القائمة المنسدلة في المكون الإضافي لـ Solidity compiler قبل التجميع والنشر.
بمجرد نشر العقد، سيظهر ضمن قسم العقود المنشورة في المكون الإضافي لنشر & وتشغيل المعاملات. هنا، يمكنك التفاعل مع العقد.
لإزالة عنصر من البيع، أدخل معرف العنصر في وظيفة RemoveItemFromSale
وانقر فوق الزر. لتحديث سعر عنصر ما، أدخل معرف العنصر والسعر الجديد في وظيفة UpdateItemPrice
وانقر فوق الزر.
وبهذا، تكون قد قمت الآن ببناء سوق لامركزي أساسي ولكنه عملي على بلوكشين الإيثيريوم. يمكنك إنشاء العناصر وإدراجها وشرائها وإزالتها وتحديثها باستخدام هذا العقد الذكي. عمل رائع!
في الدرس التالي، سنناقش كيفية التعامل مع الثغرات الأمنية المحتملة في عقدنا ونقدم المعدلات لزيادة تبسيط التعليمات البرمجية الخاصة بنا. ترقبوا!