第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. Ви можете створювати, перераховувати, купувати, видаляти та оновлювати елементи за допомогою цього розумного контракту. Чудова робота!

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

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。
目录
第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. Ви можете створювати, перераховувати, купувати, видаляти та оновлювати елементи за допомогою цього розумного контракту. Чудова робота!

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

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。