Skip to content

Обзор плагинов

VIZ Ledger использует фреймворк плагинов AppBase. Каждый плагин имеет жизненный цикл (plugin_initializeplugin_startupplugin_shutdown), может регистрировать методы JSON-RPC, может хранить данные в базе данных chainbase и подписываться на сигналы цепочки (например, applied_block).


Категории плагинов

КатегорияОписание
ОсновныеНеобходимы для любого узла
ИнфраструктурныеСетевое взаимодействие, веб-сервер, снапшоты
APIПредоставляют JSON-RPC эндпоинты для клиентов
ИндексированиеИндексируют данные цепочки в chainbase для быстрых запросов
ПроизводствоПодписание и производство блоков
Отладка/ТестированиеТолько для разработки; не для продакшна

Инвентарь плагинов

Основные

ПлагинСтатусЗависимостиJSON-RPC
chainОбязательныйjson_rpc
json_rpcОбязательный

Инфраструктурные

ПлагинСтатусЗависимостиJSON-RPC
webserverНужен для APIjson_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-size2GНачальный размер файла разделяемой памяти
shared-file-dirstateКаталог для файлов разделяемой памяти
inc-shared-file-size2GШаг роста при нехватке места
min-free-shared-file-size500MПорог автоматического расширения
flush-state-interval10000Принудительный сброс на диск каждые N блоков
skip-virtual-opsfalseПропускать виртуальные операции (уменьшает память)
dlt-block-log-max-blocks100000Ёмкость скользящего 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:

json
{
  "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-size32Рабочие потоки для обработки HTTP/WS
webserver-cache-enabledtrueВключить кэширование ответов
webserver-cache-size10000Максимальное количество кэшированных записей

Ключи кэша формируются из 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-blocks100000Ёмкость скользящего DLT-лога
dlt-stats-interval-sec300Интервал логирования статистики пиров

Полная архитектура 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)Инвайт по публичному ключу

Запросы предложений подписок и статуса подписчиков.

МетодОписание
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-keyWIF-ключ(и) для подписи
emergency-private-keyКлюч подписи для экстренного консенсуса
enable-stale-productionfalseПроизводить, даже если цепочка устарела (только для тестовой сети)
required-participation3300Минимальное участие в базисных пунктах (3300 = 33%)
fork-collision-timeout-blocks21Отсрочек перед принудительным производством при коллизии

required-participation всегда в базисных пунктах (0–10000 = 0%–100%).

Подробности — в разделе Плагин валидатора.


Рекомендуемые наборы плагинов

Минимальный API-узел

ini
plugin = chain
plugin = json_rpc
plugin = webserver
plugin = p2p
plugin = database_api
plugin = network_broadcast_api

Полный API-узел

ini
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

Узел-валидатор

ini
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.