Bug Patterns in Solidity and Smart Contract Auditing by Yannis Smaragdakis