  Smart contracts (SC) are software codes which reside and run over a
blockchain. The code can be written in different languages with the common
purpose of implementing various kinds of transactions onto the hosting
blockchain, They are ruled by the blockchain infrastructure and work in order
to satisfy conditions typical of traditional contracts. The software code must
satisfy constrains strongly context dependent which are quite different from
traditional software code. In particular, since the bytecode is uploaded in the
hosting blockchain, size, computational resources, interaction between
different parts of software are all limited and even if the specific software
languages implement more or less the same constructs of traditional languages
there is not the same freedom as in normal software development. SC software is
expected to reflect these constrains on SC software metrics which should
display metric values characteristic of the domain and different from more
traditional software metrics. We tested this hypothesis on the code of more
than twelve thousands SC written in Solidity and uploaded on the Ethereum
blockchain. We downloaded the SC from a public repository and computed the
statistics of a set of software metrics related to SC and compared them to the
metrics extracted from more traditional software projects. Our results show
that generally Smart Contracts metrics have ranges more restricted than the
corresponding metrics in traditional software systems. Some of the stylized
facts, like power law in the tail of the distribution of some metrics, are only
approximate but the lines of code follow a log normal distribution which
reminds of the same behavior already found in traditional software systems.
