Обзор плагинов
VIZ Ledger использует фреймворк плагинов AppBase. Каждый плагин имеет жизненный цикл (plugin_initialize → plugin_startup → plugin_shutdown), может регистрировать методы JSON-RPC, может хранить данные в базе данных chainbase и подписываться на сигналы цепочки (например, applied_block).
Категории плагинов
| Категория | Описание |
|---|---|
| Основные | Необходимы для любого узла |
| Инфраструктурные | Сетевое взаимодействие, веб-сервер, снапшоты |
| API | Предоставляют JSON-RPC эндпоинты для клиентов |
| Индексирование | Индексируют данные цепочки в chainbase для быстрых запросов |
| Производство | Подписание и производство блоков |
| Отладка/Тестирование | Только для разработки; не для продакшна |
Инвентарь плагинов
Основные
| Плагин | Статус | Зависимости | JSON-RPC |
|---|---|---|---|
chain | Обязательный | json_rpc | — |
json_rpc | Обязательный | — | — |
Инфраструктурные
| Плагин | Статус | Зависимости | JSON-RPC |
|---|---|---|---|
webserver | Нужен для API | json_rpc | — |
p2p | Нужен для сети | chain | — |
snapshot | Рекомендуется | chain | — |
validator_guard | Рекомендуется для валидаторов | chain, p2p | — |
API
| Плагин | Статус | Зависимости | JSON-RPC |
|---|---|---|---|
database_api | Активен | json_rpc, chain | Да |
network_broadcast_api | Активен | json_rpc, chain, p2p | Да |
validator_api | Активен | json_rpc, chain | Да |
account_by_key | Активен | json_rpc, chain | Да |
account_history | Активен | json_rpc, chain, operation_history | Да |
operation_history | Активен | json_rpc, chain | Да |
committee_api | Активен | json_rpc, chain | Да |
invite_api | Активен | json_rpc, chain | Да |
paid_subscription_api | Активен | json_rpc, chain | Да |
custom_protocol_api | Активен | json_rpc, chain | Да |
auth_util | Активен | json_rpc, chain | Да |
block_info | Активен | json_rpc, chain | Да |
raw_block | Активен | json_rpc, chain | Да |
Производство
| Плагин | Статус | Зависимости | JSON-RPC |
|---|---|---|---|
validator | Активен | chain, p2p | — |
Отладка / Тестирование
| Плагин | Статус | Зависимости | JSON-RPC |
|---|---|---|---|
test_api | Только для тестов | json_rpc | — |
Основные плагины
chain
Управляет базой данных chainbase, применяет блоки и транзакции, и генерирует сигналы для всех остальных плагинов.
Ключевые параметры конфигурации:
| Параметр | По умолчанию | Описание |
|---|---|---|
shared-file-size | 2G | Начальный размер файла разделяемой памяти |
shared-file-dir | state | Каталог для файлов разделяемой памяти |
inc-shared-file-size | 2G | Шаг роста при нехватке места |
min-free-shared-file-size | 500M | Порог автоматического расширения |
flush-state-interval | 10000 | Принудительный сброс на диск каждые N блоков |
skip-virtual-ops | false | Пропускать виртуальные операции (уменьшает память) |
dlt-block-log-max-blocks | 100000 | Ёмкость скользящего DLT-лога блоков |
Ключевые флаги CLI:
| Флаг | Описание |
|---|---|
--replay-from-snapshot | Импортировать снапшот, затем повторить DLT-лог блоков (восстановление после сбоя) |
--snapshot-auto-latest | Автоматически обнаружить последний снимок в snapshot-dir |
--auto-recover-from-snapshot | Автоматическое восстановление при повреждении разделяемой памяти |
--resync-blockchain | Очистить chainbase и лог блоков; начать с генезиса или снапшота |
json_rpc
Фреймворк-плагин; без конфигурации. Регистрирует и диспетчеризирует все методы JSON-RPC. Должен загружаться первым.
Все JSON-RPC запросы используют формат 2.0:
{
"jsonrpc": "2.0",
"method": "api_name.method_name",
"params": {},
"id": 1
}Инфраструктурные плагины
webserver
HTTP и WebSocket сервер, перенаправляющий запросы к json_rpc. Включает кэш ответов только для чтения.
Ключевые параметры конфигурации:
| Параметр | По умолчанию | Описание |
|---|---|---|
webserver-http-endpoint | — | Адрес прослушивания HTTP (например, 0.0.0.0:8090) |
webserver-ws-endpoint | — | Адрес прослушивания WebSocket (например, 0.0.0.0:8091) |
webserver-thread-pool-size | 32 | Рабочие потоки для обработки HTTP/WS |
webserver-cache-enabled | true | Включить кэширование ответов |
webserver-cache-size | 10000 | Максимальное количество кэшированных записей |
Ключи кэша формируются из method + params (не id), предотвращая обход путём ротации id запроса. Мутирующие методы (network_broadcast_api.*) никогда не кэшируются. Кэш очищается при каждом новом применённом блоке.
Подробности — в разделе Веб-сервер.
p2p
DLT P2P-сетевое взаимодействие — распространение блоков и транзакций, управление пирами, восстановление после minority fork.
Ключевые параметры конфигурации:
| Параметр | По умолчанию | Описание |
|---|---|---|
p2p-endpoint | — | Адрес прослушивания (например, 0.0.0.0:2001) |
seed-node | — | Статические начальные пиры |
p2p-max-connections | — | Максимальное число одновременных соединений |
dlt-block-log-max-blocks | 100000 | Ёмкость скользящего DLT-лога |
dlt-stats-interval-sec | 300 | Интервал логирования статистики пиров |
Полная архитектура P2P — в разделе Обзор P2P.
snapshot
Создание снапшотов, загрузка и P2P-синхронизация снапшотов для быстрой начальной загрузки и восстановления после сбоев.
Подробности — в разделах Снапшот и Плагин: Снапшот.
API-плагины
database_api
Основной API чтения. Запросы блоков, транзакций, аккаунтов, состояния цепочки, версии хардфорка, делегирований, предложений.
Полный справочник методов — в разделе Database API.
network_broadcast_api
Отправка и трансляция подписанных транзакций и блоков.
| Метод | Описание |
|---|---|
broadcast_transaction | Отправить транзакцию (асинхронно) |
broadcast_transaction_synchronous | Отправить и ждать включения в блок |
broadcast_transaction_with_callback | Отправить с обратным вызовом при включении или истечении |
broadcast_block | Отправить подписанный блок (только валидаторы) |
validator_api
Запросы состояния валидаторов: активный набор, расписание, отдельные валидаторы, рейтинги голосов.
| Метод | Описание |
|---|---|
get_active_validators | Текущий активный набор из 21 валидатора |
get_validator_schedule | Полный объект расписания |
get_validators | Валидаторы по ID в базе данных |
get_validator_by_account | Один валидатор по имени аккаунта |
get_validators_by_vote | Валидаторы, отсортированные по суммарному весу голосов |
get_validators_by_counted_vote | Валидаторы по числу голосов |
get_validator_count | Общее количество зарегистрированных валидаторов |
lookup_validator_accounts | Список имён аккаунтов валидаторов по префиксу |
account_by_key
Обратный поиск аккаунтов по публичному ключу.
| Метод | Описание |
|---|---|
get_key_references | Получить имена аккаунтов, использующих данные публичные ключи |
account_history
История операций аккаунта с постраничным выводом.
| Метод | Описание |
|---|---|
get_account_history(account, from, limit) | Получить операции; from=-1 возвращает самые новые; максимум 1000 за вызов |
Параметры конфигурации:
track-account-range— диапазон имён аккаунтов для индексирования (по умолчанию: все аккаунты)history-count-blocks— сохранять историю за N блоков
operation_history
Индекс всех операций для запросов на уровне блока и транзакции.
| Метод | Описание |
|---|---|
get_ops_in_block(block_num, virtual_ops) | Операции в блоке; virtual_ops=true включает виртуальные |
get_transaction(tx_id) | Транзакция по ID |
Параметры конфигурации:
history-whitelist-ops/history-blacklist-ops— фильтрация хранимых типов операцийhistory-start-block— начать индексирование с этого номера блокаhistory-count-blocks— сохранять историю за N блоков
committee_api
Запросы заявок комитета и голосований.
| Метод | Описание |
|---|---|
get_committee_request(id) | Заявка по ID |
get_committee_request_votes(id) | Голоса по заявке |
get_committee_requests_list(from, limit, status) | Постраничный список заявок |
invite_api
Запросы активных кодов инвайтов.
| Метод | Описание |
|---|---|
get_invites_list | Все ID инвайтов |
get_invite_by_id(id) | Инвайт по ID в базе данных |
get_invite_by_key(pub_key) | Инвайт по публичному ключу |
paid_subscription_api
Запросы предложений подписок и статуса подписчиков.
| Метод | Описание |
|---|---|
get_paid_subscriptions | Все активные предложения подписок |
get_paid_subscription_options(account) | Конфигурация подписок для аккаунта |
get_paid_subscription_status(subscriber, account) | Статус конкретной подписки |
get_active_paid_subscriptions(subscriber) | Активные подписки для подписчика |
get_inactive_paid_subscriptions(subscriber) | Истёкшие подписки |
Плагин производства
validator
Подписание и производство блоков. Запускает цикл таймера 250 мс; производит, когда следующий слот назначен настроенному аккаунту валидатора.
Ключевые параметры конфигурации:
| Параметр | По умолчанию | Описание |
|---|---|---|
validator | — | Имя/имена аккаунтов валидаторов |
private-key | — | WIF-ключ(и) для подписи |
emergency-private-key | — | Ключ подписи для экстренного консенсуса |
enable-stale-production | false | Производить, даже если цепочка устарела (только для тестовой сети) |
required-participation | 3300 | Минимальное участие в базисных пунктах (3300 = 33%) |
fork-collision-timeout-blocks | 21 | Отсрочек перед принудительным производством при коллизии |
required-participation всегда в базисных пунктах (0–10000 = 0%–100%).
Подробности — в разделе Плагин валидатора.
Рекомендуемые наборы плагинов
Минимальный API-узел
plugin = chain
plugin = json_rpc
plugin = webserver
plugin = p2p
plugin = database_api
plugin = network_broadcast_apiПолный API-узел
plugin = chain
plugin = json_rpc
plugin = webserver
plugin = p2p
plugin = database_api
plugin = network_broadcast_api
plugin = validator_api
plugin = account_by_key
plugin = account_history
plugin = operation_history
plugin = committee_api
plugin = invite_api
plugin = paid_subscription_apiУзел-валидатор
plugin = chain
plugin = p2p
plugin = validator
plugin = json_rpc
plugin = webserver
plugin = database_api
plugin = network_broadcast_api
plugin = validator_api
plugin = snapshot
snapshot-every-n-blocks = 28800
snapshot-dir = /data/snapshots
dlt-block-log-max-blocks = 100000См. также: Плагин chain, Плагин валидатора, Плагин snapshot, Обзор P2P, JSON-RPC API.