  A smart contract is a computer program which allows users to automate their
actions on the blockchain platform. Given the significance of smart contracts
in supporting important activities across industry sectors including supply
chain, finance, legal and medical services, there is a strong demand for
verification and validation techniques. Yet, the vast majority of smart
contracts lack any kind of formal specification, which is essential for
establishing their correctness. In this survey, we investigate formal models
and specifications of smart contracts presented in the literature and present a
systematic overview in order to understand the common trends. We also discuss
the current approaches used in verifying such property specifications and
identify gaps with the hope to recognize promising directions for future work.
