A Pilot Study of the Safety and Usability of the Obsidian Blockchain Programming Language

  title={A Pilot Study of the Safety and Usability of the Obsidian Blockchain Programming Language},
  author={Gauri Kambhatla and Michael J. Coblenz and Reed Oei and Joshua Sunshine and Jonathan Aldrich and Brad A. Myers},
Although blockchains have been proposed for building systems that execute critical transactions, security vulnerabilities have plagued programs that are deployed on blockchain systems. The programming language Obsidian was developed with the purpose of statically preventing some of the more common of these security risks, specifically the loss of resources and improper manipulation of objects. The question then is whether Obsidian’s novel features impact the usability of the language. In this… 

Tables from this paper

User-Centered Programming Language Design in the Obsidian Smart Contract Language
This paper describes the formative and summative methods developed for user-centered design of programming languages and how they have applied to create Obsidian, which integrates a strong, static type system that detects many of these bugs in blockchain programs.
User-Centered Design of Principled Programming Languages
This thesis argues that fusing formal methods for reasoning about programming languages with user-centered design methods is a practical approach to designing languages that make programmers more effective, and designers can create safer languages that are more effective for programmers than existing languages.
PLIERS: A Process that Integrates User-Centered Methods into Programming Language Design
This work adapted both formative and summative HCI methods to make them more suitable for programming language design, and integrated these methods into a new process, PLIERS, for designing programming languages in a user-centered way.


A User Study to Inform the Design of the Obsidian Blockchain DSL
The approach to the design of a user study is discussed, as well as the preliminary findings of the development of a blockchain-based programming language called Obsidian, with the goal of minimizing the risk of common security vulnerabilities.
Smart Contract Design Meets State Machine Synthesis: Case Studies
This work considers program synthesis techniques in which the specification is used to generate correct-by-construction programs and shows how FSM synthesis can be applied to the problem of automatic smart contract generation.
Obsidian: A Safer Blockchain Programming Language
  • Michael J. Coblenz
  • Computer Science
    2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C)
  • 2017
A new programming language, Obsidian, is proposed to make it easier for programmers to write correct programs on blockchain systems, because bugs in Solidity programs have recently been exploited to steal money.
Faith, hope, and love: an essay on software science's neglect of human factors
This paper argues for appropriate research methods in programming language research that rely on studies of developers -- and argues that the introduction of corresponding empirical methods not only requires a new understanding of research but also a different view on how to teach software science to students.
Learning and Teaching Programming: A Review and Discussion
This paper identifies general trends comparing novice and expert programmers, programming knowledge and strategies, program generation and comprehension, and object-oriented versus procedural programming and topics relating to novice teaching and learning.
Programmers Are Users Too: Human-Centered Methods for Improving Programming Tools
Five Web extras describe HANDS, a new programming system that emphasizes usability by building on children's and beginning programmers' natural problem-solving tendencies and Graphite, an Eclipse plug-in offering active code completion, a simple but powerful technique that integrates useful code-generation tools directly into the editor.
How do program understanding tools affect how programmers understand programs?
This study explores the question of whether program understanding tools enhance or change the way that programmers understand programs, and describes how these tools supported or hindered the diverse comprehension strategies used.
Active learning for problem solving in programming in a computer studies method course
This paper presents an implementation of active-learning-based teaching model for teaching a topic on programming techniques in an undergraduate computer science education course which prepares
Self-efficacy and mental models in learning to program
The results show that self-efficacy for programming is influenced by previous programming experience and increases as a student progresses through an introductory programming course, and that both the mental model and self- efficacy affect course performance.
Programmers Are Users Too: HumanCentered Methods for Improving Programming
  • Tools. Computer,
  • 2016