Развертывание вашего первого смарт-контракта
Полагаю, вы так же, как и мы, с нетерпением ждете возможности развернуть и повзаимодействовать со своим первым смарт-контрактом в блокчейне Ethereum.
Не волнуйтесь, так как это наш первый смарт-контракт, мы развернем его в локальной тестовой сети, поэтому его развертывание и эксперименты с ним будут для вас совершенно бесплатными.
Написание нашего контракта
Первым делом посетите Remixopens in a new tab и создайте новый файл. В левой верхней части интерфейса Remix добавьте новый файл и введите желаемое имя файла.
В новый файл мы вставим следующий код.
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;34contract Counter {56 // Открытая переменная типа unsigned int для хранения количества подсчетов7 uint256 public count = 0;89 // Функция, которая увеличивает наш счетчик10 function increment() public {11 count += 1;12 }1314 // Необязательный геттер для получения значения счетчика15 function getCount() public view returns (uint256) {16 return count;17 }1819}Показать всеЕсли вы знакомы с программированием, вы легко догадаетесь, что делает эта программа. Вот построчное объяснение:
- Строка 4: мы определяем контракт с именем
Counter. - Строка 7: наш контракт хранит одно беззнаковое целое число с именем
count, начальное значение которого равно 0. - Строка 10: первая функция изменит состояние контракта и увеличит (
increment()) значение нашей переменнойcount. - Строка 15: вторая функция — это просто геттер, позволяющий считывать значение переменной
countизвне смарт-контракта. Обратите внимание, что, поскольку мы определили нашу переменнуюcountкак public, в этом нет необходимости, но это показано в качестве примера.
Это все, что касается нашего первого простого смарт-контракта. Как вы, возможно, знаете, он похож на класс из языков ООП (объектно-ориентированного программирования), таких как Java или C++. Теперь пришло время поэкспериментировать с нашим контрактом.
Развертывание нашего контракта
Поскольку мы написали наш самый первый смарт-контракт, теперь мы развернем его в блокчейне, чтобы поэкспериментировать с ним.
Развертывание смарт-контракта в блокчейне — это, по сути, просто отправка транзакции, содержащей код скомпилированного смарт-контракта, без указания получателей.
Сначала мы скомпилируем контракт, нажав на значок компиляции в левой части:
Затем нажмите кнопку компиляции:
Вы можете выбрать опцию «Auto compile», чтобы контракт всегда компилировался при сохранении содержимого в текстовом редакторе.
Затем перейдите на экран «deploy and run transactions»:
Когда вы окажетесь на экране «deploy and run transactions», дважды проверьте, что отображается имя вашего контракта, и нажмите «Deploy». Как видно в верхней части страницы, текущая среда — «JavaScript VM». Это означает, что мы будем развертывать наш смарт-контракт и взаимодействовать с ним в локальном тестовом блокчейне, чтобы иметь возможность проводить тестирование быстрее и без каких-либо комиссий.
После нажатия кнопки «Deploy» вы увидите свой контракт в нижней части экрана. Нажмите на стрелку слева, чтобы развернуть его и увидеть содержимое нашего контракта. Это наша переменная counter, наша функция increment() и геттер getCounter().
Если вы нажмете на кнопку count или getCount, она получит и отобразит содержимое переменной count контракта. Поскольку мы еще не вызывали функцию increment, она должна отобразить 0.
Теперь давайте вызовем функцию increment, нажав на соответствующую кнопку. В нижней части окна вы увидите журналы выполненных транзакций. Вы увидите, что журналы отличаются, когда вы нажимаете кнопку для получения данных, а не кнопку increment. Это потому, что чтение данных из блокчейна не требует каких-либо транзакций (записи) или комиссий. Потому что только изменение состояния блокчейна требует выполнения транзакции:
После нажатия кнопки increment, которая создаст транзакцию для вызова нашей функции increment(), если мы снова нажмем на кнопки count или getCount, мы прочтем новое обновленное состояние нашего смарт-контракта, в котором переменная count будет больше 0.
В следующем руководстве мы рассмотрим, как добавлять события в смарт-контракты. Ведение журнала событий — это удобный способ отладить ваш смарт-контракт и понять, что происходит при вызове функции.
Последнее обновление страницы: 26 апреля 2024 г.







