Obsidian: A Safer Blockchain Programming Language

Blockchain platforms, such as Ethereum, promise to facilitate transactions on a decentralized computing platform among parties that have not established trust. Recognition of the unique challenges of blockchain programming has inspired developers to create domain-specific languages, such as Solidity, for programming blockchain systems. Unfortunately, bugs in Solidity programs have recently been exploited to steal money. We propose a new programming language, Obsidian, to make it easier for programmers to write correct programs.

[1]  Dan Boneh Solidity , 1973 .

[2]  P. Green The Wizard of Oz: a tool for rapid development of user interfaces. Final report , 1985 .

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

[4]  Jonathan Aldrich,et al.  Modular typestate checking of aliased objects , 2007, OOPSLA.

[5]  Éric Tanter,et al.  First-class state change in plaid , 2011, OOPSLA '11.

[6]  Jonathan Aldrich,et al.  Checking Concurrent Typestate with Access Permissions in Plural: A Retrospective , 2011 .

[7]  James D. Herbsleb,et al.  Structuring Documentation to Support State Search: A Laboratory Experiment about Protocol Programming , 2014, ECOOP.

[8]  Stefan Hanenberg,et al.  The Programming Language Wars: Questions and Responsibilities for the Programming Language Community , 2014, Onward!.

[9]  Éric Tanter,et al.  Foundations of Typestate-Oriented Programming , 2014, ACM Trans. Program. Lang. Syst..

[10]  Frank Pfenning,et al.  Polarized Substructural Session Types , 2015, FoSSaCS.

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

[12]  Prateek Saxena,et al.  Making Smart Contracts Smarter , 2016, IACR Cryptol. ePrint Arch..

[13]  Celeste Barnaby A User Study to Inform the Design of the Obsidian Blockchain DSL , 2017 .

[14]  Massimo Bartoletti,et al.  A Survey of Attacks on Ethereum Smart Contracts (SoK) , 2017, POST.

[15]  Brad A. Myers,et al.  Glacier: Transitive Class Immutability for Java , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE).

[16]  Brad A. Myers,et al.  Interdisciplinary programming language design , 2018, Onward!.