الدرس رقم 3

Управление листингами на торговой площадке

После того, как мы рассмотрели создание, листинг и покупку товаров на нашей децентрализованной торговой площадке, теперь мы сосредоточимся на усовершенствовании нашего смарт-контракта, добавив функциональность для снятия товаров с продажи и обновления цены товара.

Усовершенствование рыночного контракта

В этом разделе мы представим две новые функции: removeItemFromSale и updateItemPrice. Эти функции позволят продавцу снять свой товар с продажи и обновить цену своего товара, соответственно.

Вот расширенный контракт Marketplace:

Solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;

contract Marketplace {
 // Определите новую структуру для Items
 struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    // Массив для хранения всех элементов
 Item[] public items;

 // Определения событий опущены для краткости

 // Определения других функций опущены для краткости

 // Функция удаления элемента из продажи
 function 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;
    }

    // Функция для обновления цены товара
 function updateItemPrice(uint _itemId, uint _newPrice) public {
        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 перед компиляцией и развертыванием.

Как только контракт будет развернут, он появится в разделе Развернутые контракты в плагине Развернуть & Run Transactions. Здесь Вы можете взаимодействовать с контрактом.

Чтобы удалить товар из продажи, введите ID товара в функцию removeItemFromSale и нажмите кнопку. Чтобы обновить цену элемента, введите ID элемента и новую цену в функцию updateItemPrice и нажмите кнопку.

Таким образом, Вы построили базовую, но функциональную децентрализованную торговую площадку на блокчейне Ethereum. С помощью этого смарт-контракта Вы можете создавать, перечислять, покупать, удалять и обновлять товары. Отличная работа!

В следующем уроке мы обсудим, как справиться с потенциальными уязвимостями безопасности в нашем контракте, и введем модификаторы для дальнейшей оптимизации нашего кода. Оставайтесь с нами!

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.
الكتالوج
الدرس رقم 3

Управление листингами на торговой площадке

После того, как мы рассмотрели создание, листинг и покупку товаров на нашей децентрализованной торговой площадке, теперь мы сосредоточимся на усовершенствовании нашего смарт-контракта, добавив функциональность для снятия товаров с продажи и обновления цены товара.

Усовершенствование рыночного контракта

В этом разделе мы представим две новые функции: removeItemFromSale и updateItemPrice. Эти функции позволят продавцу снять свой товар с продажи и обновить цену своего товара, соответственно.

Вот расширенный контракт Marketplace:

Solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;

contract Marketplace {
 // Определите новую структуру для Items
 struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    // Массив для хранения всех элементов
 Item[] public items;

 // Определения событий опущены для краткости

 // Определения других функций опущены для краткости

 // Функция удаления элемента из продажи
 function 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;
    }

    // Функция для обновления цены товара
 function updateItemPrice(uint _itemId, uint _newPrice) public {
        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 перед компиляцией и развертыванием.

Как только контракт будет развернут, он появится в разделе Развернутые контракты в плагине Развернуть & Run Transactions. Здесь Вы можете взаимодействовать с контрактом.

Чтобы удалить товар из продажи, введите ID товара в функцию removeItemFromSale и нажмите кнопку. Чтобы обновить цену элемента, введите ID элемента и новую цену в функцию updateItemPrice и нажмите кнопку.

Таким образом, Вы построили базовую, но функциональную децентрализованную торговую площадку на блокчейне Ethereum. С помощью этого смарт-контракта Вы можете создавать, перечислять, покупать, удалять и обновлять товары. Отличная работа!

В следующем уроке мы обсудим, как справиться с потенциальными уязвимостями безопасности в нашем контракте, и введем модификаторы для дальнейшей оптимизации нашего кода. Оставайтесь с нами!

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.