  The emerging blockchain technology supports decentralized computing paradigm
shift and is a rapidly approaching phenomenon. While blockchain is thought
primarily as the basis of Bitcoin, its application has grown far beyond
cryptocurrencies due to the introduction of smart contracts. Smart contracts
are self-enforcing pieces of software, which reside and run over a hosting
blockchain. Using blockchain-based smart contracts for secure and transparent
management to govern interactions (authentication, connection, and transaction)
in Internet-enabled environments, mostly IoT, is a niche area of research and
practice. However, writing trustworthy and safe smart contracts can be
tremendously challenging because of the complicated semantics of underlying
domain-specific languages and its testability. There have been high-profile
incidents that indicate blockchain smart contracts could contain various
code-security vulnerabilities, instigating financial harms. When it involves
security of smart contracts, developers embracing the ability to write the
contracts should be capable of testing their code, for diagnosing security
vulnerabilities, before deploying them to the immutable environments on
blockchains. However, there are only a handful of security testing tools for
smart contracts. This implies that the existing research on automatic smart
contracts security testing is not adequate and remains in a very stage of
infancy. With a specific goal to more readily realize the application of
blockchain smart contracts in security and privacy, we should first understand
their vulnerabilities before widespread implementation. Accordingly, the goal
of this paper is to carry out a far-reaching experimental assessment of current
static smart contracts security testing tools, for the most widely used
blockchain, the Ethereum and its domain-specific programming language, Solidity
to provide the first...
