Introduction
Use this tutorial when you are new to the Credible Layer and want one guided, happy-path run from local project setup to an enforced assertion. By the end of this tutorial, you will:- Set up your project structure
- Test your assertion
- Deploy your contract
- Authenticate with
pcl - Create a project
- Store your assertion
- Submit your assertion to the Credible Layer
- Deploy your assertion
- Verify that the assertion is working
If you already know the overall flow and only need one task, use the dedicated guides for installation, storing and submitting assertions, or deployment in the platform.
Prerequisites
Before you begin, make sure you have:pclinstalled (see the Installation Guide)- Solidity compiler installed
- Foundry installed (see the Foundry Installation Guide)
- A browser wallet for authentication (MetaMask or similar)
- Access to the Credible Layer Demo, reach out to us on Telegram if you’re interested in getting access
1. Project Setup
We’ve created an example project that contains complete assertion examples that work out of the box and can serve as a starting point for your own projects. The project can be found here. For a detailed understanding of what an assertion is and how it works, see the Assertion Guide. For testing assertions, see the Testing Assertions guide.The
credible-layer-starter repo has several examples that you can deploy and try out once you’re done with this guide.
Specific instructions can be found in the README.2. Running Tests
Use thepcl CLI to run your tests:
3. Deploy Your Contract
First, import your private key into an encrypted Foundry keystore so you never have to expose it as an environment variable:<RPC_URL>: The RPC URL of the network you’re deploying to<account_name>: The name you chose when importing your key above
Deployed to: address in the output of the command.
4. Authenticating with Credible Layer
Here’s a full video that you can use to follow the full process from authentication to activating the assertion:
Before submitting your assertion, you need to authenticate:
Make sure to use the same address as you set as the initial owner of the contract in the previous step.
If authentication fails, first confirm that your wallet is on the correct network and that
pcl is using the expected auth URL. Then use the Troubleshooting guide for the common failure modes.5. Create a Project
Once you have deployed your contract, you’ll need to create a project in the platform if you don’t have one already. Navigate to app.phylax.systems and create a new project. When asked to link your contract, use the address of the contract you deployed in the previous step. For a more detailed overview of how to use the platform and manage projects, see the Deploy Assertions guide.6. Storing Your Assertion
Next, store your assertion in the Assertion Data Availability layer (Assertion DA):OwnableAssertion is the name of the assertion.
This command submits your assertion’s bytecode and source code to be stored by the Assertion DA, making it available for verification by the network.
7. Submitting Your Assertion
Finally, submit your assertion to the platform:pcl store command:
<project_name> is the name of the project you created in the platform, capitalized in the same way as you did when creating the project.
8. Deploying Your Assertion
To finish the tutorial, open the platform at app.phylax.systems and navigate to the project that the assertion was added to. You’ll notice that there’s one assertion ready for deployment. Go ahead and proceed to review and deploy it. During the review process, you’ll choose whether to deploy to Staging (for testing) or Production (for active protection).After deployment, your assertion enters a timelock period. During this period, it is marked for enforcement (production) or marked for staging (staging environment). After the timelock expires, the assertion becomes enforced (production) or staged (staging), actively protecting your contract. See the Glossary for details about timelocks.
9. Verify That The Assertion Is Working
Now that your assertion is deployed and enforced (after the timelock period), let’s verify that it’s working as expected. We’ll do this by attempting to change the ownership of the contract, which should trigger our assertion and prevent the change. First, let’s check the current owner of the Ownable contract. ReplaceADDRESS_OF_OWNABLE_CONTRACT with the address of your deployed Ownable contract and RPC_URL with your network’s RPC URL:
NEW_OWNER_ADDRESS with an address that is not the initial owner. This transaction should cause the assertion to revert, which will result in the transaction being dropped:
Conclusion
Congratulations! You’ve successfully created, tested, deployed, and verified your first assertion usingpcl. You can now go ahead and start implementing assertions in your own projects.
Next Steps
- Read the Assertions Book: Check out the Assertions Book for more detailed explanations and a collection of assertions for various use cases
- Try more complex assertions: We’ve created some more assertions in the credible-layer-starter repo that are ready to be deployed and used with a couple of commands
- Integrate with your own projects: Apply assertions to your existing smart contracts
- Join the community: Share your assertions and learn from others in the Phylax Telegram
pcl and its commands, see Store and Submit Assertions and pcl Reference.
For a comprehensive list of terms and concepts used in the Credible Layer, see the Glossary.
