A User Study to Inform the Design of the Obsidian Blockchain DSL

Blockchain platforms such as Ethereum and Hyperledger facilitate transactions between parties that have not established trust. Increased interest in these platforms has motivated the design of programming languages such as Solidity, which allow users to create blockchain programs. However, there have been several recent instances where Solidity programs have contained bugs that have been exploited. The security of blockchain programs is especially important given that they commonly involve the exchange of money or other objects with real-world value. We are currently developing a blockchain-based programming language called Obsidian with the goal of minimizing the risk of common security vulnerabilities. We are designing this language in a humancentered way, conducting exploratory user studies with a natural programming approach to inform our design choices. In this paper, we discuss our approach to the design of a user study, as well as our preliminary findings.

[1]  Dan Boneh Solidity , 1973 .

[2]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[3]  Brad A. Myers,et al.  Natural programming languages and environments , 2004, Commun. ACM.

[4]  Jonathan Aldrich,et al.  Typestate-oriented programming , 2009, OOPSLA Companion.

[5]  Nicholas D. Matsakis,et al.  The rust language , 2014, HILT '14.

[6]  Martin Odersky,et al.  Foundations of path-dependent types , 2014, OOPSLA.

[7]  Thomas D. LaToza,et al.  Programmers Are Users Too: Human-Centered Methods for Improving Programming Tools , 2016, Computer.

[8]  Elaine Shi,et al.  Step by Step Towards Creating a Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab , 2016, Financial Cryptography Workshops.

[9]  Michael J. Coblenz Obsidian: A Safer Blockchain Programming Language , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).