Developing smart contracts: smart contract audit best practices