Ключевые концепции
На этой странице описаны фундаментальные концепции, необходимые для работы с VIZ Ledger — разработчику, оператору узла или создателю приложений.
Аккаунты
Каждый участник VIZ Ledger — это аккаунт. Аккаунты хранят балансы, создают контент, голосуют за валидаторов и взаимодействуют со всеми возможностями протокола.
Правила именования аккаунтов
- Длина: от 3 до 16 символов
- Метки, разделённые точками: каждая метка ≥ 3 символов
- Каждая метка начинается с буквы, оканчивается буквой или цифрой
- Допустимы только строчные латинские буквы (
a-z), цифры (0-9), дефисы (-) - Примеры корректных имён:
alice,alice.bob,viz-user1
Уровни авторизации
У каждого аккаунта три уровня авторизации, каждый из которых содержит набор ключей или делегированных аккаунтов:
| Уровень | Используется для | Ключ |
|---|---|---|
master | Смена ключей, восстановление аккаунта, операции высокой безопасности | Мастер-ключ (хранить офлайн) |
active | Переводы токенов, вестинг, голосование за валидаторов | Активный ключ |
regular | Контент, награды, голосование в комитете, социальные операции | Регулярный ключ |
Авторизация — это мультиподписная структура: { weight_threshold, account_auths[], key_auths[] }. Транзакция авторизована, когда сумма весов предоставленных подписей достигает weight_threshold или превышает его.
Токены
VIZ — ликвидный токен
- 3 знака после запятой:
"10.000 VIZ" - Используется для переводов, комиссий и операций финансирования
- Конвертируется в SHARES через
transfer_to_vesting_operation
SHARES — застейканный токен
- 6 знаков после запятой:
"10.000000 SHARES" - Представляет голосующую силу и ёмкость энергии
- Создаётся при стейкинге VIZ; выводится обратно в VIZ за 28 интервалов (≈28 дней)
- Не переводится напрямую; может быть делегирован другим аккаунтам
Система энергии
Энергия — ресурс, определяющий влияние социальных действий (наград, голосов) относительно доли аккаунта в SHARES.
| Свойство | Значение |
|---|---|
| Единица | Базисные пункты: 0 = 0%, 10000 = 100% |
| Скорость восстановления | Полное восполнение за 24 часа (86 400 секунд) |
| Формула восстановления | current_energy = min(10000, last_energy + elapsed_sec * 10000 / 86400) |
Когда аккаунт выдаёт награду с energy = 500 (5%), эта доля его SHARES используется для определения распределения из пула вознаграждений. Трата энергии не «уничтожает» токены — она определяет вес в пуле вознаграждений.
Валидаторы (производители блоков)
Валидаторы (ранее называвшиеся «witnesses») — аккаунты, производящие блоки и поддерживающие работу сети.
- Любой аккаунт может зарегистрироваться как валидатор через
validator_update_operation. - Держатели токенов голосуют за валидаторов, используя вес своих SHARES.
- Ведущие по голосам валидаторы получают расписание блоков в порядке round-robin.
- Каждый слот блока — ровно 3 секунды.
- Раунд из 21 валидатора = 21 блок = 63 секунды.
Участие в Fair-DPOS
В отличие от стандартного DPOS, VIZ Ledger штрафует бездействие:
- У каждого валидатора есть оценка участия на основе недавнего производства блоков.
- Если участие по всей сети опускается ниже
required-participation(по умолчанию 33%), производство блоков приостанавливается. - Валидаторы, пропускающие слишком много блоков, получают штраф к голосам, действующий в течение
validator_miss_penalty_durationсекунд.
Блоки и транзакции
Блок
Подписанный набор транзакций, произведённый валидатором в его запланированном слоте. Содержит:
previous: хэш предыдущего блока (связь цепочки)timestamp: точное время слотаwitness: имя производящего валидатораtransactions[]: список подписанных транзакцийvalidator_signature: подпись валидатора
Транзакция
Одна или несколько операций, сгруппированных и подписанных. Свойства:
ref_block_num = head_block_number & 0xFFFFref_block_prefix= байты 4–7 идентификатора референсного блока (little-endian uint32)expiration: должен быть в пределах 60 секунд от текущего времени (рекомендуется)operations[]: 1 или более операцийsignatures[]: подписи ECDSA, удовлетворяющие всем необходимым авторизациям
Операция
Атомарная единица изменения состояния. Сериализуется как [type_id, operation_object] внутри транзакции. Существует 64+ типов операций, охватывающих переводы, социальные действия, управление и другое — см. Обзор операций.
Пул вознаграждений
Инфляция непрерывно добавляется в пул вознаграждений. Валидаторы и создатели контента получают средства из этого пула:
| Получатель | Источник |
|---|---|
| Валидаторы | inflation_validator_percent от блочного вознаграждения |
| Комитет | Доля inflation_ratio_committee_vs_reward_fund |
| Фонд вознаграждений | Остаток — распределяется через награды и голоса за контент |
Точные проценты устанавливаются консенсусом валидаторов через versioned_chain_properties_update_operation и принимаются голосованием ведущих валидаторов.
Fork и LIB
Fork database (fork_db): дерево в памяти из недавно полученных блоков, которые ещё могут не входить в канонич цепочку. Узел отслеживает все форк-кандидаты и всегда продолжает наиболее тяжёлый (наиболее одобрённый) форк.
LIB (Last Irreversible Block): последний блок, подтверждённый более чем 2/3 валидаторов. Блоки на уровне LIB и ниже не могут быть реорганизованы. Как только блок опускается ниже LIB, он записывается в постоянный лог блоков.
Снапшот
Снапшот — бинарный дамп всего состояния базы данных на определённом номере блока. Позволяет новому узлу:
- Скачать файл снапшота
- Загрузить его за секунды (вместо воспроизведения всей истории блоков)
- Продолжить синхронизацию с высоты блока снапшота
Снапшоты создаются плагином snapshot и не влияют на канонич цепочку — это исключительно операционный инструмент.
Параметры цепочки (параметры управления)
Параметры консенсуса на блокчейне контролируются валидаторами через versioned_chain_properties_update_operation. Активные параметры являются медианой значений, опубликованных ведущими 21 валидаторами.
Ключевые параметры:
account_creation_fee— стоимость создания нового аккаунтаmaximum_block_size— максимальный размер блока в байтахinflation_validator_percent— доля валидаторов от блочного вознагражденияvalidator_miss_penalty_percent/validator_miss_penalty_duration— штраф за пропуск блоковwithdraw_intervals— количество интервалов вывода из вестинга
См. Управление параметрами цепочки для полного списка параметров.
Хардфорки
Обновления протокола развёртываются как хардфорки — запланированные активации на определённом номере блока. Как только ≥17 из 21 валидаторов сигнализируют поддержку хардфорка, он активируется при следующем запланированном блоке. Хардфорки могут добавлять новые типы операций, изменять правила консенсуса или вводить новые параметры цепочки.
См. Хардфорки для истории и процесса обновления.