메인 콘텐츠로 건너뛰기

노드 유형

Savitri Network는 세 가지 노드 유형을 지원하며, 각각 다른 역할에 최적화되어 있습니다.

Masternode

역할: 네트워크 조정자, 그룹 구성, 블록 수락 인증.

./target/release/savitri-masternode config/masternode.toml
기능세부 사항
합의완전 BFT + PoU
스토리지RocksDB (필수)
P2P완전 gossipsub 메시
그룹lightnode 그룹 구성 및 관리
블록 생성없음 (lightnode 조정)
RPC선택 사항 (rpc 기능)
ZKP선택 사항 (zkp-plonk, zkp-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 점수를 기반으로 lightnode를 그룹에 배정
  • 블록 수락: 그룹으로부터 블록 수락 인증서(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 + 직접 요청-응답
그룹masternode가 배정한 그룹에 참여
블록 생성예 (제안자로 선출 시)
RPC예 (포트 8545)
멤풀완전한 SIMD 최적화 파이프라인

CLI 인수

인수기본값설명
--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-5025Masternode
LN 1-105001-5010Lightnode
TX 생성기5029트랜잭션 생성기

모니터링

# 실행 중인 노드 확인
scripts/check_status.bat

# 모두 중지
scripts/stop_all.bat

# Prometheus 메트릭
curl http://localhost:9090/metrics

Docker

# 단일 masternode
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