{"id":285676,"date":"2017-04-28T14:35:27","date_gmt":"2017-04-28T10:35:27","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=285676"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=285676","title":{"rendered":"Dive into Ethereum"},"content":{"rendered":"<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 Ethereum \u0441\u0442\u0430\u043b\u0430 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0443\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0431\u0440\u0435\u043d\u0434\u043e\u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u0441\u0444\u0435\u0440\u044b, \u0432\u043f\u043b\u043e\u0442\u043d\u0443\u044e \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0432\u0448\u0438\u0441\u044c \u043f\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 (\u0438 \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438) \u043a Bitcoin. \u041d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f &quot;\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e&quot; \u0440\u0443\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0433\u0430\u0439\u0434\u0430, \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0437\u0432\u0435\u0440\u044c \u0438 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u043f\u043e\u0434 Ethereum.<\/p>\n<p>  <\/p>\n<p>\u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0441\u0430\u043c \u042f\u041f, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI \u0438 \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442-\u0432\u0438\u0437\u0438\u0442\u043a\u0443, \u043d\u043e &quot;\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c&quot; \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0443\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445 Ethereum. \u041a\u043e\u0433\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u043e \u2014 \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b31\/607\/cf2\/b31607cf2d2143a3b5452acc1a85f011.jpg\" alt=\"preview\"\/><\/p>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"soderzhanie\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"#vvedenie-v-ethereum\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Ethereum<\/a><\/li>\n<li><a href=\"#instrumenty\">\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/a><br \/> \n<ul>\n<li><a href=\"#gethhttpsethereumgithubiogo-ethereum\">Geth<\/a><\/li>\n<li><a href=\"#parityhttpsparityio\">Parity<\/a><\/li>\n<li><a href=\"#testrpchttpsgithubcomethereumjstestrpc\">TestRPC<\/a><\/li>\n<li><a href=\"#misthttpsgithubcomethereummist\">Mist<\/a><\/li>\n<li><a href=\"#remixhttpsethereumgithubiobrowser-solidity\">Remix<\/a><\/li>\n<li><a href=\"#cosmohttpsgithubcomcosmo-projectmeteor-dapp-cosmo\">Cosmo<\/a><\/li>\n<li><a href=\"#etheratomhttpsgitlabcom0mkaraetheratom\">Etheratom<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#solidity\">Solidity<\/a><\/li>\n<li><a href=\"#sozdaem-kontrakt-vizitku\">\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442-\u0432\u0438\u0437\u0438\u0442\u043a\u0443<\/a><br \/> \n<ul>\n<li><a href=\"#pervyy-shag\">\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433<\/a><\/li>\n<li><a href=\"#bazovaya-informaciya\">\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f<\/a><\/li>\n<li><a href=\"#administrirovanie\">\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a><\/li>\n<li><a href=\"#modulnost\">\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/a><\/li>\n<li><a href=\"#zagruzhaem-i-udalyaem-dannye\">\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435<\/a><\/li>\n<li><a href=\"#otdaem-dannye\">\u041e\u0442\u0434\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435<\/a><\/li>\n<li><a href=\"#deploy\">\u0414\u0435\u043f\u043b\u043e\u0439<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#dobavlyaem-ui\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c UI<\/a><br \/> \n<ul>\n<li><a href=\"#web3jshttpsgithubcomethereumweb3js\">Web3.js<\/a><\/li>\n<li><a href=\"#metamaskhttpsmetamaskio\">Metamask<\/a><\/li>\n<li><a href=\"#deploy-with-metamask\">Deploy with Metamask<\/a><\/li>\n<li><a href=\"#primer\">\u041f\u0440\u0438\u043c\u0435\u0440<\/a><\/li>\n<li><a href=\"#itog\">\u0418\u0442\u043e\u0433<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#vmesto-zaklyucheniya\">\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/a><\/li>\n<li><a href=\"#ssylki\">\u0421\u0441\u044b\u043b\u043a\u0438<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"vvedenie-v-ethereum\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Ethereum<\/h2>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0440\u0430\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u043d\u0430 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 Ethereum (\u0438\u043b\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u0432\u043e\u043e\u0431\u0449\u0435), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u0432\u0440\u043e\u0434\u0435 <em>\u0431\u043b\u043e\u043a\u043e\u0432<\/em>, <em>\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439<\/em> \u0438\u043b\u0438 <em>\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432<\/em> \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u042f \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u044f \u0431\u044b \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u0432 \u043a\u0443\u0440\u0441\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0438\u0436\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \ud83d\ude42<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/312008\/\">RU \u2014 \u041f\u0438\u0448\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043d\u0430 Solidity. \u0427\u0430\u0441\u0442\u044c 1 \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u00abHello world\u00bb<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/post\/313710\/\">RU \u2014 Malware + Blockchain = \ufe0f<\/a><\/li>\n<li><a href=\"https:\/\/habrahabr.ru\/company\/alfa\/blog\/323070\/\">RU \u2014 \u041a\u0430\u043a \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0434\u0435\u043b\u043a\u0443-\u0430\u043a\u043a\u0440\u0435\u0434\u0438\u0442\u0438\u0432 \u043d\u0430 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u0432 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a\u0435<\/a><\/li>\n<li><a href=\"http:\/\/consensys.github.io\/developers\/articles\/101-noob-intro\/\">EN \u2014 A 101 Noob Intro to Programming Smart Contracts on Ethereum<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@mvmurthy\/ethereum-for-web-developers-890be23d1d0c\">EN \u2014 Ethereum for web developers<\/a><\/li>\n<li><a href=\"https:\/\/www.ethereum.org\/greeter\">EN \u2014 Building a smart contract using the command line<\/a><\/li>\n<li><a href=\"https:\/\/www.ethereum.org\/token\">EN \u2014 Create your own crypto-currency<\/a><\/li>\n<li><a href=\"https:\/\/dappsforbeginners.wordpress.com\/\">EN \u2014 Dapps for Beginners<\/a><\/li>\n<li><a href=\"http:\/\/consensys.github.io\/developers\/articles\/101-noob-intro\/\">EN \u2014 A 101 Noob Intro to Programming Smart Contracts on Ethereum<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435.<\/p>\n<p>  <\/p>\n<p><strong>P.S.<\/strong> \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043f\u043e\u0434 Ubuntu 16.04, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0434\u0435\u043f\u043b\u043e\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d \u043f\u043e\u0434 \u044d\u0442\u0443 \u041e\u0421. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b (\u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b), \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u041e\u0421.<\/p>\n<p>  <\/p>\n<h2 id=\"instrumenty\">\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/h2>\n<p>  <\/p>\n<h3 id=\"gethhttpsethereumgithubiogo-ethereum\"><a href=\"https:\/\/ethereum.github.io\/go-ethereum\/\">Geth<\/a><\/h3>\n<p>  <\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 Ethereum \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 terminal-based, \u0447\u0430\u0441\u0442\u044c GUI \u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u0421\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f [Geth](), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 Ethereum. \u041f\u0440\u043e \u043d\u0435\u0433\u043e \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432 <a href=\"https:\/\/habrahabr.ru\/post\/312008\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445<\/a>, \u043d\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c.<\/p>\n<p>  <\/p>\n<p>\u041a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Go, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/www.ethereum.org\/cli\">\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c<\/a>:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:ethereum\/ethereum sudo apt-get update sudo apt-get install ethereum<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0430\u043c Geth \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 GUI, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u043e. <a href=\"https:\/\/github.com\/ethereum\/go-ethereum\/wiki\/Command-Line-Options\">\u0417\u0434\u0435\u0441\u044c<\/a> \u043e\u043f\u0438\u0441\u0430\u043d \u0432\u0435\u0441\u044c \u043d\u0430\u0431\u043e\u0440 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u044f \u0436\u0435 \u043e\u043f\u0438\u0448\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432 \u0440\u0430\u0431\u043e\u0442\u0435: <code>$ geth --dev --rpc --rpcaddr &quot;0.0.0.0&quot; --rpcapi &quot;admin,debug,miner,shh,txpool,personal,eth,net,web3&quot; console<\/code><\/p>\n<p>  <\/p>\n<ul>\n<li>\n<p><code>--dev<\/code> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 geth \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \/ \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0432\u0435\u0442\u043a\u0443. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0441\u0442\u0435\u0440\u0438\u043b\u044c\u043d\u0443\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430. \u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u0439\u043d\u0438\u043d\u0433 \u0431\u043b\u043e\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u0438 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0435\u0442\u044c \u0438\u043b\u0438 \u0434\u0438\u0441\u043a.<\/p>\n<p>  <\/li>\n<li><code>--rpc<\/code> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 RPC-HTTP \u0441\u0435\u0440\u0432\u0435\u0440. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e API \u043a \u0432\u0430\u0448\u0435\u0439 \u043d\u043e\u0434\u0435 \u2014 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432\u0440\u043e\u0434\u0435 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u043e\u0432 \u0438\u043b\u0438 IDE, \u0441\u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u043e\u043c: \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <a href=\"http:\/\/localhost:8545\">localhost:8545<\/a>, \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>--rpcaddr<\/code> \u0438 <code>--rpcport<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/li>\n<li><code>--rpcapi<\/code> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u043a RPC \u0441\u0435\u0440\u0432\u0435\u0440\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u043a\u0430\u0436\u0435\u0442\u0435 <code>&quot;miner&quot;<\/code>, \u0442\u043e, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432 \u043a \u043d\u043e\u0434\u0435 \u043a\u043e\u0448\u0435\u043b\u0435\u043a \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043c\u0430\u0439\u043d\u0435\u0440, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0443. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044f \u0443\u043a\u0430\u0437\u0430\u043b \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0430, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/ethereum\/go-ethereum\/wiki\/Management-APIs\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/li>\n<li><code>console<\/code> \u2014 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u044d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u041e\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u044b\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 JS \u0438 \u0440\u044f\u0434 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Ethereum, \u0432\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 <a href=\"https:\/\/habrahabr.ru\/post\/312008\/\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a> (\u043f\u0443\u043d\u043a\u0442 \u2014 \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u043d\u043e\u0434\u0443).<\/li>\n<\/ul>\n<p>  <\/p>\n<h3 id=\"parityhttpsparityio\"><a href=\"https:\/\/parity.io\/\">Parity<\/a><\/h3>\n<p>  <\/p>\n<p>Geth \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448, \u043d\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0435 \u0447\u0430\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u2014 Parity, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Rust. \u0413\u043b\u0430\u0432\u043d\u044b\u043c \u0435\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0435\u043c \u043e\u0442 Geth \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 web \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0441\u0430\u043c\u044b\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043d\u044b\u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo &lt;(curl https:\/\/get.parity.io -Lk)<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 <code>parity<\/code> \u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <a href=\"http:\/\/localhost:8180\">localhost:8180<\/a> \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0441\u0430\u043c \u043a\u043e\u0448\u0435\u043b\u0435\u043a.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/9b9\/b1a\/6f7\/9b9b1a6f773e467a8edea7af404ba247.png\" alt=\"parity\"\/><\/p>\n<p>  <\/p>\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043b\u044e\u0441: Parity \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u0432\u043e\u0438\u0445 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432. \u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0442\u0430\u043a \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442 \u0430\u0432\u0442\u043e\u0440\u044b, \u043d\u043e \u043f\u043e \u043c\u043e\u0438\u043c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f\u043c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0430\u043a, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043f\u043b\u0430\u043d\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.<\/p>\n<p>  <\/p>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441 \u2014 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0432 parity \u043d\u0435\u0442. \u041d\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 Geth:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">$ parity --geth # Run parity in Geth mode $ geth attach console # Attach Geth to the PArity node (Do it in another window)<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"testrpchttpsgithubcomethereumjstestrpc\"><a href=\"https:\/\/github.com\/ethereumjs\/testrpc\">TestRPC<\/a><\/h3>\n<p>  <\/p>\n<p>\u042d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445, \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>testrpc<\/code> \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c RPC \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c, \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u0441 \u044d\u0442\u0435\u0440\u0430\u043c\u0438 \u043d\u0430 \u0441\u0447\u0435\u0442\u0443, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u043c\u0430\u0439\u043d\u0435\u0440\u043e\u043c \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0412\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a <a href=\"https:\/\/github.com\/ethereumjs\/testrpc#usage\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u043e \u0441\u0443\u0442\u0438, <code>testrpc<\/code> \u2014 \u044d\u0442\u043e \u0442\u043e\u0442 \u0436\u0435 <code>geth --dev --rpc ...<\/code>, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0435 \u043d\u0430\u0434\u043e \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \/ \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u0439\u043d\u0435\u0440\u0430 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u2014 <code>npm install -g ethereumjs-testrpc<\/code>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/202\/183\/be8\/202183be8fe3449fbf202f4b59bd2d73.png\" alt=\"testrpc\"\/><\/p>\n<p>  <\/p>\n<h3 id=\"misthttpsgithubcomethereummist\"><a href=\"https:\/\/github.com\/ethereum\/mist\">Mist<\/a><\/h3>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043a\u043e\u0448\u0435\u043b\u0435\u043a \u0434\u043b\u044f Ethereum, \u0445\u043e\u0442\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u0412\u043e\u0442 <a href=\"https:\/\/medium.com\/@attores\/step-by-step-guide-getting-started-with-ethereum-mist-wallet-772a3cc99af4\">\u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f<\/a>, \u0433\u0434\u0435 step-by-step \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Mist. \u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u0430\u043c\u0443\u044e \u0441\u0432\u0435\u0436\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043e <a href=\"https:\/\/github.com\/ethereum\/mist\/releases\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0435\u043b\u0438\u0437\u043e\u0432<\/a>. \u041f\u043e\u043c\u0438\u043c\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u043e\u043c, \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8b0\/6a9\/389\/8b06a93898c841848a35213439cf27ec.png\" alt=\"mist\"\/><\/p>\n<p>  <\/p>\n<h3 id=\"remixhttpsethereumgithubiobrowser-solidity\"><a href=\"https:\/\/ethereum.github.io\/browser-solidity\/\">Remix<\/a><\/h3>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u0430\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <a href=\"http:\/\/ethereum.github.io\/browser-solidity\/\">ethereum.github.io\/browser-solidity\/<\/a>, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 RPC \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443<\/li>\n<li>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \/ \u043e\u043f\u043a\u043e\u0434\u044b<\/li>\n<li>\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432 Github gist<\/li>\n<li>\u041f\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0439 \u0434\u0435\u0431\u0430\u0433\u0435\u0440<\/li>\n<li>\u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0433\u0430\u0437\u0435<\/li>\n<li>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 localstorage<\/li>\n<li>\u0418 <a href=\"https:\/\/github.com\/ethereum\/remix\">\u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u0430\u0432\u0442\u043e\u043a\u043e\u043c\u043f\u043b\u0438\u0442\u0430, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cb0\/5a0\/e2b\/cb05a0e2b23d42fdb62ddba02baaa44d.png\" alt=\"remix\"\/><\/p>\n<p>  <\/p>\n<h3 id=\"cosmohttpsgithubcomcosmo-projectmeteor-dapp-cosmo\"><a href=\"https:\/\/github.com\/cosmo-project\/meteor-dapp-cosmo\">Cosmo<\/a><\/h3>\n<p>  <\/p>\n<p>\u0415\u0449\u0435 \u043e\u0434\u043d\u0430 IDE \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 Meteor, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0438\u0442\u0435 \u043d\u043e\u0434\u0443 \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c RPC \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0441\u043e\u043c <code>geth --rpc --rpcapi=&quot;db,eth,net,web3,personal&quot; --rpcport &quot;8545&quot; --rpcaddr &quot;127.0.0.1&quot; --rpccorsdomain &quot;localhost&quot; console<\/code>. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0430\u043c\u0443 IDE:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">$ git clone http:\/\/github.com\/SilentCicero\/meteor-dapp-cosmo.git $ cd meteor-dapp-cosmo\/app $ meteor<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0435 <a href=\"http:\/\/localhost:3000\">localhost:3000<\/a> \u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/247\/343\/d06\/247343d0657844469f2bbc8932e4fa58.jpg\" alt=\"cosmo_screenshot\"\/><\/p>\n<p>  <\/p>\n<h3 id=\"etheratomhttpsgitlabcom0mkaraetheratom\"><a href=\"https:\/\/gitlab.com\/0mkara\/etheratom\">Etheratom<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432. \u042d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 Atom, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>apm install atom-ethereum-interface<\/code>. \u0428\u0442\u0443\u043a\u0430 \u0443\u0434\u043e\u0431\u043d\u0430\u044f, \u0441\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c c JS EVM \u0438\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u043e\u0434\u0435 \u0447\u0435\u0440\u0435\u0437 RPC. \u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043d\u0430 <code>CTRL + ALT + C<\/code>, \u0434\u0435\u043f\u043b\u043e\u0438\u0442 \u0432 \u0441\u0435\u0442\u044c \u043d\u0430 <code>CTRL + ALT + S<\/code>. \u041d\u0443 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0430\u043c\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c8d\/00c\/7f4\/c8d00c7f419747e38e4d9579e4fe3cda.png\" alt=\"atom_ethereum\"\/><\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0432\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430, \u0442\u043e \u0434\u043b\u044f Atom \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 Solidity \u2014 <a href=\"https:\/\/atom.io\/packages\/language-ethereum\">language-ethereum<\/a>. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u043e \u0441\u0443\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/packagecontrol.io\/packages\/Ethereum\">\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u043f\u043e\u0434 Sublime text<\/a>, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Atom.<\/p>\n<p>  <\/p>\n<h2 id=\"solidity\">Solidity<\/h2>\n<p>  <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 Solidity, \u043d\u043e \u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/github.com\/ethereum\/wiki\/wiki\/Serpent\">Serpent<\/a> (\u0432\u043d\u0435\u0448\u043d\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 Python). \u041d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u043c\u0438\u0442 \u0432 develop \u0432\u0435\u0442\u043a\u0435 <a href=\"https:\/\/github.com\/ethereum\/serpent\/tree\/develop\">ethereum\/serpent<\/a> \u0431\u044b\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434, \u0442\u0430\u043a \u0447\u0442\u043e, \u043f\u043e-\u0432\u0438\u0434\u0438\u043c\u043e\u043c\u0443, \u044f\u0437\u044b\u043a, \u0443\u0432\u044b, deprecated.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 Solidity. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u044f\u0437\u044b\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u043d\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0438\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0432 \u043d\u0435\u043c \u043d\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u044f \u043d\u0435 \u0432\u0438\u0436\u0443 \u0441\u043c\u044b\u0441\u043b\u0430 \u2014 \u043b\u044e\u0431\u043e\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u043c \u043f\u043e\u0441\u043b\u0435 20 \u043c\u0438\u043d\u0443\u0442 \u0447\u0442\u0435\u043d\u0438\u044f <a href=\"https:\/\/solidity.readthedocs.io\/en\/develop\/\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>. \u041d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u043d\u0435\u0442, \u2014 \u043d\u0438\u0436\u0435 \u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/solidity.readthedocs.io\/en\/develop\/solidity-by-example.html#voting\">Voting contract<\/a><\/li>\n<li><a href=\"http:\/\/solidity.readthedocs.io\/en\/develop\/solidity-by-example.html#blind-auction\">Blind Auction<\/a><\/li>\n<li><a href=\"http:\/\/solidity.readthedocs.io\/en\/develop\/solidity-by-example.html#safe-remote-purchase\">Safe Remote Purchase<\/a><\/li>\n<li>\u0418\u043b\u0438, \u0443\u0436\u0435 \u0441\u0442\u0430\u0432\u0448\u0438\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u043c &quot;Hello, World&quot; \u0432 \u043c\u0438\u0440\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432, \u2014 <a href=\"https:\/\/www.ethereum.org\/greeter\">Greeter contract<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0415\u0449\u0435 \u0440\u0430\u0437 \u043e\u0442\u043c\u0435\u0447\u0443 (\u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e!) <a href=\"https:\/\/solidity.readthedocs.io\/en\/develop\/\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e<\/a> \u044f\u0437\u044b\u043a\u0430, <a href=\"https:\/\/github.com\/ethereum\/wiki\/wiki\/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE-%D0%BF%D0%BE-Solidity\">\u043c\u0435\u0441\u0442\u0430\u043c\u0438<\/a> \u0434\u0430\u0436\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a.<\/p>\n<p>  <\/p>\n<h2 id=\"sozdaem-kontrakt-vizitku\">\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442-\u0432\u0438\u0437\u0438\u0442\u043a\u0443<\/h2>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435-\u0432\u0438\u0437\u0438\u0442\u043a\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u0430\u043c\u043e &quot;\u0440\u0435\u0437\u044e\u043c\u0435&quot;:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0418\u043c\u044f, \u043f\u043e\u0447\u0442\u0430, \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435<\/li>\n<li>\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432<\/li>\n<li>\u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435: \u0432\u0443\u0437\u044b, \u043a\u0443\u0440\u0441\u044b \u0438 \u0442\u0434<\/li>\n<li>\u041d\u0430\u0432\u044b\u043a\u0438<\/li>\n<li>\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/li>\n<\/ul>\n<p>  <\/p>\n<h3 id=\"pervyy-shag\">\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433<\/h3>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0448\u0430\u0431\u043b\u043e\u043d \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0438 <em>\u0444\u0443\u043d\u043a\u0446\u0438\u044e-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440<\/em>. \u041e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 \u0441\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u2014 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u2014 <code>address owner<\/code>. \u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u0432 \u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0430\u0434\u0440\u0435\u0441 \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0437\u0430\u043b\u0438\u043b \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0432 \u0441\u0435\u0442\u044c. \u0410 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">pragma solidity ^0.4.0;  contract EthereumCV is Structures {     address owner;      \/\/ =====================     \/\/ ==== CONSTRUCTOR ====     \/\/ =====================     function EthereumCV() {         owner = msg.sender;     } }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"bazovaya-informaciya\">\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f<\/h3>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0430\u0432\u0442\u043e\u0440\u0435 \u2014 \u0438\u043c\u044f, \u043f\u043e\u0447\u0442\u0443, \u0430\u0434\u0440\u0435\u0441 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <code>mapping<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">address owner; mapping (string =&gt; string) basic_data;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c &quot;\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c&quot; \u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function getBasicData (string arg) constant returns (string) {     return basic_data[arg]; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <code>constant<\/code> \u2014 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e (\u0438 \u043d\u0443\u0436\u043d\u043e) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442 <em>state<\/em> \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u043b\u044e\u0441 \u0442\u0430\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (sic!), \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<h3 id=\"administrirovanie\">\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0434\u0443\u043c\u0430\u0442\u044c\u0441\u044f \u043e \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0435\u0437\u044e\u043c\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c. \u0412 \u0441\u0430\u043c\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0432\u0440\u043e\u0434\u0435<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function setBasicData (string key, string value) {     basic_data[key] = value; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0441\u043c\u043e\u0433 \u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0448\u0435 \u0438\u043c\u044f, \u0432\u044b\u0437\u0432\u0430\u0432 <code>setBasicData(&quot;name&quot;, &quot;New Name&quot;)<\/code>. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0441\u0435\u0433\u043e \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0440\u0435\u0441\u0435\u0447\u044c \u043b\u044e\u0431\u044b\u0435 \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function setBasicData (string key, string value) {     if (msg.sender != owner) { throw; }     basic_data[key] = value; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043c \u0435\u0449\u0435 \u043d\u0435 \u0440\u0430\u0437 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e (\u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440), \u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 <em>\u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440<\/em>:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">modifier onlyOwner() {     if (msg.sender != owner) { throw; }     _; \/\/ Will be replaced with function body }  \/\/ Now you can use it with any function function setBasicData (string key, string value) onlyOwner() {     basic_data[key] = value; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e \u043f\u0430\u0440\u043e\u043b\u044e. \u0425\u044d\u0448 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439, \u0431\u043b\u0430\u0433\u043e \u0440\u0430\u0434\u0443\u0436\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0430\u0442\u0430\u043a\u0438 \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u043b. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0430\u0448 \u0441\u043f\u043e\u0441\u043e\u0431 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u0435\u043d, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u0434\u0440\u0435\u0441\u0443 <code>owner<\/code>, \u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b \u0443\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435.<\/p>\n<p>  <\/p>\n<h3 id=\"modulnost\">\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e <em>\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440<\/em> \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439. \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0432 \u0421\u0438. \u041d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435, \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u0438\u0445 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0431\u043b\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 (\u0432 \u043d\u043e\u0432\u043e\u043c \u0444\u0430\u0439\u043b\u0435). \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u043d\u0435\u0439 \u043a\u043e\u0434\u0430 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b <code>structures.sol<\/code> \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <code>Structures<\/code>. \u0410 \u0443\u0436\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0435 \u043e\u043f\u0438\u0448\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">pragma solidity ^0.4.0;  library Structures {     struct Project {         string name;         string link;         string description;     }      struct Education {         string name;         string speciality;         int32 year_start;         int32 year_finish;     }      struct Publication {         string name;         string link;         string language;     }      struct Skill {         string name;         int32 level;     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">pragma solidity ^0.4.0;  import &quot;.\/structures.sol&quot;;  contract EthereumCV {     mapping (string =&gt; string) basic_data;     address owner;      Structures.Project[] public projects;     Structures.Education[] public educations;     Structures.Skill[] public skills;     Structures.Publication[] public publications;      \/\/ ... }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0430\u043c\u044b\u0435 \u0441\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u0447\u0442\u043e \u043d\u043e\u0442\u0430\u0446\u0438\u044f <code>Structures.Project[] projects<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441 \u044d\u043b\u0435\u043c\u0435\u0442\u043d\u0430\u043c\u0438 \u0442\u0438\u043f\u0430 <code>Project<\/code>. \u0410 \u0432\u043e\u0442 \u0441 <em>\u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c<\/em> <code>public<\/code> \u0443\u0436\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u041f\u043e \u0441\u0443\u0442\u0438, \u043e\u043d \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0440\u043e\u0434\u0435 <code>get_project(int position) { return projects[position]; }<\/code> \u2014 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0442\u0430\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 <code>projects<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 <code>mapping (string =&gt; string) public basic_data<\/code>, \u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u043c\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0442\u0430\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e? \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0430 \u2014 <code>public<\/code> \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043b\u044e\u0447\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 (<code>string<\/code> \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0442\u0438\u043f).<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">Unimplemented feature (\/src\/libsolidity\/codegen\/ExpressionCompiler.cpp:105): Accessors for mapping with dynamically-sized keys not yet implemented.<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c <code>basic_data<\/code> \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>mapping (bytes32 =&gt; string)<\/code>.<\/p>\n<p>  <\/p>\n<p><strong>BTW<\/strong> \u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043a\u0440\u043e\u043c\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, <strong>Remix<\/strong> \u0443\u043c\u0435\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>.sol<\/code> \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u043d\u0430 Github \u0438 \u0434\u0430\u0436\u0435 <a href=\"https:\/\/www.reddit.com\/r\/ethereum\/comments\/5vpm53\/remix_can_now_import_files_via_swarm\/\">\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 Swarm<\/a> (\u044d\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043b\u044f Ethereum, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 <a href=\"http:\/\/ethereum.stackexchange.com\/questions\/375\/what-is-swarm-and-what-is-it-used-for\">\u0437\u0434\u0435\u0441\u044c<\/a>)<\/p>\n<p>  <\/p>\n<h3 id=\"zagruzhaem-i-udalyaem-dannye\">\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435<\/h3>\n<p>  <\/p>\n<p>\u0414\u0443\u043c\u0430\u044e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0441\u0430\u043c\u0438 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u043a\u0430\u043a \u0441\u0442\u043e\u0438\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u041f\u043e\u043a\u0430\u0436\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439, \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u0441\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function editPublication (bool operation, string name, string link, string language) onlyOwner() {     if (operation) {         publications.push(Structures.Publication(name, link, language));     } else {         delete publications[publications.length - 1];     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>operation<\/code> \u043c\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u043e\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 (\u043a\u043e\u0441\u0442\u044b\u043b\u044c\u043d\u043e, \u043d\u043e \u043c\u044b \u0432\u0435\u0434\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0447\u0438\u043c\u0441\u044f). \u0425\u043e\u0442\u044f \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439. \u0421\u0430\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d, \u043d\u043e \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043d\u0435 \u0441\u043c\u0435\u0440\u0442\u0435\u043b\u044c\u043d\u043e (\u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0442\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430), \u043d\u043e, \u0432\u043e\u043e\u0431\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043f\u0440\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u0432\u0435\u0441\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0434\u043b\u0438\u043d\u044b <a href=\"http:\/\/ethereum.stackexchange.com\/questions\/1527\/how-to-delete-an-element-at-a-certain-index-in-an-array\">\u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0441\u043b\u043e\u0436\u043d\u043e<\/a>.<\/p>\n<p>  <\/p>\n<h3 id=\"otdaem-dannye\">\u041e\u0442\u0434\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435<\/h3>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043b, \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <code>public<\/code> \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 <code>Project[] public projects<\/code> \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u043b \u043d\u0430\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 <code>i<\/code> \u0432\u0435\u0440\u043d\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 <code>projects[i]<\/code>. \u041d\u043e \u043c\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0438 \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u0443\u0442\u0438. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e <code>i<\/code> \u0434\u043e \u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043f\u043e\u043a\u0430 \u043c\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u043e \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435. \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0440\u043d\u0435\u0442 \u043d\u0430\u043c \u0440\u0430\u0437\u043c\u0435\u0440 <code>projects<\/code>. \u042f \u043f\u043e\u0439\u0434\u0443 \u0432\u0442\u043e\u0440\u044b\u043c \u043f\u0443\u0442\u0435\u043c, \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0447\u0435\u043c\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function getSize(string arg) constant returns (uint) {     if (sha3(arg) == sha3(&quot;projects&quot;)) { return projects.length; }     if (sha3(arg) == sha3(&quot;educations&quot;)) { return educations.length; }     if (sha3(arg) == sha3(&quot;publications&quot;)) { return quotes.length; }     if (sha3(arg) == sha3(&quot;skills&quot;)) { return skills.length; }     throw; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c <code>'aaa' == 'bbb'<\/code>. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432\u0441\u0435 \u0442\u0430 \u0436\u0435, <code>string<\/code> \u2014 \u044d\u0442\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0438\u043c\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u0430. \u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0445\u044d\u0448\u0438, \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/ethereum\/dapp-bin\/blob\/master\/library\/stringUtils.sol\">stringUtils.sol<\/a>, \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f.<\/p>\n<p>  <\/p>\n<h3 id=\"deploy\">\u0414\u0435\u043f\u043b\u043e\u0439<\/h3>\n<p>  <\/p>\n<p>\u0412 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0434\u0435\u043f\u043b\u043e\u044f \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0443\u0441\u044c Remix, \u043a\u0430\u043a \u0441\u0430\u043c\u044b\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c.<\/p>\n<p>  <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430, \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u0437\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u0432\u0435\u0441\u044c \u043a\u043e\u0434 (\u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/github.com\/pavlovdog\/dive_into_ethereum\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a>). \u0414\u0430\u043b\u0435\u0435 \u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 <strong>Select execution environment<\/strong> \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 <code>Javascript VM<\/code> \u2014 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043d\u0430 JS \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430, \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0441 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c. \u0415\u0441\u043b\u0438 \u0441 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c \u0432\u0441\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0442\u043e \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 <strong>Create<\/strong> \u2014 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u0438 \u0432\u0438\u0434\u0438\u043c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f07\/133\/8f8\/f071338f8a064ea596389be591510206.png\" alt=\"remix_create\"\/><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0437\u0430\u043b\u0438\u0442 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d (\u0435\u0433\u043e \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044e, \u043d\u043e \u043d\u0435 \u0441\u0443\u0442\u044c), \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0439\u0434\u0435\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 email \u2014 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>setBasicData<\/code>, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043f\u043e\u043b\u0435 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a10\/091\/6ad\/a100916ad88d4ccdb18fc214b7008d7b.jpg\" alt=\"remix_set_basic_data\"\/><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 <code>result: 0x<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 email: \u0438\u0449\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>getBasicData<\/code> \u0438 \u043f\u0440\u043e\u0431\u0443\u0435\u043c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c8f\/f26\/f6a\/c8ff26f6ac7740c2934cdf93b8a3c871.jpg\" alt=\"remix_get_basic_data\"\/><\/p>\n<p>  <\/p>\n<p>\u0421 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u043c \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0438\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"dobavlyaem-ui\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c UI<\/h2>\n<p>  <\/p>\n<p>\u041d\u0438\u0436\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0441\u043f\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c UI \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JS \u0438 HTML \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u043e\u0434\u0435 Ethereum (\u0438\u043b\u0438 \u0435\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0430\u043c).<\/p>\n<p>  <\/p>\n<h3 id=\"web3jshttpsgithubcomethereumweb3js\"><a href=\"https:\/\/github.com\/ethereum\/web3.js\">Web3.js<\/a><\/h3>\n<p>  <\/p>\n<blockquote><p>This is the Ethereum compatible <a href=\"https:\/\/github.com\/ethereum\/wiki\/wiki\/JavaScript-API\">JavaScript API<\/a> which implements the <a href=\"https:\/\/github.com\/ethereum\/wiki\/wiki\/JSON-RPC\">Generic JSON RPC<\/a> spec. It&#8217;s available on npm as a node module, for bower and component as an embeddable js and as a meteor.js package.<\/p><\/blockquote>\n<p>\u042d\u0442\u043e JS \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043f\u043e\u0437\u043e\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c API Ethereum \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e JS. \u041f\u043e \u0441\u0443\u0442\u0438 \u0441 \u0435\u0435 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u043d\u043e\u0434\u0435 \u0438 \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 geth \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>npm<\/code> \u0438\u043b\u0438 <code>bower<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">$ sudo npm install web3 $ bower install web3<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 web3 \u0447\u0435\u0440\u0435\u0437 node.js (\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 <code>testrpc<\/code>\u0438\u043b\u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u043d\u043e\u0434\u0443 \u0441 RPC \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c):<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">$ node &gt; var Web3 = require('web3'); &gt; var web3 = new Web3(new Web3.providers.HttpProvider(&quot;http:\/\/localhost:8545&quot;)); &gt; web3.eth.accounts [ '0x5f7aaf2199f95e1b991cb7961c49be5df1050d86',   '0x1c0131b72fa0f67ac9c46c5f4bd8fa483d7553c3',   '0x10de59faaea051b7ea889011a2d8a560a75805a7',   '0x56e71613ff0fb6a9486555325dc6bec8e6a88c78',   '0x40155a39d232a0bdb98ee9f721340197af3170c5',   '0x4b9f184b2527a3605ec8d62dca22edb4b240bbda',   '0x117a6be09f6e5fbbd373f7f460c8a74a0800c92c',   '0x111f9a2920cbf81e4236225fcbe17c8b329bacd7',   '0x01b4bfbca90cbfad6d6d2a80ee9540645c7bd55a',   '0x71be5d7d2a53597ef73d90fd558df23c37f3aac1' ] &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 JS \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (\u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u0440\u043e <code>&lt;script src=&quot;path_to\/web3.js&quot;&gt;&lt;\/script&gt;<\/code>)<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8e0\/c98\/d16\/8e0c98d16a55496a91e9af862f40f647.jpg\" alt=\"browser_js_web3\"\/><\/p>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u0443\u0436\u0435 \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u043e\u0434\u0443, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 \u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u0435\u0440\u0441\u0442\u0430\u0442\u044c \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041d\u043e \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0442\u043e\u043d\u043a\u0438\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430: \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d Ethereum, \u0430 \u0432\u044b \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u043d\u044e\u0430\u043d\u0441 \u2014 RPC \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u044e\u0431\u043e\u0439 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0432\u0430\u0448\u0435\u0439 \u043d\u043e\u0434\u044b \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 JS \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0435\u0439 \u0432 \u0441\u0432\u043e\u0435 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435. \u0422\u0443\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0431\u0435\u0440\u0442\u043a\u0443 \u043d\u0430 Nginx \u0441 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0439 HTTP basic auth, \u043d\u043e \u044d\u0442\u043e \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437.<\/p>\n<p>  <\/p>\n<h3 id=\"metamaskhttpsmetamaskio\"><a href=\"https:\/\/metamask.io\/\">Metamask<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Metamask (\u0443\u0432\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Chrome). \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0442\u0430 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0434\u043e\u0439 \u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c web3 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043d\u043e \u0431\u0435\u0437 \u0441\u0432\u043e\u0435\u0439 \u043d\u043e\u0434\u044b. Metamask \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043e\u043d \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 web3.js, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a RPC \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c Metamask. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Ethereum \u043d\u0430 \u043f\u043e\u043b\u043d\u0443\u044e \u043a\u0430\u0442\u0443\u0448\u043a\u0443.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0432 \u043b\u0435\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 <code>Testnet<\/code> \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0444\u0438\u0440\u043e\u0432 \u043d\u0430 <a href=\"https:\/\/faucet.metamask.io\/\">\u043a\u0440\u0430\u043d\u0435 Metamask<\/a>. \u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0433\u043e (\u0441 \u0447\u0438\u0441\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f):<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f6c\/4a4\/68e\/f6c4a468e3fb4e85bc85616f6dffce07.jpg\" alt=\"metamask_ready\"\/><\/p>\n<p>  <\/p>\n<h3 id=\"deploy-with-metamask\">Deploy with Metamask<\/h3>\n<p>  <\/p>\n<p>\u0421 Metamask \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0432 \u0441\u0435\u0442\u044c \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435\u043c \u0441 JS EVM. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043d\u043e\u0432\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c Remix \u0438 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 <strong>Select execution environment<\/strong> \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0443\u043d\u043a\u0442 <code>Injected Web3<\/code> (\u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043d \u0432\u044b\u0431\u0440\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438). \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Create \u0438 \u0432\u0438\u0434\u0438\u043c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/22f\/d03\/93e\/22fd0393ebc14dd788c0cd2733fb911f.jpg\" alt=\"metamask_popup\"\/><\/p>\n<p>  <\/p>\n<p>\u0427\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u043d\u0430\u0434\u043f\u0438\u0441\u044c <code>Waiting for transaction to be mined..<\/code>. \u0441\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 \u2014 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u043f\u0430\u043b \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d. \u0410\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c, \u043e\u0442\u043a\u0440\u044b\u0432 Metamask \u0438 \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u0438\u0434\u0430:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f17\/887\/218\/f178872182be4fb083518678faa4cfe2.jpg\" alt=\"metamask_info\"\/><\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>editProject(...)<\/code>, \u0442\u043e \u0432\u0430\u043c \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0438 \u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0430\u0439\u043d\u0435\u043d\u0430 \u0432 \u0431\u043b\u043e\u043a.<\/p>\n<p>  <\/p>\n<h3 id=\"primer\">\u041f\u0440\u0438\u043c\u0435\u0440<\/h3>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0435\u043b\u043e \u0437\u0430 \u043c\u0430\u043b\u044b\u043c \u2014 \u043d\u0430\u0434\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 Web3. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430\u0434\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 web3 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">window.addEventListener('load', function() {   \/\/ Checking if Web3 has been injected by the browser (Mist\/MetaMask)   if (typeof web3 !== 'undefined') {     \/\/ Use Mist\/MetaMask's provider     console.log(&quot;Web3 detected!&quot;);     window.web3 = new Web3(web3.currentProvider);     \/\/ Now you can start your app &amp; access web3 freely:     startApp()   } else {     alert('Please use Chrome, install Metamask and then try again!')   } })<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 <code>startApp()<\/code> \u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043b\u0438\u043b \u0432\u0441\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0438\u0437\u0431\u0435\u0433\u0430\u044f \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function startApp() {   var address = {     &quot;3&quot; : &quot;0xf11398265f766b8941549c865d948ae0ac734561&quot; \/\/ Ropsten   }    var current_network = web3.version.network;   \/\/ abi initialized ealier, in abi.js   var contract = web3.eth.contract(abi).at(address[current_network]);    console.log(&quot;Contract initialized successfully&quot;)    contract.getBasicData(&quot;name&quot;, function(error, data) {     console.log(data);   });    contract.getBasicData(&quot;email&quot;, function(error, data) {     console.log(data);   });    contract.getSize(&quot;skills&quot;, function(error, data) {     var skills_size = data[&quot;c&quot;][0];     for (var i = 0; i &lt; skills_size; ++i) {       contract.skills(i, function(error, data) {         \/\/ Don't forget to check blank elements!         if (data[0]) { console.log(data[0], data[1][&quot;c&quot;][0]); }       })     }   }) }<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/ed3\/5cd\/eb4\/ed35cdeb43b64f5393d4ea9e29093c86.jpg\" alt=\"js_logs\"\/><\/p>\n<p>  <\/p>\n<h3 id=\"itog\">\u0418\u0442\u043e\u0433<\/h3>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0441\u043e \u0432\u0441\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u0438 JS. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/vuejs.org\">Vue.js<\/a> \u0438 <a href=\"https:\/\/picturepan2.github.io\/spectre\/\">Spectre.css<\/a>, \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u0438\u043b <a href=\"https:\/\/developers.google.com\/chart\/\">Google Charts<\/a>. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 <a href=\"https:\/\/pavlovdog.github.io\/\">pavlovdog.github.io<\/a>:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/7fe\/505\/d75\/7fe505d7535e4866a37bc6a70562dcdc.jpg\" alt=\"cv\"\/><\/p>\n<p>  <\/p>\n<h2 id=\"vmesto-zaklyucheniya\">\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0430\u043c\u044b\u043c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e blockchain. \u0425\u043e\u0442\u044f \u0432 \u043f\u043e\u0433\u043e\u043d\u0435 \u0437\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 (\u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u044d\u0442\u043e \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f) \u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0447\u0435\u0439-\u0442\u043e \u0448\u043b\u044e\u0437 (\u044f \u043f\u0440\u043e Metamask), \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043d\u043e\u0434\u043e\u0439. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u2014 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u043e\u0432. \u0423 \u043d\u0430\u0441 \u0436\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442 \u2014 \u043c\u044b <strong>\u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c<\/strong> \u043f\u0430\u0440\u043d\u044f\u043c \u0438\u0437 Metamask.<\/p>\n<p>  <\/p>\n<p>\u0414\u0440\u0443\u0433\u0430\u044f, \u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u2014 \u043c\u044b \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u0440\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u0435\u043f\u043b\u043e\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043a \u043d\u0438\u043c. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u0441\u044f\u0442\u044c \u0440\u0430\u0437 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>string<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>bytes<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438 \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <code>Testnet<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0435\u043d\u0435\u0433 \u043c\u044b \u043d\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b\u0438, \u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 <code>Main net<\/code> \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c\u0438 \u0440\u0430\u0441\u0442\u043e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u2014 \u0437\u0430\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0438\u043b\u0438 \u043f\u0438\u0448\u0438\u0442\u0435 \u043c\u043d\u0435 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443.<\/p>\n<p>  <\/p>\n<h2 id=\"ssylki\">\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/medium.com\/metamask\/metamask-ff7d3571f331\">MetaMask<\/a><\/li>\n<li><a href=\"https:\/\/karl.tech\/learning-solidity-part-1-deploy-a-contract\/\">Learning Solidity Part 1: Contract Dev with MetaMask<\/a><\/li>\n<li><a href=\"https:\/\/karl.tech\/learning-solidity-part-2-voting\/\">Learning Solidity Part 2: Commit-Reveal Voting<\/a><\/li>\n<li><a href=\"https:\/\/www.cryptocompare.com\/wallets\/guides\/how-to-use-metamask\/\">How to use MetaMask<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@mustwin\/building-an-oracle-for-an-ethereum-contract-6096d3e39551\">Building an \u201cOracle\u201d for an Ethereum contract<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@mvmurthy\/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-1-40d2d0d807c2\">Full Stack Hello World Voting Ethereum Dapp Tutorial\u200a\u2014\u200aPart 1<\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@mvmurthy\/full-stack-hello-world-voting-ethereum-dapp-tutorial-part-2-30b3d335aa1f\">Full Stack Hello World Voting Ethereum Dapp Tutorial\u200a\u2014\u200aPart 2<\/a><\/li>\n<\/ul>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/327236\/\"> https:\/\/habrahabr.ru\/post\/327236\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 Ethereum \u0441\u0442\u0430\u043b\u0430 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0443\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0431\u0440\u0435\u043d\u0434\u043e\u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u0441\u0444\u0435\u0440\u044b, \u0432\u043f\u043b\u043e\u0442\u043d\u0443\u044e \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0432\u0448\u0438\u0441\u044c \u043f\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 (\u0438 \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438) \u043a Bitcoin. \u041d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f &quot;\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e&quot; \u0440\u0443\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0433\u0430\u0439\u0434\u0430, \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0437\u0432\u0435\u0440\u044c \u0438 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u043f\u043e\u0434 Ethereum.<\/p>\n<p>  <\/p>\n<p>\u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0441\u0430\u043c \u042f\u041f, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f UI \u0438 \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442-\u0432\u0438\u0437\u0438\u0442\u043a\u0443, \u043d\u043e &quot;\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c&quot; \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0443\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445 Ethereum. \u041a\u043e\u0433\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u043e \u2014 \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b31\/607\/cf2\/b31607cf2d2143a3b5452acc1a85f011.jpg\" alt=\"preview\"\/><\/p>\n<p>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-285676","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/285676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=285676"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/285676\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=285676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=285676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=285676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}