  Smart contracts hold digital coins worth billions of dollars, their security
issues have drawn extensive attention in the past years. Towards smart contract
vulnerability detection, conventional methods heavily rely on fixed expert
rules, leading to low accuracy and poor scalability. Recent deep learning
approaches alleviate this issue but fail to encode useful expert knowledge. In
this paper, we explore combining deep learning with expert patterns in an
explainable fashion. Specifically, we develop automatic tools to extract expert
patterns from the source code. We then cast the code into a semantic graph to
extract deep graph features. Thereafter, the global graph feature and local
expert patterns are fused to cooperate and approach the final prediction, while
yielding their interpretable weights. Experiments are conducted on all
available smart contracts with source code in two platforms, Ethereum and VNT
Chain. Empirically, our system significantly outperforms state-of-the-art
methods. Our code is released.
