Common smart contract errors causing token loss and how audits detect them