New to the Credible Layer dApp? Start with the dApp Overview to understand what the dApp is and what it can do.
Prerequisites
- The Credible Layer CLI (
pcl) must be installed. If you don’t have it installed, follow the pcl quickstart guide. - You must be authenticated with the dApp (see Authentication below).
- You should have smart contracts deployed that you want to protect with assertions.
Authentication
Before using the dApp, authenticate through thepcl CLI:
-
Run the authentication command:
- The CLI will provide a login link. Open it in your browser.
- Connect your wallet when prompted.
- Enter the login code displayed in the CLI.
- You’re now authenticated and can use the dApp!

Authentication links your wallet address with your CLI session, allowing you to manage projects that your wallet owns.
pcl CLI commands, refer to the pcl reference.
Exploring Projects
To browse existing projects and their security measures:- Click the “Explorer” tab in the navigation bar.
- Browse all projects on the Credible Layer.
- Search for specific projects by name or contract address.
-
Click on any project to view:
- Project details and description
- Linked contract addresses
- Active assertions protecting the contracts
- Assertion implementation details

Creating a Project
To create a new project for your smart contracts:- Navigate to the “Projects” tab.
- Click “Create a project”.
-
Enter project details:
- Project Name: Typically matches your smart contract or protocol name
- Project Description: Brief explanation of what your project does
- Target Chain: The blockchain where your contracts are deployed
- Click “Continue to contract selection”.
-
Add one or more contract addresses:
- Enter each contract address you want to protect
- Only contracts where you are the
ownercan be added - The dApp verifies ownership by calling the
owner()function on each contract
- Review your project details.
- Click “Publish” to create the project.

Only the owner of a contract can create a project for it. Additional verification methods will be available in the future. For now, ensure your contract has an
owner() function that returns the current owner address.For more details, see Ownership Verification.Linking Assertions to Your Project
Once your project is created, you can link assertions to protect your contracts. This is a two-step process: storing the assertion and submitting it through the dApp.Step 1: Store and Submit via CLI
First, use thepcl CLI to store and submit your assertion:
-
Store the assertion bytecode:
Example:
-
Submit the assertion to your project:
Example:
Step 2: Link via dApp
After submitting via CLI, complete the linking process in the dApp:- Navigate to your project dashboard.
- Click on the “Ready for Submission” tab.
- Find your assertion in the list and click “Proceed to Review”.
- Select the target contract you want to protect with this assertion.
-
Review the assertion details:
- Assertion name and parameters
- Target contract address
- Trigger conditions
- Click “Deploy” to link the assertion to your contract.
- Confirm the transaction in your wallet.

Once linked, the assertion will begin protecting your contract. Transactions that violate the assertion will be automatically rejected by network validators running the Credible Layer.
Managing Your Assertions
After linking assertions, you can manage them through your project dashboard:- View Active Assertions: See all assertions currently protecting your contracts
- Monitor Status: Check assertion execution status and any triggered violations
- Update Assertions: Submit new versions of assertions as your protocol evolves
- Deactivate Assertions: Temporarily or permanently disable assertions if needed
Complete Walkthrough Video
Here’s a full video walkthrough of the entire process from authentication to activating assertions:Troubleshooting
”Contract ownership verification failed”
- Ensure your contract has an
owner()function that returns an address - Verify you’re connected with the wallet that owns the contract
- Check that the contract address is correct
”Assertion already exists”
- Each assertion can only be submitted once per project
- Use a different assertion name or update the existing assertion
”Authentication expired”
- Run
pcl auth loginagain to refresh your session - Keep your CLI session active while using the dApp

