  Smart contracts have played a pivotal role in the evolution of blockchains
and Decentralized Applications (DApps). As DApps continue to gain widespread
adoption, multiple smart contract languages have been and are being made
available to developers, each with its distinctive features, strengths, and
weaknesses. In this paper, we examine the smart contract languages used in
major blockchain platforms, with the goal of providing a comprehensive
assessment of their main properties. Our analysis targets the programming
languages rather than the underlying architecture: as a result, while we do
consider the interplay between language design and blockchain model, our main
focus remains on language-specific features such as usability, programming
style, safety and security. To conduct our assessment, we propose an original
benchmark which encompasses a wide, yet manageable, spectrum of key use cases
that cut across all the smart contract languages under examination.
