  With the rise in using immature smart contract programming languages to build
a decentralized application, more vulnerabilities have been introduced to the
Blockchain and were the main reasons behind critical financial losses.
Moreover, the immutability of Blockchain technology makes deployed smart
contracts unfixable for the whole life of the Blockchain itself. The lack of
complete and up-to-date resources that explain those vulnerabilities in detail
has also contributed to increasing the number of vulnerabilities in Blockchain.
In addition, the lack of a standardized nomination of the existing
vulnerabilities has made redundant research and made developers more confused.
Therefore, in this paper, we propose the most complete list of smart contract
vulnerabilities that exist in the most popular Blockchains with a detailed
explanation of each one of them. In addition, we propose a new codification
system that facilitates the communication of those vulnerabilities between
developers and researchers. This codification, help identify the most uncovered
vulnerabilities to focus on in future research. Moreover, the discussed list of
vulnerabilities covers multiple Blockchain and could be used for even future
built Blockchains.
