Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
321 commits
Select commit Hold shift + click to select a range
3d5b6c6
acccess control panics and non-panics
raz-certora Nov 23, 2025
efb81a6
status
raz-certora Nov 23, 2025
d68a354
access_control_non_panic fixes and status.
raz-certora Nov 24, 2025
6bf05ef
math rules.
raz-certora Nov 24, 2025
6dee88c
naming changes
raz-certora Nov 24, 2025
6714a33
script that checks //status lines.
raz-certora Nov 24, 2025
5a5e80c
fix rules
chandrakananandi Nov 25, 2025
1a175c3
wip smart account
chandrakananandi Nov 25, 2025
4d34cc1
ownable_constructor name change
raz-certora Nov 24, 2025
ddcc5b9
script change
raz-certora Nov 24, 2025
9d084f1
prover args that helps with timeout
raz-certora Nov 25, 2025
6a1d90a
update math rule
raz-certora Nov 25, 2025
1c494c6
status update
raz-certora Nov 25, 2025
2198b2e
start of work on policies
raz-certora Nov 25, 2025
818add3
math
raz-certora Nov 25, 2025
c65af20
math
raz-certora Nov 25, 2025
be92ed3
pausable and upgradeable
raz-certora Nov 25, 2025
b3ca190
wip
chandrakananandi Nov 25, 2025
d995c31
policies rules
raz-certora Nov 25, 2025
2133292
upgradeable contract
chandrakananandi Nov 26, 2025
3f5286d
use feature flag
chandrakananandi Nov 26, 2025
deda31f
naming
raz-certora Nov 26, 2025
3463c1d
First attempt at soroban CI
aehyvari Nov 26, 2025
abd93cc
simple threshold panics and non-panics wip
raz-certora Nov 26, 2025
dc20589
weighted threshold problematic with multiple contracts.
raz-certora Nov 26, 2025
2cd11f6
Try to get the version right
aehyvari Nov 26, 2025
b45411e
Add a missing env
aehyvari Nov 26, 2025
1b05437
Try with stable
aehyvari Nov 26, 2025
6557334
statuses
raz-certora Nov 26, 2025
ac1a932
access_control complex invariants - wip
raz-certora Nov 26, 2025
f158074
Try to use a commit hash for the run action
aehyvari Nov 26, 2025
5d30ad3
Add just to CI
aehyvari Nov 26, 2025
43f0e23
access_control invariants inclduing constructor assumptions
raz-certora Nov 26, 2025
15742b3
wip smart account
chandrakananandi Nov 26, 2025
aa514c7
expand target
chandrakananandi Nov 26, 2025
fdeff42
remove optimistic loop flag except when comparing symbols
chandrakananandi Nov 26, 2025
9b78da5
remove optimistic when not needed
chandrakananandi Nov 26, 2025
b2ebc9f
fix confs
chandrakananandi Nov 26, 2025
12a73cb
Merge pull request #1 from Certora/antti/soroban-ci
raz-certora Nov 27, 2025
4330913
remove redundant rule
raz-certora Nov 27, 2025
a4c4f52
status fix
raz-certora Nov 27, 2025
9103901
merkle_distributor start
raz-certora Nov 27, 2025
622032d
changed to "server": "production" everywhere
raz-certora Nov 27, 2025
1f87b08
CI for contract-utils
raz-certora Nov 27, 2025
965748a
typos
raz-certora Nov 27, 2025
43284de
fix missing confs
raz-certora Nov 27, 2025
c93274f
renaming yml
raz-certora Nov 27, 2025
68f23f3
fix ymls
raz-certora Nov 27, 2025
c81fd4c
fix yml
raz-certora Nov 27, 2025
92fdbd3
fix yml
raz-certora Nov 27, 2025
a1b9277
yml fix
raz-certora Nov 27, 2025
8b3c637
status access_control_invariants
raz-certora Nov 27, 2025
508ce16
no need for optimistic loop
chandrakananandi Nov 29, 2025
b80958f
wip token setup
chandrakananandi Nov 29, 2025
f00c39d
wip token setup
chandrakananandi Nov 29, 2025
9518a3c
fungible token setup
chandrakananandi Nov 30, 2025
b65a463
vault WIP,not done yet
chandrakananandi Nov 30, 2025
bbac172
split access control conf
raz-certora Nov 30, 2025
6247fa6
yml fixes
raz-certora Nov 30, 2025
b085b4b
thresholds
raz-certora Nov 30, 2025
a9062c4
weighted threshold - constant propogation spurious violation.
raz-certora Nov 30, 2025
c7c8d22
script fix.
raz-certora Nov 30, 2025
56f69f5
status: bug more clear
raz-certora Nov 30, 2025
68ee4b9
consistent naming
raz-certora Nov 30, 2025
1584f12
spending limit rules wip
raz-certora Nov 30, 2025
638d257
yml fix
raz-certora Nov 30, 2025
3bacb17
more advanced spending_limit rule - wip
raz-certora Dec 1, 2025
ca56d9d
Update the certora action version
aehyvari Dec 1, 2025
d6853ac
view change to merkle
raz-certora Dec 1, 2025
81d85a9
fungible rules - wip
raz-certora Dec 1, 2025
ddf6f25
Merge pull request #3 from Certora/antti/update-action-version
raz-certora Dec 2, 2025
dc66fcc
naming fix
raz-certora Dec 2, 2025
b51d7b6
status
raz-certora Dec 2, 2025
7cc8fc9
attempt at defining a nondet_signers_vec
raz-certora Dec 2, 2025
f33a440
fungible non_panics
raz-certora Dec 2, 2025
be6ce4a
vault sanity
chandrakananandi Dec 3, 2025
8c1e5da
copy paste error
chandrakananandi Dec 3, 2025
e54c4ae
nonfungible modulo token-uri sanity rules
chandrakananandi Dec 3, 2025
7a0fe89
vault fixes
chandrakananandi Dec 3, 2025
3832dca
fungible non-panics
raz-certora Dec 4, 2025
c4c8c43
allowlist, blocklist, capped.
raz-certora Dec 4, 2025
25f4ed6
misc
raz-certora Dec 4, 2025
dd217d7
statuses.
raz-certora Dec 4, 2025
a974d7b
reinserted assumption for panic rule
raz-certora Dec 4, 2025
72774ef
non-fungible rules.
raz-certora Dec 7, 2025
5c8dedf
smart account sanity modulo add_context_rule, do_check_auth, and trac…
chandrakananandi Dec 8, 2025
ae1bc8f
update confs
chandrakananandi Dec 8, 2025
dcfdd1b
cleanup and yml
raz-certora Dec 8, 2025
60f2e95
nft progress
raz-certora Dec 8, 2025
1a1c0c2
nft non-panics done
raz-certora Dec 8, 2025
0b727b7
burnable, royalties and start of enumerable.
raz-certora Dec 8, 2025
b19b506
remove todo about TTL
raz-certora Dec 8, 2025
ce4c2f6
added integrity rule about sequential mint
raz-certora Dec 8, 2025
16a7080
status
raz-certora Dec 8, 2025
5bef338
conseuctive and enumerable nfts.
raz-certora Dec 8, 2025
3b9ab4f
status
raz-certora Dec 8, 2025
c504834
status and nits
raz-certora Dec 9, 2025
0085a0f
vault start
raz-certora Dec 9, 2025
f9b3bc4
enforce_non_panic without cloning context
chandrakananandi Dec 9, 2025
93b33c4
cargo fmt
chandrakananandi Dec 9, 2025
418016f
clippy
chandrakananandi Dec 9, 2025
2a96276
stop the CI complaints from clippy
chandrakananandi Dec 9, 2025
d135213
one more issue
chandrakananandi Dec 9, 2025
a484761
do_check_auth
chandrakananandi Dec 10, 2025
119b310
fmt
chandrakananandi Dec 10, 2025
e5e50e2
first smart-account rule
raz-certora Dec 9, 2025
c4b813a
merge fix
raz-certora Dec 10, 2025
5fe7a19
smart-account rules wip
raz-certora Dec 10, 2025
a0f2a5f
do check auth
chandrakananandi Dec 10, 2025
a860546
smart account rules
raz-certora Dec 10, 2025
49e864e
verified wt_can_enforce_integrity
chandrakananandi Dec 10, 2025
cfce22e
simplify rules and update status
chandrakananandi Dec 11, 2025
95c0573
status
raz-certora Dec 11, 2025
2f90e15
simple threshold invariants
raz-certora Dec 11, 2025
082a948
weighted_threshold rules
raz-certora Dec 11, 2025
4883ff4
resolve burnable integrity timeout
chandrakananandi Dec 11, 2025
89f2632
resolve timeouts
chandrakananandi Dec 12, 2025
97ca4f5
resolve timeouts
chandrakananandi Dec 13, 2025
e0aa881
violated -> violation for ease of search
chandrakananandi Dec 13, 2025
77c6948
resolve more timeouts
chandrakananandi Dec 13, 2025
9c05ea5
cleanup to see what works in CI
raz-certora Dec 13, 2025
1b579bc
fix typo
raz-certora Dec 13, 2025
c81ba40
for clippy
raz-certora Dec 13, 2025
2055a30
cleanup
raz-certora Dec 13, 2025
5ed027f
conf fixes.
raz-certora Dec 13, 2025
5c07bc2
status
raz-certora Dec 13, 2025
b5b40f4
removed all the bad rules that require ghosts and hooks.
raz-certora Dec 13, 2025
0630063
fix yml
raz-certora Dec 13, 2025
afb8e52
conf fix
raz-certora Dec 14, 2025
c500611
small refactor
raz-certora Dec 14, 2025
8e96686
small refactor
raz-certora Dec 14, 2025
51149fd
status
raz-certora Dec 14, 2025
a8f0e3f
capped done
raz-certora Dec 14, 2025
26822fd
status
raz-certora Dec 14, 2025
bcf5ca7
status
raz-certora Dec 14, 2025
4e43b62
enumerable needs another invariant
raz-certora Dec 14, 2025
a1343e9
consecutive transfer rule works
raz-certora Dec 14, 2025
19d0a80
added ghost file from other project
raz-certora Dec 14, 2025
ca0f6bc
some enumerable progress.
raz-certora Dec 14, 2025
5701775
some smart accounts progress
raz-certora Dec 14, 2025
c85dd2c
status - same bug as before.
raz-certora Dec 15, 2025
39a6e15
status
raz-certora Dec 15, 2025
165d9a4
new policies, ghosts, diff summary of can_enforce_all_policies
raz-certora Dec 15, 2025
42e7cad
smart account do auth rule
raz-certora Dec 15, 2025
ea5bb98
todo integrity rules
raz-certora Dec 15, 2025
33b9cb3
smart account rules
raz-certora Dec 16, 2025
997892c
rwa wip
chandrakananandi Dec 16, 2025
da21390
contains and fix rule
chandrakananandi Dec 17, 2025
e203021
smart account:
raz-certora Dec 17, 2025
2106d57
more smart account
raz-certora Dec 17, 2025
8bbd909
two more invariants
raz-certora Dec 17, 2025
c44fab8
comments
raz-certora Dec 20, 2025
33019fc
naming
raz-certora Dec 20, 2025
73c2ca5
added mod to rwa specs so compilation works
raz-certora Dec 20, 2025
221f011
vault start
raz-certora Dec 20, 2025
105c82e
conditionaly ignore 256 bit in math.
raz-certora Dec 21, 2025
9a3ffa2
enhanced script
raz-certora Dec 21, 2025
0ba4cb6
vault progress
raz-certora Dec 21, 2025
84327ff
some statuses
raz-certora Dec 21, 2025
9a1423b
status
raz-certora Dec 22, 2025
09fa64e
status
raz-certora Dec 22, 2025
ba42afe
rwa setup
chandrakananandi Dec 23, 2025
da4e57d
rwa setup
chandrakananandi Dec 23, 2025
7d8d4f3
not iterations
chandrakananandi Dec 23, 2025
96186b9
vault rules.
raz-certora Dec 23, 2025
4748211
status
raz-certora Dec 23, 2025
bb28100
note
chandrakananandi Dec 23, 2025
421e272
asset_token using a different name for its fields, helps some rules.
raz-certora Dec 25, 2025
74a416a
rwa
raz-certora Dec 29, 2025
c1efac8
recover balance rules wip
raz-certora Dec 29, 2025
71718b9
status
raz-certora Jan 5, 2026
d129c2c
status
raz-certora Jan 5, 2026
c029e5d
rwa progress, including: changes to the mocks, changes to the munges,…
raz-certora Jan 5, 2026
240c880
token_binder
raz-certora Jan 5, 2026
dafad9d
token binder start
raz-certora Jan 6, 2026
ce44a8c
wip
chandrakananandi Jan 5, 2026
207825a
more timeout resolving
chandrakananandi Jan 5, 2026
a8a8e24
status
raz-certora Jan 6, 2026
9005273
token_binder
raz-certora Jan 7, 2026
f34674a
rwa_integrity
raz-certora Jan 7, 2026
c3dc6d5
status
raz-certora Jan 7, 2026
f3e7310
nit
raz-certora Jan 7, 2026
e49867d
cleanup
raz-certora Jan 7, 2026
ae3c676
rule for identity_claims, some unverified.
raz-certora Jan 7, 2026
c0878dc
small refactor and cleanup
raz-certora Jan 7, 2026
e2951b5
nit
raz-certora Jan 7, 2026
35fd980
nit
raz-certora Jan 7, 2026
da726b5
clogging
raz-certora Jan 7, 2026
accb1fa
some math rules with 64 bit assumption
chandrakananandi Jan 8, 2026
d2afbee
wip vault
chandrakananandi Jan 8, 2026
7d3aa8e
another timeout
chandrakananandi Jan 8, 2026
5a0d164
pow to 1
raz-certora Jan 8, 2026
8678a99
fungible invariants
raz-certora Jan 8, 2026
b991905
doc manager and identity registry
raz-certora Jan 8, 2026
e4ed6ee
status
raz-certora Jan 8, 2026
cb38fd7
claim_topics_and_issuers
raz-certora Jan 8, 2026
a33927d
nit
raz-certora Jan 11, 2026
a151d04
claim_topics_and_issuers progress
raz-certora Jan 11, 2026
159a051
claim issuer start
raz-certora Jan 11, 2026
6fbd2ce
vault_conversions spurious violation
raz-certora Jan 11, 2026
1367812
crypto
raz-certora Jan 11, 2026
e54f8ad
status
raz-certora Jan 12, 2026
e0e76fa
status
raz-certora Jan 12, 2026
70d1dbc
upgradeable wip
raz-certora Jan 12, 2026
94fa5c7
rule fix
raz-certora Jan 13, 2026
c4d141b
cleanup
raz-certora Jan 13, 2026
85374ca
cleanup policies
raz-certora Jan 13, 2026
46b435e
cleanup for report
raz-certora Jan 13, 2026
ba3b7a1
cleanup for report
raz-certora Jan 13, 2026
30a7dbe
split certora-token.yml
raz-certora Jan 14, 2026
bd48ced
fix missing conf in yml
raz-certora Jan 14, 2026
0014dd9
start of automatic report
raz-certora Jan 14, 2026
21f3e05
report
raz-certora Jan 14, 2026
5cc315d
fix ownable confs for ci
raz-certora Jan 18, 2026
5962b21
access_control report
raz-certora Jan 18, 2026
3e0f276
pausable report
raz-certora Jan 18, 2026
0460f34
upgradeable report
raz-certora Jan 18, 2026
5b43f43
merkle distributor report
raz-certora Jan 18, 2026
1f7a2b0
simple threshold report
raz-certora Jan 18, 2026
59caaca
weighted threshold report
raz-certora Jan 18, 2026
a888c4c
ported spending limit rules and added to ci
raz-certora Jan 20, 2026
3d839fe
fungible report
raz-certora Jan 20, 2026
18577e6
spending limit report
raz-certora Jan 20, 2026
0905f87
smart account report
raz-certora Jan 21, 2026
bd0b748
ported rules for enumerable
raz-certora Jan 21, 2026
4e04271
nit
raz-certora Jan 21, 2026
66ce72f
descriptions for non_fungible except for consecutive.
raz-certora Jan 21, 2026
c253232
non fungible report
raz-certora Jan 21, 2026
61d01ab
ci fix
raz-certora Jan 21, 2026
492c6be
rwa fixes and ci
raz-certora Jan 21, 2026
e009521
spending limit link fix
raz-certora Jan 21, 2026
3e55148
rwa conf
raz-certora Jan 21, 2026
45a2f14
rwa report
raz-certora Jan 22, 2026
42626bb
ported math rules
raz-certora Jan 22, 2026
edc3f89
math report
raz-certora Jan 22, 2026
2e9e96b
consecutive report
raz-certora Jan 22, 2026
4e5c454
ported rule
raz-certora Jan 22, 2026
44eef03
removed old vault rules
raz-certora Jan 22, 2026
a1b263c
removed unnecessary munges
raz-certora Jan 22, 2026
6711037
ported vault rules
raz-certora Jan 22, 2026
32f6a52
vault report
raz-certora Jan 22, 2026
a3784f8
removed docx and jsons
raz-certora Jan 22, 2026
daf4ee5
removed check_verification_status script
raz-certora Jan 22, 2026
0cdfc6e
add a readme
chandrakananandi Jan 22, 2026
5a3e1e6
update math conf
chandrakananandi Jan 22, 2026
1688be8
typo, cleanup
raz-certora Jan 22, 2026
b9a1374
yml fixes
raz-certora Jan 22, 2026
2d6a3df
fix vault imports
raz-certora Jan 22, 2026
a19ea8a
readme typo
raz-certora Jan 22, 2026
b7abf50
consecutive conf fix
raz-certora Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .github/workflows/certora-access.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Certora verification - Access

on: pull_request

env:
CONFIGS: |
access_control_integrity.conf
access_control_invariants.conf
access_control_non_panics.conf
access_control_panics.conf
access_control_revoke_role_non_panic.conf
ownable_integrity.conf
ownable_invariants.conf
ownable_non_panics.conf
ownable_panics.conf

jobs:
check:
runs-on: ubuntu-latest
permissions:
contents: read
statuses: write
pull-requests: write
id-token: write
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install rust
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install just
uses: extractions/setup-just@v3
- name: Install soroban
run: |
cargo update -p cvlr-soroban
rustup target add wasm32-unknown-unknown
- name: run configs
uses: Certora/certora-run-action@v2
with:
ecosystem: soroban
configurations: ${{ env.CONFIGS }}
job-name: "Verified Soroban Rules"
certora-key: ${{ secrets.CERTORAKEY }}
working-directory: packages/access/confs
cli-release: stable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46 changes: 46 additions & 0 deletions .github/workflows/certora-contract-utils.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Certora verification - Contract Utils

on: pull_request

env:
CONFIGS: |
math_rounding.conf
merkle_distributor_integrity.conf
merkle_distributor_panics.conf
pausable_integrity.conf
pausable_non_panics.conf
pausable_panics.conf
upgradeable_panics.conf

jobs:
check:
runs-on: ubuntu-latest
permissions:
contents: read
statuses: write
pull-requests: write
id-token: write
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install rust
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install just
uses: extractions/setup-just@v3
- name: Install soroban
run: |
cargo update -p cvlr-soroban
rustup target add wasm32-unknown-unknown
- name: run configs
uses: Certora/certora-run-action@v2
with:
ecosystem: soroban
configurations: ${{ env.CONFIGS }}
job-name: "Verified Soroban Rules"
certora-key: ${{ secrets.CERTORAKEY }}
working-directory: packages/contract-utils/confs
cli-release: stable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
51 changes: 51 additions & 0 deletions .github/workflows/certora-smart-accounts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Certora verification - Smart Accounts

on: pull_request

env:
CONFIGS: |
simple_threshold_integrity.conf
simple_threshold_invariants.conf
simple_threshold_non_panics.conf
simple_threshold_panics.conf
smart_account_integrity.conf
smart_account_invariants.conf
spending_limit_integrity.conf
spending_limit_invariants.conf
spending_limit_panics.conf
weighted_threshold_integrity.conf
weighted_threshold_invariants.conf
weighted_threshold_panics.conf

jobs:
check:
runs-on: ubuntu-latest
permissions:
contents: read
statuses: write
pull-requests: write
id-token: write
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install rust
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install just
uses: extractions/setup-just@v3
- name: Install soroban
run: |
cargo update -p cvlr-soroban
rustup target add wasm32-unknown-unknown
- name: run configs
uses: Certora/certora-run-action@v2
with:
ecosystem: soroban
configurations: ${{ env.CONFIGS }}
job-name: "Verified Soroban Rules"
certora-key: ${{ secrets.CERTORAKEY }}
working-directory: packages/accounts/confs
cli-release: stable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46 changes: 46 additions & 0 deletions .github/workflows/certora-token-fungible.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Certora verification - Token - Fungible

on: pull_request

env:
CONFIGS: |
allowlist.conf
blocklist.conf
burnable.conf
capped.conf
fungible_integrity.conf
fungible_invariants.conf
fungible_panics.conf

jobs:
check:
runs-on: ubuntu-latest
permissions:
contents: read
statuses: write
pull-requests: write
id-token: write
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install rust
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install just
uses: extractions/setup-just@v3
- name: Install soroban
run: |
cargo update -p cvlr-soroban
rustup target add wasm32-unknown-unknown
- name: run configs
uses: Certora/certora-run-action@v2
with:
ecosystem: soroban
configurations: ${{ env.CONFIGS }}
job-name: "Verified Soroban Rules - Fungible"
certora-key: ${{ secrets.CERTORAKEY }}
working-directory: packages/tokens/confs
cli-release: stable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48 changes: 48 additions & 0 deletions .github/workflows/certora-token-non-fungible.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Certora verification - Token - Non-Fungible

on: pull_request

env:
CONFIGS: |
consecutive.conf
enumerable_mint_burn_integrity.conf
enumerable_transfer_integrity.conf
non_fungible_burnable.conf
non_fungible_integrity.conf
non_fungible_invariants.conf
non_fungible_non_panics.conf
non_fungible_panics.conf
royalties.conf

jobs:
check:
runs-on: ubuntu-latest
permissions:
contents: read
statuses: write
pull-requests: write
id-token: write
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install rust
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install just
uses: extractions/setup-just@v3
- name: Install soroban
run: |
cargo update -p cvlr-soroban
rustup target add wasm32-unknown-unknown
- name: run configs
uses: Certora/certora-run-action@v2
with:
ecosystem: soroban
configurations: ${{ env.CONFIGS }}
job-name: "Verified Soroban Rules - Non-Fungible"
certora-key: ${{ secrets.CERTORAKEY }}
working-directory: packages/tokens/confs
cli-release: stable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46 changes: 46 additions & 0 deletions .github/workflows/certora-token-rwa.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Certora verification - Token - RWA

on: pull_request

env:
CONFIGS: |
claim_topics_and_issuers.conf
identity_claims.conf
identity_registry_storage.conf
identity_verifier_integrity.conf
rwa_integrity.conf
rwa_panics.conf
token_binder_integrity.conf

jobs:
check:
runs-on: ubuntu-latest
permissions:
contents: read
statuses: write
pull-requests: write
id-token: write
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install rust
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install just
uses: extractions/setup-just@v3
- name: Install soroban
run: |
cargo update -p cvlr-soroban
rustup target add wasm32-unknown-unknown
- name: run configs
uses: Certora/certora-run-action@v2
with:
ecosystem: soroban
configurations: ${{ env.CONFIGS }}
job-name: "Verified Soroban Rules - RWA"
certora-key: ${{ secrets.CERTORAKEY }}
working-directory: packages/tokens/confs
cli-release: stable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
43 changes: 43 additions & 0 deletions .github/workflows/certora-token-vault.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Certora verification - Token - Vault

on: pull_request

env:
CONFIGS: |
vault_64_conversions.conf
vault_64_integrity.conf
vault_64_panics.conf
vault_64_invariants.conf

jobs:
check:
runs-on: ubuntu-latest
permissions:
contents: read
statuses: write
pull-requests: write
id-token: write
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install rust
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install just
uses: extractions/setup-just@v3
- name: Install soroban
run: |
cargo update -p cvlr-soroban
rustup target add wasm32-unknown-unknown
- name: run configs
uses: Certora/certora-run-action@v2
with:
ecosystem: soroban
configurations: ${{ env.CONFIGS }}
job-name: "Verified Soroban Rules - Vault"
certora-key: ${{ secrets.CERTORAKEY }}
working-directory: packages/tokens/confs
cli-release: stable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
# certora
.certora_internal
emv-*
local.conf
*.wat

**/target/
/.idea
.DS_Store
.thumbs.db
.vscode
.cursorrules

# These are backup files generated by rustfmt
**/*.rs.bk
Expand Down
23 changes: 23 additions & 0 deletions CERTORA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Formal Verification Using Certora's Sunbeam Prover for Stellar Smart Contracts

We used Certora's Sunbeam prover to formally verify various parts of the code in this library. This document
explains how we have organized the work and how to run the prover, including helpful links. For a detailed summary of the work, please refer to the formal verification report.

## Installation

To install Certora's Sunbeam prover, see the documentation [here](https://docs.certora.com/en/latest/docs/sunbeam/installation.html). You can find a tutorial and troubleshooting details in our [documentation page](https://docs.certora.com/en/latest/docs/sunbeam/index.html).

## Project layout

- Within each package, we have included a new `confs` directory that
has the configuration files needed to run the verification jobs.
- For each component, we have also included a designated `specs` directory
that has the formal properties we wrote, any helpers, and mocks we used for verification.
- In the case of `vault`, we have created a 64 bit version (`vault_64`) to help scale formal verification. We also have introduced a 64 bit version of `math` which can be found here: `math/math_64`.
- For each package, we also have a `justfile` for compiling the code with the right version of the rust compiler and required feature flags. You can run `just build` to compile and generate the wasm bytecode.
- For each package, we also have a `certora_build.py` file that we use for running the verification jobs. You should rarely need to run this script manually.

## Looking at results and running the prover

- In each spec file, we have included a link to the verification job above each formal specification `#[rule]`. You can click on this link and see the results. Specifically, you can look at the `run.conf` file available in the link to see how exactly we ran the prover and what flags we used.
- We also have provided various `.conf` files to run the jobs. You can try them by running `certoraSorobanProver name.conf`. Note however that we sometimes run the rules individually and we do not include conf files for each individual rule separately. We recommend referring to the run links in the source code or the report for exact reproducibility.
Loading
Loading