  Smart contract, one of the most successful applications of blockchain, is
taking the world by storm, playing an essential role in the blockchain
ecosystem. However, frequent smart contract security incidents not only result
in tremendous economic losses but also destroy the blockchain-based credit
system. The security and reliability of smart contracts thus gain extensive
attention from researchers worldwide. In this survey, we first summarize the
common types and typical cases of smart contract vulnerabilities from three
levels, i.e., Solidity code layer, EVM execution layer, and Block dependency
layer. Further, we review the research progress of smart contract vulnerability
detection and classify existing counterparts into five categories, i.e., formal
verification, symbolic execution, fuzzing detection, intermediate
representation, and deep learning. Empirically, we take 300 real-world smart
contracts deployed on Ethereum as the test samples and compare the
representative methods in terms of accuracy, F1-Score, and average detection
time. Finally, we discuss the challenges in the field of smart contract
vulnerability detection and combine with the deep learning technology to look
forward to future research directions.
