Once you finished developing your smart contract please go through the following list in order to ensure everything is safe for the end user.
Anatomy
- There are no
private
methods marked as public by mistake
Environment
predecessor
andsigner
are used correctly through the entire contract
Storage
- Each time the state grows it is ensured that there is enough Balance to cover it
- All collections (i.e. Vector, Map, Tree, etc) have an unique id
- Check for underflows and overflows!. In rust, you can do this by simply adding the
overflow-checks = true
flag in yourCargo.toml
.
Actions
- When sending money, you left enough in the contract to cover the storage cost
Callbacks
- All private callbacks are marked as
[#private]
in Rust, orassert
the caller (predecessor
) is the contract (current_account
) - All cross-contract calls have a callback that checks for errors and rolls back the state if necessary
- All cross-contract calls have a callback that checks for errors and returns money to the
predecessor
if necessary - All the callbacks are given enough GAS to finish without errors
- The contract is not left in a exploitable state between a cross-contract call and its callback
Generate comment with AI 2 nL