Purpose
Assertion DA serves two primary functions:- Persistent Storage: Maintains EVM bytecode of assertions in an accessible location
- Integrity Verification: Validates that on-chain assertion IDs match the Keccak256 hash of the actual assertion bytecode
Key Concepts
Before diving into how Assertion DA works, it’s important to understand two key concepts: the Assertion ID and the DA Prover Signature.Assertion ID
The assertion ID is deterministically derived from the assertion bytecode:Deployable_Assertion_EVM_Bytecode is the flattened smart contract code and the constructor arguments.
This ensures:
- Each unique assertion has a unique identifier
- Assertion integrity can be verified by recomputing the hash
- Not compilable bytecode will fail execution deterministically, so no validation is needed at submission time
Assertion DA Prover Signature
The Assertion DA prover signature is generated and returned by Assertion DA as part of storing the assertion. This proof is used during deployment of the assertion to guarantee that the assertion bytecode is available on Assertion DA.Current Implementation
The current implementation is operated by Phylax Systems with a highly available infrastructure:- Storage: Off-chain server stores assertion bytecode and source code
- Access: Publicly accessible for transparency and verification
- Integration: Works with
pcland the Phylax platform. See the Architecture Overview for details. - Roadmap: Decentralization planned for 2026
How It Works
Storing Assertions
When you store an assertion usingpcl:
pcl does the following:
- Compiles assertion contracts to EVM bytecode
- Uploads flattened source code and compiler options to Assertion DA
- Returns the assertion ID (Keccak256 hash of the bytecode) and DA prover signature
Retrieving Assertions
Assertion Enforcers fetch assertions from Assertion DA upon on-chain deployment:- On-Chain Deployment Event: When an assertion is deployed on-chain, the
addAssertionevent is emitted - Fetch Bytecode: Assertion Enforcers detect the event and fetch the assertion bytecode from Assertion DA using the assertion ID
- Cache Internally: Store assertion bytecode in internal cache for future use
Complete Lifecycle
The complete flow from assertion development to enforcement involves multiple steps:- Development: Write and test assertions locally using
pcl - Storage: Store assertion bytecode in Assertion DA using
pcl store, which returns the assertion ID - Submission: Submit the assertion ID to your project in the Phylax platform using
pcl submit - Deployment: Review the assertion, link it to specific contract addresses, choose Staging or Production environment, and sign the transaction to deploy it on-chain
- Marked for Enforcement/Staging: After the add transaction is accepted on-chain, the State Oracle timelock begins. During that period, the assertion is marked for enforcement (production) or marked for staging (staging environment)
- Enforced/Staged: After the timelock expires, Assertion Enforcers fetch assertions from Assertion DA and execute them during block production. Assertions become enforced or staged
Design Rationale
Why Off-Chain Storage?
- Cost Efficiency: EVM bytecode can be large; on-chain storage would be prohibitively expensive
- Performance: Faster retrieval and caching for high-frequency validation
- Flexibility: Enables future improvements without base layer changes
- Additional Metadata: Supports metadata that wouldn’t be feasible on-chain, such as instant source code verification for transparency and auditing
Why No On-Chain Bytecode Validation?
The protocol intentionally omits bytecode validation because:- PhEVM execution is deterministic
- Not compilable bytecode will consistently fail execution
- This allows Assertion Enforcers to safely discard invalid assertions without verification overhead
Security Considerations
Availability: The highly available infrastructure ensures consistent uptime. Assertion Enforcers cache assertion bytecode locally, so existing enforced assertions continue operating even during potential downtime. Only new assertion deployments require Assertion DA connectivity. Integrity: The Keccak256 hash verification ensures assertions haven’t been modified. Each assertion ID uniquely corresponds to its bytecode. Transparency: Assertions can be retrieved via Assertion DA, enabling users and auditors to verify security measures. Incentive Alignment: Invalid assertions only harm the developer who submitted them, as they will fail execution deterministically.Next Steps
Quickstart Guide
Learn how to store and submit assertions
CLI Reference
Complete reference for pcl commands
Architecture Overview
Understand how Assertion DA fits into the system
Glossary
Learn more about Assertion DA terminology

