Как создать смарт-контракт на TRON
В этой статье я расскажу как создать смарт-контракт в блокчейне TRON без установки полной ноды, используя только браузер и кошелек Tronlink.
Подготовительные работы
Как и у Эфира, в блокчейне Трона помимо главной сети есть своя тестовая сеть под названием Shasta. В ней мы и создадим контракт, так как она абсолютно идентична главной сети. Позже я покажу как создать контракт и в главной сети.
Для начала нужно создать кошелек (адрес) в этой сети и получить на него тестовые TRX.
- Перейдите на https://shasta.tronscan.org , в верхнем правом углу выберите «Войти в систему -> Импортировать кошелек» и в появившемся окне выберите «Создать кошелек». Пройдите этапы создания кошелька и запишите получившийся приватный ключ и сам адрес, они будут нужны для импорта в Tronlink.
- Создание смарт-контактов не бесплатно и теперь нужно получить 10 000 тестовых TRX для наших целей. Перейдите по адресу https://www.trongrid.io/shasta/ , в поле вставьте свой свежесозданный tron-адрес и нажмите Submit, после чего ваш адрес будет пополнен этими тестовыми trx-сами.
- Теперь настала пора установить кошелек TronLink, если он у вас еще не установлен и импортировать приватный ключ, попутно придумав название для этого адреса. Кошелек умеет работать как с главной сетью TRON-a, так и с тестовой Shasto-ой. Подробно здесь писать об этом кошельке не буду, так как в прошлом году написал целую статью про Tronlink.
Теперь в настройках самого кошелька нужно переключиться с главной сети на Shasta, после чего будет корректно отображаться баланс.
Код смарт-контракта
Это наипростейший смарт-контракт, в который можно записать какую-нибудь фразу (сохранить в блокчейне), а потом прочитать ее:
pragma solidity ^0.4.25; contract HelloWorld { //объявляем переменную message типа Текст string message; // Функция записи в переменную message function postMessage(string value) public { message = value; } // функция чтения из переменной message function getMessage() public view returns (string){ return message; } }
Код у нас есть, теперь его нужна куда-то засунуть, чтобы скомпилировать и задеплоить. Те, кто делал контракты в Ethereum знает, что для него есть редактор http://remix.ethereum.org/ . Для Трона тоже есть подобный и располагается он по адресу https://tronsmartcontract.space .
Перейдите на этот сайт и нажмите Compose:
Откроется редактор с уже имеющимся каким-то кодом, который нам не нужен. Поэтому удаляем его и вставляем наш вышеописанный, чтобы получилось так:
Теперь жмите Compile для компиляции. В появившемся окне Compile Params ничего не меняйте и просто нажмите Compile now:
После некоторых раздумий контракт скомпилируется и выдаст отчет внизу страницы с возможностью скопировать ABI и Bytecode:
Теперь жмите кнопку Deploy it!. В появившемся окне ничего не меняйте и нажмите Deploy.
После этого появится окно запроса на разрешение проведения транзакции от кошелька TronLink (так как деплой стоит немного trx-ов):
Жмите Accept.
Итак, теперь наш смарт-контракт успешно задеплоен. Можно посмотреть подробности, которые отобразились внизу страницы редактора:
В переводе звучит примерно так: контракт HelloWorld успешно задеплоен, стоимость деплоя составила 1,4 TRX. Хэш транзакции 03b5fe092decc4dabe98bb8b1da6dfebefce5cb4f343c4609bc45eb620fe8f22 и адрес самого только что созданного контракта TFBBGAzwhkQ4BTihBYQ34SUTQ7d1sVVFP9
У вас, соответственно, будут другие хэш и адрес контракта, поэтому запишите адрес контракта, сейчас мы будем с ним взаимодействовать.
Взаимодействуем с контрактом
Взаимодействовать с задеплоенным смарт-контрактом можно разными способами: можно сделать html-страничку с соответствующим javascript-кодом, можно делать это с помощью Node.js и других языков программирования в зависимости от потребностей. Благо наш редактор позволяет делать это прямо в нем.
Перейдите на главную страницу редактора, нажмите Interact, вставьте в поле адрес своего контакта и нажмите Show Contract:
Редактор выдаст предупреждение что контракт не верифицирован:
Жмите Close, так как верификация сейчас не нужна.
Теперь вспомним, что в нашем контракте всего 2 функции: одна читает данные из переменной, другая записывает. Прежде чем читать нужно что-то записать, поэтому нажмите вкладку Write, в поле «value — string» напишите что-нибудь (в моем случае фраза «Это сообщение номер 1»), а потом нажмите send:
Помним, что запись в блокчейн платна и стоит немного trx-ов, поэтому появится окно кошелька Tronlink c просьбой подтвердить транзакцию. Жмите Accept.
(Стоимость записи в данном случае составляет десятые доли от 1 trx).
Теперь давайте проверим, действительно ли фраза записалась в блокчейн. Для этого нужно прочитать значение переменной message:
нажмите вкладку Read, потом кнопку call под надписью Function getMessage:
Результат виден на скриншоте.
Итого
В этой статье я показал как задеплоить примитивный смарт-контракт. Его, конечно-же, можно усложнить, добавить каких-либо функций и так далее, можно даже сделать токен стандарта TRC20 или TRC721, в следствие чего возрастет и стоимость деплоя.
Контракт был задеплоен в тестовой сети. Чтобы задеплоить в реальной нужно сделать только одно: переключиться в настройках кошелька Tronlink с тестовой сети на реальную (Main) и (на всякий случай) перезагрузить редактор в браузере. А дальше делать все тоже самое, что описано выше. Соответственно, расплачиваться за создание и взаимодействие со смарт-контрактом вы уже будете не тестовыми, а реальными TRX-ами, которые должны быть на счету вашего кошелька.
Так я не понял: в Tron для запуска смартконтрактов достаточно на счету определённого количества TRX, чтоб было определённое количество ресурсов, или они расходуются при каждом обращении? Благодарю.
есть аналоги сайту tronsmartcontract.space? он нерабочий уже
Смарт контракт какой у Трон,чтобы монетку Трон добавить в кошелёк,не могу найти его самрт контракт