[Solidity, Криптовалюты] Hello Word смарт-контракт для TON (FreeTON)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Одна из интересных тем, о которой мне хотелось бы сегодня рассказать - это программирование смарт-контрактов. За язык на котором мы будем программировать свой смарт возьмем Solidity, а в качестве платформы будем использовать FreeTON
В технологию blockchain сегодня не будем погружаться, ибо про него уже много статей. Поэтому рассмотрим простой смарт-контракт в следующем порядке:
- С чего начать;
- "Hello World";
- Особенности TON смарт-контракта Hello World;
- Ссылки на дополнительную информацию.
Быстрый стартДля работы нам понадобиться VSCode и плагин TONDev, установив его выполним следующее:В области проводника VSCode кликнем правой кнопкой мыши, и в контекстном меню снизу выберем Create Solidity Contract:
Выбор пункта Create Solidity Contract в VSCodeПоявится сгенерированный плагином файл Contract.sol:
Созданный смарт-контракт по умолчанию в VSCodeТеперь мы его можем скомпилировать, кликнув по нему и в контекстном меню выбрав Compile Solidity Contract:
Компиляция смарт-контракта в VSCodeТаким образом мы можем сразу же получить готовый, но не особо полезный смарт-контракт. В рабочую директорию проекта добавится скомпилированный .tvc и .abi.json.
Подсветка ошибок связана с особенностями, о которых поговорим далее, а пока давайте напишем свой собственный HelloWorld.sol.Hello World!В самом простом виде наш "Hello World" будет выглядеть так:
pragma ton-solidity >= 0.35.0;
pragma AbiHeader expire;
contract HelloWorld {
function HelloWorld() public pure returns (string) {
tvm.accept();
return 'Hello World!';
}
}
Или можно написать внутри нашей функции вот так tvm.log("Hello World!"); это инструкция для виртуальной машины TON, поэтому давайте поговорим про TON Solidity Compiller API.Особенности TON смарт-контракта "Hello World"Выполнение функции смарт-контракта происходит так, что выполнение каждой команды байт-кода, расходует определенное количество "газа": такая система нужна для предотвращения массовых вызовов функций смарт-контрактов из других аккаунтов, направленных специально на перегрузку и отказ в обслуживании системы (в обиходе DDoS). Таким образом функций смарт-контрактов выполняются за счет вызывающего аккаунта, для этого ему необходимо передать определенное количество средств для оплаты вызова функции (зависит от тела функции), в противном случае (когда недостаточно средств) вместо выполнения функции вызывающий аккаунт получит отчет об ошибке.Как видно из примера нашего "Hello World", первой инструкцией мы выставляем tvm.accept(); это и есть обращение к API виртуальной машины TON. Таким образом мы сообщаем смарт контракту, что необходимо выполнить данную функцию даже в том случае если аккаунт не профинансировал требуемый вызов функции, а функция будет вызвана за счет средств на балансе аккаунта смарт-контракта (как и пользовательские аккаунты, у смарт-контрактов имеется похожий счет).Так как "газ" для смарт-контрактов служит средством защиты от спам-атак, он требует финансовых затрат, выраженных в криптовалюте blockchain-сети. Cледовательно, вызов tvm.accept(); расходующий средства со счета смарт-контракта не очень-то и выгоден с точки зрения предоставления услуг (в большинстве случаев). Чтобы сбалансировать расходы и определить есть ли необходимость выполнять смарт контракт за счет баланса аккаунта самого смарт-контракта или же возложить расходы на вызывающий аккаунт, можно воспользоваться инструкцией require().Инструкция require() (требование) позволяет задать условия, только при выполнении которого начнется выполнение функции смарт-контракта. Например, мы можем перед вызовом tvm.accept(); добавить требование require(msg.pubkey() == tvm.pubkey()); которое не допустит вызов функции смарт-контракта, если публичный ключ отправителя смарт-контракта не соответствует ключу аккаунта самого смарт-контракта. Пока я думаю для первой стати хватит. Давайте сделаем так. Если читателям данная тема будет интересна я буду писать тут статьи про смарт-контракты и взаимодействие с ними из JavaScript, а так же отвечать на вопросы. Буду рад любым замечаниям, поправкам и напутствиям. А пока расскажу, где можно найти информацию по данной теме самостоятельно.СсылкиДля получения основополагающей информации о проекте TON можно зайти на официальный сайт проекта Павла и Николая Дуровых. К сожалению из-за сложностей с регуляторами в США проект, как часть Telegram, закрыт. Проект который продолжил путь стал независимым сообществом. А тут находится документация для разработчиков. Ну и github.
===========
Источник:
habr.com
===========
Похожие новости:
- [Законодательство в IT, Криптовалюты] Джона Макафи обвинили в отмывании денег с помощью криптовалют
- [Программирование, Бизнес-модели, Криптовалюты] Продажа твиттов без NFT и СМС
- [Читальный зал, Финансы в IT, Криптовалюты] Превращение искусства в виртуальный актив: зачем сожгли картину Бэнкси?
- [Обработка изображений, Дизайн, Финансы в IT, Криптовалюты] Ответы на часто задаваемые вопросы о NFT (перевод)
- [Распределённые системы, Финансы в IT, Криптовалюты] Налогообложение майнинга и пути его развития
- [Распределённые системы, Финансы в IT, Криптовалюты] Криптовалюта как инструмент налогового администрирования
- [Финансы в IT, Криптовалюты] Биткоин — принципиально новая монетарная система
- [Законодательство в IT, Энергия и элементы питания, Финансы в IT, Криптовалюты] Внутренняя Монголия запретила майнинг
- [Веб-аналитика, Интернет-маркетинг, Криптовалюты] 75% торговых объемов приходятся на долю всего 3 криптобирж: свежее исследование от BDCenter Digital
- [Распределённые системы, Финансы в IT, Криптовалюты] Применимость блокчейн-технологий в системе организации денежного обращения
Теги для поиска: #_solidity, #_kriptovaljuty (Криптовалюты), #_solidity, #_smartcontract, #_smartkontrakty (смарт-контракты), #_helloworld, #_solidity, #_kriptovaljuty (
Криптовалюты
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 02:40
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Одна из интересных тем, о которой мне хотелось бы сегодня рассказать - это программирование смарт-контрактов. За язык на котором мы будем программировать свой смарт возьмем Solidity, а в качестве платформы будем использовать FreeTON В технологию blockchain сегодня не будем погружаться, ибо про него уже много статей. Поэтому рассмотрим простой смарт-контракт в следующем порядке:
Выбор пункта Create Solidity Contract в VSCodeПоявится сгенерированный плагином файл Contract.sol: Созданный смарт-контракт по умолчанию в VSCodeТеперь мы его можем скомпилировать, кликнув по нему и в контекстном меню выбрав Compile Solidity Contract: Компиляция смарт-контракта в VSCodeТаким образом мы можем сразу же получить готовый, но не особо полезный смарт-контракт. В рабочую директорию проекта добавится скомпилированный .tvc и .abi.json. Подсветка ошибок связана с особенностями, о которых поговорим далее, а пока давайте напишем свой собственный HelloWorld.sol.Hello World!В самом простом виде наш "Hello World" будет выглядеть так: pragma ton-solidity >= 0.35.0;
pragma AbiHeader expire; contract HelloWorld { function HelloWorld() public pure returns (string) { tvm.accept(); return 'Hello World!'; } } =========== Источник: habr.com =========== Похожие новости:
Криптовалюты ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 02:40
Часовой пояс: UTC + 5