29 мая 2020

Языки программирования Tezos

Экосистема Tezos предлагает множество возможностей для разработчиков, разработчиков приложений и создателей смарт-контрактов.

В 2019 году более 1000 программистов были обучены разработке на блокчейне Tezos. Образовательная, учебная и исследовательская деятельность продолжается, а команды Tezos по всему миру вносят свой вклад в экосистему. Tezos Ukraine не является исключением. В 2019 году мы провели первый восточноевропейский хакатон, благодаря чему появилось несколько сильных команд, занимающихся разработкой на Tezos.

В экосистеме Tezos существует множество языков, и в будущем их будет еще больше. Как объяснил Артур Брейтман в недавнем интервью, само ядро ​​Tezos построено на функциональном языке программирования, и многим людям, связанными с экосистемой Tezos, нравится функциональное программирование. Эти люди — гуру языка программирования, и им нравится создавать новые языки, потому что это то, в чем они разбираются и любят делать.

Тем не менее, команда Tezos Ukraine осознала что «нетехнические» новички в мире Tezos могут растеряться из-за разнообразия доступных языков программирования. Поэтому мы решили посвятить им базовую объяснительную статью, чтобы начать работу стало намного проще.

OCaml — язык Tezos протокола

Протокол Tezos написан на OCaml — универсальном промышленном языке программирования с акцентом на выразительность и безопасность. OCaml был создан в 1996 году и обладает большой стандартной библиотекой, что делает его полезным для многих приложений, таких как Python или Perl. Язык также обладает надежными модульными и объектно-ориентированными программными конструкциями, которые делают его применимым для крупномасштабной разработки программного обеспечения.

OCaml — это бесплатный проект открытого ПО, управляемый и поддерживаемый Французским институтом исследований в области компьютерных наук и автоматизации (INRIA).

В начале 2000-х элементы из OCaml были позаимствованы многими языками, в частности, F # и Scala (еще один популярный язык в разработке блокчейнов).

Многие ведущие проекты используют OCaml, включая Facebook, Bloomberg, Docker, Wikipedia и другие.

Michelson — язык смарт-контрактов в Tezos

Michelson — это совершенно новый язык программирования, представленный миру Л. М. Гудманом (Артуром Брейтманом) в Белой книге Tezos в 2014 году. Это функциональный язык программирования с открытым исходным кодом, созданный для разработки смарт-контрактов Tezos.

Michelson — низкоуровневый, специфический, стековый язык программирования, который используется для написания смарт-контрактов в блокчейне Tezos. Michelson был разработан для облегчения процедуры формальной верификации, позволяя пользователям подтверждать свойства своих контрактов.

Даже опытные разработчики Tezos отмечают, что на первый взгляд Michelson — довольно странный язык. В нем не предусмотрены такие функции, как полиморфизм, замыкания или именованные функции. Похоже, он недостаточно мощный в сравнении с такими языками, как Haskell или OCaml. С его стеком не всегда легко разобраться и нет стандартной библиотеки. Но основные преимущества заключаются в том, что Michelson интроспективен и предоставляет читаемый байт-код.

Разработчики Tezos хотели начать с небольшого базового языка, в котором все уверены, а также добавить функции с хорошими вариантами использования. На самом деле, немногие люди пишут код на Michelson, поскольку существуют другие высокоуровневые языки, доступные для программирования смарт-контрактов на Tezos. С такими новыми языками, как LIGO, SmartPy, Morley/Lorentz, опыт разработки становится намного проще, поэтому программисты могут сосредоточиться на содержании своих смарт-контрактов, а не на их реализации.

LIGO

LIGO — это дружественный язык смарт-контрактов для Tezos, который обеспечивает надежную статическую систему типов и простую интеграцию. LIGO — Polyglot, он дает возможность писать на своем языке. На данный момент поддерживается 3 синтаксиса (языка), и доступна функция добавления собственного синтаксиса.

PascaLIGO — синтаксис, вдохновленный Pascal, который предоставляет императивный опыт разработки.

CameLIGO — вдохновленный OCaml синтаксис, который позволяет писать в функциональном стиле.

ReasonLIGO — Синтаксис, вдохновленный ReasonML, который строит с учетом сильных сторон OCaml. Он стремится быть знакомым для тех, кто переходит с JavaScript.

LIGO использует подход репликации структуры, используемый языками из определенной парадигмы. Он «упакован» в контейнер Docker, поэтому никаких особых инструкций по установке не требуется.

Сообщество активно работает над тем, чтобы в LIGO были добавлены новые языки. Например, Madfish Solutions создали компилятор Solidity to Ligo, за что получили грант Tezos Foundation.

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

https://ligolang.org/

SmartPy

SmartPy — это высокоуровневый язык смарт-контрактов, позволяющий разработчикам использовать Python для написания смарт-контрактов, которые затем компилируются в Michelson.

Пользователи получают все преимущества Python для перебора структур данных, вызова других библиотек и предварительного вычисления параметров, нацеливаясь при этом на мощный, но ограниченный язык Michelson.

У SmartPy есть замечательный онлайн-редактор с шаблонами, где Вы можете писать, запускать и тестировать контракты.

SmartPy.io — это платформа для разработки в браузере с расширенными возможностями для разработки, тестирования и проверки свойств смарт-контрактов. Вся разработка происходит в браузере — от программирования на Python до генерации, тестирования и анализа контрактов Michelson.

Python считается относительно простым языком для изучения, к тому же, он существует довольно давно, что позволяет SmartPy привлекать больше разработчиков Python в экосистему Tezos.

Baking Bad, команда разработчиков и крипто-энтузиастов из экосистемы Tezos, создали PyTezos — Python SDK для Tezos, а также несколько инструментов разработки Tezos dev: ConseilPy — набор инструментов Python для индексатора блокчейна Conseil, PyTzKT — набор инструментов Python для индексатора блокчейна TzKT. Вы можете проверить все эти инструменты на веб-сайте Baking Bad.

Сайт SmartPy: http://smartpy.io/

Группа SmartPy в Telegram

Курс SmartPy от Blockmatics

Morley/Lorentz

Morley/Lorentz предоставляет библиотеку для написания смарт-контрактов Tezos в Haskell. Проект находится в стадии разработки, поэтому его документация ограничена, но Вы можете проверить его здесь и следить за его разработкой: https://hackage.haskell.org/package/morley

Другие языки

Archetype

Archetype — это предметно-ориентированный (специфический) язык (DSL) для разработки смарт-контрактов на блокчейне Tezos с особым акцентом на безопасность и формальную верификацию контрактов. Это проект с открытым исходным кодом, разработанный в OCaml. Archetype предлагает совершенно другой способ написания смарт-контрактов на Tezos с собственным набором инструкций и рассматривая контракты в качестве конечных автоматов.

Сайт Archetype: https://archetype-lang.org/

Albert

Albert является промежуточным языком программирования смарт-контрактов, скомпилированным для Michelson. Как и в случае с основным языком Tezos, Albert был назван в честь физика Альберта Майкельсона.

Это императивный язык с переменными и записями, абстрагирующий стек Michelson. Задумка Albert состоит в том, чтобы служить целью компиляции высокоуровневых языков программирования смарт-контрактов.

Веб-сайт на языке Albert: https://albert-lang.io/

Fi

Fi (произносится как «fee») — высокоуровневый язык для Michaelson, который позволяет программистам легко разрабатывать на Tezos. Fi основан на JavaScript и Solidity и призван стать гораздо ближе к программированию смарт-контрактов в Solidity. Сейчас проект находится на стадии альфа-версии, для работы с ним можно использовать онлайн-редактор Fi: https://fi-code.com/

Как видите, в экосистеме Tezos существует множество языков. Следовательно, это создает множество способов и возможностей для развития на Tezos. Если Вы не уверены, с чего начать или что изучать в первую очередь — лучше всего взаимодействовать с сообществом и программистами, которые уже используют определенные языки и участвуют в проектах, связанных с Tezos.

Подписывайтесь на наши соц. сети:

Telegram

LinkedIn

Facebook

Twitter

Instagram

Обсудить в Discord!