Lesson 3

การจัดการรายการตลาดกลาง

หลังจากครอบคลุมการสร้าง การลงรายการ และการซื้อสินค้าในตลาดกระจายอำนาจของเราแล้ว ตอนนี้เราจะมุ่งเน้นไปที่การปรับปรุงสัญญาอัจฉริยะของเราโดยการเพิ่มฟังก์ชันสำหรับการลบสินค้าออกจากการขายและการอัปเดตราคาของสินค้า

การเพิ่มประสิทธิภาพสัญญาตลาด

ในส่วนนี้ เราจะแนะนำฟังก์ชันใหม่สองฟังก์ชัน: 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 ที่ให้ไว้

การปรับใช้และการโต้ตอบกับสัญญา Enhanced Marketplace

หลังจากปรับปรุงสัญญา Marketplace แล้ว ให้คอมไพล์และปรับใช้เหมือนกับที่คุณทำในบทเรียนก่อนหน้า อย่าลืมเลือกสัญญาที่ถูกต้องจากเมนูแบบเลื่อนลงในปลั๊กอินคอมไพเลอร์ Solidity ก่อนที่จะคอมไพล์และปรับใช้

เมื่อปรับใช้สัญญาแล้ว สัญญาจะปรากฏใต้ส่วนสัญญาที่ปรับใช้ในปลั๊กอินปรับใช้และเรียกใช้ธุรกรรม ที่นี่คุณสามารถโต้ตอบกับสัญญาได้

หากต้องการลบสินค้าออกจากการขาย ให้ป้อนรหัสสินค้าลงในฟังก์ชัน removeItemFromSale แล้วคลิกปุ่ม หากต้องการอัปเดตราคาของสินค้า ให้ป้อนรหัสสินค้าและราคาใหม่ลงในฟังก์ชัน updateItemPrice แล้วคลิกปุ่ม

ด้วยเหตุนี้ คุณจึงได้สร้างตลาดแบบกระจายอำนาจขั้นพื้นฐานแต่ใช้งานได้จริงบนบล็อกเชน Ethereum คุณสามารถสร้าง ลงรายการ ซื้อ ลบ และอัปเดตรายการด้วยสัญญาอัจฉริยะนี้ได้ เยี่ยมมาก!

ในบทถัดไป เราจะพูดถึงวิธีจัดการกับช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้นในสัญญาของเรา และแนะนำตัวแก้ไขเพื่อปรับปรุงโค้ดของเราให้ดียิ่งขึ้น คอยติดตาม!

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.
Catalog
Lesson 3

การจัดการรายการตลาดกลาง

หลังจากครอบคลุมการสร้าง การลงรายการ และการซื้อสินค้าในตลาดกระจายอำนาจของเราแล้ว ตอนนี้เราจะมุ่งเน้นไปที่การปรับปรุงสัญญาอัจฉริยะของเราโดยการเพิ่มฟังก์ชันสำหรับการลบสินค้าออกจากการขายและการอัปเดตราคาของสินค้า

การเพิ่มประสิทธิภาพสัญญาตลาด

ในส่วนนี้ เราจะแนะนำฟังก์ชันใหม่สองฟังก์ชัน: 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 ที่ให้ไว้

การปรับใช้และการโต้ตอบกับสัญญา Enhanced Marketplace

หลังจากปรับปรุงสัญญา Marketplace แล้ว ให้คอมไพล์และปรับใช้เหมือนกับที่คุณทำในบทเรียนก่อนหน้า อย่าลืมเลือกสัญญาที่ถูกต้องจากเมนูแบบเลื่อนลงในปลั๊กอินคอมไพเลอร์ Solidity ก่อนที่จะคอมไพล์และปรับใช้

เมื่อปรับใช้สัญญาแล้ว สัญญาจะปรากฏใต้ส่วนสัญญาที่ปรับใช้ในปลั๊กอินปรับใช้และเรียกใช้ธุรกรรม ที่นี่คุณสามารถโต้ตอบกับสัญญาได้

หากต้องการลบสินค้าออกจากการขาย ให้ป้อนรหัสสินค้าลงในฟังก์ชัน removeItemFromSale แล้วคลิกปุ่ม หากต้องการอัปเดตราคาของสินค้า ให้ป้อนรหัสสินค้าและราคาใหม่ลงในฟังก์ชัน updateItemPrice แล้วคลิกปุ่ม

ด้วยเหตุนี้ คุณจึงได้สร้างตลาดแบบกระจายอำนาจขั้นพื้นฐานแต่ใช้งานได้จริงบนบล็อกเชน Ethereum คุณสามารถสร้าง ลงรายการ ซื้อ ลบ และอัปเดตรายการด้วยสัญญาอัจฉริยะนี้ได้ เยี่ยมมาก!

ในบทถัดไป เราจะพูดถึงวิธีจัดการกับช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้นในสัญญาของเรา และแนะนำตัวแก้ไขเพื่อปรับปรุงโค้ดของเราให้ดียิ่งขึ้น คอยติดตาม!

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.