Давайте реализуем модификатор в нашем контракте Marketplace. Мы определим модификатор OnlySeller, который будет проверять, действительно ли вызывающая функция является продавцом товара.
Marketplace, обновленный модификатором OnlySeller: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;
// Модификатор, проверяющий, является ли вызывающая сторона продавцом элемента modifier onlySeller(uint _itemId) { require(msg.sender == items[_itemId].seller, "Only the owner can execute this"); _; }
// Функция удаления товара из продажи, обновленная модификатором 'onlySeller'
function removeItemFromSale(uint _itemId) public onlySeller(_itemId) { items[_itemId].forSale = false; }
// Функция обновления цены товара, обновляется с помощью модификатора 'onlySeller'
function updateItemPrice(uint _itemId, uint _newPrice) public onlySeller(_itemId) {
items[_itemId].price = _newPrice;
}
}
Установив модификатор OnlySeller, мы сделали наши функции removeItemFromSale и updateItemPrice более эффективными и читаемыми.
После усовершенствования контракта Marketplace выполните те же шаги, что и в предыдущих уроках, для его компиляции и развертывания.
Как только контракт развернут, Вы можете взаимодействовать с ним точно так же, как и раньше. Благодаря усовершенствованиям, которые мы сделали в этом уроке, наш контракт стал более эффективным, его легче читать и обслуживать.
Поздравляем! Теперь Вы узнали, как создавать, совершенствовать и взаимодействовать с базовой децентрализованной рыночной площадкой на блокчейне Ethereum. На этом мы заканчиваем наш курс для начинающих по разработке смарт-контрактов с помощью Solidity. Продолжайте экспериментировать, учиться и строить!
Поздравляем! Вы добрались до конца этого курса для начинающих по разработке смарт-контрактов с использованием Solidity. В течение четырех уроков мы изучали создание, развертывание и взаимодействие со смарт-контрактами в моделируемой среде Ethereum, используя IDE Remix.
Давайте подведем итог тому, чего мы достигли:
Урок 1: Представил основы Ethereum, блокчейна и смарт-контрактов. Мы разработали наш первый простой смарт-контракт, Item.sol, который определял один предмет, который можно было купить или продать.
Урок 2: Мы расширили наш первоначальный контракт и создали контракт Marketplace.sol, который позволял создавать, размещать и покупать несколько товаров.
Урок 3: Мы добавили дополнительную функциональность в нашу торговую площадку, введя методы для снятия товаров с продажи и для обновления цены товара.
Урок 4: Мы улучшили читаемость и эффективность нашего смарт-контракта, реализовав функцию Solidity под названием "модификаторы". Мы узнали, как сделать наш код более упорядоченным и безопасным. В ходе этого путешествия Вы не только приобрели прочный фундамент в области Solidity и разработки смарт-контрактов, но и сделали первые шаги на пути к становлению разработчика блокчейна. Вы узнали, как думать о децентрализованных приложениях, и почувствовали вкус инновационного потенциала технологии блокчейн. Двигаясь вперед, Вы можете выбрать множество путей. Вы можете глубже погрузиться в Solidity, узнав о более продвинутых функциях и соображениях безопасности. Вы можете изучить другие блокчейн-платформы, такие как Polkadot, Cardano или Binance Smart Chain. В качестве альтернативы Вы можете узнать о разработке фронт-энда для dApps с использованием Web3.js или Ethers.js, или о развертывании Ваших контрактов в реальной сети Ethereum.
Какой бы путь Вы ни выбрали, всегда помните: наиболее эффективное обучение происходит на практике. Поэтому не бойтесь экспериментировать, строить, ломать и перестраивать. Каждая проблема, с которой Вы сталкиваетесь, - это возможность учиться и расти.
Спасибо за участие в этом курсе и присоединение к захватывающему миру разработки блокчейн. Революция в области блокчейна только начинается, и такие разработчики, как Вы, находятся на переднем крае. Итак, продолжайте учиться, продолжайте строить и, самое главное, получайте удовольствие!
Счастливого кодирования!
Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.