{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,8]],"date-time":"2026-01-08T19:53:27Z","timestamp":1767902007663,"version":"3.49.0"},"reference-count":50,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2020,11,13]],"date-time":"2020-11-13T00:00:00Z","timestamp":1605225600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/501100004750","name":"National Science Foundation","doi-asserted-by":"publisher","award":["CNS1423054, CCF1901033"],"award-info":[{"award-number":["CNS1423054, CCF1901033"]}],"id":[{"id":"10.13039\/501100004750","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100004316","name":"International Business Machines Corporation","doi-asserted-by":"publisher","id":[{"id":"10.13039\/100004316","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000181","name":"Air Force Office of Scientific Research","doi-asserted-by":"publisher","award":["FA8702-15-D-0002"],"award-info":[{"award-number":["FA8702-15-D-0002"]}],"id":[{"id":"10.13039\/100000181","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100009226","name":"National Security Agency","doi-asserted-by":"publisher","award":["H9823018D0008"],"award-info":[{"award-number":["H9823018D0008"]}],"id":[{"id":"10.13039\/100009226","id-type":"DOI","asserted-by":"publisher"}]},{"name":"Ripple, Inc."}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,11,13]]},"abstract":"<jats:p>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 together 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 Obsidian participants were able to successfully complete more of the programming tasks than the Solidity participants. We also found that the Solidity participants commonly inserted asset-related bugs, which Obsidian detects at compile time.<\/jats:p>","DOI":"10.1145\/3428200","type":"journal-article","created":{"date-parts":[[2020,11,24]],"date-time":"2020-11-24T23:36:06Z","timestamp":1606260966000},"page":"1-28","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":15,"title":["Can advanced type systems be usable? An empirical study of ownership, assets, and typestate in Obsidian"],"prefix":"10.1145","volume":"4","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-9369-4069","authenticated-orcid":false,"given":"Michael","family":"Coblenz","sequence":"first","affiliation":[{"name":"Carnegie Mellon University, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0631-5591","authenticated-orcid":false,"given":"Jonathan","family":"Aldrich","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4769-0219","authenticated-orcid":false,"given":"Brad A.","family":"Myers","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9672-5297","authenticated-orcid":false,"given":"Joshua","family":"Sunshine","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA"}]}],"member":"320","published-online":{"date-parts":[[2020,11,13]]},"reference":[{"key":"e_1_2_2_1_1","volume-title":"Proceedings of the Thirteenth USENIX Conference on Usable Privacy and Security. 81-95","author":"Acar Yasemin","year":"2017","unstructured":"Yasemin Acar , Christian Stransky , Dominik Wermke , Michelle L Mazurek , and Sascha Fahl . 2017 . Security developer studies with GitHub users: Exploring a convenience sample . In Proceedings of the Thirteenth USENIX Conference on Usable Privacy and Security. 81-95 . Yasemin Acar, Christian Stransky, Dominik Wermke, Michelle L Mazurek, and Sascha Fahl. 2017. Security developer studies with GitHub users: Exploring a convenience sample. In Proceedings of the Thirteenth USENIX Conference on Usable Privacy and Security. 81-95."},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1639950.1640073"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3344429.3372508"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297050"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-15375-4_16"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1184\/R1\/12771074.v1"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276954.3276965"},{"key":"e_1_2_2_8_1","volume-title":"Myers","author":"Coblenz Michael","year":"2019","unstructured":"Michael Coblenz , Gauri Kambhatla , Paulette Koronkevich , Jenna L. Wise , Celeste Barnaby , Joshua Sunshine , Jonathan Aldrich , and Brad A . Myers . 2019 a. PLIERS : A Process that Integrates User-Centered Methods into Programming Language Design. arXiv: 1912.04719 Michael Coblenz, Gauri Kambhatla, Paulette Koronkevich, Jenna L. Wise, Celeste Barnaby, Joshua Sunshine, Jonathan Aldrich, and Brad A. Myers. 2019a. PLIERS: A Process that Integrates User-Centered Methods into Programming Language Design. arXiv: 1912.04719"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2017.52"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3417516"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/WETSEB.2019.00013"},{"key":"e_1_2_2_12_1","first-page":"27","volume-title":"Code Reviews Do Not Find Bugs. How the Current Code Review Best Practice Slows Us Down. In International Conference on Software Engineering (ICSE '15","volume":"2","author":"Czerwonka J.","unstructured":"J. Czerwonka , M. Greiler , and J. Tilford . 2015 . Code Reviews Do Not Find Bugs. How the Current Code Review Best Practice Slows Us Down. In International Conference on Software Engineering (ICSE '15 , Vol. 2 ). 27 - 28 . J. Czerwonka, M. Greiler, and J. Tilford. 2015. Code Reviews Do Not Find Bugs. How the Current Code Review Best Practice Slows Us Down. In International Conference on Software Engineering (ICSE '15, Vol. 2 ). 27-28."},{"key":"e_1_2_2_13_1","volume-title":"Resource-Aware Session Types for Digital Contracts. arXiv","author":"Das Ankush","year":"1902","unstructured":"Ankush Das , Stephanie Balzer , Jan Hofmann , Frank Pfenning , and Ishani Santurkar . 2019. Resource-Aware Session Types for Digital Contracts. arXiv : 1902 . 06056 [cs.PL] Ankush Das, Stephanie Balzer, Jan Hofmann, Frank Pfenning, and Ishani Santurkar. 2019. Resource-Aware Session Types for Digital Contracts. arXiv: 1902. 06056 [cs.PL]"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-24851-4_21"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-53357-4_6"},{"key":"e_1_2_2_16_1","volume-title":"Retrieved","author":"Project Developers The Rust","year":"2017","unstructured":"The Rust Project Developers . 2017 . What is Ownership? ( 2017 ) . Retrieved November 15, 2017 from https:\/\/doc.rustlang.org\/book\/second-edition\/ch04-01-what-is-ownership.html The Rust Project Developers. 2017. What is Ownership? ( 2017 ). Retrieved November 15, 2017 from https:\/\/doc.rustlang.org\/book\/second-edition\/ch04-01-what-is-ownership.html"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/514952.514955"},{"key":"e_1_2_2_18_1","volume-title":"Retrieved","author":"Foundation Ethereum","year":"2020","unstructured":"Ethereum Foundation . 2020 a. Ethereum Project . Retrieved February 18, 2020 from http:\/\/www.ethereum.org Ethereum Foundation. 2020a. Ethereum Project. Retrieved February 18, 2020 from http:\/\/www.ethereum.org"},{"key":"e_1_2_2_19_1","volume-title":"Retrieved","author":"Foundation Ethereum","year":"2020","unstructured":"Ethereum Foundation . 2020 b. Solidity . Retrieved February 18, 2020 from https:\/\/solidity.readthedocs.io\/en\/develop\/ Ethereum Foundation. 2020b. Solidity. Retrieved February 18, 2020 from https:\/\/solidity.readthedocs.io\/en\/develop\/"},{"key":"e_1_2_2_20_1","volume-title":"Retrieved","author":"Foundation Ethereum","year":"2020","unstructured":"Ethereum Foundation . 2020 c. State Machine . Retrieved February 18, 2020 from https:\/\/solidity.readthedocs. io\/en\/v0.4.24\/ common-patterns.html#state-machine Ethereum Foundation. 2020c. State Machine. Retrieved February 18, 2020 from https:\/\/solidity.readthedocs. io\/en\/v0.4.24\/ common-patterns.html#state-machine"},{"key":"e_1_2_2_21_1","volume-title":"Retrieved","author":"Foundation Ethereum","year":"2020","unstructured":"Ethereum Foundation . 2020 d. Withdrawal from Contracts . Retrieved February 25, 2020 from https:\/\/solidity.readthedocs. io\/ en\/v0.6. 3\/common-patterns.html#withdrawal-from-contracts Ethereum Foundation. 2020d. Withdrawal from Contracts. Retrieved February 25, 2020 from https:\/\/solidity.readthedocs. io\/ en\/v0.6. 3\/common-patterns.html#withdrawal-from-contracts"},{"key":"e_1_2_2_22_1","unstructured":"Ethereum Foundation. 2020. Simple Open Auction. https:\/\/solidity.readthedocs. io\/en\/v0.6. 3\/solidity-by-example.html#simpleopen-auction  Ethereum Foundation. 2020. Simple Open Auction. https:\/\/solidity.readthedocs. io\/en\/v0.6. 3\/solidity-by-example.html#simpleopen-auction"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2629609"},{"key":"e_1_2_2_24_1","unstructured":"Luke Graham. 2017. $32 million worth of digital currency ether stolen by hackers. CNBC. Retrieved November 2 2017 from https:\/\/www.cnbc.com\/ 2017 \/07\/20\/32-million-worth-of-digital-currency-ether-stolen-by-hackers.html  Luke Graham. 2017. $32 million worth of digital currency ether stolen by hackers. CNBC. Retrieved November 2 2017 from https:\/\/www.cnbc.com\/ 2017 \/07\/20\/32-million-worth-of-digital-currency-ether-stolen-by-hackers.html"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-013-9289-1"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1111\/j.1540-6237.2007.00510.x"},{"key":"e_1_2_2_27_1","unstructured":"Kadena. 2019. PACT. https:\/\/pact.kadena.io  Kadena. 2019. PACT. https:\/\/pact.kadena.io"},{"key":"e_1_2_2_28_1","volume-title":"OOPSLA '04 Workshop on Revival of Dynamic Languages.","author":"Meijer Erik","year":"2004","unstructured":"Erik Meijer and Peter Drayton . 2004 . Static typing where possible, dynamic typing when needed: The end of the cold war between programming languages . In OOPSLA '04 Workshop on Revival of Dynamic Languages. Erik Meijer and Peter Drayton. 2004. Static typing where possible, dynamic typing when needed: The end of the cold war between programming languages. In OOPSLA '04 Workshop on Revival of Dynamic Languages."},{"key":"e_1_2_2_29_1","unstructured":"The University of Glasgow. 2001. System.IO.Unsafe. https:\/\/hackage.haskell. org\/package\/base-4.12.0.0\/docs\/System-IOUnsafe.html  The University of Glasgow. 2001. System.IO.Unsafe. https:\/\/hackage.haskell. org\/package\/base-4.12.0.0\/docs\/System-IOUnsafe.html"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/HCC.2002.1046372"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1007\/s00224-013-9452-5"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/ACCESS.2019.2921936"},{"key":"e_1_2_2_33_1","volume-title":"Retrieved","author":"Research Mozilla","year":"2015","unstructured":"Mozilla Research . 2015 . The Rust Programming Language . Retrieved February 18, 2020 from https:\/\/www.rust-lang.org Mozilla Research. 2015. The Rust Programming Language. Retrieved February 18, 2020 from https:\/\/www.rust-lang.org"},{"key":"e_1_2_2_34_1","volume-title":"Retrieved","author":"Oracle Corp.","year":"2019","unstructured":"Oracle Corp. 2019 . Secure Coding Guidelines for the Java SE, version 4.0 . Retrieved February 18, 2020 from https:\/\/www. oracle.com\/technetwork\/java\/seccodeguide-139067.html Oracle Corp. 2019. Secure Coding Guidelines for the Java SE, version 4.0. Retrieved February 18, 2020 from https:\/\/www. oracle.com\/technetwork\/java\/seccodeguide-139067.html"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/235969.235972"},{"key":"e_1_2_2_36_1","volume-title":"Flint for Safer Smart Contracts. ( 2019 ). arXiv","author":"Schrans Franklin","year":"1904","unstructured":"Franklin Schrans , Daniel Hails , Alexander Harkness , Sophia Drossopoulou , and Susan Eisenbach . 2019. Flint for Safer Smart Contracts. ( 2019 ). arXiv : 1904 .06534 Franklin Schrans, Daniel Hails, Alexander Harkness, Sophia Drossopoulou, and Susan Eisenbach. 2019. Flint for Safer Smart Contracts. ( 2019 ). arXiv: 1904.06534"},{"key":"e_1_2_2_37_1","volume-title":"Secure Coding in C and C++","author":"Seacord Robert C","unstructured":"Robert C Seacord . 2013. Secure Coding in C and C++ . Addison-Wesley Professional . Robert C Seacord. 2013. Secure Coding in C and C++. Addison-Wesley Professional."},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360611"},{"key":"e_1_2_2_39_1","volume-title":"Distributed. Retrieved","author":"Sirer Emin G\u00fcn","year":"2016","unstructured":"Emin G\u00fcn Sirer . 2016 . Thoughts on The DAO Hack. Hacking , Distributed. Retrieved February 18, 2020 from http:\/\/hackingdistributed.com\/ 2016 \/06\/17\/thoughts-on-the-dao-hack\/ Emin G\u00fcn Sirer. 2016. Thoughts on The DAO Hack. Hacking, Distributed. Retrieved February 18, 2020 from http:\/\/hackingdistributed.com\/ 2016 \/06\/17\/thoughts-on-the-dao-hack\/"},{"key":"e_1_2_2_40_1","volume-title":"Retrieved","author":"Overfow Stack","year":"2019","unstructured":"Stack Overfow . 2019 . Developer Survey Results 2019 . Retrieved February 18, 2020 from https:\/\/insights.stackoverfow.com\/ survey\/2019 Stack Overfow. 2019. Developer Survey Results 2019. Retrieved February 18, 2020 from https:\/\/insights.stackoverfow.com\/ survey\/2019"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/2661136.2661156"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/2534973"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1986.6312929"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-44202-9_7"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.5210\/fm.v2i9.548"},{"key":"e_1_2_2_46_1","volume-title":"Retrieved","author":"Foundation The Linux","year":"2020","unstructured":"The Linux Foundation . 2020 a. Hyperledger. ( 2020 ) . Retrieved February 18, 2020 from https:\/\/www.hyperledger.org The Linux Foundation. 2020a. Hyperledger. ( 2020 ). Retrieved February 18, 2020 from https:\/\/www.hyperledger.org"},{"key":"e_1_2_2_47_1","volume-title":"Retrieved","author":"Foundation The Linux","year":"2020","unstructured":"The Linux Foundation . 2020 b. Hyperledger Fabric . Retrieved February 18, 2020 from https:\/\/www.hyperledger.org\/projects\/ fabric The Linux Foundation. 2020b. Hyperledger Fabric. Retrieved February 18, 2020 from https:\/\/www.hyperledger.org\/projects\/ fabric"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/2884781.2884849"},{"key":"e_1_2_2_49_1","volume-title":"Programming concepts and methods","author":"Wadler Philip","unstructured":"Philip Wadler . 1990. Linear types can change the world . In Programming concepts and methods , Vol. 2 . 347-359. Philip Wadler. 1990. Linear types can change the world. In Programming concepts and methods, Vol. 2. 347-359."},{"key":"e_1_2_2_50_1","unstructured":"Serdar Yegulalp. 2018. Rust language is too hard to learn and use says user survey. https:\/\/www.infoworld.com\/article\/ 3324488\/rust-language-is-too-hard-to-learn-and-use-says-user-survey.html  Serdar Yegulalp. 2018. Rust language is too hard to learn and use says user survey. https:\/\/www.infoworld.com\/article\/ 3324488\/rust-language-is-too-hard-to-learn-and-use-says-user-survey.html"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428200","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428200","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428200","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:02:56Z","timestamp":1750197776000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428200"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,11,13]]},"references-count":50,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2020,11,13]]}},"alternative-id":["10.1145\/3428200"],"URL":"https:\/\/doi.org\/10.1145\/3428200","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,11,13]]},"assertion":[{"value":"2020-11-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}