# Стандартная библиотека
Стандартная библиотека — множество встроенных функций, структур и переменных.
Версия используемой в скрипте Стандартной библиотеки задается директивой STDLIB_VERSION
.
Для разработки приложений рекомендуем использовать версию 8 Стандартной библиотеки.
# Особенности версии 8
Версия 8 доступна с момента активации фичи № 22 “Light Node”.
- Добавлены встроенные функции:
- replaceByIndex — заменяет элемент в списке по индексу.
- calculateDelay — вычисляет временную задержку перед генерацией блока.
- В структуру Order добавлено поле
attachment
. - Снижена сложность функций и операторов c аргументами типа BigInt.
# Особенности версии 7
Версия 7 доступна с момента активации фичи № 19 “Block Reward Distribution”.
В структуру BlockInfo, возвращаемую встроенной функцией blockInfoByHeight, добавлено поле rewards: List[(Address, Int)]
.
# Особенности версии 6
Версия 6 доступна с момента активации фичи № 17 “Ride V6, MetaMask support”.
# Поддержка MetaMask
- Функция addressFromPublicKey принимает на вход как публичный ключ аккаунта Waves (32 байта), так и публичный ключ аккаунта MetaMask (64 байта) и возвращает адрес в формате Waves (26 байт).
- Функция transferTransactionById возвращает Ethereum-транзакцию по ее идентификатору, если эта транзакция была интерпретирована как транзакция перевода. Массив
proofs
при этом содержит 8 пустых значений.
Подробнее о поддержке MetaMask на блокчейне Waves
# Изменения в функциях
Максимальная сложность вызываемой функции скрипта dApp в Стандартной библиотеке версии 6 изменена на 52 000.
Суммарная сложность всех вызываемых функций, скрипта вызова и скриптов ассетов в одной транзакции вызова скрипта зависит от версии Стандартной библиотеки первого скрипта в цепочке вызовов:
- Если первый скрипт использует версию 6, то суммарная сложность — не более 52 000.
- Если первый скрипт использует версию 5, то суммарная сложность — не более 26 000. Если далее в цепочке вызываются функции скриптов версии 6, сложность каждой из них может быть более 10 000.
Сложность скрипта отправителя не учитывается в этом лимите.
Общее количество действий скрипта
ScriptTransfer
,Lease
,LeaseCancel
, выполняемых всеми вызываемыми функциями в одной транзакции, — не более 100.Общее количество действий скрипта
Issue
,Reissue
,Burn
,SponsorFee
, выполняемых всеми вызываемыми функциями в одной транзакции, — не более 30.Вызываемые функции больше не принимают аргументы типа Union.
Добавлены встроенные функции:
Изменено ограничение на второй параметр функций
drop
,dropRight
,take
,takeRight
:- Для функций строки можно указать число от 0 до 32 767 (максимальная длина строки).
- Для функций массива байтов можно указать число от 0 до 165 947 (максимальная длина массива байтов).
Изменены ограничения на размер входных и выходных данных для встроенных функций строки makeString и split; сложность этих функций уменьшена до 1. Добавлены семейства аналогичных функций с различной сложностью в зависимости от размера данных.
Изменена сложность некоторых встроенных функций. Сложность всех функций представлена в разделе Встроенные функции.
# Прочее
- Новые правила оценки сложности снижают общую сложность скрипта.
См. также [Ride v5, v4, v3] Предыдущие версии Стандартной библиотеки.