ℹ️Введение
Пару слов о KLYNTAR VM
Начало
Сегодня необходимость смарт-контрактов в блокчейнах фактически обязательная, ведь позволяет писать кастомную логику в виде контрактов которые потом живут и выполняются в децентрализованной среде.
В KLYNTAR мы старались быть максимально универсальными для того, чтоб позволить вам легко и быстро начать писать что-либо для KLYNTAR. Вы сможете писать на любом языке который вы хорошо знаете и который компилируется в WASM модули, а так же использовать расширенные возможности такие как запросы в сеть или хранения больших данных "вне блокчейна" симбиота которые могут быть запрошены для выполнения некоторой функции и многое другое.
В основе KLYNTAR VM - WebAssembly который позволяет вам писать на любом языке, затем скомпилировать его в .wasm байткод и запускать в безопасной среде.
WebAssembly безопасный благодаря
Отсутствию доступа к сети
Отсутствию доступа к файловой системе
Отсутствию доступа к генератору рандомных чисел
Таким образом, можно локально(у вас в среде разработки, если вы разработчик) создавать сжатые и скомпилированные .wasm файлы, а затем публиковать их в сети KLYNTAR для выполнения.
Больше про WebAssembly
Сегодня WebAssembly становится популярным по всему миру и в разных сферах - от небольших модулей для работы в браузере до облачных FaaS сервисов и блокчейнов(Cosmos,Near и т.д.).
Ниже представлен список языков которые уже можно использовать для компиляции в WASM и безопасно выполнять их работу на симбиотах KLYNTAR
WebAssembly - это не совсем язык, это скорее низкоуровневый байт-код который выполняется быстро и безопасно. Для наглядного примера, можно рассмотреть формат .wat файла - это файлы так называемого WebAssemblyText. Его тоже можно компилировать в wasm и обратно. Так к примеру вы можете повторить эту процедуру используя инструменты wat2wasm(очевидно что .wat => .wasm) и wasm2wat(наоборот). Как раз таки .wat файлы и позволяют нам увидеть опкоды WASM, понять что тут идёт работа со стеком подобно низкоуровневым языкам и так далее. Вот к примеру реализация простой функции которая принимает 2 параметра и возвращает их сумму
Файл add.wat
Затем, мы используем инструмент wat2wasm который идёт в пакете wat-wasm
Компилируем(с помощью флагов -O3z максимально сжимаем и проводим оптимизацию)
И используем в JavaScript(Node.js)
Это был простой пример использования и вы просматривая код .wat файла немножко больше узнали про его формат.
Конечно, на чистом WAT писать сложно и поэтому вы, скорее всего будете использовать высокоуровневые языки типа AssemblyScript(надстройка над TypeScript), Rust, C++, Python и прочие.
Мы как раз таки и начнём использовать AssemblyScript в качестве первой точки входа для .wasm смарт-контрактов на KLYNTAR.
Позднее, добавятся и другие. Вот несколько интересных тематических репозиториев
KLYNTAR VM и симбиоты
Виртуальная машина KLYNTAR индивидуальная для каждого симбиота в плане возможностей и таблицы затрат. Для своей работы она использует такой ресурс который называется энергия. Мы решили так назвать аналогию с газом на Ethereum, но с тем лишь отличием, что понятие энергии является более глобальным.
Как мы знаем из физики
Энергия ниоткуда не берётся и никуда не девается, а лишь переходит из одного состояния в другое
С этой мыслю мы и продолжаем работать над KLYNTAR VM. Вы сможете запускать виртуальную машину за токены, за уровень полезности вашего сервиса, за количество унобтаниума и многое другое.
Тем не менее, в целом, суть энергии как ресурса на KLYNTAR будет аналогична сути газа в EVM машинах - обеспечить расчёт стоимости затраченных ресурсов для выполнения смарт-контракта(его функций).
Благодаря принципу мутаций, каждый симбиот индивидуально назначает себе возможности KLYNTAR VM и расчётную таблицу. Вы сможете даже сделать бесплатным выполнения смарт-контрактов, построить собственное дерево кому разрешено запускать какой-смарт контракт бесплатно и так далее. Это дарит гибкость и позволяет равномерно распределять нагрузку между симбиотами.
Расчётная таблица
Ранее мы показали вам простую функцию в файле add.wat и там вы могли наблюдать, что в WebAssembly используются байт-коды. Для симбиота можно будет настроить конфигурацию виртуальной машины так, чтоб самостоятельно настраивать сколько энергии будет потреблять каждый опкод.
Вот пример vmEnergyTable.json из dev_controller workflow.
Более детально о принципах измерения и таких таблицах мы рассказываем в разделе Расширенные возможности
Ссылки
Last updated