Skip to content

Certora

Certora #127

# Github action for verifying the contracts under src/contracts/voting using certora-cli-beta 6
name: certora-review-voting-chain
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- name: Install python
uses: actions/setup-python@v2
with: { python-version: 3.9 }
- name: Install java
uses: actions/setup-java@v1
with: { java-version: "11", java-package: jre }
- name: Install certora cli
run: pip3 install certora-cli==7.21.1
- name: Install solc
run: |
wget https://github.com/ethereum/solidity/releases/download/v0.8.20/solc-static-linux
chmod +x solc-static-linux
sudo mv solc-static-linux /usr/local/bin/solc8.20
- name: Verify rule ${{ matrix.rule }}
run: |
certoraRun --disable_auto_cache_key_gen security/certora/confs/voting/${{ matrix.rule }}
env:
CERTORAKEY: ${{ secrets.CERTORAKEY }}
strategy:
fail-fast: false
max-parallel: 16
matrix:
rule:
- verifyLegality.conf --rule createdVoteHasNonZeroHash votedPowerIsImmutable onlyValidProposalCanChangeTally legalVote method_reachability
- verifyMisc.conf
- verifyPower_summary.conf --rule onlyThreeTokens method_reachability
- verifyProposal_config.conf --rule startedProposalHasConfig createdProposalHasRoots proposalHasNonzeroDuration newProposalUnusedId configIsImmutable getProposalsConfigsDoesntRevert method_reachability
- verifyProposal_states.conf --rule startsBeforeEnds startsStrictlyBeforeEnds proposalLegalStates proposalMethodStateTransitionCompliance proposalTimeStateTransitionCompliance proposalIdIsImmutable proposalImmutability startedProposalHasConfig proposalHasNonzeroDuration method_reachability
- verifyVoting_and_tally.conf --rule votingPowerGhostIsVotingPower sumOfVotes voteTallyChangedOnlyByVoting voteUpdatesTally onlyVoteCanChangeResult votingTallyCanOnlyIncrease strangerVoteUnchanged otherProposalUnchanged otherVoterUntouched method_reachability
- verifyVoting_and_tally.conf --rule cannot_vote_twice_with_submitVote_and_submitVoteAsRepresentative
- verifyVoting_and_tally.conf --rule cannot_vote_twice_with_submitVoteAsRepresentative_and_submitVote
- verifyVoting_and_tally.conf --rule cannot_vote_twice_with_submitVoteSingleProofAsRepresentative_and_submitVote