Welcome to the Capture the Spec contest! This event challenges participants to demonstrate their Solidity and formal verification skills in a fun environment using the Certora Prover.
In this contest, participants will receive a formal specification of a Solidity contract expressed in the Certora Verification Language (CVL). Your task is to write a Solidity contract that satisfies all the rules and invariants defined in the specification, which will be verified using the Certora Prover.
The specification is divided into three parts:
- main multisig.spec: Contains all integrity rules showcasing what each function of the contract should do.
- invariant.spec: Demonstrates inductive properties of the contract.
- sanity.spec: Outlines rules that show legal paths of the contract.
If you want to run specific rule use --rule rule_name
in your terminal
The contest will take place during DSS from November 7 to November 9.
- Eligibility: Open to all participants.
- Original Work: All submissions must be the original work of the participant or team.
- Verification: Participants must ensure that their contracts verify all rules and invariants using the Certora Prover. You can configure the prover using the
run.conf
file provided. - Judging Criteria: The primary judging criteria will be based on the verification of all rules. If no participant verifies all rules, the top 3 submissions will be awarded based on partial verification (highest number of verified rules).
- Signup at https://www.certora.com/signup
- Set Up Your Environment: Prepare your development environment to write and verify Solidity contracts using the Certora Prover. install - https://docs.certora.com/en/latest/docs/user-guide/install.html
- Read the Documentation: Familiarize yourself with the Certora Verification Language.
- Develop Your Contract: Create a Solidity contract that meets all specified rules and invariants.
- Run the Prover: Use the provided
run.conf
file to run the Certora Prover and verify your contract.certoraRun run.conf
. If you getUnrecognized option: -havocInitEVMMemory
justpip uninstall certora-cli
andpip install certora-cli-beta
and start again.
Submissions must be made via a Google Form. Include the link to your verification run of the Certora Prover in your submission. The form can be found here: https://docs.google.com/forms/d/e/1FAIpQLSeyowlo-NMulAVf3HnexJh1cYZIJzK3erCDuCuwm3y3Ksf-nA/viewform.
- 1st, 2nd, and 3rd Place: $1000 each for the three fastest participants/teams who successfully write a contract that verifies all rules. If no one can verify all rules and invariants, the top 3 submissions based on partial verification will win.
- Bonus Prize: An additional $500 will be awarded to the three fastest participants who achieve low live statistics on the following specific rules:
- Rule 1: voteForTransactionIntegrity
- Rule 2: tickCannotDecrease on voteForTransaction
- Rule 3: transactionExist_IFF_notInFuture on voteForTransaction
For any questions or concerns, please reach out to us at [email protected] or at TG https://t.me/+TTuWSF6xfqRjNjY0
Good luck, and may the best team win!