An Empirical Study of Ownership, Typestate, and Assets in the Obsidian Smart Contract Language
Some blockchain programs (smart contracts) have included serious security vulnerabilities. Obsidian is a new typestate-oriented programming language that uses a strong type system to rule out some of these vulnerabilities. Although Obsidian was designed to promote usability to make it as easy as possible to write programs, strong type systems can cause a language to be difficult to use. In particular, ownership, typestate, and assets, which Obsidian uses to provide safety guarantees, have not seen broad adoption in popular languages and result in significant usability challenges. We performed an empirical study with 20 participants comparing Obsidian to Solidity, which is the language most commonly used for writing smart contracts today. We observed that most of the Obsidian participants were able to successfully complete most of the programming tasks we gave them. We also found that asset-related bugs, which Obsidian detects at compile time, were commonly accidentally inserted by the Solidity participants. We identified potential opportunities to improve the usability of typestate as well as to apply the usability benefits of Obsidian's ownership system to other languages.
READ FULL TEXT