We all know a smart contract is a normal piece of code which can have intended and unintended bugs. DAO attack is such an example where a bug has led to a heavy loss. Suppose I want to check what all properties can be there which a smart contract should satisfy in order to call it as safe. I have seen that there are many projects already going on where FORMAL VERIFICATION is being used to achieve the exact specification but I am not talking about those things. I am asking for some safe properties which can ensure this safety.
For example, we know that using CALL function to transfer ethers to a contract address can be a potential vulnerability that can be exploited if not handled properly.
So what all these properties can be?