A deployment-time verification system that combines Proof-Carrying Code (PCC) and Proof-Carrying Data (PCD) to verify crucial safety properties of WASM contracts before deployment.
Our system provides strong safety guarantees while letting you use the full power of Rust:
- Type safety verification
- Resource usage control
- Linear type guarantees All without leaving the Rust ecosystem.
- Use any Rust library
- Mature tooling and ecosystem
- Larger developer pool
- More expressive power
- Custom property verification
No need to learn a new language or accept limitations - get safety guarantees while keeping Rust's flexibility.
While Rust's compiler provides excellent safety guarantees, our system adds Move-like verification at deployment time:
- Linear Types: Verify resources can't be copied or discarded
- Type Constraints: Ensure type rules are followed
- Resource Types: Verify proper resource handling
- Type State: Track type state transitions
- Resource Tracking: Verify resources are never duplicated or lost
- Usage Patterns: Ensure resources are properly consumed
- Lifecycle Management: Track resource creation to destruction
- Access Control: Verify proper resource ownership
- State Transitions: Verify valid state changes
- Invariants: Maintain system invariants
- Computation Steps: Verify computation validity
- Safety Rules: Enforce safety properties
- Protocol Rules: Verify compliance with rules
- Safety Properties: Enforce safety constraints
- Computation Validity: Verify correct behavior
- Invariant Preservation: Maintain system invariants
The system provides Move-like guarantees while allowing full use of Rust's ecosystem and expressiveness.
A formal verification technique where code includes mathematical proofs about its behavior1. Used to verify:
- Specific safety properties (e.g., memory bounds)
- Resource usage constraints
- Compliance with protocol rules
A technique for proving properties about computation steps1. Used to verify:
- Each computation step is valid
- Results maintain required properties
- Proofs can be verified independently
Together, these provide strong guarantees about both code behavior and data flow.
When you deploy a WASM contract, the system:
- Analyzes the contract code
- Generates safety proofs (PCC)
- Creates computation proofs (PCD)
- Builds verification circuits
The system verifies:
- Safety properties
- Resource constraints
- Computation correctness
- Protocol compliance
You get one of two outcomes:
✅ Success
- All proofs verify
- Properties hold
- Contract is safe
- Deployment proceeds
❌ Failure
- Shows verification failures
- Points to issues
- Explains problems
- Blocks deployment
[Coming soon]
- Rust toolchain
- arkworks dependencies
cargo build --releaseFootnotes
-
Alessandro Chiesa, "Proof-Carrying Data", MIT PhD Thesis, 2010. ↩ ↩2