{"id":2243,"date":"2018-12-15T02:43:14","date_gmt":"2018-12-15T02:43:14","guid":{"rendered":"http:\/\/www.talkcrypto.org\/blog\/?p=2243"},"modified":"2018-12-15T09:41:56","modified_gmt":"2018-12-15T09:41:56","slug":"checklist-for-developing-smart-contracts","status":"publish","type":"post","link":"https:\/\/www.talkcrypto.org\/blog\/2018\/12\/15\/checklist-for-developing-smart-contracts\/","title":{"rendered":"Checklist for developing smart contracts"},"content":{"rendered":"<p>To start developing smart contracts in solidity, here is a check list of applications that will make your life easy.<\/p>\n<p>Note: Instructions here are geared towards Mac operating system.<\/p>\n<h3>Remix<\/h3>\n<p>Remix is an online Integrated Development Environment (IDE) where solidity smart contracts can be written. It can then be compiled and tested locally or combined with Metamask and deployed on testnet for instance.<\/p>\n<h3>Editors &#8211; Atom or Sublime<\/h3>\n<p><a href=\"https:\/\/atom.io\/\" target=\"_blank\" rel=\"noopener\">Atom<\/a> or <a href=\"https:\/\/www.sublimetext.com\/3\" target=\"_blank\" rel=\"noopener\">Sublime<\/a> are popular editors. Atom is open source (ie free) while Sublime costs $80USD. While solidity smart contracts are written in remix, editors are useful to handle json, javascript and regular text files.<\/p>\n<h3>Metamask<\/h3>\n<p>Metamask is a browser extension that allows smart contracts to connect to various blockchains. It can be thought of as a bridge connecting the two together.<\/p>\n<h3>Geth<\/h3>\n<p>Geth or Go Ethereum is an Ethereum client which when run, acts as a node to connect to the Ethereum blockchain. It can be configured to point to mainnet, testnet or even set up in private mode. The following command will tell you if you have geth installed or not.<\/p>\n<pre>&gt; geth version\r\nGeth\r\nVersion: 1.8.14-stable\r\nArchitecture: amd64\r\nProtocol Versions: [63 62]\r\nNetwork Id: 1\r\nGo Version: go1.10.3\r\nOperating System: darwin\r\nGOPATH=\r\nGOROOT=\/usr\/local\/Cellar\/go\/1.10.3\/libexec<\/pre>\n<p>To install geth, follow the instructions <a href=\"https:\/\/www.talkcrypto.org\/blog\/2018\/01\/23\/what-is-geth\/\" target=\"_blank\" rel=\"noopener\">here<\/a><\/p>\n<h3>Node<\/h3>\n<p>You will also require NodeJS which is a javascript run time environment for building network applications.\u00a0Node.js is used to create fast web servers by companies like Walmart, eBay and Netflix.<\/p>\n<p>Node is required to be installed along with the node network package manager (npm) before we can install Truffle below. To check if you have node installed, run:<\/p>\n<pre>&gt; node -v\u00a0\r\n<span class=\"s1\">v11.2.0\r\n&gt; npm -v\r\n6.4.1<\/span><\/pre>\n<p>To install node run<\/p>\n<pre>&gt; brew install node<\/pre>\n<p>To uninstall:<\/p>\n<pre>&gt; brew uninstall node<\/pre>\n<h3>Truffle<\/h3>\n<p>It is fine to create smart contracts in Remix and deploy to the blockchain via Metamask however, there is a lot of copy and pasting and screen switching. Truffle is designed as a development framework that provides simple commands to compile and deploy smart contracts based on configuration files. It also provides automated testing capabilities as well.<\/p>\n<pre>&gt; truffle version\r\nTruffle v4.1.14 (core: 4.1.14)\r\nSolidity v0.4.24 (solc-js)\r\n<\/pre>\n<p>To install truffle run:<\/p>\n<pre>&gt; sudo npm install -g truffle<\/pre>\n<p>To uninstall truffle run:<\/p>\n<pre>&gt; sudo npm uninstall -g truffle<\/pre>\n<h3>Ganache<\/h3>\n<p><a href=\"https:\/\/truffleframework.com\/ganache\">Ganache<\/a>\u00a0is a personal blockchain for Ethereum development you can use to deploy contracts, develop your applications, and run tests. It use to be called TestRPC and is still available as a command line or with a nice user interface. The user friendly interface provides a much nicer experience for beginners.<\/p>\n<h3>Ethereum Wallet or Mist<\/h3>\n<p>Here is where some get confused between Ethereum wallet and Mist. There are both options available at:\u00a0https:\/\/github.com\/ethereum\/mist\/releases. Ethereum wallet is a pure wallet application where as Mist is a decentralized App or dApp browser that includes the Ethereum wallet dApp. ie if you use Mist, you get a 2 for 1 deal.<\/p>\n<p>There are a number of applications and these can be remembered via the anagram GRANT-MGM<\/p>\n<p>Geth, Remix, Atom, Node, Truffle &#8211; Metamask, Ganache and Mist<\/p>\n<p>Here is a simple bash script that will check if\u00a0geth, node, npm and truffle exist on your system.<\/p>\n<p>https:\/\/github.com\/seandotau\/tools_checklist<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To start developing smart contracts in solidity, here is a<\/p>\n","protected":false},"author":1,"featured_media":2244,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2243","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ethereum"],"featured_image_urls":{"full":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant.jpg",300,137,false],"thumbnail":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant-150x137.jpg",150,137,true],"medium":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant-300x137.jpg",300,137,true],"medium_large":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant.jpg",300,137,false],"large":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant.jpg",300,137,false],"1536x1536":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant.jpg",300,137,false],"2048x2048":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant.jpg",300,137,false],"chromenews-featured":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant.jpg",300,137,false],"chromenews-large":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant.jpg",300,137,false],"chromenews-medium":["https:\/\/www.talkcrypto.org\/blog\/wp-content\/uploads\/2018\/12\/grant.jpg",300,137,false]},"author_info":{"info":["seandotau"]},"category_info":"<a href=\"https:\/\/www.talkcrypto.org\/blog\/category\/ethereum\/\" rel=\"category tag\">Ethereum<\/a>","tag_info":"Ethereum","comment_count":"0","_links":{"self":[{"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/posts\/2243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/comments?post=2243"}],"version-history":[{"count":3,"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/posts\/2243\/revisions"}],"predecessor-version":[{"id":2247,"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/posts\/2243\/revisions\/2247"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/media\/2244"}],"wp:attachment":[{"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/media?parent=2243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/categories?post=2243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.talkcrypto.org\/blog\/wp-json\/wp\/v2\/tags?post=2243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}