Skip to content

插件概述

VIZ Ledger 使用 AppBase 插件框架。每个插件都有生命周期(plugin_initializeplugin_startupplugin_shutdown),可以注册 JSON-RPC 方法,可以在 chainbase 数据库中存储数据,并可以订阅链信号(如 applied_block)。


插件类别

类别描述
核心任何节点操作所必需
基础设施网络、Web 服务器、快照
API为客户端公开 JSON-RPC 端点
索引将链数据索引到 chainbase 以进行快速查询
生产区块签名和生产
调试/测试仅用于开发;不用于生产

插件清单

核心

插件状态依赖JSON-RPC
chain必需json_rpc
json_rpc必需

基础设施

插件状态依赖JSON-RPC
webserverAPI 必需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-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

将请求转发到 json_rpc 的 HTTP 和 WebSocket 服务器。包含只读响应缓存。

关键配置选项:

选项默认值描述
webserver-http-endpointHTTP 监听地址(如 0.0.0.0:8090
webserver-ws-endpointWebSocket 监听地址(如 0.0.0.0:8091
webserver-thread-pool-size32HTTP/WS 处理工作线程
webserver-cache-enabledtrue启用响应缓存
webserver-cache-size10000最大缓存条目数

缓存键由 method + params(非 id)派生,防止通过轮换请求 id 来绕过。变更方法(network_broadcast_api.*)永不缓存。每个新应用区块时缓存清空。

完整详情参见 Web 服务器


p2p

DLT P2P 网络——区块和交易传播、节点管理、少数派 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

区块签名和生产。运行 250ms 定时器循环;当下一个槽位分配给已配置的验证者账户时生产区块。

关键配置选项:

选项默认值描述
validator验证者账户名
private-key签名用 WIF 私钥
emergency-private-key紧急共识签名密钥
enable-stale-productionfalse链过期时也生产(仅限测试网)
required-participation3300最低参与度(基点,3300 = 33%)
fork-collision-timeout-blocks21冲突时强制生产前的延迟次数

required-participation 始终以基点表示(0–10000 = 0%–100%)。

完整生产时序和 fork 处理详情参见验证者插件


推荐插件集

最小 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 插件验证者插件快照插件P2P 概述JSON-RPC API