Obsidian is a new programming language for writing smart contracts, which are programs for blockchain platforms.
Obsidian includes two main innovations relative to current languages for these platforms:
- State-oriented programming lets you declare and transition among states explicitly. Our research suggests that a large fraction of blockchain programs are organized around a high-level state machine.
- Linear types ensure that important resources managed by your programs are managed correctly. No more accidentally making money vanish into thin air; the compiler will keep you safe.
Obsidian is currently under development and is not ready for general use. For more detail about Obsidian, for now, please read our papers.
Obsidian is a project by:
Michael Coblenz, Jonathan Aldrich, Joshua Sunshine, Brad A. Myers, “User-Centered Design of Permissions, Typestate, and Ownership in the Obsidian Blockchain Language,” HCI for Blockchain: Studying, Designing, Critiquing and Envisioning Distributed Ledger Technologies Workshop at CHI’2018, April 22, 2018, Montreal, QC, Canada. pdf.
Celeste Barnaby, Michael Coblenz, Tyler Etzel, Eliezer Kanal, Joshua Sunshine, Brad Myers, Jonathan Aldrich. “A User Study to Inform the Design of the Obsidian Blockchain DSL.” 8th Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU’2017) at SPLASH 2017, October 23, 2017. pdf
Michael Coblenz. 2017. Obsidian: a safer blockchain programming language. In Proceedings of the 39th International Conference on Software Engineering Companion (ICSE-C ‘17). IEEE Press, Piscataway, NJ, USA, 97-99. ACM DL
Michael Coblenz. 2017. Principles of usable programming language design. In Proceedings of the 39th International Conference on Software Engineering Companion (ICSE-C ‘17). IEEE Press, Piscataway, NJ, USA, 469-470. ACM DL