跳到主要内容

节点类型

Savitri Network 支持三种节点类型,每种类型针对不同角色进行了优化。

主节点(Masternode)

角色:网络协调器,负责分组组建、区块接受认证。

./target/release/savitri-masternode config/masternode.toml
功能详情
共识完整 BFT + PoU
存储RocksDB(必需)
P2P完整 gossipsub 网状网络
分组组建并管理轻节点分组
出块否(协调轻节点)
RPC可选(rpc 特性)
ZKP可选(zkp-plonkzkp-arkworks

配置

# config/masternode/mn-1.toml
[network]
listen_port = 5021
max_peers = 50
group_size = 7
group_node_timeout_secs = 600

[consensus]
block_time_secs = 5
slashing_enabled = true

[storage]
db_path = "data/mn1"

主要职责

  • 分组组建:根据 PoU 分数将轻节点分配至各组
  • 区块接受:验证来自各组的区块接受证书(BAC)
  • 节点管理:通过 gossipsub 消息追踪节点存活状态,超时后移除不活跃节点
  • 分组公告:每约 30 秒发布一次分组分配信息

轻节点(Lightnode)

角色:区块生产者,交易处理器,PoU 参与者。

cargo run -p savitri-lightnode --bin lightnode -- \
--listen-port 4001 \
--tx-interval-secs 2 \
--block-interval-secs 10 \
--max-block-txs 32 \
--bootstrap PEER_ID@/ip4/127.0.0.1/tcp/5021
功能详情
共识PoU 评分 + 组内选举
存储RocksDB(移动端可选)
P2PGossipsub + 直接请求响应
分组参与主节点分配的分组
出块是(被选为提案者时)
RPC是(端口 8545)
内存池完整 SIMD 优化管线

命令行参数

参数默认值描述
--listen-port4001P2P 监听端口
--tx-interval-secs2交易生成间隔(0 = 最大速度)
--block-interval-secs10出块间隔
--max-block-txs32每区块最大交易数
--dblightnode.db数据库路径
--network-key-pathlightnode-network.keyP2P 身份密钥
--producer-key-pathlightnode-producer.key区块签名密钥
--bootstrap引导节点(PEER_ID@/ip4/IP/tcp/PORT

特性标志

标志描述
desktop桌面端优化(默认)
mobile移动端优化(更轻量的存储)
rocksdbRocksDB 存储(默认)
lightweight-p2p最小化 P2P(更少话题)

守护节点(Guardian)

角色:存档/备份节点,观察者模式(不参与共识)。

./target/release/savitri-guardian
功能详情
共识无(仅观察者)
存储RocksDB(完整存档)
P2P仅订阅(不发布)
出块
监控是(存档 + 监控特性)

使用场景

  • 完整链存档
  • 数据备份与恢复
  • 区块浏览器数据源
  • 数据分析与监控

运行本地网络

2 个主节点 + 10 个轻节点

# Windows
scripts/run_all.bat

# 或手动启动
./target/release/savitri-masternode exucutables/configs/masternode/mn-1.toml &
./target/release/savitri-masternode exucutables/configs/masternode/mn-2.toml &

for i in $(seq 1 10); do
cargo run -p savitri-lightnode --bin lightnode -- \
--listen-port $((5000 + i)) \
--db "lightnode${i}.db" \
--bootstrap PEER_ID@/ip4/127.0.0.1/tcp/5021 &
done

端口(本地测试)

节点P2P 端口备注
MN 1-55021-5025主节点
LN 1-105001-5010轻节点
交易生成器5029交易生成器

监控

# 检查运行中的节点
scripts/check_status.bat

# 停止所有节点
scripts/stop_all.bat

# Prometheus 指标
curl http://localhost:9090/metrics

Docker

# 单个主节点
cd savitri-masternode
docker build -t savitri-masternode .
docker run -p 4021:4021 -p 9090:9090 savitri-masternode

# 完整测试网
cd savitri-testnet
docker-compose up -d
# Grafana: http://localhost:3000