# Formal Verification - Trustless Bridge

## Overview

This directory contains formal verification specifications and configuration for the trustless bridge system using Certora Prover.

## Directory Structure

```
verification/
├── certora/
│   ├── certora.conf          # Certora configuration file
│   └── specs/                # Specification files
│       ├── BondManager.spec
│       ├── ChallengeManager.spec
│       ├── InboxETH.spec
│       ├── LiquidityPoolETH.spec
│       └── Lockbox138.spec
├── reports/                  # Generated verification reports
└── README.md                 # This file
```

## Quick Start

### Prerequisites

1. **Certora License**: Obtain license from [Certora](https://www.certora.com/)
2. **Certora Installation**: Install Certora Prover
3. **Dependencies**: Ensure all contract dependencies are available

### Run Verification

```bash
# Run all verifications
bash scripts/bridge/trustless/verify-contracts.sh

# Or run individual contract
certoraRun contracts/bridge/trustless/BondManager.sol \
  --verify BondManager:verification/certora/specs/BondManager.spec \
  --solc solc-0.8.19
```

## Specification Files

### BondManager.spec
Verifies:
- Bond calculation correctness
- Slashing mechanics (50/50 split)
- State exclusivity (cannot be slashed and released)
- Total bonds tracking
- Reentrancy protection

### ChallengeManager.spec
Verifies:
- Challenge window enforcement
- Finalization rules
- Fraud proof verification
- State exclusivity
- Reentrancy protection

### InboxETH.spec
Verifies:
- Rate limiting (cooldown, hourly limit)
- Minimum deposit enforcement
- Relayer fee calculation
- No duplicate claims
- Reentrancy protection

### LiquidityPoolETH.spec
Verifies:
- Minimum ratio enforcement
- Fee calculation
- Liquidity tracking
- Pending claims management
- Access control
- Reentrancy protection

### Lockbox138.spec
Verifies:
- Deposit ID uniqueness
- Replay protection (nonce)
- Processed deposits tracking
- Input validation
- Reentrancy protection

## Configuration

The `certora.conf` file contains:
- Contract paths
- Solidity compiler version (0.8.19)
- Rule files (specifications)
- Prover options
- Output settings

## Reports

Verification reports are saved to `verification/reports/`:
- Individual contract reports
- Summary reports
- Counterexample traces (if violations found)

## Documentation

See `docs/bridge/trustless/FORMAL_VERIFICATION.md` for:
- Detailed property descriptions
- How to interpret results
- CI/CD integration
- Troubleshooting

## Status

✅ **Specifications Complete**: All specification files created  
⏳ **Verification Pending**: Requires Certora license to run

## Next Steps

1. Obtain Certora license
2. Run initial verification
3. Address any property violations
4. Integrate into CI/CD pipeline

