- pcl installed
- Smart contracts deployed on a supported chain
- An assertion written and tested
New to the dApp? See the dApp Overview to understand its features.
Step 1: Authenticate
Authenticate throughpcl:
- A login link appears in your terminal
- Open it in your browser
- Connect your wallet
- Enter the login code from the CLI

Authentication with pcl auth login
Authentication links your wallet address with your
pcl session, allowing you to manage projects that your wallet owns.Step 2: Create a Project
- Navigate to the “Projects” tab or click “Create a Project”
-
Enter project details:
- Project Name: Your protocol name
- Project Description: What your project does
- Target Chain: Where your contracts are deployed
- Click “Continue to contract selection”
-
Add contract addresses:
- Enter each contract you want to protect
- Only contracts where you are the
ownercan be added - The dApp verifies ownership by calling
owner()on each contract
- Review and click “Save and publish”

Creating a Project in the dApp
Only the contract owner can create a project for it. See Ownership Verification for details on verification methods.
Step 3: Store and Submit Your Assertion
Usepcl to upload and submit your assertion:
Step 4: Deploy the Assertion
After submitting viapcl, complete deployment in the dApp:
- Navigate to your project
- Click the “Deployment” tab
- Find your assertion and click “Proceed to Review”
- Select the target contract to protect
-
Review assertion details:
- Assertion name and parameters
- Target contract address
- Trigger conditions
-
Choose environment:
- Staging: For testing (assertions run but don’t block transactions)
- Production: For active protection (assertions block violating transactions)
- Click “Deploy” and sign the transaction

Deploying Assertion in the dApp
After deployment, your assertion enters a timelock period. Once the timelock expires, the assertion becomes actively enforced.
Step 5: Monitor Your Assertions
After deployment, manage assertions through your project dashboard:- View Active Assertions: See all assertions protecting your contracts
- Monitor Status: Check assertion execution and triggered violations
- View Incidents: View incidents that were prevented by assertions
- Update Assertions: Submit new versions as your protocol evolves
- Remove Assertions: Deactivate assertions when needed
Troubleshooting
| Error | Solution |
|---|---|
| ”Contract ownership verification failed” | Ensure your contract has owner() and you’re connected with the owner wallet |
| ”Assertion already exists” | Use a different name or update the existing assertion |
| ”Authentication expired” | Run pcl auth login to refresh |
Recap
You’ve deployed an assertion to protect your protocol:- Authenticate: Connect your wallet via
pcl auth login - Create project: Set up your project and link contracts
- Store and submit: Upload assertion via
pcl - Deploy: Complete deployment in dApp and sign transaction
- Monitor: Track assertion status in your dashboard

