TON Tokemons Star Ship NFT?

Description
Advertising
We recommend to visit

Официальный новостной канал криптобиржи OKX | www.okx.com на русском языке.

💬 Комьюнити: t.me/okx_russian

👨‍💻 Поддержка: [email protected]

АДМИН: @DaniiOKX
Маркетинг: @CoffeeTrends

Last updated 4 days, 10 hours ago

Здесь простым языком про TON, DFC и крипту.

Принимаем автоматически.
Ссылка для друзей: https://t.me/+-EOfWx2pRKhmNGE6
Связь: @deftalk_bot

Last updated 2 months, 1 week ago

Реклама: @kingygmads / Платформа: ton.org.in
Чат: t.me/+QzoGJS7ktps1NOzh
Приватный канал: t.me/investkingyru/417
Помощь: @tonorgin_bot
EN: @investkingyru_en

Last updated 4 months, 1 week ago

1 year, 11 months ago

Тема 8. Встроенные конструкции и примитивыОпишем некоторые языковые конструкции FunC, которые используются нечасто, однако применяются для решения самых разных задач.

  1. Исключения
    Обработка исключений – механизм языков программирования, предназначенный для описания реакции программы на возможные ошибки (исключения) и проблемы, которые могут возникнуть при выполнении программы и приводят к невозможности дальнейшей отработки программой её базового алгоритма. Исключения в FunC могут быть описаны условно или безусловно. Первым аргументом является код ошибки, вторым – условие.

Используются следующие конструкции:
throw_if;
throw_unless;
throw.

В настоящее время FunC не поддерживает перехват (catch) исключений, если обработчик исключений не установлен вместе с низкоуровневыми примитивами TVM.

  1. Псевдонимы для логических типов
    Для значения -1 (истина) применяется псевдоним true, для значения 0 (ложь) – псевдоним false.

  2. Переменная дампа
    Переменная может быть сброшена функцией ~dump в журнал отладки.

  3. Другие примитивы (встроенные языковые конструкции)
    Выражение null? проверяет, записано ли в переменную какое-либо значение.
    Функция touch используется для перемещения переменной в верхнюю часть стека.
    Конструкция at получает значение компоненты кортежа в указанной позиции.

С документацией можно ознакомиться на официальном сайте TON.

1 year, 11 months ago

Тема 7. Директивы препроцессораПрепроцессор – это специальная программа, подготавливающая исполняемый код на языке C/C++ (или C-подобных языках, например, FunC) к компиляции. Директивой (командной строкой) препроцессора называется строка в исходном коде, имеющая следующий формат:
#ключевое_слово параметрыДирективы могут использоваться только на внешнем уровне (вне всех функций и обязательно до их объявления).

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

#pragmaДиректива используется для предоставления компилятору некоторой дополнительной информации. Например, #pragma version используется для принудительного применения определенной версии компилятора FunC при компиляции файла.

Другие ключевые слова в FunC на данный момент не реализованы.

С документацией можно ознакомиться на официальном сайте TON.

1 year, 11 months ago

Тема 6. Глобальные переменныеКак уже было сказано ранее, FunC фактически представляет собой список объявлений и определений функций и объявлений глобальных переменных. Рассмотрим подробнее глобальные переменные и их применение.

Локальными переменными называют переменные, объявленные внутри какой-либо функции, в то время как глобальная переменная – переменная, объявленная за пределами всех функций, то есть областью её видимости является вся программа. Глобальные переменные могут использоваться для взаимодействия между процедурами и функциями как альтернатива передаче аргументов и возвращению значений.

Глобальная переменная в FunC может быть объявлена с помощью ключевого слова, за которым следуют тип и имя переменной. Например, global ((int, int) -> int) op;Тип глобальной переменной может быть опущен. В таком случае он будет определён при использовании переменной. Аналогичный пример:
global op;Можно объявить несколько переменных после одного и того же ключевого слова:
global int A;
global cell B;
global C;
– то же, что и
global int A, cell B, C;Не разрешается объявлять локальную переменную с тем же именем, что и у уже объявленной глобальной переменной (использование одного идентификатора возможно при перезаписи значения, но не при объявлении).

С документацией можно ознакомиться на официальном сайте TON.

1 year, 11 months ago

Тема 5. Литералы и идентификаторы (часть 2)В предыдущей статье было сказано, какие идентификаторы являются допустимыми, а какие – под запретом. Разберём этот момент на конкретных примерах.

Некоторые допустимые идентификаторы:
query, query’, query’’
elem0
, elem1, elem2
CHECK
, _internal_value, message_found?
get_pubkeys&signatures
, dict::udict_set_builder, fatal!Символ в конце имени переменной часто используется, когда вводится некоторая изменённая версия старого значения.

Суффикс ? обычно используется для логических переменных (TVM не имеет встроенного типа bool; логический тип представлен целыми числами, где 0 – ложь, а -1 – истина) или для функций, которые возвращают некоторый флаг, обычно указывающий на успешно завершённую операцию (например, udict_get? из stdlib.fc).

Вот пример запрещённых идентификаторов:
take(first)Entry – использованы скобки;
"not_a_string – использованы двойные кавычки;
msg.sender – использована точка;
send_message,then_terminate – использована запятая;
_ – использован символ нижнего подчёркивания, применяемый для обозначения абстрактного (заполняемого) типа.

Кстати, FunC имеет специальный тип идентификаторов, которые заключены в обратные одинарные кавычки . В кавычках разрешены любые символы, кроме \n и самих кавычек. К примеру, ‘I'm a variable too’ является допустимым идентификатором, так же как и ‘any symbols ; ~ () are allowed here...’.

Ещё несколько примеров необычных идентификаторов, которые допустимы:
123validname
2+2=2
2
-alsovalidname
0xefefefhahaha
{hehehe}
pa{--}in"*aaa"

С документацией можно ознакомиться на официальном сайте TON.

1 year, 11 months ago

Тема 5. Литералы и идентификаторы (часть 1)

Литералами в программировании называют числовые, символьные или адресные константы, которые непосредственно включаются в команды и участвуют в операциях.

FunC допускает десятичные и шестнадцатеричные целочисленные литералы (разрешены начальные нули). Например, 0, 123, 00987, 0xef, 0xEF, 0x0, -0xfFAb, 0x0001, -0, -0x0 являются допустимыми числовыми литералами.

Строки (массивы символов) в FunC заключаются в двойные кавычки. Например, "first string" будет расцениваться компилятором как строка. Специальные символы, такие как "\n", и многострочные массивы символов не поддерживаются.

FunC допускает широкий класс идентификаторов (имен функций и переменных). Любая строка, которая:

  1. Не содержит специальных символов «;», «,», «(», «)», «~», «.» и т. д.;

  2. Не начинается как комментарий или строковый литерал;

  3. Не является числовым литералом;

  4. Не является символом подчеркивания или ключевым словом

— является допустимым идентификатором.

С документацией можно ознакомиться на официальном сайте TON.

2 years ago

Тема 4. Ещё немного о типах данныхПомимо атомарных типов данных, в FunC представлены и более сложные типы, которые могут быть использованы при решении нетривиальных задач.

  1. Абстрактный тип.
    FunC поддерживает модель типов данных, в которой тип определяется семантикой с точки зрения пользователя данных, то есть набором возможных значений и соответствующих операций над данными этого типа. Типы _ и var представляют собой абстрактные типы (hole types), которые во время проверки при компиляции заменяются на фактические. Например, «var x = 2;» – это определение переменной x, равной 2. Средство проверки типов может сделать вывод, что x имеет тип int, потому что 2 имеет тип int, а левая и правая части присваивания должны иметь одинаковые типы.

  2. Функциональный тип.
    Типы вида A -> B представляют функции с указанием типа входящего аргумента и типа возвращаемого значения. Например, int -> cell – это тип функций с целочисленным аргументом, которые возвращают ячейку TVM. Внутренние значения таких типов представлены в виде продолжений (тип cont).

  3. Кортежный тип.
    Типы вида [A, B, ...] представляют собой кортежи TVM с конкретной длиной и известными заранее (до компиляции) типами компонент. Например, [int, cell] – это тип кортежей TVM длины 2, где первая компонента является целым числом, а вторая – ячейкой. [] – это тип пустых кортежей.

Любые типы могут быть объединены в составной тип, поддерживаемый FunC.

С документацией можно ознакомиться на официальном сайте TON.

2 years ago

Его разум очистился, сердце участило свое биение, взгляд стал томным, устремленно бросающим себя в прошлое.

- НЕТ! МЫ ДОЛЖНЫ ВМЕСТЕ!

Прошептав эту фразу, он пришел в себя.

"Г-У-У-У-У-У-А-А-А-Р-Д-И-Л-И-О-О-О-Н!!!" - испуганно прокричал Хагвид
и упал в бессознательный сон.

Спустя время он очнулся окруженный в той же самой пустоте с отголосками прошлого. Среди них он искал какой-то знак или чью-то помощь, способную вытащить его из мира EVO. Вдруг, устремив свой взгляд в небо, Хагвид безнадежно засмеялся,
думая про себя: "Какое же оно красивое... И как же я беспомощен..."

Но, вспомнив истинное небо, что было на его родной планете, Хагвид задался вопросом, что это за брешь, напоминающая сознание.

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

Но мир EVO обладал сознанием - и, предугадав цель Хагвида, брешь начала затягиваться.

2 years ago

Тема 3. Виртуальная машина TONТеперь, когда значительная часть теоретического материала пройдена, настало время залезть в «начинку» языка программирования FunC и разобраться, как вообще создаются и развёртываются смарт-контракты. Начнём с самой низкоуровневой составляющей, с ядра, благодаря которому всё происходит, а именно – с TVM, или виртуальной машины TON.

Основная задача виртуальной машины TON (TON VM или TVM) заключается в выполнении кода смарт-контракта в блокчейне TON. TVM должна контролировать и поддерживать все операции, необходимые для анализа входящих сообщений и постоянных данных, а также управлять потоками, в которых создаются новые сообщения и сценарии и изменяются данные. Кроме того, TVM должна строго соответствовать следующим требованиям:

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

  2. Она должна стремиться к достижению «высокой плотности виртуального машинного кода». Иными словами, код смарт-контракта должен занимать как можно меньше места в постоянной цепочке блоков.

  3. Она должна быть полностью детерминированной (алгоритмически определённой и предсказуемой). Другими словами, каждый запуск одного и того же кода с одними и теми же входными данными должен давать один и тот же результат независимо от используемого программного и аппаратного обеспечения.

TVM не предназначена для реализации в аппаратном обеспечении, например, в специализированном микропроцессорном чипе. Она должна быть выполнена в программном обеспечении, работающем на обычном оборудовании. Это соображение позволяет включить в TVM некоторые высокоуровневые концепции и операции, которые в случае аппаратной реализации потребовали бы сложного микрокодирования в «железе». Такие операции полезны для достижения высокой плотности кода и минимизации профиля ячейки хранения кода смарт-контракта при его развертывании в блокчейне TON.

С документацией можно ознакомиться на официальном сайте TON.

2 years ago

Незнание рожденное от ума, может привести к краху целой империи. Но смелость проявленная от глупости, способна спасти мир.

Почти полностью потерявший рассудок и свое прежнее обличие, Хагвид осознал , КТО именно стоял за разрушениями Гвуардилиона.
В абсолютной тишине, которую смог бы сломить, лишь его собственный вопль отчаяния , он с болью смотрел на свое отражение , в ранее оставленной луже слез. Это и был ответ на его вопрос , ради которого он пожертвовал всем.
Знания к которым , так трепетно тянулся мир Токемонов, был способен полностью их изменить , начиная от собственного рассудка и заканчивая не Токемонской сущностью.
И только сильнейшие могли подавить в себе это проклятие , одним из тех и оказался , наш Хагвид.

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

We recommend to visit

Официальный новостной канал криптобиржи OKX | www.okx.com на русском языке.

💬 Комьюнити: t.me/okx_russian

👨‍💻 Поддержка: [email protected]

АДМИН: @DaniiOKX
Маркетинг: @CoffeeTrends

Last updated 4 days, 10 hours ago

Здесь простым языком про TON, DFC и крипту.

Принимаем автоматически.
Ссылка для друзей: https://t.me/+-EOfWx2pRKhmNGE6
Связь: @deftalk_bot

Last updated 2 months, 1 week ago

Реклама: @kingygmads / Платформа: ton.org.in
Чат: t.me/+QzoGJS7ktps1NOzh
Приватный канал: t.me/investkingyru/417
Помощь: @tonorgin_bot
EN: @investkingyru_en

Last updated 4 months, 1 week ago