{"id":54,"date":"2019-08-23T12:26:50","date_gmt":"2019-08-23T12:26:50","guid":{"rendered":"https:\/\/abhashstempblog.wordpress.com\/2019\/08\/23\/solidity-v-s-move-v-s-clarity-the-battle-of-smart-contract-languages\/"},"modified":"2023-01-09T13:32:53","modified_gmt":"2023-01-09T08:02:53","slug":"solidity-move-clarity-the-battle-of-smart-contract-languages","status":"publish","type":"post","link":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/","title":{"rendered":"Solidity v\/s Move v\/s Clarity: The Battle of Smart Contract languages."},"content":{"rendered":"\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*GDtwa7vdqN6D2bkCCSWI8g.jpeg\" alt=\"Solidity vs Move vs Clarity: The Battle of Smart Contract Languages\"\/><\/figure>\n\n\n\n<p>It\u2019s straightforward for you to communicate with your parents in a native language. Right? If you don\u2019t know Russian, then you can not communicate with a person who understands Russian only.<\/p>\n\n\n\n<p>Language is a crucial component for any communication process, and that\u2019s why new emerging Blockchains come with their own smart contract languages. Blockchain specific smart contract language enables smart contracts to interact and utilize their blockchain to its full extent.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>The most popular blockchain for smart contracts is Ethereum and its widely used smart contract language\u200a\u2014\u200a<strong>Solidity<\/strong>.<\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>With their recent announcement, Facebook introduced a new Blockchain\u200a\u2014\u200aLibra, and its smart contract language\u200a\u2014\u200a<strong>Move<\/strong>.<\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Blockstack, a decentralized computing network and app ecosystem that puts users in control of their identity and data, introduced <strong>Clarity. <\/strong>It is the smart contract language for their Stacks V2 blockchain (currently under development along with Clarity).<\/p><\/blockquote>\n\n\n\n<p>With increased Blockchain adoption, we will see the emergence of more of these new blockchains along with their smart contract languages.<\/p>\n\n\n\n<p>There are lots of battle-tested dApps (decentralized apps) running on Ethereum blockchain using solidity. The ecosystem has witnessed DAO hack, Parity Multi-sig bug, and reentrancy attack, etc.<\/p>\n\n\n\n<p>The new smart contract languages claim to offer more security and imminent execution of the code.<\/p>\n\n\n\n<p>In theory, Move and Clarity provide more safety, but a wise person once said:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>The well-coded contract never fails.<\/p><\/blockquote>\n\n\n\n<p>Both Move and Clarity is still not as mature as Solidity and needs improvement. Also, they are yet to be tested for any production use.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-solidity\">Solidity<\/h4>\n\n\n\n<p>Solidity is a statically typed, compiled language with support for primary types like address, booleans, byte arrays, strings integers, enums, etc. and complex types like fixed-size &amp; dynamic-size arrays, structs, mappings.<\/p>\n\n\n\n<p>With <code>struct<\/code> developers, a developer can create their own named types so that others can reuse these custom types and helper functions if they are defined in <code>libraries,<\/code> or by inheritance, if they are defined in a <code>contract<\/code>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-move\">Move<\/h4>\n\n\n\n<p>Move is typed and currently supports a small number of native types, but Move is very modular<strong>, <\/strong>via separate custom type definitions (unrestricted structs or resources) and static functions from actual data, stored in each account. <strong>Modules<\/strong> are state-less; it only contains code. Modules can define <strong>resource<\/strong> types (similar to Solidity <code>structs<\/code>) and functions. <strong>Move has first-class Resource type<\/strong>. A resource can never be copied, only moved. These guarantees are enforced statically by the Move VM.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-clarity\">Clarity<\/h4>\n\n\n\n<p>Clarity is an <strong>interpreted <\/strong>and <strong>Turing incomplete <\/strong>smart contract language as it tries to remove \u201cTuring complexity.\u201d This decision allows a complete static analysis of the entire call graph for a given smart contract.<\/p>\n\n\n\n<p>Further Clarity\u2019s support for types and type checker can eliminate unintended casts, Re-entrance bugs, and reads of uninitialized values.<\/p>\n\n\n\n<p>A Clarity smart contract code can be analyzed for runtime cost and data usage, allowing predictive execution of code.<\/p>\n\n\n\n<p>As Clarity doesn\u2019t need bytecode representation (e.g., EVM bytecode for Solidity and Move bytecode for Move), it minimizes the surface area for introducing bugs. Bugs introduced by a Compiler is not an issue here.<\/p>\n\n\n\n<figure class=\"wp-block-image wp-caption\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*G-2o0eHxIAm2-78muXJPrw.png\" alt=\"Solidity vs Move vs Clarity\"\/><figcaption>Comparison of Solidity, Move, and Clarity on different parameters<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>We have gone through the similarities and differences of these languages, but it\u2019s time for us to implement a similar contract in Clarity and Move. For an ERC-20 example Solidity code, you can checkout SpringRole\u2019s <a href=\"https:\/\/github.com\/SpringRole\/smart-contracts\/blob\/master\/contracts\/SPRINGToken.sol\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>SpringToken<\/strong><\/a> smart contract.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-clarity-implementation\">Clarity Implementation<\/h4>\n\n\n\n<p>We will define a <strong>map<\/strong> (like mapping in Solidity) name balances which map the address of the owner type principal to the available balance.<\/p>\n\n\n\n<p>To define a map we use keyword <strong>define-map<\/strong>. Similarly, we will define another map for allowances (note that it is a map to another map).<\/p>\n\n\n\n<p>To keep track of total supply we will define a variable name total-supply of type <strong>int<\/strong> using keyword <strong>define-data-var <\/strong>and assigned it a value of 0.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*AgXJXcyLI8gZQD9kiBbgWw.png\" alt=\"Smart Contract Language - Clarity Implementation\"\/><\/figure>\n\n\n\n<p>Now to fetch the user\u2019s balance we will define function <strong>balance-of <\/strong>using keyword <strong>define<\/strong>. This function will take input <strong>account<\/strong> of type <strong>principal <\/strong>and return the balance from the map <strong>balances<\/strong> using keyword <strong>fetch-entry<\/strong>. Similarly, we can define a function to fetch the <strong>allowance <\/strong>given to a spender by an owner.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*fISmVD9bUh-KVnVviTMmgA.png\" alt=\"Smart Contract Language - Clarity Implementation\"\/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: Using <strong>define <\/strong>keyword will define a private function if you want a public function, then use a <strong>define-public<\/strong> keyword instead.<\/p>\n\n\n\n<p>Now for the transfer function, we will define a private function <strong>transfer!<\/strong> which takes three input <strong>sender<\/strong>, <strong>receiver <\/strong>and the <strong>amount<\/strong>. As this function is modifying the blockchain by changing the balances, we put an exclamation mark (!) after the function name to indicate the same.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*QGAi0bNCmZSZD4WN2V2H5w.png\" alt=\"Smart Contract Language - Clarity Implementation\"\/><\/figure>\n\n\n\n<p>Now time to implement increase and decrease <strong>allowance <\/strong>function.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*yHFuD96SYRDNrVVLRGDo_w.png\" alt=\"Smart Contract Language - Clarity Implementation\"\/><\/figure>\n\n\n\n<p>These two functions will be reused in the other function <strong>approve <\/strong>and <strong>transfer-from.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*6q-M3oJz-hi9e5sveWVcrQ.png\" alt=\"Smart Contract Language - Clarity Implementation\"\/><\/figure>\n\n\n\n<p>You can grab full implementation of contracts in Clarity from <a href=\"https:\/\/github.com\/SpringRole\/clarity-sample-app\/blob\/master\/contracts\/spring-token.clar\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-move-implementation\">Move Implementation<\/h4>\n\n\n\n<p>We will take advantage of Move\u2019s Resource type to define different roles. (i.e. Minter, Owner, etc.). We will define these into separate module name <strong>SpringTokenRoles<\/strong>. We will add functions which <strong>grant <\/strong>different roles like Owner and minter. Also, a <strong>require <\/strong>function that will check if an address has the specified role or not. As a resource can not be copied, we have to borrow it, so we will define the function which will let us <strong>borrow<\/strong> different roles.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>module <\/strong>SpringTokenRoles {<br><strong>resource<\/strong> <em>Owner <\/em>{ }<br><strong>resource <\/strong><em>T<\/em> {<br>    minter: <strong>bool<\/strong>,<br>    blacklisted: <strong>bool<\/strong>,<br>  }<br><br><strong>public <\/strong><em>publish<\/em>() {<br><strong>let <\/strong><em>sender<\/em>: <strong>address<\/strong>;<br>    sender = <em>get_txn_sender<\/em>();<br><strong>if <\/strong>(<strong>true<\/strong>) {<br><strong>Self<\/strong>.<em>grant_owner_role<\/em>();<br>    }<br>    move_to_sender&lt;T&gt;(T{ minter: <strong>false<\/strong>, blacklisted: <strong>false <\/strong>});<br><strong>return<\/strong>;<br>  }<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>grant_owner_role<\/em>() {<br>    move_to_sender&lt;Owner&gt;(Owner {});<br><strong>return<\/strong>;<br>  }<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>public <\/strong><em>borrow_owner_role<\/em>(): &amp;<strong>R<\/strong>#<strong>Self<\/strong>.Owner {<br><strong>let <\/strong>sender: address;<br><strong>let <\/strong>owner_role_ref: &amp;mut <strong>R<\/strong>#<strong>Self<\/strong>.Owner;<br><strong>let <\/strong>owner_role_immut_ref: &amp;<strong>R<\/strong>#<strong>Self<\/strong>.Owner;<br>    sender = get_txn_sender();<br>    owner_role_ref = borrow_global&lt;Owner&gt;(<strong>move<\/strong>(sender));<br>    owner_role_immut_ref = freeze(<strong>move<\/strong>(owner_role_ref));<br><strong>return<\/strong> move(owner_role_immut_ref);<br>  }    <br>}<\/pre>\n\n\n\n<p>Similarly, we will do the above implementation for other roles i.e. minter, blacklisted with few more functions available below.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*YCrjYadv3hL9NUGc993Qag.png\" alt=\"Smart Contract Language - Move Implementation\"\/><\/figure>\n\n\n\n<p>The above functions work similarly to a require statement in Solidity. You can find rest of the token implementation from Springrole\u2019s <a href=\"https:\/\/github.com\/SpringRole\/move-example-app\/blob\/master\/spring_token.mvir\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h3>\n\n\n\n<p>Most of the people will find writing a smart contract in Solidity to be easy as it is loosely based on ECMAScript. Prior knowledge of the same would be helpful in understanding Solidity.<\/p>\n\n\n\n<p>Clarity is Lisp-like language, so people with prior knowledge of Lisp will find Clarity to be the go-to language to write smart contracts.<\/p>\n\n\n\n<p>For those familiar with Rust programming language will prefer to code in Move as it is very similar to Rust.<\/p>\n\n\n\n<p>Every smart contract language has its pros and cons.<\/p>\n\n\n\n<p>I believe Solidity is the way to go for more flexibility. However, if you need immunity from reentrance attack, you can try out Move and Clarity, and if you want to take advantage of the first-class resource types then look no further than Move.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-about-springrole\">About SpringRole<\/h3>\n\n\n\n<p><a href=\"https:\/\/springrole.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">SpringRole<\/a> is enabling everyone\u2019s #VerifiedProfessionalProfile on the Blockchain. It is a decentralised attestation-based professional network platform powered by the blockchain.<\/p>\n\n\n\n<p><em>SpringRole is the platform where people can view, share and get attestations on their professional profile, thereby creating a verified resume that they can share and use. A user\u2019s educational qualifications and work experience are verified by the organisations themselves and written directly to the blockchain. To assess a user\u2019s skill set, SpringRole has a system of weighted endorsements that let users objectively look at people\u2019s profiles and assess their skill level.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-learn-more\">Learn More<\/h3>\n\n\n\n<p>To learn more, and be up-to-date about all-things-SpringRole:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noopener noreferrer\" href=\"https:\/\/springrole.com\/vanity\" target=\"_blank\">Create your #VerifiedProfessionalProfile on the Blockchain<\/a><\/li><li><a rel=\"noopener noreferrer\" href=\"https:\/\/springrole.com\/\" target=\"_blank\">Visit our Website<\/a><\/li><li><a rel=\"noopener noreferrer\" href=\"https:\/\/t.me\/springrole\" target=\"_blank\">Join the conversation on Telegram<\/a><\/li><li><a rel=\"noopener noreferrer\" href=\"https:\/\/twitter.com\/springroleinc\" target=\"_blank\">Follow us on Twitter<\/a> <\/li><li><a rel=\"noopener noreferrer\" href=\"https:\/\/blog.springrole.com\/\" target=\"_blank\">Read more posts from our Blog<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>It\u2019s straightforward for you to communicate with your parents in a native language. Right? If you don\u2019t know Russian, then you can not communicate with a person who understands Russian only. Language is a crucial component for any communication process, and that\u2019s why new emerging Blockchains come with their own smart contract languages. Blockchain specific<\/p>\n","protected":false},"author":3,"featured_media":1195,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1439],"tags":[24,52,122,125,127],"class_list":["post-54","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blockchain-technology","tag-clarity","tag-ethereum","tag-solidity","tag-springrole","tag-springrole-engineering","disable-dropcap","disable-2-columns"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Solidity v\/s Move v\/s Clarity: The Battle of Smart Contract languages. -<\/title>\n<meta name=\"description\" content=\"With increased Blockchain adoption, we see the emergence of more of these new blockchains along with their smart contract languages.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Solidity v\/s Move v\/s Clarity: The Battle of Smart Contract languages.\" \/>\n<meta property=\"og:description\" content=\"It\u2019s straightforward for you to communicate with your parents in a native language. Right? If you don\u2019t know Russian, then you can not communicate with a\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/\" \/>\n<meta property=\"og:site_name\" content=\"Springworks Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-23T12:26:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-09T08:02:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.springworks.in\/wp-content\/uploads\/2019\/08\/2_edit.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"533\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Springworks Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/springroleinc\/\" \/>\n<meta name=\"twitter:site\" content=\"@springroleinc\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Springworks Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/\"},\"author\":{\"name\":\"Springworks Team\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#\\\/schema\\\/person\\\/6d88881fb107cd90192ec2da81bff5aa\"},\"headline\":\"Solidity v\\\/s Move v\\\/s Clarity: The Battle of Smart Contract languages.\",\"datePublished\":\"2019-08-23T12:26:50+00:00\",\"dateModified\":\"2023-01-09T08:02:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/\"},\"wordCount\":1181,\"publisher\":{\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/2_edit.jpeg\",\"keywords\":[\"Clarity\",\"Ethereum\",\"Solidity\",\"Springrole\",\"Springrole Engineering\"],\"articleSection\":[\"Blockchain Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/\",\"url\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/\",\"name\":\"Solidity v\\\/s Move v\\\/s Clarity: The Battle of Smart Contract languages. -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/2_edit.jpeg\",\"datePublished\":\"2019-08-23T12:26:50+00:00\",\"dateModified\":\"2023-01-09T08:02:53+00:00\",\"description\":\"With increased Blockchain adoption, we see the emergence of more of these new blockchains along with their smart contract languages.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/2_edit.jpeg\",\"contentUrl\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/2_edit.jpeg\",\"width\":800,\"height\":533,\"caption\":\"The Battle of Smart Contract Languages\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/solidity-move-clarity-the-battle-of-smart-contract-languages\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.blog.springworks.in\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Solidity v\\\/s Move v\\\/s Clarity: The Battle of Smart Contract languages.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#website\",\"url\":\"https:\\\/\\\/www.blog.springworks.in\\\/\",\"name\":\"Springworks Blog\",\"description\":\"Everything about the Future of Hiring and Recruiting\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.blog.springworks.in\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#organization\",\"name\":\"Springworks\",\"url\":\"https:\\\/\\\/www.blog.springworks.in\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Springworks-Blog-1.png\",\"contentUrl\":\"\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Springworks-Blog-1.png\",\"width\":548,\"height\":79,\"caption\":\"Springworks\"},\"image\":{\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/springroleinc\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.blog.springworks.in\\\/#\\\/schema\\\/person\\\/6d88881fb107cd90192ec2da81bff5aa\",\"name\":\"Springworks Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/litespeed\\\/avatar\\\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559\",\"url\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/litespeed\\\/avatar\\\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559\",\"contentUrl\":\"https:\\\/\\\/blog.springworks.in\\\/wp-content\\\/litespeed\\\/avatar\\\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559\",\"caption\":\"Springworks Team\"},\"description\":\"Building products and tools to simplify the life of an org's HR function in terms of recruiting, onboarding &amp; retention!\",\"sameAs\":[\"https:\\\/\\\/www.springworks.in\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/springrole\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/springroleinc\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Solidity v\/s Move v\/s Clarity: The Battle of Smart Contract languages. -","description":"With increased Blockchain adoption, we see the emergence of more of these new blockchains along with their smart contract languages.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/","og_locale":"en_US","og_type":"article","og_title":"Solidity v\/s Move v\/s Clarity: The Battle of Smart Contract languages.","og_description":"It\u2019s straightforward for you to communicate with your parents in a native language. Right? If you don\u2019t know Russian, then you can not communicate with a","og_url":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/","og_site_name":"Springworks Blog","article_published_time":"2019-08-23T12:26:50+00:00","article_modified_time":"2023-01-09T08:02:53+00:00","og_image":[{"width":800,"height":533,"url":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2019\/08\/2_edit.jpeg","type":"image\/jpeg"}],"author":"Springworks Team","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/springroleinc\/","twitter_site":"@springroleinc","twitter_misc":{"Written by":"Springworks Team","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/#article","isPartOf":{"@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/"},"author":{"name":"Springworks Team","@id":"https:\/\/www.blog.springworks.in\/#\/schema\/person\/6d88881fb107cd90192ec2da81bff5aa"},"headline":"Solidity v\/s Move v\/s Clarity: The Battle of Smart Contract languages.","datePublished":"2019-08-23T12:26:50+00:00","dateModified":"2023-01-09T08:02:53+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/"},"wordCount":1181,"publisher":{"@id":"https:\/\/www.blog.springworks.in\/#organization"},"image":{"@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2019\/08\/2_edit.jpeg","keywords":["Clarity","Ethereum","Solidity","Springrole","Springrole Engineering"],"articleSection":["Blockchain Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/","url":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/","name":"Solidity v\/s Move v\/s Clarity: The Battle of Smart Contract languages. -","isPartOf":{"@id":"https:\/\/www.blog.springworks.in\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/#primaryimage"},"image":{"@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2019\/08\/2_edit.jpeg","datePublished":"2019-08-23T12:26:50+00:00","dateModified":"2023-01-09T08:02:53+00:00","description":"With increased Blockchain adoption, we see the emergence of more of these new blockchains along with their smart contract languages.","breadcrumb":{"@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/#primaryimage","url":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2019\/08\/2_edit.jpeg","contentUrl":"https:\/\/blog.springworks.in\/wp-content\/uploads\/2019\/08\/2_edit.jpeg","width":800,"height":533,"caption":"The Battle of Smart Contract Languages"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.springworks.in\/solidity-move-clarity-the-battle-of-smart-contract-languages\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.blog.springworks.in\/"},{"@type":"ListItem","position":2,"name":"Solidity v\/s Move v\/s Clarity: The Battle of Smart Contract languages."}]},{"@type":"WebSite","@id":"https:\/\/www.blog.springworks.in\/#website","url":"https:\/\/www.blog.springworks.in\/","name":"Springworks Blog","description":"Everything about the Future of Hiring and Recruiting","publisher":{"@id":"https:\/\/www.blog.springworks.in\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.blog.springworks.in\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.blog.springworks.in\/#organization","name":"Springworks","url":"https:\/\/www.blog.springworks.in\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.blog.springworks.in\/#\/schema\/logo\/image\/","url":"\/wp-content\/uploads\/2021\/09\/Springworks-Blog-1.png","contentUrl":"\/wp-content\/uploads\/2021\/09\/Springworks-Blog-1.png","width":548,"height":79,"caption":"Springworks"},"image":{"@id":"https:\/\/www.blog.springworks.in\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/springroleinc"]},{"@type":"Person","@id":"https:\/\/www.blog.springworks.in\/#\/schema\/person\/6d88881fb107cd90192ec2da81bff5aa","name":"Springworks Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.springworks.in\/wp-content\/litespeed\/avatar\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559","url":"https:\/\/blog.springworks.in\/wp-content\/litespeed\/avatar\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559","contentUrl":"https:\/\/blog.springworks.in\/wp-content\/litespeed\/avatar\/377f22b6c39a82d794600259c507e8a8.jpg?ver=1777544559","caption":"Springworks Team"},"description":"Building products and tools to simplify the life of an org's HR function in terms of recruiting, onboarding &amp; retention!","sameAs":["https:\/\/www.springworks.in\/","https:\/\/www.linkedin.com\/company\/springrole\/","https:\/\/x.com\/https:\/\/twitter.com\/springroleinc\/"]}]}},"_links":{"self":[{"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/posts\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/comments?post=54"}],"version-history":[{"count":5,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/posts\/54\/revisions"}],"predecessor-version":[{"id":507908,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/posts\/54\/revisions\/507908"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/media\/1195"}],"wp:attachment":[{"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/media?parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/categories?post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.springworks.in\/wp-json\/wp\/v2\/tags?post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}