⛓️ Пошаговая инструкция: создаем свой токен на базе блокчейна TRON

Наверное, многие из вас слышали о таких вещах как USDT, BUSD, WETH. Возможно, кто-то из вас даже покупал эти монеты на криптобиржах. Сегодня мы предлагаем всем желающим окунуться в мир блокчейна и разработки криптоактивов: мы сделаем свою монету, которую можно будет добавить к себе в криптовалютный кошелек.

Начнем издалека... Это необходимо чтобы все понимали, о чем будет идти речь. Рекомендуем читать по порядку иначе, вы можете потерять смысл происходящего.

Что такое блокчейн

Блокчейн – это цепочка блоков. В каждом блоке хранится какая-то информация. Каждый блок – это некое хранилище, которое может содержать в себе какое-то ограниченное количество информации: обычно это транзакции (история операций криптовалюты).

Также в каждом блоке, кроме транзакций криптовалюты, может быть еще дополнительная информация: время создания блока, идентификатор майнера (кто создал блок) и транзакции токенов.

Токены (монеты) есть не во всех блокчейнах, например, в Bitcoin и Litecoin нельзя создавать свои токены. Токены можно создавать только в тех блокчейнах, которые реализовали идею смарт-контрактов (об этом через минуту). Например, Ethereum и TRON.

Что такое криптовалюта, майнинг и стейкинг

Криптовалюта – это внутренняя валюта, некое вознаграждение определенного человека за полезные действия в рамках блокчейна.

Например, когда майнер «майнит» внутри какого-то блокчейна, допустим, в Bitcoin, он просто создает новые блоки в цепочке блоков (блокчейне). То есть, он расширяет сеть. За это он получает вознаграждение в виде криптовалюты. До недавнего времени в Ethereum тоже была такая система, но сейчас криптовалюту дают за другие действия, и майнинг там ушел в небытие. В TRON криптовалюту тоже не майнят, а выдают за стейкинг.

Суть стейкинга в том, чтобы блокировать определенную часть монет в кошельке для получения права напрямую, или через посредников, участвовать в поддержке работоспособности блокчейн платформы. Грубо говоря, вы даете в пользование свою криптовалюту на время, а вам за это вернут больше, чем взяли.

И да, для тех, кто еще не понял, у каждой криптовалюты своя блокчейн-сеть и своя валюта. У Bitcoin – BTC, Ethereum – ETH, TRON – TRX.

Что такое смарт-контракт

Все очень просто. Смарт-контракт – это обычный алгоритм, код. Его часто называют «цифровой договор», поэтому многих людей это вводит в огромное заблуждение.

Термин смарт-контракт был придуман еще в конце 20 века программистом Ником Сабо. В качестве примера можно рассмотреть торговые автоматы. Вы купили кофе в автомате, машина отдала напиток после того, как в нее попали монеты. Под «капотом» у машины есть какой-то код, который проверяет сумму, валидность монет и после ряда успешных проверок отдает напиток. Это и есть смарт-контракт, тот самый «цифровой договор», который обеспечивает выполнение обязательств между человеком и машиной.

Смарт-контракты впервые были добавлены Виталием Бутыриным в блокчейн Ethereum. После этого некоторые современные блокчейны последовали его примеру, например: TRON, Smart Chain, Solana.

Особенность написания смарт-контрактов в том, что сами «цифровые договоры» программируются на языке программирования Solidity. После публикации смарт-контракта изменить его исходный код нельзя. Поэтому его нужно проверять очень дотошно, иначе его могут взломать. Если вносятся изменения в смарт-контракт, то нужно заново публиковать «договор» и заново просить людей «вписаться» в него. За публикацию смарт-контракта блокчейн берет комиссию в криптовалюте. Смарт-контракт публикуется только в одной сети, хотя ничто не мешает вам опубликовать его копию и в другой.

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»

Примеры смарт-контрактов

Как первый пример смарт-контракта можно рассмотреть популярный токен USDT. Да, для многих будет сейчас шок, но USDT – это не криптовалюта, а именно токен, созданный на базе блокчейна TRON. Если упрощенно: смысл этого смарт-контракта в том, чтобы выпустить N-ое количество монет после публикации смарт-контракта в блокчейне (мы чуть позже чем-то подобным займемся). А дальше эти монеты попадают на биржи и в кошельки людей, а как… это уже тема для другой статьи.

Если вы пользовались Binance и пытались с него вывести USDT на свой личный кошелек, то, возможно, обратили внимание, что нас просят выбрать сеть для вывода:

Пример выбора сети при переводе средств в другой кошелёк.

Если на данный момент ничего не изменилось, то мы можем выбрать либо сеть Ethereum, либо TRON. А все потому, что копии этого смарт-контракта были опубликованы в обеих сетях. Вот ссылка на смарт-контракт USDT для Ethereum, а вот для TRON. Сайт etherscan и tronscan позволяют просмотреть существующий смарт-контракт и информацию о нем.

Все это позволяет бирже легко конвертировать Tether (USDT) внутри кошелька с одной сети на другую без лишних проблем. В итоге, пользователю с этим получается очень удобно работать.

Ну и если развивать эту тему дальше, можно сказать, что BUSD, Dogecoin, WETH – это все тоже не криптовалюта, это все смарт-контракты. Вообще, половина монет на криптобиржах – это все токены, порожденные смарт-контрактами.

Как второй пример, можно рассмотреть проекты, которые чеканят NFT. Например, тут можно создать свой NFT (в правом верхнем углу, если авторизовались).

Пример маркетплейса с возможностью создать свой NFT токен.
NFT – это единичный токен, который используют для подтверждения правом владения на какую-то цифровую вещь: картинку, звук и даже код. NFT создают с помощью смарт-контрактов. И да, не во всех блокчейнах, где есть смарт-контракты есть поддержка NFT… так бывает.

Работает все очень просто: вы заходите на сайт, связываете свой кошек и сайт, запускаете смарт-контракт, который создает вам NFT. И естественно, он предварительно забирает у вас за это какую-то комиссию в криптовалюте.

Стоп, стоп, стоп. Какой сайт? Какой запуск смарт-контракта через сайт? Это как? Мы надеемся, что в голове у вас появились именно такие вопросы. И это нормально. Чтобы это понять, пора переходить к Solidity.

Что такое Solidity

Зарываемся еще глубже. Надеемся, пока вам нравится получать новые знания.

Solidity – это полноценный язык программирования, с помощью которого пишется смарт-контракт. Смарт-контракты пишутся в объектно-ориентированном стиле, на классах.

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

Принцип работы смарт-контракта легко представить бэкенд-разработчику. Загруженный смарт-контракт в блокчейн – это целое миниприложение, это бекенд, живущий своей жизнью. При написании своего кода на Solidity (уже скоро будем это делать), никто программисту не запрещает объявлять свои функции и переменные. А потом их можно вызывать даже из своего сайта. Посмотрите на скриншот ниже:

Пример связи смарт-контракта на Solidity и Node.js на сервере.

Программист объявил функцию name() в смарт-контракте. Функция возвращает имя контракта, которое он указал в другом месте. Далее, этот код был загружен в блокчейн. А на картинке справа, с помощью Node.js и специальной библиотеки от разработчиков блокчейна TRON – tronweb, программист соединяется с блокчейном и вызывает функцию name() из смарт-контракта. И да, он получает результат в свой Node.js код прямо из блокчейна. К слову, есть версия и для Python, правда, написанная энтузиастом.

Для справки
Многие блокчейны имеют подобные библиотеки, в основном на Node.js, например, у Ethereum есть библиотека web3. Да, можно найти версии web3 для PHP и Python тоже, просто они появились заметно позже и написаны кем-то на чистом энтузиазме.

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

Никто не мешает сделать сайт, куда пользователь будет загружать свою картинку. Картинка будет превращаться в base64-строку. Этот код мы будем (условно) отправлять в смарт-контракт в блокчейне, передавая аргументом код картинки в base64. В итоге получаем NFT. Монетизацию прикручивайте по желанию – никто вам не мешает в процессе получить за это свою комиссию в криптовалюте. Прямо в Solidity есть нужные для этого методы, просто надо их вызвать в правильном порядке.

Создание своего смарт-контракта и выпуск токена

Наконец-то переходим к самому вкусному. Но перед началом нам все равно нужно кое-что сделать.

Подготовка

Вам нужен браузер, который поддерживает плагины Google Chrome. Еще потребуется обычный офисный компьютер, любой удобный редактор кода и криптокошелек. Хотелось бы сказать любой… но нет, нам потребуется особенный, который поддерживает тестовую сеть – Tronlink. Скачайте его, он нужен лишь для разработки.

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

Создаем кошелек и получаем криптовалюту

В скачанном и установленном Tronlink нужно создать новый кошелек. Надеемся, тут вы справитесь сами. Как все будет готово, переключите кошелек на работу в тестовой сети Nile:

После этого зайдите на этот сайт и попросите немного тестовой криптовалюты:

Тут хотят, чтобы вы ввели адрес кошелька, его можно скопировать из TronLink (рядом с балансом). Помните, мы находимся в тестовой сети, поэтому все так просто. Криптовалюта тут почти ничего не стоит.

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

Стандарты TRC20, TRC721

Через пару мгновений мы зайдем на GitHub и скачаем оттуда «базу» для создания токена. Сразу хотелось бы сказать, что мы будем создавать с вами токен на базе стандарта TRC20. Кратко хотелось бы ввести вас в курс дела, чтобы вы понимали разницу между стандартами.

TRC20 – это чеканка монет на базе самописного смарт-контракта. Что мы начали с вами делать.

TRC721 – это стандарт для создания своего NFT. То есть, если хотите сделать смарт-контракт, который создает NFT, то вам сюда.

Программируем смарт-контракт

Скачиваем базу для создания токена отсюда.

Скачиваем базу смарт-контракта стандарта TRC20.

Открываем проект в любимом редакторе кода и идем в файл Token.sol. Тут меняем стандартные значения на свои:

  1. Имя токена;
  2. Сокращение, например: BTC – Bitcoin, LTC – Litecoin, TRX – TRON;
  3. Максимальное число после точки с запятой. В нашем случае – 4. Это значит нашу монету можно будет дробить до 0.0001.
  4. Общее количество токенов, которое мы выпустим.

Публикуем смарт-контракт

TRON публикует смарт-контракты через сайт – это его основное отличие от Ethereum. В Ethereum публикация происходит через командную строку. Предварительно вам нужно синхронизировать свой компьютер с блокчейном, скачав килотонны данных о транзакциях: а это, на момент написания статьи, 520 ГБ.

По этой ссылке можно опубликовать свой смарт-контракт, но в боевую сеть. Вам это пока не надо. Поэтому идем сюда, тут располагается тестовая сеть Nile.

Нам надо авторизоваться, а потом загрузить наш код со смарт-контрактом. После нажатия на кнопку Upload Contract File(s), выберите все наши файлы (их 5) и загрузите:

Далее, нажимайте на зеленую кнопку Compile, выбирайте версию Solidity 0.5.10, потом Confirm:

Надо подождать какое-то время.

Если все собралось без ошибок и светится зеленым – можете продолжать. Нажмите Deploy:

У вас должно открыться модальное окно, в котором надо сделать еще некоторые действия:

В выпадающем списке Contract name нужно выбрать главный файл, в нашем случае это Token.sol (тут просто Token). Затем нажмите Confirm.

Через какое-то время вас попросят подтвердить операцию в кошельке, сделайте это. Также с вас возьмут комиссию. На момент написания статьи 4 TRX в тестовой сети.

Когда все будет готово, перейдите в свой профиль:

А там в раздел Record a Token, после этого найдите свой смарт-контракт и нажмите Update Token Information:

У вас откроется страница, где нужно заполнить информацию о токене максимально подробно, иначе у него будет статус Scum и его заблокируют:

На странице можно указать ссылку на Github смарт-контракта, ссылки на сайт и загрузить иконку токена. Когда все сделайте, сохраняйте информацию.

Добавляем токен в кошелек

Теперь вам должны предложить перейти на страницу с выпущенными токенами.

К слову, в кошельке у вас должно появиться уведомление в разделе Asset, рядом с кнопкой плюс. Вы можете нажать туда и добавить свой токен. Если этого не произошло, посмотрите на позапрошлый скриншот и вернитесь на страницу Record a Token. Теперь нажмите на имя токена, и вас перебросит на его страницу со смарт-контрактом.

Тут надо нажать на кнопку, которая автоматически добавит токен в кошелек:

Этой кнопки может не быть, если токен пометили как Scum. Если все получилось, то поздравляем, у вас есть свой токен в кошельке:

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

***

Итог

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

Естественно, вашу монету никто не допустит до криптобиржи, но не потому, что она сделана не так или просто плохая, а потому что любой монете надо пройти процесс листинга на конкретной бирже. А как вы догадались, процесс этот не из бесплатных и очень дорогой. Но если у вас есть деньги, почему бы нет?

Материалы по теме

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

matyushkin
12 мая 2020

Как запустить веб-приложение на Nginx в Docker 🐳👨🏽‍💻

Инструкция по настройке совместной работы веб-приложения и сервера Nginx в ...
Библиотека программиста
19 июня 2018

Что нужно знать, чтобы стать бэкенд-разработчиком в 2018

В этой статье речь пойдёт о том, какими языками и инструментами необходимо ...