Skip to content

Общие типы данных

Все общие типы данных, используемые в операциях и виртуальных операциях протокола VIZ Ledger.


Примитивные типы

Тип C++JSON-представлениеОписание
stringstringUTF-8 строка
boolbooleantrue / false
uint8_tintegerБеззнаковое 8-битное целое
uint16_tintegerБеззнаковое 16-битное целое (0–65535)
int16_tintegerЗнаковое 16-битное целое (−32768–32767)
uint32_tintegerБеззнаковое 32-битное целое
int32_tintegerЗнаковое 32-битное целое
uint64_tstring или integerБеззнаковое 64-битное целое — в JavaScript используйте строку во избежание переполнения
int64_tstring или integerЗнаковое 64-битное целое
share_typeintegerПсевдоним для safe<int64_t> — количество токенов в единицах сатоши
time_point_secstringДата и время UTC в формате ISO 8601: "2024-01-15T12:00:00" (без суффикса часового пояса)

account_name_type

Строка фиксированной длины (максимум 16 байт), идентифицирующая аккаунт. Правила:

  • Метки, разделённые точками; каждая метка — не менее 3 символов.
  • Начинается с буквы, оканчивается буквой или цифрой.
  • Только строчные латинские буквы (az), цифры (09), дефисы (-).
  • Минимальная длина: 2 символа (CHAIN_MIN_ACCOUNT_NAME_LENGTH).
  • Максимальная длина: 16 символов (CHAIN_MAX_ACCOUNT_NAME_LENGTH).

JSON: обычная строка — "alice", "alice.bob"


public_key_type

Сжатый публичный ключ secp256k1, закодированный в base58check с префиксом VIZ.

JSON: строка — "VIZ5hqSa4NkEZGAMUpoH5EaEr64mBJuMcPpGjvk8qb7hcPFTbXSQ9"

  • Префикс должен быть VIZ (не STM, GLS или любой другой).
  • Кодируется из 33-байтного сжатого публичного ключа + 4-байтной контрольной суммы = 37 байт всего, затем base58-кодирование.

asset

Представляет количество токенов с символом. В ответах JSON API и параметрах операций сериализуется в виде человекочитаемой строки:

"10.000 VIZ"
"5.000000 SHARES"

Символы токенов

СимволСтрокаЗнаки после запятойОписание
TOKEN_SYMBOLVIZ3Основной ликвидный токен
SHARES_SYMBOLSHARES6Вестинговые доли (застейканный VIZ)

При построении операций всегда используйте строковый формат. Разбирайте разделением по пробелу: слева — количество, справа — символ. VIZ использует 3 знака после запятой; SHARES — 6.


authority

Структура мультиподписной авторизации, управляющая уровнем разрешений аккаунта.

json
{
  "weight_threshold": 1,
  "account_auths": [
    ["alice", 1]
  ],
  "key_auths": [
    ["VIZ5hqSa4NkEZGAMUpoH5EaEr64mBJuMcPpGjvk8qb7hcPFTbXSQ9", 1]
  ]
}
ПолеТипОписание
weight_thresholduint32_tМинимальный суммарный вес для выполнения авторизации
account_auths[[account_name, weight], ...]Подписывающие на основе аккаунта
key_auths[[public_key, weight], ...]Подписывающие на основе ключа

Сумма весов выполненных подписей должна быть ≥ weight_threshold. Пустая авторизация: { "weight_threshold": 0, "account_auths": [], "key_auths": [] }.

Уровни авторизации

УровеньИспользуется для
masterНаивысшая безопасность — смена ключей, восстановление аккаунта
activeОперации с токенами — перевод, вестинг, голосование за валидаторов
regularСоциальные операции — контент, награды, голосование в комитете

beneficiary_route_type

Указывает бенефициара и его долю вознаграждения при выплатах за контент.

json
{ "account": "alice", "weight": 2500 }
ПолеТипОписание
accountaccount_name_typeАккаунт бенефициара
weightuint16_tДоля в базисных пунктах (10000 = 100%)
  • Сумма весов всех бенефициаров не должна превышать 10000.
  • Бенефициары должны быть отсортированы по имени аккаунта (по возрастанию) в массиве.
  • Каждый аккаунт бенефициара должен существовать в блокчейне.

extensions_type

В настоящее время не используется — всегда сериализуется как пустой массив.

json
"extensions": []

versioned_chain_properties

Статический вариант, содержащий одну из версий параметров цепочки. Сериализуется как 2-элементный массив [type_index, object].

ИндексТип
0chain_properties_init
1chain_properties_hf4
2chain_properties_hf6
3chain_properties_hf9 (текущая)

Полный справочник полей по версиям — в разделе Параметры цепочки.


operation (статический вариант)

Каждая операция сериализуется как 2-элементный массив: [type_id, operation_object].

Обычные операции (транслируемые пользователями)

IDОперация
0vote_operation (устарела)
1content_operation (устарела)
2transfer_operation
3transfer_to_vesting_operation
4withdraw_vesting_operation
5account_update_operation
6validator_update_operation
7account_validator_vote_operation
8account_validator_proxy_operation
9delete_content_operation (устарела)
10custom_operation
11set_withdraw_vesting_route_operation
12request_account_recovery_operation
13recover_account_operation
14change_recovery_account_operation
15escrow_transfer_operation
16escrow_dispute_operation
17escrow_release_operation
18escrow_approve_operation
19delegate_vesting_shares_operation
20account_create_operation
21account_metadata_operation
22proposal_create_operation
23proposal_update_operation
24proposal_delete_operation
25chain_properties_update_operation
35committee_worker_create_request_operation
36committee_worker_cancel_request_operation
37committee_vote_request_operation
43create_invite_operation
44claim_invite_balance_operation
45invite_registration_operation
46versioned_chain_properties_update_operation
47award_operation
50set_paid_subscription_operation
51paid_subscribe_operation
54set_account_price_operation
55set_subaccount_price_operation
56buy_account_operation
58use_invite_balance_operation
60fixed_award_operation
61target_account_sale_operation

Виртуальные операции (генерируются блокчейном, не транслируются)

IDОперация
26author_reward_operation
27curation_reward_operation
28content_reward_operation
29fill_vesting_withdraw_operation
30shutdown_validator_operation
31hardfork_operation
32content_payout_update_operation
33content_benefactor_reward_operation
34return_vesting_delegation_operation
38committee_cancel_request_operation
39committee_approve_request_operation
40committee_payout_request_operation
41committee_pay_request_operation
42validator_reward_operation
48receive_award_operation
49benefactor_award_operation
52paid_subscription_action_operation
53cancel_paid_subscription_operation
57account_sale_operation
59expire_escrow_ratification_operation
62bid_operation
63outbid_operation

Построение транзакции

Подписанная транзакция содержит:

ПолеЗначение
ref_block_numhead_block_number & 0xFFFF
ref_block_prefixбайты 4–7 block_id в виде little-endian uint32
expirationUTC время в виде строки; рекомендуется не более ~60 с от времени трансляции
operationsМассив пар [type_id, object]
extensionsВсегда []
signaturesМассив компактных подписей ECDSA в hex-кодировке

Подпись: sha256(chain_id + serialized_transaction_body) → компактная ECDSA-подпись над secp256k1.

Приватные ключи: формат WIF (base58check, байт версии 0x80).


Система энергии

Энергия используется операциями типа «награда».

  • Хранится в базисных пунктах: 0–10000 (0%–100%).
  • Восстанавливается со скоростью 100% за 24 часа (CHAIN_ENERGY_REGENERATION_SECONDS = 86400).
  • Текущая энергия: min(10000, last_energy + elapsed_seconds × 10000 / 86400).

См. также: Обзор операций, Виртуальные операции, Параметры цепочки.