Lição 1

Обзор децентрализованного рынка и Remix IDE

В этом уроке мы сначала узнаем, что такое децентрализованная торговая площадка и как она работает. Затем мы познакомимся с IDE Remix и напишем простой контракт на Solidity.

Понимание децентрализованных торговых площадок

В традиционных торговых площадках электронной коммерции, таких как Amazon и eBay, центральный орган облегчает проведение транзакций между покупателями и продавцами. Этот центральный орган контролирует транзакции, ведет списки товаров и управляет разрешением споров. Хотя эта централизованная модель имеет свои преимущества, у нее есть и ряд недостатков, включая риск цензуры, высокие тарифы и зависимость от доверия.

С другой стороны, децентрализованный рынок использует технологию blockchain для обеспечения возможности совершения одноранговых транзакций без посредников. Она устраняет необходимость в доверии, поскольку транзакции прозрачны и проверяются всеми участниками блокчейна. Примерами децентрализованных рыночных площадок являются OpenBazaar и Origin Protocol.

Введение в Remix IDE

Remix IDE (интегрированная среда разработки) - это мощный инструмент с открытым исходным кодом, созданный специально для разработки смарт-контрактов Ethereum. Он запускается непосредственно в Вашем веб-браузере, поэтому Вам не нужно ничего устанавливать на свой компьютер.

Вы можете получить доступ к IDE Remix по адресу https://remix.ethereum.org. Когда Вы откроете Remix в браузере, Вы найдете три панели:

  1. Левая панель: Здесь Вы можете создавать, импортировать и управлять своими файлами Solidity. Он также включает различные плагины для компиляции, тестирования, отладки и развертывания Ваших контрактов.

  2. Центральная панель: Это Ваш редактор кода. Здесь Вы будете писать и редактировать свой код Solidity.

  3. Правая панель: Эта панель предоставляет различные инструменты для компиляции Ваших контрактов, их развертывания в сети Ethereum (либо в реальной сети Ethereum, либо в симуляторе JavaScript VM), а также для взаимодействия с развернутыми контрактами.

Ваш первый контракт Solidity: контракт "Item"

В этой части мы напишем наш первый контракт Solidity. Этот контракт будет представлять собой базовый "предмет" на нашем рынке.

Для начала создайте новый файл в Ремиксе, щелкнув по второй сверху иконке на левой панели (иконка файла). На центральной панели появится новый диалог. Введите Item.sol в качестве имени файла и нажмите "OK".

Теперь мы можем приступить к составлению нашего контракта:

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

contract Item {
 // Определите событие, которое будет срабатывать при создании нового элемента
 event NewItem(uint itemId, string itemName, uint itemPrice);

   // Каждый элемент имеет id, имя и цену
 struct ItemStruct {
        string name;
        uint price;
    }

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

 // Функция для создания нового элемента
 function createItem(string memory _name, uint _price) public {
        items.push(ItemStruct(_name, _price));
        emit NewItem(items.length - 1, _name, _price);
    }
}

Давайте объясним различные части этого контракта:

  1. Идентификатор лицензии SPDX: Это стандартный способ выражения лицензии контракта. Строка // SPDX-License-Identifier: MIT указывает на то, что в нашем контракте используется разрешительная лицензия MIT.

  2. Директива Pragma: pragma solidity ^0.8.6; указывает, что контракт написан на Solidity версии 0.8.6. Символ ^ означает, что он также будет совместим с любыми более новыми версиями, вплоть до версии 0.9.0, но не включая ее.

  3. Определение контракта: contract Item {...} определяет новый контракт под названием Item. Здесь мы записываем переменные состояния и функции контракта.

  4. Определение события: событие NewItem(uint itemId, string itemName, uint itemPrice); определяет событие, которое мы можем испускать всякий раз, когда создается новый элемент. События - это способ, с помощью которого смарт-контракты регистрируют активность, которую могут прослушивать внешние стороны.

  5. Определение структуры: struct ItemStruct {...} определяет новый тип данных ItemStruct, который представляет товар с названием и ценой.

  6. Переменная состояния: ItemStruct[] public items; объявляет переменную состояния items, которая содержит массив ItemStructs. Ключевое слово public автоматически создает функцию getter, которая позволяет любому получить доступ к списку элементов.

  7. Определение функции: function createItem(string memory _name, uint _price) public {...} определяет публичную функцию, которую любой может вызвать для создания нового элемента. Функция принимает название и цену, создает новый ItemStruct, добавляет его в массив items и выдает событие NewItem.
    Чтобы составить этот контракт, перейдите на правую панель и щелкните на третьем значке сверху (логотип Solidity). Здесь Вы можете составить контракт. Нажмите кнопку "Compile", и если ошибок нет, то Ваш контракт будет успешно скомпилирован.

На левой панели может появиться Вопрос:

Вопрос о Swarm или IPFS касается метода, который Remix будет использовать для хранения метаданных Вашего контракта. Давайте рассмотрим их подробнее:

  1. IPFS: InterPlanetary File System (IPFS) - это протокол, предназначенный для создания постоянной и децентрализованной сети Интернет. Это похоже на один рой BitTorrent, обменивающийся объектами в пределах одного Git-репозитория.

  2. Swarm (Рой): Swarm - это платформа распределенного хранения и служба распространения контента, встроенная в стек Ethereum web3. Она позволяет сети равных хранить и распространять данные.
    Когда Вы компилируете контракт, компилятор Solidity генерирует JSON-файл, содержащий, помимо прочей информации, его Application Binary Interface (ABI) и байткод. Это называется метаданными контракта. Хранение этих метаданных в децентрализованной сети хранения обеспечивает их постоянную доступность, и они могут быть полезны для проверки исходного кода контракта.

Однако, в целях обучения и если Вы не планируете проверять контракт на Etherscan или любом другом блокчейн-проводнике, Вы можете выбрать либо Swarm, либо IPFS, либо просто проигнорировать это и перейти к следующим этапам обучения. Помните, что основное внимание на этом этапе уделяется пониманию того, как написать, скомпилировать и развернуть контракт.

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
Catálogo
Lição 1

Обзор децентрализованного рынка и Remix IDE

В этом уроке мы сначала узнаем, что такое децентрализованная торговая площадка и как она работает. Затем мы познакомимся с IDE Remix и напишем простой контракт на Solidity.

Понимание децентрализованных торговых площадок

В традиционных торговых площадках электронной коммерции, таких как Amazon и eBay, центральный орган облегчает проведение транзакций между покупателями и продавцами. Этот центральный орган контролирует транзакции, ведет списки товаров и управляет разрешением споров. Хотя эта централизованная модель имеет свои преимущества, у нее есть и ряд недостатков, включая риск цензуры, высокие тарифы и зависимость от доверия.

С другой стороны, децентрализованный рынок использует технологию blockchain для обеспечения возможности совершения одноранговых транзакций без посредников. Она устраняет необходимость в доверии, поскольку транзакции прозрачны и проверяются всеми участниками блокчейна. Примерами децентрализованных рыночных площадок являются OpenBazaar и Origin Protocol.

Введение в Remix IDE

Remix IDE (интегрированная среда разработки) - это мощный инструмент с открытым исходным кодом, созданный специально для разработки смарт-контрактов Ethereum. Он запускается непосредственно в Вашем веб-браузере, поэтому Вам не нужно ничего устанавливать на свой компьютер.

Вы можете получить доступ к IDE Remix по адресу https://remix.ethereum.org. Когда Вы откроете Remix в браузере, Вы найдете три панели:

  1. Левая панель: Здесь Вы можете создавать, импортировать и управлять своими файлами Solidity. Он также включает различные плагины для компиляции, тестирования, отладки и развертывания Ваших контрактов.

  2. Центральная панель: Это Ваш редактор кода. Здесь Вы будете писать и редактировать свой код Solidity.

  3. Правая панель: Эта панель предоставляет различные инструменты для компиляции Ваших контрактов, их развертывания в сети Ethereum (либо в реальной сети Ethereum, либо в симуляторе JavaScript VM), а также для взаимодействия с развернутыми контрактами.

Ваш первый контракт Solidity: контракт "Item"

В этой части мы напишем наш первый контракт Solidity. Этот контракт будет представлять собой базовый "предмет" на нашем рынке.

Для начала создайте новый файл в Ремиксе, щелкнув по второй сверху иконке на левой панели (иконка файла). На центральной панели появится новый диалог. Введите Item.sol в качестве имени файла и нажмите "OK".

Теперь мы можем приступить к составлению нашего контракта:

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

contract Item {
 // Определите событие, которое будет срабатывать при создании нового элемента
 event NewItem(uint itemId, string itemName, uint itemPrice);

   // Каждый элемент имеет id, имя и цену
 struct ItemStruct {
        string name;
        uint price;
    }

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

 // Функция для создания нового элемента
 function createItem(string memory _name, uint _price) public {
        items.push(ItemStruct(_name, _price));
        emit NewItem(items.length - 1, _name, _price);
    }
}

Давайте объясним различные части этого контракта:

  1. Идентификатор лицензии SPDX: Это стандартный способ выражения лицензии контракта. Строка // SPDX-License-Identifier: MIT указывает на то, что в нашем контракте используется разрешительная лицензия MIT.

  2. Директива Pragma: pragma solidity ^0.8.6; указывает, что контракт написан на Solidity версии 0.8.6. Символ ^ означает, что он также будет совместим с любыми более новыми версиями, вплоть до версии 0.9.0, но не включая ее.

  3. Определение контракта: contract Item {...} определяет новый контракт под названием Item. Здесь мы записываем переменные состояния и функции контракта.

  4. Определение события: событие NewItem(uint itemId, string itemName, uint itemPrice); определяет событие, которое мы можем испускать всякий раз, когда создается новый элемент. События - это способ, с помощью которого смарт-контракты регистрируют активность, которую могут прослушивать внешние стороны.

  5. Определение структуры: struct ItemStruct {...} определяет новый тип данных ItemStruct, который представляет товар с названием и ценой.

  6. Переменная состояния: ItemStruct[] public items; объявляет переменную состояния items, которая содержит массив ItemStructs. Ключевое слово public автоматически создает функцию getter, которая позволяет любому получить доступ к списку элементов.

  7. Определение функции: function createItem(string memory _name, uint _price) public {...} определяет публичную функцию, которую любой может вызвать для создания нового элемента. Функция принимает название и цену, создает новый ItemStruct, добавляет его в массив items и выдает событие NewItem.
    Чтобы составить этот контракт, перейдите на правую панель и щелкните на третьем значке сверху (логотип Solidity). Здесь Вы можете составить контракт. Нажмите кнопку "Compile", и если ошибок нет, то Ваш контракт будет успешно скомпилирован.

На левой панели может появиться Вопрос:

Вопрос о Swarm или IPFS касается метода, который Remix будет использовать для хранения метаданных Вашего контракта. Давайте рассмотрим их подробнее:

  1. IPFS: InterPlanetary File System (IPFS) - это протокол, предназначенный для создания постоянной и децентрализованной сети Интернет. Это похоже на один рой BitTorrent, обменивающийся объектами в пределах одного Git-репозитория.

  2. Swarm (Рой): Swarm - это платформа распределенного хранения и служба распространения контента, встроенная в стек Ethereum web3. Она позволяет сети равных хранить и распространять данные.
    Когда Вы компилируете контракт, компилятор Solidity генерирует JSON-файл, содержащий, помимо прочей информации, его Application Binary Interface (ABI) и байткод. Это называется метаданными контракта. Хранение этих метаданных в децентрализованной сети хранения обеспечивает их постоянную доступность, и они могут быть полезны для проверки исходного кода контракта.

Однако, в целях обучения и если Вы не планируете проверять контракт на Etherscan или любом другом блокчейн-проводнике, Вы можете выбрать либо Swarm, либо IPFS, либо просто проигнорировать это и перейти к следующим этапам обучения. Помните, что основное внимание на этом этапе уделяется пониманию того, как написать, скомпилировать и развернуть контракт.

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.