Security & Transparency

We know where
to improve.
We say it.

Most blockchain projects hide security issues until they become exploits. We commission independent audits and publish everything — including what's wrong.

Savitri is in Testnet. We are here exactly to find these problems. Audit transparency is our security model.

TESTNET — NOT PRODUCTION READY
68
TOTAL FINDINGS
26
ALREADY RESOLVED
38%
REMEDIATION

Independent external audit — February 24, 2026

Coverage: PoU consensus protocol, Rust client,
smart contract runtime, RPC endpoints, P2P networking.

CRITICAL
16
HIGH
22
MEDIUM
18
LOW
12

TOTAL: 68 findings  ·  No hidden findings. All published.

Independent audit completed in February 2026. Full report available on request: [email protected]

Remediation status

Updated with every patch. Last update: March 2026.

CRITICAL  ·  16

Active remediation — ETA Q2 2026

16 In progress
0 Resolved

The critical findings concern mainly edge cases in the BFT protocol and input validation in some RPC endpoints under extreme load. None have been exploited — we are in Testnet with a controlled network.

The core consensus is isolated from the critical findings. The PoU + BFT finality mechanism works correctly in normal Testnet usage.

HIGH  ·  22

Under review — partial patches published

14 In progress
8 Resolved and verified

Most High findings concern P2P networking hardening under DoS attacks and error handling in degraded network conditions.

MEDIUM  ·  18

Prioritized backlog

8 In backlog
10 Resolved

Medium findings are mainly improvements to logging, error handling, and robustness in non-critical scenarios. They do not impact consensus integrity.

LOW  ·  12

Planned pre-Mainnet

4 To do
8 Resolved

Code quality improvements, internal documentation, and minor optimizations. No impact on Testnet operational security.

Remediation progress: 26/68 findings resolved (38%)

ETA COMPLETE: Q2 2026

Goal: 100% remediation completed before Mainnet launch.

The code that exists today

0 unsafe

Zero unsafe blocks in the core Rust

Verifiable with:
grep "unsafe"
in the repository

Re-entrancy

Re-entrancy protection built-in in the runtime

Standard in smart contracts — not delegated to the developer

MIT + Apache 2.0

Open source — auditable by anyone

fork welcome

● verify zero unsafe — bash
# Verify zero unsafe blocks in core code
git clone https://github.com/savitri-network/savitri
grep -r "unsafe" src/ --include="*.rs" \
  | grep -v "// " \
  | grep -v "test"

# Expected output: no results
# (zero unsafe blocks in the production src/ path)

Some external dependencies (libp2p, RocksDB) contain unsafe Rust internally — this is normal for system libraries. The Savitri core code (src/) contains none. The audit also verified critical dependencies.

How the defense is structured

// 3 protection layers — bottom to top
LAYER 1 Network Layer libp2p + QUIC

Active protections

  • ·QUIC/UDP with TLS 1.3 — all traffic encrypted in transit
  • ·ed25519 for peer authentication — no anonymous peers
  • ·Kademlia DHT with diversified peers — eclipse attack resistant
  • ·Rate limiting per IP — basic DoS protection
  • ·Gossipsub — message propagation with topic firewall

Known vulnerabilities (from report)

Some High findings concern additional hardening under massive DoS attacks. In remediation.

LAYER 2 Protocol Layer PoU + BFT

Active protections

  • ·Sybil resistance: PoU Score hardware-bound, not purchasable
  • ·Byzantine fault tolerance: 2f+1 quorum (67% threshold)
  • ·Deterministic finality: BFT-finalized block = irrevocable
  • ·Equivocation penalty: −50% score immediate for double vote
  • ·Exponential score decay: prevents passive reputation accumulation

Known vulnerabilities (from report)

The 16 Critical findings concern BFT edge cases and input validation under extreme stress conditions. Consensus works correctly in normal usage.

LAYER 3 Application Layer Smart Contract Runtime

Active protections

  • ·Re-entrancy protection built-in in the runtime (not delegated to the developer)
  • ·Keccak256 storage slot — collision resistance
  • ·Savitri-20/721/1155 — verified standards, compatible with EVM audit tools
  • ·Flat fee model — no gas estimation attack surface

Known vulnerabilities (from report)

No critical findings in the application layer. Some Medium findings related to error handling in smart contracts in edge case scenarios.

Found
something?

The responsible disclosure program is active. If you find a vulnerability, we want to know — before someone else finds it in production.

01

Submit a report to [email protected]
or through the secure form on this page

02

The team confirms receipt within 48 hours

03

Evaluation and classification of the finding within 5 days

04

If the finding is valid:

  • · It is acknowledged in the Security Changelog
  • · You receive a SAVI reward proportional to severity
  • · Your name (or alias) appears in the public credits
05

The vulnerability is fixed and the patch published before any public disclosure

Bug Bounty — Reward in SAVI

Severity Reward Response
Critical 5.000 – 50.000 SAVI < 24h
High 1.000 – 5.000 SAVI < 48h
Medium 500 – 1.000 SAVI < 5 days
Low 100 – 500 SAVI < 10 days

Scope

IN SCOPE

  • PoU/BFT consensus protocol
  • Rust client (Lightnode, Masternode)
  • RPC endpoints (:8546)
  • Smart contract runtime
  • P2P networking (libp2p, QUIC)
  • Wallet and key derivation

OUT OF SCOPE

  • Massive DoS (infrastructure)
  • Bugs in upstream third parties
  • Social engineering / phishing
  • Undocumented test endpoints

Security changelog — public

Every security patch is documented here.

MEDIUM March 2026 v0.5.1 ✓ CLOSED

Fix: input validation in endpoint /savitri/account/{address} with malformed addresses that caused panic in the RPC thread.

Finding #041 from Feb 2026 report. Verified closed.

HIGH February 2026 v0.5.0 ✓ CLOSED

Fix: rate limiting per IP on RPC endpoints. A single client could saturate the thread pool with malformed requests.

Finding #018 from Feb 2026 report.

LOW February 2026 v0.4.9 ✓ CLOSED

Fix: logging of private keys in verbose debug mode. Keys were not exposed in production (RUST_LOG=info) but only with RUST_LOG=trace. Hardened anyway.

Finding #056 from Feb 2026 report.

View full changelog on GitHub →