How Privora Works
Privora is an L2 rollup for Solana that enables Fully Homomorphic Encryption (FHE) computations. This page explains the system architecture and how data flows through the platform.System Components
Sequencer
The Privora sequencer is the core component that:- Receives encrypted data submissions from clients
- Manages the content-addressable data store
- Executes FHE operations via the modified Solana runtime
- Batches and settles transactions to Solana L1
Content-Addressable Store
FHE ciphertexts are stored off-chain in a content-addressable store:| Property | Description |
|---|---|
| Key | SHA256 hash of the ciphertext |
| Value | Serialized FHE ciphertext (10KB-100KB) |
| Access | Programs fetch via fetch_data(hash) syscall |
FHE Runtime
The FHE runtime extends the Solana BPF VM with:- Custom syscalls for FHE operations (
sol_fhe_add,sol_fhe_mul, etc.) - Extended heap size (~1MB) for ciphertext processing
- Integration with the TFHE library for actual computations
Data Flow
Encryption and Submission
- Client encrypts a value using the sequencer’s FHE public key
- Client submits the ciphertext to the sequencer
- Sequencer computes SHA256 hash of the ciphertext
- Ciphertext is stored in the content store
- Hash is returned to the client for use in transactions
Program Execution
- Client sends transaction containing hash references to encrypted data
- Program loads encrypted values using
EncryptedRef::load() - Runtime fetches ciphertexts from the data store
- FHE operations are performed on the encrypted data
- Results are stored back via
Encrypted::store() - New hash references are saved in program accounts
Decryption
Decryption can happen through two paths:- User Recovery
- MPC Decryption
For values encrypted with dual encryption, users can decrypt locally:This is instant and doesn’t require network calls.
Account Layout
Privora programs use a specific account layout:Security Model
Trust Assumptions
| Component | Trust Level | Notes |
|---|---|---|
| Sequencer | Semi-trusted | Cannot see plaintext; can censor or reorder |
| MPC Network | Threshold trust | k-of-n nodes must collude to decrypt |
| FHE Keys | Distributed | Key generation ceremony |
| User Keys | User-controlled | X25519 keys for recovery |
Data Privacy
- Encrypted data: Only hash references are on-chain; ciphertexts are off-chain
- Computation privacy: FHE operations never expose plaintext
- Access control: Authorization PDAs control who can request decryption
- User recovery: Optional X25519 encryption for instant local decryption
Comparison with Other Approaches
| Approach | Computation Privacy | Verifiability | Performance |
|---|---|---|---|
| Privora (FHE) | Full | Yes | Moderate |
| TEE (SGX) | Depends on HW | Limited | Fast |
| ZK Proofs | Limited to proofs | Yes | Slow |
| MPC Only | Full | Yes | Very slow |