- Share the repository url of the project's public/private
repository
. - Share all relavent
documentation
i.e whitepapers, specifications, architecture diagrams, discussion forum (if applicable). - How many
contracts
are there in the scope ? - What is the total
LOC
for all of the contracts in scope ? - How many
libraries
does the project depends on ? - How many
cross contract calls
are there ? - What percentenage of
user stories
are covered in tests ? - What test suite is being utilized ? i.e
cw-multitest
, etc - What is the overall line
coverage
percentage provided by your tests ? - Does the project uses
Cw20
,Cw721
,ICS-20
,ICS-721
or any other standard to interact with the smart contracts? - Are there any
novel
or uniquecurve logic
ormathematical models
? - What
category
is the protocol ? i.eCW spec implementation
,Interchain or IBC spec implementation
,AMM
,lauchpad
etc. - What
chain
the project will be deployed on ? i.eNeutron
,Osmosis
,Juno
etc. - Does the project makes use of
IBC
orInterchain Accounts
? - Is it a
fork
of a popular project ? - Provide outline of how the scope/code will change before the audit begins, including a detailed description of any still
unimplemented parts
. - Describe any specific area you'd like to focus on. Eg. Try to break X invariant.
- Make sure contracts
compile
without any errors or warnings from the compiler.# If using rust crates or forked projects. cargo build --target wasm32-unknown-unknown --release
- Run the code through a
Spellchecker
&rustfmt
.cargo fmt
- Have tests for "
happy path
" user stories and tests that expect reverts for actions that are supposed to fail.All tests should be passing
. - Resolve all issues returned by
clippy
.cargo clippy
- Ensure all test cases pass sucessfully.
cargo test
- Ensure there is sufficient test coverage using
tarpaulin
.cargo tarpaulin -v
- Prepare the
deploy script
and mock upgrade scripts (if applicable) and include them as part of audit scope. Deployments and upgrades are as important as runtime code and require the same amount of security attention. - Document all functions for more clearer developer assumptions to avoid false positives.
- Remove any
commented/unused
code - Resolve any pending
TODOs
. - Make sure that your project
builds correctly
on a clean system. - Remove any
sensitive
configurations i.eenv
,private_keys
,api_keys
, etc. Add exmaple.env
(if applicable) - Remove any
unwanted
files not related to the project. Freeze
the code & finalize on codecommit hash
.