Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
153 commits
Select commit Hold shift + click to select a range
c66d6e5
rwa doc manager (#475)
brozorec Oct 22, 2025
df1ac2f
claim issuers errors (#476)
brozorec Oct 22, 2025
9212630
docs fixes (#474)
brozorec Oct 22, 2025
1993ce9
zero checks and errors (#478)
ozgunozerk Oct 22, 2025
3a467a0
Move vault (#479)
ozgunozerk Oct 23, 2025
a5fada3
Remove antora docs (#483)
ozgunozerk Oct 23, 2025
969a220
release 0.5.0 (#480)
brozorec Oct 28, 2025
5451a16
rename the generic datakey enum (#485)
ozgunozerk Oct 31, 2025
372a162
version bump (#486)
ozgunozerk Oct 31, 2025
cc2d80a
wip with old compiler
chandrakananandi Nov 11, 2025
434cdc0
add back ownable contract
chandrakananandi Nov 12, 2025
6ba1a48
Merge branch 'main' into rustc-version
chandrakananandi Nov 12, 2025
5e797c6
feature
chandrakananandi Nov 12, 2025
702e0ea
more work on accounts
chandrakananandi Nov 12, 2025
ac0556e
update toml
chandrakananandi Nov 12, 2025
2c88ca3
fix
chandrakananandi Nov 12, 2025
b741b8e
undo changes
chandrakananandi Nov 13, 2025
d22df26
nopanic
chandrakananandi Nov 13, 2025
4b770e8
panic conf
chandrakananandi Nov 13, 2025
87b47d7
nopanic rule
chandrakananandi Nov 13, 2025
b55506c
wip
chandrakananandi Nov 14, 2025
b6bf358
new certora crate
chandrakananandi Nov 15, 2025
d22d5fc
more setups
chandrakananandi Nov 16, 2025
c1ad712
small refactor ownable
raz-certora Nov 16, 2025
bccbcb7
ownable harness added function
raz-certora Nov 16, 2025
837cf46
5 integrity rules for ownable
raz-certora Nov 16, 2025
fa2d59f
2 panic rules ownable
raz-certora Nov 17, 2025
8f293e7
access_control harness changes.
raz-certora Nov 17, 2025
a4830e1
harness access control.
raz-certora Nov 17, 2025
64f7630
fix hex to older version
chandrakananandi Nov 17, 2025
21017bd
oops
chandrakananandi Nov 17, 2025
79b03ca
ownable rules.
raz-certora Nov 18, 2025
3c0ecb0
small change to access_control harness
raz-certora Nov 18, 2025
cb6c938
nopanic conf
raz-certora Nov 18, 2025
7313392
helper get_pending_owner and invariants.
raz-certora Nov 18, 2025
84fd2a7
another invariant -- vacuity issue.
raz-certora Nov 18, 2025
0d6cda6
ownable renaming
raz-certora Nov 19, 2025
82b13db
access control renaming and rules.
raz-certora Nov 19, 2025
c8d005b
fix
raz-certora Nov 19, 2025
fc39f2e
changes to cargo files (inconsistency with chandra's local)
raz-certora Nov 19, 2025
e9c0699
small changes in ownable rules
raz-certora Nov 19, 2025
08356dd
small
raz-certora Nov 19, 2025
8aedc0a
more setup
chandrakananandi Nov 22, 2025
b8fd7e4
nits
chandrakananandi Nov 22, 2025
86ac71c
path
chandrakananandi Nov 22, 2025
4196000
merkle forgot to push
chandrakananandi Nov 22, 2025
7750b18
policies setup
chandrakananandi Nov 22, 2025
7d1b093
smart account
chandrakananandi Nov 22, 2025
f9eb300
conf msg
chandrakananandi Nov 22, 2025
6b34112
nits access control
chandrakananandi Nov 22, 2025
578fe0e
wip
chandrakananandi Nov 22, 2025
2e00253
status fixes.
raz-certora Nov 22, 2025
5ccc8a1
added back access control sanity
raz-certora Nov 22, 2025
011c0c9
ownable_non_panics done.
raz-certora Nov 22, 2025
81552a1
tiny
raz-certora Nov 22, 2025
31e2d67
added sanity to ownable non-panics, review renounce_ownership
raz-certora Nov 22, 2025
9dd76c2
conf changes access
raz-certora Nov 22, 2025
fea3528
changed manual getter of pending owner to helper function and now vio…
raz-certora Nov 22, 2025
88e75a3
access control invariants
raz-certora Nov 22, 2025
3ce1098
cvlr_assert!(false) changed to cvlr_satisfy!(true) everywhere.
raz-certora Nov 22, 2025
d8452d1
status fix
raz-certora Nov 22, 2025
2b121ed
satisfy true -> assert false in panic rules
raz-certora Nov 23, 2025
db8b9a8
access control panics
raz-certora Nov 23, 2025
7c57829
changed init to __constructor
raz-certora Nov 23, 2025
eea66e9
tiny
raz-certora Nov 23, 2025
a4db98a
pausable contract.
raz-certora Nov 23, 2025
01f4d9a
naming
raz-certora Nov 23, 2025
ac8c2c3
pausable
raz-certora Nov 23, 2025
8ab401b
status
raz-certora Nov 23, 2025
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
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
50 changes: 50 additions & 0 deletions .github/workflows/certora-access.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Certora verification

on: pull_request

env:
CONFIGS: |
access_control_integrity.conf
access_control_invariants.conf
access_control_non_panics.conf
access_control_revoke_role_non_panic.conf
access_control_panics.conf
access_control_sanity.conf
ownable_integrity.conf
ownable_invariants.conf
ownable_non_panics.conf
ownable_panics.conf
ownable_sanity.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 }}
49 changes: 49 additions & 0 deletions .github/workflows/certora-contract-utils.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Certora verification

on: pull_request

env:
CONFIGS: |
math_integrity.conf
math_non_panics.conf
math_panics.conf
math_sanity.conf
merkle_distributor_contract_sanity.conf
merkle_distributor_integrity.conf
pausable_integrity.conf
pausable_non_panics.conf
pausable_panics.conf
pausable_sanity.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 }}
47 changes: 47 additions & 0 deletions .github/workflows/certora-smart-accounts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Certora verification

on: pull_request

env:
CONFIGS: |
simple_threshold_integrity.conf
simple_threshold_non_panics.conf
simple_threshold_panics.conf
simple_threshold_contract_sanity.conf
weighted_threshold_integrity.conf
weighted_threshold_contract_sanity.conf
spending_limit_integrity.conf
spending_limit_contract_sanity.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 }}
53 changes: 53 additions & 0 deletions .github/workflows/certora-token.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Certora verification

on: pull_request

env:
CONFIGS: |
fungible_integrity.conf
fungible_invariants.conf
fungible_non_panics.conf
fungible_panics.conf
fungible_sanity.conf
allowlist.conf
blocklist.conf
burnable.conf
burnable_nft_sanity.conf
capped.conf
consecutive_nft_sanity.conf
enumerable_nft_sanity.conf
royalties_nft_sanity.conf
vault_sanity.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@9596198c77a3f33d22c59226ff7757185a504f8f
with:
ecosystem: soroban
configurations: ${{ env.CONFIGS }}
job-name: "Verified Soroban Rules"
certora-key: ${{ secrets.CERTORAKEY }}
working-directory: packages/tokens/confs
cli-release: stable
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8 changes: 4 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +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 All @@ -19,10 +23,6 @@ ENV/
env.bak/
venv.bak/

# Documentation
docs/node_modules
docs/build

# Code Coverage
htmlcov/
lcov.info
Expand Down
1 change: 0 additions & 1 deletion Architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ stellar-contracts/
│ │ └── non_fungible/ # Non-fungible token implementation
│ └── lib.rs
├── examples/ # Example contract implementations
├── docs/ # Documentation
└── audits/ # Security audit reports
```

Expand Down
5 changes: 4 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,14 @@ As a contributor, you are expected to fork this repository, work on your own for
# run tests
cargo test
# build
cargo build --target wasm32v1-none --release
# run linter
cargo clippy --all-targets --all-features -- -D warnings
# run formatter
cargo fmt --all -- --check
cargo +nightly fmt --all -- --check
# run documentation checks
cargo doc --all --no-deps
Expand Down
Loading
Loading