# Вес данных
Вес каждого значения примерно соответствует его размеру в байтах. Вес используется в ограничениях на создание и сравнение значений.
# Расчет веса
| Тип данных | Вес значения |
|---|---|
| BigInt | 64 |
| 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.
В случае превышения ограничений скрипт завершается с ошибкой.