ในส่วนนี้ เราจะแนะนำฟังก์ชันใหม่สองฟังก์ชัน: removeItemFromSale
และ updateItemPrice
ฟังก์ชั่นเหล่านี้จะช่วยให้ผู้ขายสามารถลบสินค้าออกจากการขายและอัปเดตราคาของสินค้าตามลำดับ
Marketplace
ที่ปรับปรุงแล้ว:ความแข็งแกร่ง
// SPDX-License-Identifier: ความแข็งแกร่งของ MIT
pragma ^0.8.6;
สัญญาตลาด {
// กำหนดโครงสร้างใหม่สำหรับรายการ
โครงสร้างรายการ {
string name;
uint price;
address payable seller;
bool forSale;
}
// อาร์เรย์เพื่อเก็บรายการทั้งหมด
รายการ[] รายการสาธารณะ;
// ละเว้นคำจำกัดความของเหตุการณ์เพื่อความกระชับ
// คำจำกัดความของฟังก์ชันอื่นๆ ละไว้เพื่อความกระชับ
// ฟังก์ชันเพื่อลบสินค้าออกจากการขาย
ฟังก์ชัน RemoveItemFromSale(uint _itemId) public {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can remove the item from sale");
item.forSale = false;
}
// ฟังก์ชันเพื่ออัปเดตราคาของรายการ
ฟังก์ชั่น updateItemPrice (uint _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
ของสินค้าเป็น false
เพื่อลบออกจากการขายอย่างมีประสิทธิภาพ
ในทำนองเดียวกัน ในฟังก์ชัน updateItemPrice
เราจะดึงข้อมูลสินค้าที่มี _itemId
ที่ให้มา ตรวจสอบว่า msg.sender
เป็นผู้ขาย และหากเป็นเช่นนั้น เราจะอัปเดตราคาของสินค้าเป็น _newPrice
ที่ให้ไว้
หลังจากปรับปรุงสัญญา Marketplace
แล้ว ให้คอมไพล์และปรับใช้เหมือนกับที่คุณทำในบทเรียนก่อนหน้า อย่าลืมเลือกสัญญาที่ถูกต้องจากเมนูแบบเลื่อนลงในปลั๊กอินคอมไพเลอร์ Solidity ก่อนที่จะคอมไพล์และปรับใช้
เมื่อปรับใช้สัญญาแล้ว สัญญาจะปรากฏใต้ส่วนสัญญาที่ปรับใช้ในปลั๊กอินปรับใช้และเรียกใช้ธุรกรรม ที่นี่คุณสามารถโต้ตอบกับสัญญาได้
หากต้องการลบสินค้าออกจากการขาย ให้ป้อนรหัสสินค้าลงในฟังก์ชัน removeItemFromSale
แล้วคลิกปุ่ม หากต้องการอัปเดตราคาของสินค้า ให้ป้อนรหัสสินค้าและราคาใหม่ลงในฟังก์ชัน updateItemPrice
แล้วคลิกปุ่ม
ด้วยเหตุนี้ คุณจึงได้สร้างตลาดแบบกระจายอำนาจขั้นพื้นฐานแต่ใช้งานได้จริงบนบล็อกเชน Ethereum คุณสามารถสร้าง ลงรายการ ซื้อ ลบ และอัปเดตรายการด้วยสัญญาอัจฉริยะนี้ได้ เยี่ยมมาก!
ในบทถัดไป เราจะพูดถึงวิธีจัดการกับช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้นในสัญญาของเรา และแนะนำตัวแก้ไขเพื่อปรับปรุงโค้ดของเราให้ดียิ่งขึ้น คอยติดตาม!
ในส่วนนี้ เราจะแนะนำฟังก์ชันใหม่สองฟังก์ชัน: removeItemFromSale
และ updateItemPrice
ฟังก์ชั่นเหล่านี้จะช่วยให้ผู้ขายสามารถลบสินค้าออกจากการขายและอัปเดตราคาของสินค้าตามลำดับ
Marketplace
ที่ปรับปรุงแล้ว:ความแข็งแกร่ง
// SPDX-License-Identifier: ความแข็งแกร่งของ MIT
pragma ^0.8.6;
สัญญาตลาด {
// กำหนดโครงสร้างใหม่สำหรับรายการ
โครงสร้างรายการ {
string name;
uint price;
address payable seller;
bool forSale;
}
// อาร์เรย์เพื่อเก็บรายการทั้งหมด
รายการ[] รายการสาธารณะ;
// ละเว้นคำจำกัดความของเหตุการณ์เพื่อความกระชับ
// คำจำกัดความของฟังก์ชันอื่นๆ ละไว้เพื่อความกระชับ
// ฟังก์ชันเพื่อลบสินค้าออกจากการขาย
ฟังก์ชัน RemoveItemFromSale(uint _itemId) public {
Item storage item = items[_itemId];
require(msg.sender == item.seller, "Only the owner can remove the item from sale");
item.forSale = false;
}
// ฟังก์ชันเพื่ออัปเดตราคาของรายการ
ฟังก์ชั่น updateItemPrice (uint _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
ของสินค้าเป็น false
เพื่อลบออกจากการขายอย่างมีประสิทธิภาพ
ในทำนองเดียวกัน ในฟังก์ชัน updateItemPrice
เราจะดึงข้อมูลสินค้าที่มี _itemId
ที่ให้มา ตรวจสอบว่า msg.sender
เป็นผู้ขาย และหากเป็นเช่นนั้น เราจะอัปเดตราคาของสินค้าเป็น _newPrice
ที่ให้ไว้
หลังจากปรับปรุงสัญญา Marketplace
แล้ว ให้คอมไพล์และปรับใช้เหมือนกับที่คุณทำในบทเรียนก่อนหน้า อย่าลืมเลือกสัญญาที่ถูกต้องจากเมนูแบบเลื่อนลงในปลั๊กอินคอมไพเลอร์ Solidity ก่อนที่จะคอมไพล์และปรับใช้
เมื่อปรับใช้สัญญาแล้ว สัญญาจะปรากฏใต้ส่วนสัญญาที่ปรับใช้ในปลั๊กอินปรับใช้และเรียกใช้ธุรกรรม ที่นี่คุณสามารถโต้ตอบกับสัญญาได้
หากต้องการลบสินค้าออกจากการขาย ให้ป้อนรหัสสินค้าลงในฟังก์ชัน removeItemFromSale
แล้วคลิกปุ่ม หากต้องการอัปเดตราคาของสินค้า ให้ป้อนรหัสสินค้าและราคาใหม่ลงในฟังก์ชัน updateItemPrice
แล้วคลิกปุ่ม
ด้วยเหตุนี้ คุณจึงได้สร้างตลาดแบบกระจายอำนาจขั้นพื้นฐานแต่ใช้งานได้จริงบนบล็อกเชน Ethereum คุณสามารถสร้าง ลงรายการ ซื้อ ลบ และอัปเดตรายการด้วยสัญญาอัจฉริยะนี้ได้ เยี่ยมมาก!
ในบทถัดไป เราจะพูดถึงวิธีจัดการกับช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้นในสัญญาของเรา และแนะนำตัวแก้ไขเพื่อปรับปรุงโค้ดของเราให้ดียิ่งขึ้น คอยติดตาม!