# [Ride v4 и v3] Вес данных
⚠️ Это документация Стандартной библиотеки версии 4 и 3. Рекомендуем использовать версию 6. Перейти к версии 6
Вес каждого значения примерно соответствует его размеру в байтах. Вес используется в ограничениях на создание и сравнение значений.
# Расчет веса
Тип данных | Вес значения |
---|---|
Boolean | 1 |
ByteVector | Размер в байтах |
Int | 8 |
List | См. Вес списка |
String | Размер в байтах |
Unit | 40 |
Кортеж | См. Вес кортежа или структуры |
Структура | См. Вес кортежа или структуры |
# Вес списка
Вес списка рассчитывается по формуле:
Wlist = 20 + 20 × Q + Welems
где:
- Q — количество элементов.
- Welems — суммарный вес элементов.
# Вес кортежа или структуры
Вес кортежа или структуры рассчитывается по формуле:
Wstruct = 40 + 30 × Q + Wfields
где:
- Q — количество полей.
- Wfields — суммарный вес полей.
# Пример расчета
Рассмотрим структуру AssetPair:
AssetPair(amountAsset: ByteVector|Unit, priceAsset: ByteVector|Unit)
Идентификатор ассета — ByteVector
длиной 32 байта, его вес равен 32. Если оба ассета в паре — не WAVES, то вес структуры AssetPair
составляет:
WAssetPair = 40 + 30 × 2 + (32 + 32) = 164
Если один из ассетов — WAVES, то соответствующее поле имеет тип Unit
и вес 40. Тогда вес структуры AssetPair
составляет:
WAssetPair = 40 + 30 × 2 + (32 + 40) = 172
# Ограничения
- Максимальный вес значения равен 307200.
- Не допускается сравнение значений, если вес каждого из них превышает 13000.
В случае превышения ограничений скрипт завершается с ошибкой.