Integer Overflow and Underflow in Smart Contracts: A Common Vulnerability