Создание смарт-контракта во Free TON (Часть 2)

Создание смарт-контракта во Free TON (Часть 2)

GramKit

В первой части мы рассмотрели, как настроить среду для разработки контрактов, разобрали простейший пример кошелька с заморозкой средств и успешно скомпилировали его. Если вы ещё не ознакомились, то не упускайте возможности это сделать.

Во второй части статьи мы задеплоим (отправим в blockchain) наш смарт-контракт в тестовую сеть (net.ton.dev), и проверим его функциональность с использованием имеющихся инструментов.


Подготовка необходимых утилит

На момент написания данной статьи расширение TONDev для Visual Studio Code не поддерживает подписание и деплой контрактов, поэтому мы воспользуемся консольной утилитой tondev. Для ее установки и использования нам потребуется NodeJS версии не ниже 10, который доступен для установки на официальном сайте https://nodejs.org/en/download/

Процесс установки выходит за рамки данной статьи, поэтому продолжаем дальше, полагая, что этот шаг уже завершён.


Переходим к установке утилиты TONDev, сделать это можно с помощью командной строки:

npm install -g tondev

Теперь все необходимые для деплоя контракта ресурсы установлены, и мы переходим к следующему шагу


Деплой контракта

Поскольку мы всего лишь хотим протестировать наш контракт, то задеплоим его в тестовую сеть (net.ton.dev). Валютой этой сети являются рубины (в отличии от кристаллов в основной сети), и их можно получить просто запросив у соответствующего контракта, удобнее всего это сделать с помощью TON Surf. Подробнее о том, как войти в режим разработчика и установить TON Surf вы можете узнать в нашем канале.


По умолчанию tondev использует сеть для разработчиков, но на всякий случай убедимся в этом перед деплоем нашего контракта. Используем следующую команду

tondev network list
Результат выполнения команды tondev network list


Если у вас установлена другая сеть по умолчанию, то её можно изменить:

tondev network default dev


Далее генерируем пару ключей для подписания контракта:

tondev signer generate Test

Где Test - любое имя, под которым пара ключей будет сохранена для дальнейшего использования

Посмотреть список всех сгенерированных ключей можно командой:

tondev signer list
Результат выполнения команды tondev signer list


Теперь нам необходимо отправить токены на будущий адрес контракта, поскольку при деплое с этого адреса будет списана некоторая сумма. Для начала узнаем адрес контракта, он вычисляется локально из скомпилированного .tvc файла и вновь сгенерированного публичного ключа. Сделать это можно с помощью команды:

tondev contract info Contract.abi.json -s Test
Результат выполнения команды tondev contract info Contract.abi.json -s Test

Обратите внимание на параметр -s, который указывает, какую сгенерированную пару ключей стоит использовать для подписания при дальнейшем взаимодействии с контрактом. В нашем случае это Test. Каждая последующая команда будет включать этот параметр.


Отправляем несколько токенов (допустим, 10) на адрес, полученный на предыдущем шаге. Будьте бдительны, отправляя средства, убедитесь в правильности написания адреса, а также убедитесь, что вы отправляете средства в тестовой сети. Процесс отправки необратим!

После того, как мы отправили токены на адрес, и транзакция достигла адресата (практически мгновенно, спасибо Free TON 😏), остаётся только задеплоить наш контракт:

tondev contract deploy Contract.abi.json -i date:1621620000 -s Test


Обратите внимание на параметр -i, он отвечает за данные, которые будут переданы в конструктор (метод, который будет вызван при деплое контракта в сеть). В нашем случае он принимает единственный параметр – дата разморозки средств в формате UNIX-timestamp


Результат выполнения команды tondev contract deploy Contract.abi.json -i date:1621620000 -s Test


Мы успешно задеплоили наш контракт и теперь повторно запросим информацию по нему: 

tondev contract info Contract.abi.json -s Test


Результат выполнения команды tondev contract info Contract.abi.json -s Test


Теперь мы видим, что аккаунт контракта активен и готов к использованию. Далее попытаемся вызвать функцию контракта для перевода средств на адрес. Для этого утилита tondev предоставляет удобный интерактивный интерфейс, чем мы и воспользуемся:

tondev contract run Contract.abi.json -s Test

Первый вызов функции контракта ожидаемо завершается с ошибкой, поскольку время разморозки средств еще не пришло (обратите внимание, что сумма для перевода указывается в нанотокенах, то есть число умноженное на 10 в 9 степени):


Результат первого выполнения команды tondev contract run Contract.abi.json -s Test


Ожидаем наступления времени разморозки и повторяем попытку:

tondev contract run Contract.abi.json -s Test


Результат повторного выполнения команды tondev contract run Contract.abi.json -s Test


Теперь, как мы видим, транзакция была успешно отправлена, а значит наш контракт прекрасно справился с поставленной задачей.


Заключение

Писать смарт-контракты сейчас уже не так сложно, как кажется на первый взгляд. Пробуйте, учитесь на ошибках, и пусть удача всегда будет на вашей стороне. Скоро мы продолжим цикл статей о смарт-контрактах, подписывайтесь на наш канал и следите за обновлениями!


Спасибо за внимание!


Report Page