The paper will contain the security issues associated with smart contracts. Different levels of attacks that are possible. Tools that are available to detect these attacks. The Mechanisms and the best practices that are available to prevent or reduce these attacks. Different levels of attacks in smart contracts 1) Program level – Solidity is the programming language used to create the smart contracts. It is similar to the Java Script and it has some vulnerabilities that are mentioned below: a) Call to the unknown b) Gasless end c) Exception disorders d) Type casts e) Re-entrancy f) Keeping secrets 2) Platform level EVM -EVM is the Ethereum virtual machine on which the smart contracts run. Virtual machines are essentially creating a level of abstraction between the executing code and the executing machine. EVM helps solidity programming language to achieve this functionality but there are some issues that are found. They are as below: a) Immutable bugs b) Ether lost in transfer c) Stack Size Limit 3) Technology level: Block chain -where all smart contracts run. When coming to the smart contracts, block chain has some vulnerabilities like A) Unpredictable state B) Generating Randomness C) Time Constraints After this information we are going to go with the tools that are available to detect the attacks on smart contracts and the possible mechanisms and best practices that need to be followed to prevent or reduce the attacks on the smart contracts will be documented in the paper.