{"id":23024,"date":"2017-11-03T20:11:39","date_gmt":"2017-11-03T20:11:39","guid":{"rendered":"http:\/\/ci027cfe6a30062697"},"modified":"2017-11-03T20:11:39","modified_gmt":"2017-11-03T20:11:39","slug":"introducing-programming-language-so-simple-it-fits-t-shirt","status":"publish","type":"post","link":"https:\/\/bitcoinmagazine.com\/culture\/introducing-programming-language-so-simple-it-fits-t-shirt","title":{"rendered":"Introducing a Programming Language so Simple, It \u201cFits on a T-shirt\u201d"},"content":{"rendered":"<div id=\"bsf_rt_marker\"><\/div><figure><img decoding=\"async\" src=\"https:\/\/bitcoinmagazine.com\/wp-content\/uploads\/2024\/11\/introducing-a-programming-language-so-simple.jpg\" title=\"\"><\/figure>\n<p>Blockstream is <a href=\"http:\/\/blockstream.com\/2017\/10\/30\/simplicity\" target=\"_blank\" rel=\"noopener\">introducing Simplicity<\/a>, a new programming language for blockchain-based smart contracts, intended for inclusion in Blockstream\u2019s sidechains and eventually in Bitcoin. The new language was presented by its creator, Russell O&#8217;Connor, Infrastructure Tech Developer at Blockstream, at the ACM SIGSAC Workshop on Programming Languages and Analysis for Security (<a href=\"http:\/\/plas2017.cse.buffalo.edu\/\" target=\"_blank\" rel=\"noopener\">PLAS 2017<\/a>).<\/p>\n<p>&#8220;Simplicity is a blockchain programming language that is so simple, it fits on a t-shirt,\u201d O&#8217;Connor told <em>Bitcoin Magazine<\/em>. \u201cIt is critical that smart contracts behave in ways that all participants expect, and applying formal verification to Simplicity allows us to achieve that.\u201d<\/p>\n<p>Simplicity is still a Blockstream Research &amp; Development project, but there\u2019s potential for its use in Blockstream products in the future, according to the company\u2019s announcement.<\/p>\n<p>\u201cSimplicity is flexible enough that I anticipate many new, domain-specific, languages will generate Simplicity, and this will give users the freedom to generate smart contracts using the tools that most suit their needs,&#8221; added O&#8217;Connor.<\/p>\n<p>O&#8217;Connor\u2019s paper, titled \u201c<a href=\"https:\/\/blockstream.com\/simplicity.pdf\" target=\"_blank\" rel=\"noopener\">Simplicity: A New Language for Blockchains<\/a>,\u201d presents Simplicity as \u201ca new programming language, designed to be used for cryptocurrencies and blockchain applications, which aims to improve upon existing cryptocurrency languages, such as Bitcoin Script and Ethereum\u2019s EVM [virtual machine], while avoiding some of the problems they face.\u201d<\/p>\n<p>Bitcoin script is limited by design and unsuitable for complex smart contracts that need more than a small set of simple templates to perform tasks like digital signature verification. Ethereum, on the other hand, includes a more expressive and flexible, Turing-complete programming language, which allows for arbitrarily complex smart-contracts in principle. <\/p>\n<p>But, in practice, Ethereum doesn\u2019t support static analysis to pre-determine the computing resources that a program will require and, thus, filter out too costly contracts and infinite loops. Therefore, pre-paid \u201cgas\u201d fees are lost when an Ethereum program \u201cruns out of gas.\u201d The simpler Bitcoin scripting, which supports static analysis, doesn\u2019t present similar issues.<\/p>\n<p>In <a href=\"https:\/\/lists.linuxfoundation.org\/pipermail\/bitcoin-dev\/2017-October\/015217.html\" target=\"_blank\" rel=\"noopener\">a post to the bitcoin-dev mailing list<\/a>, O&#8217;Connor proposed Simplicity as an alternative to Bitcoin Script, noting that static analysis is important for both node operators and for Simplicity program designers.<\/p>\n<p>\u201cStatic analysis is a technique that provides a universal algorithm to determine how much any Simplicity program will cost to run before you stake your money on it,\u201d O&#8217;Connor told <em>Bitcoin Magazine<\/em>.<\/p>\n<p>Simplicity can be seen as a more flexible alternative to Bitcoin scripting, not Turing-complete but expressive enough to build useful smart contracts for blockchain applications, or as an alternative to Ethereum, which will support static analysis and other desirable features including improved safety, formal semantics, and Merkelized Abstract Syntax Trees (MASTs). <\/p>\n<p>While Simplicity is intended as a low-level language for smart contracts, O\u2019Connor envisages the possibility of compiling programs written in higher-level languages (like Ethereum\u2019s Solidity) to Simplicity.<\/p>\n<p>\u201cIvy and the \u03a3-State Authentication Language are existing programming language development efforts that may be suitable for being compiled to Simplicity,\u201d notes O\u2019Connor in the paper. \u201cFor the time being, generating Simplicity with our [<a href=\"https:\/\/www.haskell.org\/\" target=\"_blank\" rel=\"noopener\">Haskell<\/a>] and [<a href=\"https:\/\/coq.inria.fr\/\" target=\"_blank\" rel=\"noopener\">Coq<\/a>] libraries is possible.\u201d<\/p>\n<p>The next step in Simplicity\u2019s development will be a bare-bones SDK (Software Developer Kit) that will include formal semantics and correctness proofs in Coq, a Haskell implementation for constructing Simplicity programs and a C interpreter for Simplicity. Then, the new language will be ready for initial deployment in the <a href=\"https:\/\/elementsproject.org\/\" target=\"_blank\" rel=\"noopener\">Elements<\/a> project, Blockstream\u2019s open-source codebase for <a href=\"https:\/\/bitcoinmagazine.com\/articles\/blockstream-moves-ahead-sidechain-elements-first-implementation-sidechains-1433883105\">sidechains<\/a>, so that developers can start experimenting with the code.<\/p>\n<p>But, as O\u2019Connor stated on <a href=\"https:\/\/lists.linuxfoundation.org\/pipermail\/bitcoin-dev\/2017-October\/015217.html\" target=\"_blank\" rel=\"noopener\">bitcoin-dev<\/a>, \u201cOnly after extensive vetting would it be suitable to consider Simplicity for inclusion in Bitcoin.\u201d<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Blockstream is introducing Simplicity, a new programming language for blockchain-based smart contracts, intended for inclusion in Blockstream\u2019s sidechains and eventually in Bitcoin. The new language was presented by its creator, Russell O&#8217;Connor, Infrastructure Tech Developer at Blockstream, at the ACM SIGSAC Workshop on Programming Languages and Analysis for Security (PLAS 2017). &#8220;Simplicity is a blockchain [&hellip;]<\/p>\n","protected":false},"author":3509,"featured_media":23025,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[287,621],"class_list":{"0":"post-23024","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-culture","8":"tag-blockstream","9":"tag-ethereum"},"author_data":{"id":3509,"name":"Giulio Prisco","nicename":"giulio-prisco","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/2d091b908741b627d89036dd43748bb5c5edcfe9f805501703e2c3af34dadfca?s=96&d=robohash&r=g"},"featured_image_url":"https:\/\/bitcoinmagazine.com\/wp-content\/uploads\/2024\/11\/introducing-a-programming-language-so-simple.jpg","_links":{"self":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/posts\/23024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/users\/3509"}],"replies":[{"embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/comments?post=23024"}],"version-history":[{"count":0,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/posts\/23024\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/media\/23025"}],"wp:attachment":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/media?parent=23024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/categories?post=23024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/tags?post=23024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}