synor/formal
Gulshan Yadav 1606776394 feat: Phase 7 critical tasks - security, formal verification, WASM crypto
## Formal Verification
- Add TLA+ specs for UTXO conservation (formal/tla/UTXOConservation.tla)
- Add TLA+ specs for GHOSTDAG ordering (formal/tla/GHOSTDAGOrdering.tla)
- Add mathematical proof of DAA convergence (formal/proofs/)
- Document Kani verification approach (formal/kani/)

## Bug Bounty Program
- Add SECURITY.md with vulnerability disclosure process
- Add docs/BUG_BOUNTY.md with $500-$100,000 reward tiers
- Define scope, rules, and response SLA

## Web Wallet Dilithium3 WASM Integration
- Build WASM module via Docker (498KB optimized)
- Add wasm-crypto.ts lazy loader for Dilithium3
- Add createHybridSignatureLocal() for full client-side signing
- Add createHybridSignatureSmart() for auto-mode selection
- Add Dockerfile.wasm and build scripts

## Security Review ($0 Approach)
- Add .github/workflows/security.yml CI workflow
- Add deny.toml for cargo-deny license/security checks
- Add Dockerfile.security for audit container
- Add scripts/security-audit.sh for local audits
- Configure cargo-audit, cargo-deny, cargo-geiger, gitleaks
2026-01-10 01:40:03 +05:30
..
kani feat: Phase 7 critical tasks - security, formal verification, WASM crypto 2026-01-10 01:40:03 +05:30
proofs feat: Phase 7 critical tasks - security, formal verification, WASM crypto 2026-01-10 01:40:03 +05:30
tla feat: Phase 7 critical tasks - security, formal verification, WASM crypto 2026-01-10 01:40:03 +05:30
README.md feat: Phase 7 critical tasks - security, formal verification, WASM crypto 2026-01-10 01:40:03 +05:30

Synor Formal Verification

This directory contains formal verification artifacts for the Synor blockchain.

Overview

Formal verification provides mathematical proofs that critical system properties hold for all possible inputs, not just tested examples.

Verification Layers

Layer Tool What It Verifies
Specification TLA+ State machine invariants
Code Kani Rust implementation correctness
Property Proptest Random input testing
Mathematical Proofs Algorithm correctness

Directory Structure

formal/
├── tla/                      # TLA+ specifications
│   ├── UTXOConservation.tla  # UTXO value conservation
│   └── GHOSTDAGOrdering.tla  # DAG ordering determinism
├── kani/                     # Kani proof harnesses
│   └── README.md             # How to use Kani
└── proofs/                   # Mathematical proofs
    └── DifficultyConvergence.md

Critical Invariants Verified

1. UTXO Conservation

Property: Total value of UTXOs equals total minted (coinbase) minus fees.

Verification:

  • TLA+ specification (tla/UTXOConservation.tla)
  • Property testing (crates/synor-consensus/tests/property_tests.rs)
  • Kani proofs (TODO)

2. No Double-Spend

Property: Each UTXO can only be spent once.

Verification:

  • TLA+ specification (in UTXOConservation.tla)
  • Property testing (utxo_add_remove_identity)
  • Unit tests

3. DAG Ordering Determinism

Property: Given the same DAG, all nodes compute identical blue sets and ordering.

Verification:

  • TLA+ specification (tla/GHOSTDAGOrdering.tla)
  • Unit tests (65 tests in synor-dag)

4. Difficulty Convergence

Property: Under stable hashrate, block time converges to target.

Verification:

  • Mathematical proof (proofs/DifficultyConvergence.md)
  • Property testing (difficulty_adjustment_bounded)

5. Supply Bounded

Property: Total supply never exceeds MAX_SUPPLY (21M).

Verification:

  • TLA+ specification (SupplyBounded invariant)
  • Property testing (amount tests)
  • Compile-time enforcement

Running Verification

TLA+ (TLC Model Checker)

# Install TLA+ Toolbox or use CLI
tlc formal/tla/UTXOConservation.tla

# Or use online version: https://lamport.azurewebsites.net/tla/toolbox.html

Property Tests

cargo test -p synor-consensus property

Kani (when installed)

cargo install --locked kani-verifier
kani setup

cd crates/synor-consensus
kani --tests

Verification Status

Component Property TLA+ Kani Proptest Math
UTXO Conservation -
UTXO No double-spend -
DAG Ordering determinism - -
Difficulty Convergence - -
Difficulty Bounded adjustment - -
Amount Overflow safety - -

Legend: Done | Planned | - Not applicable

Next Steps

  1. Install Kani and add proof harnesses to each crate
  2. Run TLC on TLA+ specs with small model
  3. CI Integration for property tests and Kani
  4. Expand proofs for network layer properties

References