Lección 3

Керування лістингом Marketplace

Розглянувши створення, розміщення та купівлю товарів на нашому децентралізованому ринку, тепер ми зосередимося на покращенні нашого смарт-контракту, додавши функції для вилучення товарів із продажу та оновлення ціни товару.

Покращення контракту Marketplace

У цьому розділі ми представимо дві нові функції: 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;
    }

    // Функція для оновлення ціни товару 
 функція 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.

Розгортання контракту Enhanced Marketplace і взаємодія з ним

Після вдосконалення контракту Marketplace скомпілюйте та розгорніть його так само, як ви робили в попередніх уроках. Пам’ятайте, що перед компіляцією та розгортанням у розкривному меню модуля компілятора Solidity потрібно вибрати правильний контракт.

Після розгортання контракту він з’явиться в розділі «Розгорнуті контракти» плагіна «Розгортання та виконання транзакцій». Тут ви можете взаємодіяти з договором.

Щоб зняти товар із продажу, введіть ідентифікатор товару у функцію removeItemFromSale і натисніть кнопку. Щоб оновити ціну товару, введіть ідентифікатор товару та нову ціну у функцію updateItemPrice і натисніть кнопку.

Завдяки цьому ви створили базовий, але функціональний децентралізований ринок на блокчейні Ethereum. Ви можете створювати, перераховувати, купувати, видаляти та оновлювати елементи за допомогою цього розумного контракту. Чудова робота!

У наступному уроці ми обговоримо, як усунути потенційні вразливості безпеки в нашому контракті, і введемо модифікатори для подальшої оптимізації нашого коду. Залишайтеся на зв'язку!

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.
Catálogo
Lección 3

Керування лістингом Marketplace

Розглянувши створення, розміщення та купівлю товарів на нашому децентралізованому ринку, тепер ми зосередимося на покращенні нашого смарт-контракту, додавши функції для вилучення товарів із продажу та оновлення ціни товару.

Покращення контракту Marketplace

У цьому розділі ми представимо дві нові функції: 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;
    }

    // Функція для оновлення ціни товару 
 функція 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.

Розгортання контракту Enhanced Marketplace і взаємодія з ним

Після вдосконалення контракту Marketplace скомпілюйте та розгорніть його так само, як ви робили в попередніх уроках. Пам’ятайте, що перед компіляцією та розгортанням у розкривному меню модуля компілятора Solidity потрібно вибрати правильний контракт.

Після розгортання контракту він з’явиться в розділі «Розгорнуті контракти» плагіна «Розгортання та виконання транзакцій». Тут ви можете взаємодіяти з договором.

Щоб зняти товар із продажу, введіть ідентифікатор товару у функцію removeItemFromSale і натисніть кнопку. Щоб оновити ціну товару, введіть ідентифікатор товару та нову ціну у функцію updateItemPrice і натисніть кнопку.

Завдяки цьому ви створили базовий, але функціональний децентралізований ринок на блокчейні Ethereum. Ви можете створювати, перераховувати, купувати, видаляти та оновлювати елементи за допомогою цього розумного контракту. Чудова робота!

У наступному уроці ми обговоримо, як усунути потенційні вразливості безпеки в нашому контракті, і введемо модифікатори для подальшої оптимізації нашого коду. Залишайтеся на зв'язку!

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.
It seems that you are attempting to access our services from a Restricted Location where Gate is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.