Passa al contenuto principale

Tipi di Nodo

Savitri Network supporta tre tipi di nodo, ognuno ottimizzato per ruoli differenti.

Masternode

Ruolo: Coordinatore di rete, formazione dei gruppi, certificazione dell'accettazione dei blocchi.

./target/release/savitri-masternode config/masternode.toml
FunzionalitàDettagli
ConsensoBFT completo + PoU
ArchiviazioneRocksDB (obbligatoria)
P2PMesh gossipsub completo
GruppiForma e gestisce i gruppi di lightnode
Produzione blocchiNo (coordina i lightnode)
RPCOpzionale (funzionalità rpc)
ZKPOpzionale (zkp-plonk, zkp-arkworks)

Configurazione

# 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"

Responsabilità Principali

  • Formazione dei gruppi: Assegna i lightnode ai gruppi in base ai punteggi PoU
  • Accettazione dei blocchi: Verifica i Certificati di Accettazione dei Blocchi (BAC) dai gruppi
  • Gestione dei peer: Monitora l'attività tramite messaggi gossipsub, rimuove i nodi inattivi dopo il timeout
  • Annunci di gruppo: Pubblica le assegnazioni di gruppo ogni ~30 secondi

Lightnode

Ruolo: Produttore di blocchi, elaboratore di transazioni, partecipante 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
FunzionalitàDettagli
ConsensoPunteggio PoU + elezione intra-gruppo
ArchiviazioneRocksDB (opzionale su mobile)
P2PGossipsub + richiesta-risposta diretta
GruppiPartecipa ai gruppi assegnati dal masternode
Produzione blocchiSì (quando eletto come propositore)
RPCSì (porta 8545)
MempoolPipeline SIMD-ottimizzata completa

Argomenti CLI

ArgomentoPredefinitoDescrizione
--listen-port4001Porta di ascolto P2P
--tx-interval-secs2Intervallo di generazione transazioni (0 = velocità massima)
--block-interval-secs10Intervallo di produzione blocchi
--max-block-txs32Numero massimo di transazioni per blocco
--dblightnode.dbPercorso del database
--network-key-pathlightnode-network.keyChiave di identità P2P
--producer-key-pathlightnode-producer.keyChiave di firma blocchi
--bootstrapNessunoPeer di bootstrap (PEER_ID@/ip4/IP/tcp/PORT)

Flag di Funzionalità

FlagDescrizione
desktopOttimizzazioni per desktop (predefinito)
mobileOttimizzazioni per mobile (archiviazione ridotta)
rocksdbArchiviazione RocksDB (predefinita)
lightweight-p2pP2P minimale (meno topic)

Guardian

Ruolo: Nodo archivio/backup, modalità osservatore (nessuna partecipazione al consenso).

./target/release/savitri-guardian
FunzionalitàDettagli
ConsensoNessuno (solo osservatore)
ArchiviazioneRocksDB (archivio completo)
P2PSolo sottoscrizione (nessuna pubblicazione)
Produzione blocchiNo
MonitoraggioSì (funzionalità di archivio e monitoraggio)

Casi d'Uso

  • Archivio completo della catena
  • Backup e ripristino dei dati
  • Fonte dati per block explorer
  • Analisi e monitoraggio

Avviare una Rete Locale

2 Masternode + 10 Lightnode

# Windows
scripts/run_all.bat

# Oppure manualmente
./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

Porte (Test Locale)

NodoPorta P2PNote
MN 1-55021-5025Masternode
LN 1-105001-5010Lightnode
Generatore TX5029Generatore di transazioni

Monitoraggio

# Verifica i nodi in esecuzione
scripts/check_status.bat

# Ferma tutti
scripts/stop_all.bat

# Metriche Prometheus
curl http://localhost:9090/metrics

Docker

# Singolo masternode
cd savitri-masternode
docker build -t savitri-masternode .
docker run -p 4021:4021 -p 9090:9090 savitri-masternode

# Testnet completo
cd savitri-testnet
docker-compose up -d
# Grafana: http://localhost:3000