Перейти к основному содержанию

Развертывание вашего первого смарт-контракта

Умные контракты
Remix
Solidity
развертывание
Beginner
jdourlens
3 апреля 2020 г.
3 минута прочтения

Полагаю, вы так же, как и мы, с нетерпением ждете возможности развернуть и повзаимодействовать со своим первым смарт-контрактом в блокчейне Ethereum.

Не волнуйтесь, так как это наш первый смарт-контракт, мы развернем его в локальной тестовой сети, поэтому его развертывание и эксперименты с ним будут для вас совершенно бесплатными.

Написание нашего контракта

Первым делом посетите Remixopens in a new tab и создайте новый файл. В левой верхней части интерфейса Remix добавьте новый файл и введите желаемое имя файла.

Добавление нового файла в интерфейсе Remix

В новый файл мы вставим следующий код.

1// SPDX-License-Identifier: MIT
2pragma solidity >=0.5.17;
3
4contract Counter {
5
6 // Открытая переменная типа unsigned int для хранения количества подсчетов
7 uint256 public count = 0;
8
9 // Функция, которая увеличивает наш счетчик
10 function increment() public {
11 count += 1;
12 }
13
14 // Необязательный геттер для получения значения счетчика
15 function getCount() public view returns (uint256) {
16 return count;
17 }
18
19}
Показать все

Если вы знакомы с программированием, вы легко догадаетесь, что делает эта программа. Вот построчное объяснение:

  • Строка 4: мы определяем контракт с именем Counter.
  • Строка 7: наш контракт хранит одно беззнаковое целое число с именем count, начальное значение которого равно 0.
  • Строка 10: первая функция изменит состояние контракта и увеличит (increment()) значение нашей переменной count.
  • Строка 15: вторая функция — это просто геттер, позволяющий считывать значение переменной count извне смарт-контракта. Обратите внимание, что, поскольку мы определили нашу переменную count как public, в этом нет необходимости, но это показано в качестве примера.

Это все, что касается нашего первого простого смарт-контракта. Как вы, возможно, знаете, он похож на класс из языков ООП (объектно-ориентированного программирования), таких как Java или C++. Теперь пришло время поэкспериментировать с нашим контрактом.

Развертывание нашего контракта

Поскольку мы написали наш самый первый смарт-контракт, теперь мы развернем его в блокчейне, чтобы поэкспериментировать с ним.

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

Сначала мы скомпилируем контракт, нажав на значок компиляции в левой части:

Значок компиляции на панели инструментов Remix

Затем нажмите кнопку компиляции:

Кнопка компиляции в компиляторе Solidity в Remix

Вы можете выбрать опцию «Auto compile», чтобы контракт всегда компилировался при сохранении содержимого в текстовом редакторе.

Затем перейдите на экран «deploy and run transactions»:

Значок развертывания на панели инструментов Remix

Когда вы окажетесь на экране «deploy and run transactions», дважды проверьте, что отображается имя вашего контракта, и нажмите «Deploy». Как видно в верхней части страницы, текущая среда — «JavaScript VM». Это означает, что мы будем развертывать наш смарт-контракт и взаимодействовать с ним в локальном тестовом блокчейне, чтобы иметь возможность проводить тестирование быстрее и без каких-либо комиссий.

Кнопка развертывания в компиляторе Solidity в Remix

После нажатия кнопки «Deploy» вы увидите свой контракт в нижней части экрана. Нажмите на стрелку слева, чтобы развернуть его и увидеть содержимое нашего контракта. Это наша переменная counter, наша функция increment() и геттер getCounter().

Если вы нажмете на кнопку count или getCount, она получит и отобразит содержимое переменной count контракта. Поскольку мы еще не вызывали функцию increment, она должна отобразить 0.

Кнопка функции в компиляторе Solidity в Remix

Теперь давайте вызовем функцию increment, нажав на соответствующую кнопку. В нижней части окна вы увидите журналы выполненных транзакций. Вы увидите, что журналы отличаются, когда вы нажимаете кнопку для получения данных, а не кнопку increment. Это потому, что чтение данных из блокчейна не требует каких-либо транзакций (записи) или комиссий. Потому что только изменение состояния блокчейна требует выполнения транзакции:

Журнал транзакций

После нажатия кнопки increment, которая создаст транзакцию для вызова нашей функции increment(), если мы снова нажмем на кнопки count или getCount, мы прочтем новое обновленное состояние нашего смарт-контракта, в котором переменная count будет больше 0.

Новое обновленное состояние смарт-контракта

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

Последнее обновление страницы: 26 апреля 2024 г.

Было ли это руководство полезным?