# О Ride
Ride — лаконичный и дружественный язык для разработки смарт-контрактов и децентрализованных приложений (dApps) на блокчейне Waves.
# Типы скриптов
Смарт-контракты Waves представляют собой скрипты, написанные на языке Ride. Скрипты могут быть прикреплены к аккаунтам или к токенам (ассетам). Аккаунт с прикрепленным к нему скриптом становится dApp или смарт-аккаунтом. Ассет с прикрепленным к нему скриптом становится смарт-ассетом.
Возможности скрипта зависят от его типа:
- dApp-скрипт позволяет определить вызываемые функции, выполняющие различные действия на блокчейне, а также функцию-верификатор, которая разрешает или отклоняет транзакции или ордера, отправляемые от имени аккаунта.
- Скрипт аккаунта разрешает или отклоняет транзакции или ордера, отправляемые от имени аккаунта.
- Скрипт ассета разрешает или отклоняет транзакции с участием ассета.
# Работа с блокчейном
Язык Ride разработан для выполнения скриптов на блокчейне и оптимизирован для этой цели. Поскольку блокчейн — это распределенный реестр, который хранится на множестве серверов по всему миру, функции Ride не могут обратиться к файловой системе или отобразить что-либо в консоли. Вместо этого функции Ride могут читать данные из блокчейна:
- Записи в хранилищах данных аккаунтов (как самого dApp или смарт-аккаунта, так и любых других).
- Балансы аккаунтов.
- Параметры ассетов.
- Текущая высота блокчейна.
- Заголовки блоков.
- Транзакции перевода (по идентификатору транзакции).
Описание функций см. в разделах Функции хранилища данных аккаунта и Функции блокчейна.
Вызываемые функции dApp-скрипта могут принимать платежи в пользу dApp, а также выполнять действия на блокчейне:
- Добавление/изменение/удаление записей в хранилище данных аккаунта dApp.
- Перевод токена с баланса dApp.
- Выпуск/довыпуск/сжигание токена от имени аккаунта dApp, настройка спонсирования.
Доступные действия зависят от используемой версии Стандартной библиотеки.
# Предсказуемая стоимость вычислений
Для каждой функции и оператора Ride определена сложность. Из сложностей используемых функций и операторов складывается сложность скрипта. В Ride нет циклов, поэтому сложность скрипта можно посчитать заранее. Максимальная сложность скрипта ограничена. Благодаря этим ограничениям в Waves удалось установить низкие и предсказуемые комиссии за выполнение скрипта.
Из-за отсутствия циклов язык Ride не является полным по Тьюрингу, так что не всегда возможно реализовать всю необходимую логику в рамках одного вызова скрипта. Однако выполнение полных по Тьюрингу вычислений всё же возможно, если разбить алгоритм на несколько функций (или даже несколько смарт-контрактов) и последовательно вызывать их с помощью нескольких транзакций.
# С чего начать
Для быстрого погружения в синтаксис Ride прочитайте вводную статью.
# Полезные ссылки
- Инструменты разработчика
- Как создать и запустить dApp: полное пошаговое руководство
- Waves Lessons: практическое руководство и учебные пособия по работе с блокчейном Waves
- Mastering Web3 with Waves: практический курс.
- Белая книга Ride (2018)