{"id":39018,"date":"2019-10-31T22:27:25","date_gmt":"2019-10-31T19:27:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo\/"},"modified":"2019-10-31T22:27:25","modified_gmt":"2019-10-31T19:27:25","slug":"kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","title":{"rendered":"Kniha \u201eVytv\u00e1\u0159en\u00ed smart kontrakt\u016f Solidity pro blockchain Ethereum. Praktick\u00e1 p\u0159\u00edru\u010dka\u201c","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kniha \u201eVytv\u00e1\u0159en\u00ed smart kontrakt\u016f Solidity pro blockchain Ethereum. Praktick\u00e1 p\u0159\u00edru\u010dka\u201c\" src=\"\/wp-content\/uploads\/2019\/10\/9549e708e99fef6892045ff854231fa7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nV\u00edce ne\u017e rok jsem pracoval na knize \u201eVytv\u00e1\u0159en\u00ed smart kontrakt\u016f v Solidity pro blockchain Ethereum. Praktick\u00fd pr\u016fvodce\u201c, a nyn\u00ed je tato pr\u00e1ce dokon\u010dena a kniha <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litres.ru\/aleksandr-frolov-198\/sozdanie-smart-kontraktov-solidity-dlya-blokcheyna-et\/\">byla vyd\u00e1na a je dostupn\u00e1 na Litresu<\/a><\/noindex>.<\/p>\n<p>Douf\u00e1m, \u017ee moje kniha pom\u016f\u017ee rychle za\u010d\u00edt s vytv\u00e1\u0159en\u00edm smart kontrakt\u016f v Solidity a distribuovan\u00fdch aplikac\u00ed DApp pro blockchain Ethereum. Skl\u00e1d\u00e1 se ze 12 lekc\u00ed s praktick\u00fdmi \u00fakoly. Po jejich spln\u011bn\u00ed bude \u010dten\u00e1\u0159 schopen vytv\u00e1\u0159et sv\u00e9 vlastn\u00ed lok\u00e1ln\u00ed uzly Ethereum, publikovat smart kontrakty a volat jejich metody, vym\u011b\u0148ovat data mezi re\u00e1ln\u00fdm sv\u011btem a smart kontrakty pomoc\u00ed or\u00e1kul, pracovat s testovac\u00ed lad\u00edc\u00ed s\u00edt\u00ed Rinkeby. <\/p>\n<p>Kniha je ur\u010dena v\u0161em, kdo se zaj\u00edmaj\u00ed o pokro\u010dil\u00e9 technologie v oblasti blockchainu a cht\u011bj\u00ed rychle z\u00edskat znalosti, kter\u00e9 jim umo\u017en\u00ed zaj\u00edmat se o zaj\u00edmavou a perspektivn\u00ed pr\u00e1ci.<\/p>\n<p>N\u00ed\u017ee naleznete obsah a prvn\u00ed kapitolu knihy (tak\u00e9 na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litres.ru\/aleksandr-frolov-198\/sozdanie-smart-kontraktov-solidity-dlya-blokcheyna-et\/\">Litresu<\/a><\/noindex> jsou dostupn\u00e9 \u00faryvky knihy). Douf\u00e1m, \u017ee z\u00edsk\u00e1m zp\u011btnou vazbu, pozn\u00e1mky a n\u00e1vrhy. V\u0161e bych se sna\u017eil zohlednit p\u0159i p\u0159\u00edprav\u011b dal\u0161\u00ed edice knihy.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b class=\"spoiler_title\">Obsah<\/b><b class=\"spoiler_title\">\u00davod<\/b>Na\u0161e kniha je ur\u010dena t\u011bm, kte\u0159\u00ed cht\u011bj\u00ed nejen pochopit principy fungov\u00e1n\u00ed blockchainu Ethereum, ale tak\u00e9 z\u00edskat praktick\u00e9 dovednosti v tvorb\u011b distribuovan\u00fdch aplikac\u00ed DApp v programovac\u00edm jazyce Solidity pro tuto s\u00ed\u0165.<\/p>\n<p>Tuto knihu je nejlep\u0161\u00ed nejen \u010d\u00edst, ale tak\u00e9 pracovat s n\u00ed, pln\u011bn\u00edm praktick\u00fdch \u00fakol\u016f popsan\u00fdch v lekc\u00edch. K pr\u00e1ci budete pot\u0159ebovat lok\u00e1ln\u00ed po\u010d\u00edta\u010d, virtu\u00e1ln\u00ed nebo cloudov\u00fd server se syst\u00e9mem Debian nebo Ubuntu. Tak\u00e9 pro proveden\u00ed mnoha \u00fakol\u016f lze pou\u017e\u00edt Raspberry Pi.<\/p>\n<p><b>V prvn\u00ed lekci <\/b>si probereme principy fungov\u00e1n\u00ed blockchainu Ethereum a z\u00e1kladn\u00ed terminologii, stejn\u011b jako si pov\u00edme, kde lze tento blockchain vyu\u017e\u00edt. <\/p>\n<p>C\u00edl <b>druh\u00e9 lekce<\/b> \u2014 vytvo\u0159it uzel priv\u00e1tn\u00edho blockchainu Ethereum pro dal\u0161\u00ed pr\u00e1ci v r\u00e1mci tohoto kurzu na serveru Ubuntu a Debian. Probereme zvl\u00e1\u0161tnosti instalace z\u00e1kladn\u00edch utilit, jako je geth, kter\u00fd zaji\u0161\u0165uje fungov\u00e1n\u00ed uzlu na\u0161eho blockchainu, a tak\u00e9 d\u00e9mona decentralizovan\u00e9ho \u00falo\u017ei\u0161t\u011b dat swarm.<\/p>\n<p><b>T\u0159et\u00ed lekce<\/b> Nau\u010d\u00ed v\u00e1s prov\u00e1d\u011bt experimenty s Ethereum na levn\u00e9m mikropo\u010d\u00edta\u010di Raspberry Pi. Nainstalujete opera\u010dn\u00ed syst\u00e9m (OS) Rasberian na Raspberry Pi, utilitu Geth, kter\u00e1 zaji\u0161\u0165uje chod uzlu blockchainu, a tak\u00e9 d\u00e9mon decentralizovan\u00e9ho \u00falo\u017ei\u0161t\u011b dat Swarm.<\/p>\n<p><b>\u010ctvrt\u00e1 lekce<\/b> se v\u011bnuje \u00fa\u010dt\u016fm a m\u011bnov\u00fdm jednotk\u00e1m v s\u00edti Ethereum, stejn\u011b jako zp\u016fsob\u016fm p\u0159evodu prost\u0159edk\u016f z jednoho \u00fa\u010dtu na druh\u00fd z konzole Geth. Nau\u010d\u00edte se vytv\u00e1\u0159et \u00fa\u010dty, iniciovat transakce p\u0159evodu prost\u0159edk\u016f, z\u00edsk\u00e1vat stav transakce a jej\u00ed potvrzen\u00ed.<\/p>\n<p><b>V p\u00e1t\u00e9 lekci<\/b> se sezn\u00e1m\u00edte se smart kontrakty v s\u00edti Ethereum a dozv\u00edte se o jejich vykon\u00e1v\u00e1n\u00ed virtu\u00e1ln\u00ed stroj Ethereum. <\/p>\n<p>Vytvo\u0159\u00edte a zve\u0159ejn\u00edte ve sv\u00e9 priv\u00e1tn\u00ed s\u00edti Ethereum sv\u016fj prvn\u00ed smart kontrakt a nau\u010d\u00edte se vyvol\u00e1vat jeho funkce. K tomu budete pou\u017e\u00edvat v\u00fdvojov\u00e9 prost\u0159ed\u00ed Remix Solidity IDE. Krom\u011b toho se nau\u010d\u00edte instalovat a pou\u017e\u00edvat bal\u00ed\u010dkov\u00fd p\u0159eklada\u010d solc.<br \/>\nTak\u00e9 v\u00e1s sezn\u00e1m\u00edme s takzvan\u00fdm bin\u00e1rn\u00edm rozhran\u00edm aplikace Application Binary Interface (ABI) a nau\u010d\u00edme ho pou\u017e\u00edvat.<\/p>\n<p><b>\u0160est\u00e1 lekce<\/b> se v\u011bnuje vytv\u00e1\u0159en\u00ed skript\u016f JavaScript, kter\u00e9 b\u011b\u017e\u00ed pod Node.js a vykon\u00e1vaj\u00ed operace se smart kontrakty Solidity.<\/p>\n<p>Nainstalujete Node.js v OS Ubuntu, Debian a Rasberian, nap\u00ed\u0161ete skripty pro publikaci smart kontraktu v lok\u00e1ln\u00ed s\u00edti Ethereum a vyvol\u00e1v\u00e1n\u00ed jeho funkc\u00ed. <\/p>\n<p>Krom\u011b toho se nau\u010d\u00edte pomoc\u00ed skript\u016f p\u0159ev\u00e1d\u011bt prost\u0159edky mezi b\u011b\u017en\u00fdmi \u00fa\u010dty a tak\u00e9 je p\u0159ipisovat na \u00fa\u010dty smart kontrakt\u016f.<\/p>\n<p><b>V sedm\u00e9 lekci<\/b> se nau\u010d\u00edte instalovat a pou\u017e\u00edvat obl\u00edben\u00e9 prost\u0159ed\u00ed Truffle mezi v\u00fdvoj\u00e1\u0159i smart kontrakt\u016f Solidity. Nau\u010d\u00edte se vytv\u00e1\u0159et skripty JavaScript, kter\u00e9 vyvol\u00e1vaj\u00ed funkce kontrakt\u016f pomoc\u00ed modulu truffle-contract, a provedete testov\u00e1n\u00ed sv\u00e9ho smart kontraktu pomoc\u00ed Truffle.<\/p>\n<p><b>Osma lekce<\/b> se v\u011bnuje typ\u016fm dat Solidity. Nap\u00ed\u0161ete smart kontrakty, kter\u00e9 pracuj\u00ed s takov\u00fdmi typy dat, jako jsou podepsan\u00e1 a nepodepsan\u00e1 cel\u00e1 \u010d\u00edsla, \u010d\u00edsla se znam\u00e9nkem, \u0159et\u011bzce, adresy, prom\u011bnn\u00e9 slo\u017een\u00fdch typ\u016f, pole, v\u00fd\u010dty, struktury a slovn\u00edky.<\/p>\n<p><b>V dev\u00e1t\u00e9 lekci<\/b> P\u0159ibl\u00ed\u017e\u00edte se o krok k vytvo\u0159en\u00ed smart kontrakt\u016f pro hlavn\u00ed s\u00ed\u0165 Ethereum. Nau\u010d\u00edte se publikovat kontrakty pomoc\u00ed Truffle v priv\u00e1tn\u00ed s\u00edti Geth a tak\u00e9 v testovac\u00ed s\u00edti Rinkeby. Lad\u011bn\u00ed smart kontraktu v s\u00edti Rinkeby je velmi u\u017eite\u010dn\u00e9 p\u0159ed jeho publikac\u00ed v hlavn\u00ed s\u00edti \u2014 tam je v\u0161e prakticky skute\u010dn\u00e9, ale zdarma.<\/p>\n<p>V r\u00e1mci lekce vytvo\u0159\u00edte uzel testovac\u00ed s\u00edt\u011b Rinkeby, dopln\u00edte ho o prost\u0159edky a publikujete smart kontrakt.<\/p>\n<p><b>Lekce 10<\/b> je v\u011bnov\u00e1na distribuovan\u00fdm \u00falo\u017ei\u0161t\u00edm dat Ethereum Swarm. Pou\u017eit\u00edm distribuovan\u00fdch \u00falo\u017ei\u0161\u0165 u\u0161et\u0159\u00edte na ukl\u00e1d\u00e1n\u00ed objemn\u00fdch dat v blockchainu Ethereum. <\/p>\n<p>V r\u00e1mci t\u00e9to lekce vytvo\u0159\u00edte m\u00edstn\u00ed \u00falo\u017ei\u0161t\u011b Swarm, provedete operace z\u00e1pisu a \u010dten\u00ed soubor\u016f, stejn\u011b jako adres\u00e1\u0159\u016f se soubory. D\u00e1le se nau\u010d\u00edte pracovat s ve\u0159ejnou br\u00e1nou Swarm, nap\u00ed\u0161ete skripty pro p\u0159\u00edstup k Swarm z Node.js a tak\u00e9 pomoc\u00ed modulu Perl Net::Ethereum::Swarm.<\/p>\n<p><b>C\u00edlem lekce 11<\/b> je osvojit si pr\u00e1ci se smart kontrakty Solidity s pou\u017eit\u00edm popul\u00e1rn\u00edho programovac\u00edho jazyka Python a r\u00e1mce Web3.py. Nainstalujete tento r\u00e1mec, nap\u00ed\u0161ete skripty pro kompilaci a publikaci smart kontraktu, stejn\u011b jako pro vol\u00e1n\u00ed jeho funkc\u00ed. P\u0159itom bude Web3.py pou\u017eit jak samostatn\u011b, tak ve spolupr\u00e1ci s integrovan\u00fdm v\u00fdvojov\u00fdm prost\u0159ed\u00edm Truffle.<\/p>\n<p><b>Na 12. lekci<\/b> se nau\u010d\u00edte p\u0159en\u00e1\u0161et data mezi smart kontrakty a re\u00e1ln\u00fdm sv\u011btem pomoc\u00ed or\u00e1kul\u00ed. To v\u00e1m bude u\u017eite\u010dn\u00e9 pro z\u00edsk\u00e1v\u00e1n\u00ed dat z webov\u00fdch str\u00e1nek, za\u0159\u00edzen\u00ed internetu v\u011bc\u00ed IoT, r\u016fzn\u00fdch p\u0159\u00edstroj\u016f a senzor\u016f a pro odes\u00edl\u00e1n\u00ed dat ze smart kontrakt\u016f na tato za\u0159\u00edzen\u00ed. V praktick\u00e9 \u010d\u00e1sti lekce vytvo\u0159\u00edte or\u00e1kulum a smart kontrakt, kter\u00fd z\u00edsk\u00e1v\u00e1 aktu\u00e1ln\u00ed sm\u011bnn\u00fd kurz USD na rubly z webu \u010cNB.<\/p>\n<p><b class=\"spoiler_title\">Lekce 1. Stru\u010dn\u011b o blockchainu a s\u00edti Ethereum<\/b><b>C\u00edl lekce:<\/b> sezn\u00e1mit se s principy fungov\u00e1n\u00ed blockchainu Ethereum, oblastmi jeho vyu\u017eit\u00ed a z\u00e1kladn\u00ed terminologi\u00ed.<br \/>\n<b>Praktick\u00e9 \u00fakoly:<\/b> v t\u00e9to lekci nejsou pl\u00e1nov\u00e1ny.<\/p>\n<p>T\u011b\u017eko \u0159\u00edct, zda dnes existuje v\u00fdvoj\u00e1\u0159 softwaru (SW), kter\u00fd by nesly\u0161el o technologii blockchain, kryptom\u011bn\u00e1ch, bitcoinech, po\u010d\u00e1te\u010dn\u00edch nab\u00eddk\u00e1ch minc\u00ed (ICO, Initial coin offering), smart kontraktech a dal\u0161\u00edch pojmech a term\u00ednech souvisej\u00edc\u00edch s blockchainem.<\/p>\n<p>Technologie blockchain otev\u00edr\u00e1 nov\u00e9 trhy a vytv\u00e1\u0159\u00ed pracovn\u00ed m\u00edsta pro program\u00e1tory. Pokud ovl\u00e1dnete ve\u0161ker\u00e9 nuance kryptom\u011bnov\u00fdch technologi\u00ed a technologi\u00ed chytr\u00fdch kontrakt\u016f, nebudete m\u00edt \u017e\u00e1dn\u00e9 probl\u00e9my s aplikac\u00ed t\u011bchto znalost\u00ed v praxi.<\/p>\n<p>Je t\u0159eba \u0159\u00edci, \u017ee kolem kryptom\u011bn a blockchain\u016f vznik\u00e1 mnoho spekulac\u00ed. Stranou nech\u00e1me \u00favahy o zm\u011bn\u00e1ch kurz\u016f kryptom\u011bn, o vytv\u00e1\u0159en\u00ed pyramid, o nuanc\u00edch kryptom\u011bnov\u00e9 legislativy atd. V na\u0161em vzd\u011bl\u00e1vac\u00edm kurzu se zam\u011b\u0159\u00edme p\u0159edev\u0161\u00edm na technick\u00e9 aspekty aplikace chytr\u00fdch kontrakt\u016f blockchainu Ethereum (ethereum, ether) a v\u00fdvoj takzvan\u00fdch decentralizovan\u00fdch aplikac\u00ed (Distributed Application, DApp).<\/p>\n<h3>Co je blockchain<\/h3>\n<p>\nBlockchain (Blockchain, Block Chain) p\u0159edstavuje \u0159et\u011bzec datov\u00fdch blok\u016f, kter\u00e9 jsou navz\u00e1jem spojeny ur\u010dit\u00fdm zp\u016fsobem. Na za\u010d\u00e1tku \u0159et\u011bzce se nach\u00e1z\u00ed prvn\u00ed blok, kter\u00fd se naz\u00fdv\u00e1 prim\u00e1rn\u00ed blok (genesis block) nebo blok genese. N\u00e1sleduje druh\u00fd, pot\u00e9 t\u0159et\u00ed a tak d\u00e1le.<\/p>\n<p>V\u0161echny tyto datov\u00e9 bloky se automaticky duplikuj\u00ed na mnoha uzlech s\u00edt\u011b blockchainu. T\u00edm se zaji\u0161\u0165uje decentralizovan\u00e9 ukl\u00e1d\u00e1n\u00ed dat blockchainu. <br \/>\nM\u016f\u017eete si p\u0159edstavit syst\u00e9m blockchainu jako velk\u00e9 mno\u017estv\u00ed uzl\u016f (fyzick\u00fdch nebo virtu\u00e1ln\u00edch server\u016f), kter\u00e9 jsou spojeny do s\u00edt\u011b a replikuje ve\u0161ker\u00e9 zm\u011bny v \u0159et\u011bzci datov\u00fdch blok\u016f. Je to jako obrovsk\u00fd multi-serverov\u00fd po\u010d\u00edta\u010d, p\u0159i\u010dem\u017e uzly tohoto po\u010d\u00edta\u010de (servery) mohou b\u00fdt roztrou\u0161eny po cel\u00e9m sv\u011bt\u011b. A vy tak\u00e9 m\u016f\u017eete p\u0159idat sv\u016fj po\u010d\u00edta\u010d do s\u00edt\u011b blockchainu. <\/p>\n<h4>Distribuovan\u00e1 datab\u00e1ze<\/h4>\n<p>\nBlockchain si m\u016f\u017eete p\u0159edstavit jako distribuovanou datab\u00e1zi, kter\u00e1 se replikuj\u00ed na v\u0161echny uzly s\u00edt\u011b blockchainu. Teoreticky bude blockchain funk\u010dn\u00ed, dokud pracuje alespo\u0148 jeden uzel, kter\u00fd uchov\u00e1v\u00e1 v\u0161echny bloky blockchainu.<\/p>\n<h4>Distribuovan\u00fd registr dat<\/h4>\n<p>\nBlockchain si m\u016f\u017eete p\u0159edstavit jako tento distribuovan\u00fd registr dat a operac\u00ed (transakc\u00ed). Dal\u0161\u00ed n\u00e1zev takov\u00e9ho registru je hlavn\u00ed kniha. <\/p>\n<p>Do distribuovan\u00e9ho registru lze p\u0159id\u00e1vat data, ale nen\u00ed mo\u017en\u00e9 je m\u011bnit nebo mazat. Tato nemo\u017enost je dosa\u017eena zejm\u00e9na pou\u017eit\u00edm kryptografick\u00fdch algoritm\u016f, speci\u00e1ln\u00edch algoritm\u016f pro p\u0159id\u00e1v\u00e1n\u00ed blok\u016f do \u0159et\u011bzce a decentralizovan\u00fdm ukl\u00e1d\u00e1n\u00edm dat.<\/p>\n<p>P\u0159i p\u0159id\u00e1v\u00e1n\u00ed blok\u016f a prov\u00e1d\u011bn\u00ed operac\u00ed (transakc\u00ed) se pou\u017e\u00edvaj\u00ed soukrom\u00e9 a ve\u0159ejn\u00e9 kl\u00ed\u010de. Omezuj\u00ed u\u017eivatele blockchainu, poskytuj\u00edc\u00edm p\u0159\u00edstup pouze k jejich blok\u016fm dat.<\/p>\n<h4>Transakce<\/h4>\n<p>\nBlockchain uchov\u00e1v\u00e1 informace o operac\u00edch (transakc\u00edch) v bloc\u00edch. P\u0159itom star\u00e9, ji\u017e proveden\u00e9 transakce nen\u00ed mo\u017en\u00e9 vr\u00e1tit nebo zm\u011bnit. Nov\u00e9 transakce jsou ukl\u00e1d\u00e1ny v nov\u011b p\u0159idan\u00fdch bloc\u00edch.<\/p>\n<p>Takto m\u016f\u017ee b\u00fdt v blockchainu zaznamen\u00e1na v nezm\u011bn\u011bn\u00e9 podob\u011b cel\u00e1 historie transakc\u00ed. Proto lze blockchain pou\u017e\u00edt nap\u0159\u00edklad pro bezpe\u010dn\u00e9 uchov\u00e1n\u00ed bankovn\u00edch operac\u00ed, informac\u00ed o autorsk\u00fdch pr\u00e1vech, historii zm\u011bn vlastn\u00edk\u016f nemovitost\u00ed a podobn\u011b.<\/p>\n<p>Blockchain Ethereum obsahuje tzv. stavy syst\u00e9mu. B\u011bhem prov\u00e1d\u011bn\u00ed transakc\u00ed se stav m\u011bn\u00ed od po\u010d\u00e1te\u010dn\u00edho po aktu\u00e1ln\u00ed. Transakce jsou zapisov\u00e1ny do blok\u016f.<\/p>\n<h4>Ve\u0159ejn\u00e9 a soukrom\u00e9 blockchainy<\/h4>\n<p>\nJe t\u0159eba poznamenat, \u017ee to, co bylo \u0159e\u010deno, plat\u00ed pouze pro tzv. ve\u0159ejn\u00e9 s\u00edt\u011b blockchain, kter\u00e9 nemohou b\u00fdt kontrolov\u00e1ny \u017e\u00e1dn\u00fdmi jednotliv\u00fdmi fyzick\u00fdmi nebo pr\u00e1vn\u00edmi osobami, vl\u00e1dn\u00edmi org\u00e1ny nebo st\u00e1ty. <br \/>\nTakzvan\u00e9 soukrom\u00e9 s\u00edt\u011b blockchain jsou pod plnou kontrolou jejich tv\u016frc\u016f, a tam je mo\u017en\u00e9 v\u0161e, nap\u0159\u00edklad \u00fapln\u00e1 v\u00fdm\u011bna v\u0161ech blok\u016f \u0159et\u011bzce.<\/p>\n<h4>Praktick\u00e9 aplikace blockchainu<\/h4>\n<p>\nK \u010demu m\u016f\u017ee b\u00fdt blockchain u\u017eite\u010dn\u00fd?<\/p>\n<p>Stru\u010dn\u011b \u0159e\u010deno, blockchain umo\u017e\u0148uje bezpe\u010dn\u011b prov\u00e1d\u011bt operace (obchody) mezi osobami nebo spole\u010dnostmi, kter\u00e9 si vz\u00e1jemn\u011b ned\u016fv\u011b\u0159uj\u00ed. Zapsan\u00e1 data v blockchainu (transakce, osobn\u00ed \u00fadaje, dokumenty, osv\u011bd\u010den\u00ed, smlouvy, dodac\u00ed listy atd.) nelze po z\u00e1pisu fal\u0161ovat ani m\u011bnit. Proto je mo\u017en\u00e9 na z\u00e1klad\u011b blockchainu vytv\u00e1\u0159et nap\u0159\u00edklad d\u016fv\u011bryhodn\u00e9 distribuovan\u00e9 registry r\u016fzn\u00fdch druh\u016f dokument\u016f.<\/p>\n<p>Samoz\u0159ejm\u011b v\u00edte, \u017ee na b\u00e1zi blockchain\u016f jsou vytv\u00e1\u0159eny kryptom\u011bnov\u00e9 syst\u00e9my, kter\u00e9 maj\u00ed nahradit b\u011b\u017en\u00e9 pap\u00edrov\u00e9 pen\u00edze. Pap\u00edrov\u00e9 pen\u00edze se tak\u00e9 naz\u00fdvaj\u00ed fiatn\u00ed (z anglick\u00e9ho Fiat Money).<br \/>\nBlockchain zaji\u0161\u0165uje ukl\u00e1d\u00e1n\u00ed a nem\u011bnnost transakc\u00ed, kter\u00e9 jsou zaznamen\u00e1ny v bloc\u00edch, a proto m\u016f\u017ee b\u00fdt vyu\u017eit k vytvo\u0159en\u00ed kryptom\u011bnov\u00fdch syst\u00e9m\u016f. Obsahuje celou historii p\u0159evodu kryptom\u011bn mezi r\u016fzn\u00fdmi u\u017eivateli (\u00fa\u010dty), p\u0159i\u010dem\u017e jak\u00e1koli operace m\u016f\u017ee b\u00fdt sledov\u00e1na.<\/p>\n<p>I kdy\u017e mohou b\u00fdt operace uvnit\u0159 kryptom\u011bnov\u00fdch syst\u00e9m\u016f anonymn\u00ed, v\u00fdb\u011br kryptom\u011bny a jej\u00ed v\u00fdm\u011bna za fiatn\u00ed pen\u00edze obvykle vedou k odhalen\u00ed identity majitele kryptom\u011bnov\u00e9ho aktiva. <\/p>\n<p>Takzvan\u00e9 chytr\u00e9 kontrakty, kter\u00e9 p\u0159edstavuj\u00ed software pracuj\u00edc\u00ed v s\u00edti Ethereum, umo\u017e\u0148uj\u00ed automatizovat proces uzav\u00edr\u00e1n\u00ed obchod\u016f a kontrolovat jejich pln\u011bn\u00ed. Je to zvl\u00e1\u0161\u0165 efektivn\u00ed, pokud platba za obchod prob\u00edh\u00e1 kryptom\u011bnou Ether.<\/p>\n<p>Blockchain Ethereum a chytr\u00e9 kontrakty Ethereum, napsan\u00e9 v programovac\u00edm jazyce Solidity, mohou b\u00fdt nap\u0159\u00edklad pou\u017e\u00edv\u00e1ny v t\u011bchto oblastech:<\/p>\n<ul>\n<li>alternativa k not\u00e1\u0159sk\u00e9mu ov\u011b\u0159en\u00ed dokument\u016f;<\/li>\n<li>ukl\u00e1d\u00e1n\u00ed registru nemovitost\u00ed a informac\u00ed o operac\u00edch s nemovitostmi;<\/li>\n<li>ukl\u00e1d\u00e1n\u00ed informac\u00ed o autorsk\u00fdch pr\u00e1vech na objekty du\u0161evn\u00edho vlastnictv\u00ed (knihy, obr\u00e1zky, hudebn\u00ed d\u00edla atd.);<\/li>\n<li>vytv\u00e1\u0159en\u00ed syst\u00e9m\u016f nez\u00e1visl\u00e9ho hlasov\u00e1n\u00ed;<\/li>\n<li>finan\u010dn\u00ed sf\u00e9ra a bankovnictv\u00ed;<\/li>\n<li>logistika v mezin\u00e1rodn\u00edm m\u011b\u0159\u00edtku, sledov\u00e1n\u00ed pohybu zbo\u017e\u00ed;<\/li>\n<li>ukl\u00e1d\u00e1n\u00ed osobn\u00edch \u00fadaj\u016f jako analogov\u00fd syst\u00e9m toto\u017enosti;<\/li>\n<li>bezpe\u010dn\u00e9 transakce v obchodn\u00ed sf\u00e9\u0159e;<\/li>\n<li>ukl\u00e1d\u00e1n\u00ed v\u00fdsledk\u016f l\u00e9ka\u0159sk\u00fdch vy\u0161et\u0159en\u00ed a tak\u00e9 historie p\u0159edepsan\u00fdch procedur.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Probl\u00e9my s blockchainem<\/h4>\n<p>\nAle samoz\u0159ejm\u011b, ne v\u0161echno je tak jednoduch\u00e9, jak by se mohlo zd\u00e1t! <\/p>\n<p>Existuj\u00ed probl\u00e9my s ov\u011b\u0159ov\u00e1n\u00edm dat p\u0159ed jejich p\u0159id\u00e1n\u00edm do blockchainu (nap\u0159\u00edklad, zda nejsou podvr\u017een\u00e1?), probl\u00e9my v bezpe\u010dnosti syst\u00e9mov\u00e9ho a aplikovan\u00e9ho softwaru pou\u017e\u00edvan\u00e9ho ke pr\u00e1ci s blockchainem, probl\u00e9my s mo\u017enost\u00ed pou\u017eit\u00ed metod soci\u00e1ln\u00edho in\u017een\u00fdrstv\u00ed k \u00fatok\u016fm na p\u0159\u00edstupov\u00e9 \u00fadaje k pen\u011b\u017eenk\u00e1m s kryptom\u011bnou atd.<\/p>\n<p>Op\u011bt, pokud se nejedn\u00e1 o ve\u0159ejn\u00fd blockchain, jeho\u017e uzly jsou rozpt\u00fdleny po cel\u00e9m sv\u011bt\u011b, ale o soukrom\u00fd blockchain pat\u0159\u00edc\u00ed osob\u011b nebo organizaci, \u00farove\u0148 d\u016fv\u011bry zde nebude vy\u0161\u0161\u00ed ne\u017e \u00farove\u0148 d\u016fv\u011bry k t\u00e9to osob\u011b nebo t\u00e9to organizaci.<\/p>\n<p>Je tak\u00e9 t\u0159eba m\u00edt na pam\u011bti, \u017ee data zapsan\u00e1 do blockchainu se st\u00e1vaj\u00ed dostupn\u00fdmi pro v\u0161echny. V tomto smyslu blockchain (zejm\u00e9na ve\u0159ejn\u00fd) nen\u00ed vhodn\u00fd pro uchov\u00e1v\u00e1n\u00ed d\u016fv\u011brn\u00fdch informac\u00ed. Nicm\u00e9n\u011b skute\u010dnost, \u017ee informace v blockchainu nelze zm\u011bnit, m\u016f\u017ee pomoci p\u0159edch\u00e1zet nebo vy\u0161et\u0159ovat r\u016fzn\u00e9 podvodn\u00e9 \u010dinnosti.<\/p>\n<p>Decentralizovan\u00e9 aplikace Ethereum budou pohodln\u00e9, pokud se za jejich pou\u017e\u00edv\u00e1n\u00ed plat\u00ed kryptom\u011bnou. \u010c\u00edm v\u00edce lid\u00ed vlastn\u00ed kryptom\u011bnu nebo je ochotno ji zakoupit, t\u00edm v\u011bt\u0161\u00ed popularitu z\u00edskaj\u00ed aplikace DApp a chytr\u00e9 kontrakty.<\/p>\n<p>Mezi obecn\u00fdmi probl\u00e9my blockchainu, kter\u00e9 zt\u011b\u017euj\u00ed jeho praktick\u00e9 pou\u017eit\u00ed, lze zm\u00ednit omezenou rychlost p\u0159id\u00e1v\u00e1n\u00ed nov\u00fdch blok\u016f a relativn\u011b vysok\u00e9 n\u00e1klady na transakce. Ale technologie v t\u00e9to oblasti aktivn\u011b postupuj\u00ed a existuj\u00ed nad\u011bje, \u017ee technick\u00e9 probl\u00e9my budou \u010dasem vy\u0159e\u0161eny.<\/p>\n<p>Dal\u0161\u00edm probl\u00e9mem je, \u017ee chytr\u00e9 kontrakty blockchainu Ethereum funguj\u00ed v izolovan\u00e9m prost\u0159ed\u00ed virtu\u00e1ln\u00edch stroj\u016f a nemaj\u00ed p\u0159\u00edstup k dat\u016fm re\u00e1ln\u00e9ho sv\u011bta. Zejm\u00e9na program chytr\u00e9ho kontraktu nem\u016f\u017ee s\u00e1m na\u010d\u00edst data z webov\u00fdch str\u00e1nek nebo jak\u00fdchkoli fyzick\u00fdch za\u0159\u00edzen\u00ed (senzory, kontakty atd.), a tak\u00e9 nem\u016f\u017ee pos\u00edlat data na jak\u00e1koliv extern\u00ed za\u0159\u00edzen\u00ed. Tento probl\u00e9m a zp\u016fsoby jeho \u0159e\u0161en\u00ed budeme prob\u00edrat na hodin\u011b v\u011bnovan\u00e9 takzvan\u00fdm Or\u00e1kulum \u2014 informa\u010dn\u00edm zprost\u0159edkovatel\u016fm chytr\u00fdch kontrakt\u016f.<\/p>\n<p>Existuj\u00ed tak\u00e9 omezen\u00ed v oblasti legislativy. V n\u011bkter\u00fdch zem\u00edch, nap\u0159. je zak\u00e1z\u00e1no pou\u017e\u00edvat kryptom\u011bnu jako platebn\u00ed prost\u0159edek, ale je mo\u017en\u00e9 ji vlastnit jako digit\u00e1ln\u00ed aktivum, podobn\u011b jako cenn\u00e9 pap\u00edry. Takov\u00e1 aktiva lze nakupovat a prod\u00e1vat na burze. V ka\u017ed\u00e9m p\u0159\u00edpad\u011b, p\u0159i vytv\u00e1\u0159en\u00ed projektu, kter\u00fd pracuje s kryptom\u011bnami, je nutn\u00e9 se sezn\u00e1mit s legislativou zem\u011b, pod jej\u00ed\u017e jurisdikci v\u00e1\u0161 projekt spad\u00e1.<\/p>\n<h3>Jak se formuje \u0159et\u011bzec blockchainu<\/h3>\n<p>\nJak u\u017e bylo \u0159e\u010deno, blockchain je jednoduch\u00fd \u0159et\u011bz blok\u016f dat. Nejd\u0159\u00edve je vytvo\u0159en prvn\u00ed blok tohoto \u0159et\u011bzce, pot\u00e9 k n\u011bmu je p\u0159id\u00e1n druh\u00fd a tak d\u00e1le. P\u0159edpokl\u00e1d\u00e1 se, \u017ee data transakc\u00ed jsou ulo\u017eena v bloc\u00edch a p\u0159id\u00e1vaj\u00ed se do posledn\u00edho bloku.<\/p>\n<p>Na obr. 1.1 jsme uk\u00e1zali nejjednodu\u0161\u0161\u00ed variantu sekvence blok\u016f, kde prvn\u00ed blok odkazuje na n\u00e1sleduj\u00edc\u00ed. <\/p>\n<p><img decoding=\"async\" alt=\"Kniha \u201eVytv\u00e1\u0159en\u00ed smart kontrakt\u016f Solidity pro blockchain Ethereum. Praktick\u00e1 p\u0159\u00edru\u010dka\u201c\" src=\"\/wp-content\/uploads\/2019\/10\/23ca04ba2c8914334032523d01bf8b80.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Obr. 1.1. Jednoduch\u00e1 sekvence blok\u016f<\/i><\/p>\n<p>V t\u00e9to variant\u011b je v\u0161ak velmi snadn\u00e9 fal\u0161ovat obsah jak\u00e9hokoli bloku \u0159et\u011bzce, proto\u017ee bloky neobsahuj\u00ed \u017e\u00e1dn\u00e9 informace na ochranu proti zm\u011bn\u00e1m. Vzhledem k tomu, \u017ee je blockchain ur\u010den pro pou\u017eit\u00ed mezi lidmi a spole\u010dnostmi, mezi kter\u00fdmi nen\u00ed d\u016fv\u011bra, lze usoudit, \u017ee tento zp\u016fsob uchov\u00e1v\u00e1n\u00ed dat pro blockchain nen\u00ed vhodn\u00fd.<\/p>\n<p>Poj\u010fme se v\u011bnovat ochran\u011b blok\u016f p\u0159ed fal\u0161ov\u00e1n\u00edm. V prvn\u00ed f\u00e1zi se pokus\u00edme chr\u00e1nit ka\u017ed\u00fd blok kontroln\u00edm sou\u010dtem (obr. 1.2).<\/p>\n<p><img decoding=\"async\" alt=\"Kniha \u201eVytv\u00e1\u0159en\u00ed smart kontrakt\u016f Solidity pro blockchain Ethereum. Praktick\u00e1 p\u0159\u00edru\u010dka\u201c\" src=\"\/wp-content\/uploads\/2019\/10\/141502accec14e868a9382c612cfc791.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Obr. 1.2. P\u0159id\u00e1n\u00ed ochrany dat blok\u016f kontroln\u00edm sou\u010dtem<\/i><\/p>\n<p>Nyn\u00ed \u00fato\u010dn\u00edk nem\u016f\u017ee jen tak zm\u011bnit blok, proto\u017ee v n\u011bm je kontroln\u00ed sou\u010det dat bloku. Kontrola kontroln\u00edho sou\u010dtu uk\u00e1\u017ee, \u017ee byla data zm\u011bn\u011bna.<\/p>\n<p>Pro v\u00fdpo\u010det kontroln\u00edho sou\u010dtu lze pou\u017e\u00edt jednu z hashovac\u00edch funkc\u00ed, jako je MD-5, SHA-1, SHA-256 atd. Hashovac\u00ed funkce vypo\u010d\u00edt\u00e1vaj\u00ed ur\u010ditou hodnotu (nap\u0159\u00edklad ve form\u011b textov\u00e9ho \u0159et\u011bzce st\u00e1l\u00e9 d\u00e9lky) v d\u016fsledku nevratn\u00fdch operac\u00ed nad blokem dat. Operace z\u00e1vis\u00ed na typu hashovac\u00ed funkce. <\/p>\n<p>I p\u0159i mal\u00fdch zm\u011bn\u00e1ch obsahu bloku dat se hodnota hashovac\u00ed funkce tak\u00e9 zm\u011bn\u00ed. Analyzov\u00e1n\u00edm hodnoty hashovac\u00ed funkce nelze obnovit blok dat, pro kter\u00fd byla vypo\u010dtena.<\/p>\n<p>Bude takov\u00e1 ochrana dostate\u010dn\u00e1? Bohu\u017eel, ne.<\/p>\n<p>V tomto sch\u00e9matu chr\u00e1n\u00ed kontroln\u00ed sou\u010det (hashovac\u00ed funkce) pouze jednotliv\u00e9 bloky, ale ne cel\u00fd \u0159et\u011bzec blok\u016f. Znaje algoritmus v\u00fdpo\u010dtu hashovac\u00ed funkce, \u00fato\u010dn\u00edk m\u016f\u017ee snadno zam\u011bnit obsah bloku. Tak\u00e9 nic mu nezabr\u00e1n\u00ed v tom, aby odstranil bloky z \u0159et\u011bzce nebo p\u0159idal nov\u00e9.<\/p>\n<p>Abychom chr\u00e1nili cel\u00fd \u0159et\u011bzec jako celek, m\u016f\u017eeme ukl\u00e1dat v ka\u017ed\u00e9m bloku krom\u011b dat tak\u00e9 hash dat p\u0159edchoz\u00edho bloku (obr. 1.3).<\/p>\n<p><img decoding=\"async\" alt=\"Kniha \u201eVytv\u00e1\u0159en\u00ed smart kontrakt\u016f Solidity pro blockchain Ethereum. Praktick\u00e1 p\u0159\u00edru\u010dka\u201c\" src=\"\/wp-content\/uploads\/2019\/10\/f414ab67dbabc763c537a430e01ed065.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Obr. 1.3. P\u0159id\u00e1n\u00ed hash p\u0159edchoz\u00edho bloku do datov\u00e9ho bloku<\/i><\/p>\n<p>V t\u00e9to sch\u00e9m\u011b, abychom zm\u011bnili n\u011bjak\u00fd blok, je pot\u0159eba p\u0159epo\u010d\u00edtat hash funkce v\u0161ech n\u00e1sleduj\u00edc\u00edch blok\u016f. Zd\u00e1lo by se, \u017ee jak\u00fd je probl\u00e9m?<\/p>\n<p>V re\u00e1ln\u00fdch blockchainech jsou nav\u00edc vytvo\u0159eny um\u011bl\u00e9 obt\u00ed\u017ee pro p\u0159id\u00e1v\u00e1n\u00ed nov\u00fdch blok\u016f \u2013 pou\u017e\u00edvaj\u00ed se algoritmy, kter\u00e9 vy\u017eaduj\u00ed velk\u00e9 mno\u017estv\u00ed v\u00fdpo\u010detn\u00edch zdroj\u016f. S ohledem na to, \u017ee pro proveden\u00ed zm\u011bn v bloku je t\u0159eba p\u0159epo\u010d\u00edtat nejen tento blok, ale tak\u00e9 v\u0161echny n\u00e1sleduj\u00edc\u00ed, bude to velmi obt\u00ed\u017en\u00e9.<\/p>\n<p>Tak\u00e9 si p\u0159ipome\u0148me, \u017ee data blockchainu jsou uchov\u00e1v\u00e1na (duplikov\u00e1na) na nes\u010detn\u00e9m mno\u017estv\u00ed uzl\u016f v s\u00edti, tzn. pou\u017e\u00edv\u00e1 se decentralizovan\u00e9 ukl\u00e1d\u00e1n\u00ed. To mnohem v\u00edce zkomplikuje pad\u011bl\u00e1n\u00ed bloku, proto\u017ee zm\u011bny mus\u00ed b\u00fdt provedeny na v\u0161ech uzlech v s\u00edti.<\/p>\n<p>Proto\u017ee bloky uchov\u00e1vaj\u00ed informace o p\u0159edchoz\u00edm bloku, lze zkontrolovat obsah v\u0161ech blok\u016f v \u0159et\u011bzci.<\/p>\n<h3>Blockchain Ethereum<\/h3>\n<p>\nBlockchain Ethereum p\u0159edstavuje platformu, na kter\u00e9 lze vytv\u00e1\u0159et distribuovan\u00e9 aplikace DApp. Na rozd\u00edl od jin\u00fdch platforem, Ethereum umo\u017e\u0148uje pou\u017e\u00edvat takzvan\u00e9 chytr\u00e9 smlouvy (smart contracts), napsan\u00e9 v programovac\u00edm jazyce Solidity.<\/p>\n<p>Tato platforma byla vytvo\u0159ena v roce 2013 Vitalikem Buterinem, zakladatelem \u010dasopisu Bitcoin Magazine, a spu\u0161t\u011bna v roce 2015. V\u0161e, co budeme studovat nebo d\u011blat v na\u0161em vzd\u011bl\u00e1vac\u00edm kurzu, se t\u00fdk\u00e1 pr\u00e1v\u011b blockchainu Ethereum a chytr\u00fdch smluv Solidity.<\/p>\n<h3>T\u011b\u017eba nebo jak se vytv\u00e1\u0159ej\u00ed bloky<\/h3>\n<p>\nT\u011b\u017eba (mining) p\u0159edstavuje pom\u011brn\u011b slo\u017eit\u00fd a n\u00e1ro\u010dn\u00fd proces p\u0159id\u00e1v\u00e1n\u00ed nov\u00fdch blok\u016f do blockchainov\u00e9 s\u00edt\u011b, a rozhodn\u011b to nen\u00ed \u201et\u011b\u017eba kryptom\u011bn\u201c. T\u011b\u017eba zaji\u0161\u0165uje funk\u010dnost blockchainu, proto\u017ee pr\u00e1v\u011b tento proces odpov\u00edd\u00e1 za p\u0159id\u00e1v\u00e1n\u00ed transakc\u00ed do blockchainu Ethereum.<\/p>\n<p>Lid\u00e9 a organizace, kte\u0159\u00ed se zab\u00fdvaj\u00ed p\u0159id\u00e1v\u00e1n\u00edm blok\u016f, se naz\u00fdvaj\u00ed t\u011b\u017ea\u0159i (miners).<br \/>\nSoftware (SW), kter\u00fd funguje na uzlech t\u011b\u017ea\u0159\u016f, se sna\u017e\u00ed nal\u00e9zt pro posledn\u00ed blok parametr hashov\u00e1n\u00ed nazvan\u00fd Nonce, aby z\u00edskal ur\u010ditou hodnotu hash funkce zadanou s\u00edt\u00ed. Hashovac\u00ed algoritmus Ethash pou\u017e\u00edvan\u00fd v Ethereu umo\u017e\u0148uje z\u00edskat hodnotu Nonce pouze sekven\u010dn\u00edm zkou\u0161en\u00edm. <\/p>\n<p>Pokud miner node najde spr\u00e1vnou hodnotu Nonce, je to takzvan\u00fd d\u016fkaz pr\u00e1ce (PoW, Proof-of-work). V tomto p\u0159\u00edpad\u011b, pokud bude blok p\u0159id\u00e1n do s\u00edt\u011b Ethereum, miner z\u00edsk\u00e1v\u00e1 ur\u010ditou odm\u011bnu v m\u011bn\u011b s\u00edt\u011b \u2014 Ether. V dob\u011b p\u0159\u00edpravy na\u0161\u00ed knihy \u010din\u00ed odm\u011bna 5 Ether, av\u0161ak v pr\u016fb\u011bhu \u010dasu bude sn\u00ed\u017eena.<\/p>\n<p>T\u00edmto zp\u016fsobem minery Ethereum zaji\u0161\u0165uj\u00ed provoz s\u00edt\u011b p\u0159id\u00e1v\u00e1n\u00edm blok\u016f a za to obdr\u017e\u00ed kryptom\u011bnovou odm\u011bnu. Na internetu najdete spoustu informac\u00ed o minech a t\u011b\u017eb\u011b, my se v\u0161ak zam\u011b\u0159\u00edme na vytv\u00e1\u0159en\u00ed smluv Solidity a decentralizovan\u00fdch aplikac\u00ed DApp v s\u00edti Ethereum.<\/p>\n<h3>Shrnut\u00ed lekce<\/h3>\n<p>\nV prvn\u00ed lekci jste se sezn\u00e1mili s blockchainem a zjistili, \u017ee se jedn\u00e1 o zvl\u00e1\u0161tn\u00edm zp\u016fsobem sestavenou posloupnost blok\u016f. Obsah d\u0159\u00edve zapsan\u00fdch blok\u016f nelze zm\u011bnit, proto\u017ee by bylo pot\u0159eba p\u0159epo\u010d\u00edtat v\u0161echny n\u00e1sleduj\u00edc\u00ed bloky na mnoha uzlech s\u00edt\u011b, co\u017e si vy\u017eaduje obrovsk\u00e9 mno\u017estv\u00ed zdroj\u016f a \u010dasu.<\/p>\n<p>Blockchain m\u016f\u017ee b\u00fdt pou\u017eit k uchovan\u00ed v\u00fdsledk\u016f transakc\u00ed. Jeho hlavn\u00edm \u00fa\u010delem je zabezpe\u010dit prov\u00e1d\u011bn\u00ed transakc\u00ed mezi stranami (osobami a organizacemi), mezi nimi\u017e nen\u00ed d\u016fv\u011bra. Zjistili jste, v jak\u00fdch konkr\u00e9tn\u00edch oblastech podnik\u00e1n\u00ed a v jak\u00fdch odv\u011btv\u00edch lze vyu\u017e\u00edt blockchain Ethereum a smart contracts Solidity. Jsou to nap\u0159\u00edklad bankovn\u00ed sektor, registrace vlastnick\u00fdch pr\u00e1v, dokument\u016f atd.<\/p>\n<p>Tak\u00e9 jste se dozv\u011bd\u011bli, \u017ee p\u0159i pou\u017eit\u00ed blockchainu mohou vznikat r\u016fzn\u00e9 probl\u00e9my. Jsou to probl\u00e9my s ov\u011b\u0159ov\u00e1n\u00edm informac\u00ed p\u0159id\u00e1van\u00fdch do blockchainu, rychlost\u00ed pr\u00e1ce blockchainu, n\u00e1klady na transakce, probl\u00e9m v\u00fdm\u011bny dat mezi smart contracts a skute\u010dn\u00fdm sv\u011btem, stejn\u011b jako potenci\u00e1ln\u00ed mo\u017en\u00e9 \u00fatoky \u00fato\u010dn\u00edk\u016f zam\u011b\u0159en\u00fdch na kr\u00e1de\u017e kryptom\u011bnov\u00fdch prost\u0159edk\u016f z u\u017eivatelsk\u00fdch \u00fa\u010dt\u016f.<\/p>\n<p>Tak\u00e9 jsme stru\u010dn\u011b probrali t\u011b\u017ebu jako proces p\u0159id\u00e1v\u00e1n\u00ed nov\u00fdch blok\u016f do blockchainu. T\u011b\u017eba je nezbytn\u00e1 pro prov\u00e1d\u011bn\u00ed transakc\u00ed. Ti, kdo se t\u011b\u017ebou zab\u00fdvaj\u00ed, zaji\u0161\u0165uj\u00ed funk\u010dnost blockchainu a za to dost\u00e1vaj\u00ed odm\u011bnu v kryptom\u011bn\u011b.<\/p>\n<p><b class=\"spoiler_title\">Lekce 2. P\u0159\u00edprava pracovn\u00edho prost\u0159ed\u00ed v OS Ubuntu a Debian<\/b>V\u00fdb\u011br opera\u010dn\u00edho syst\u00e9mu<br \/>\nInstalace nezbytn\u00fdch utilit<br \/>\nInstalace Geth a Swarm v Ubuntu<br \/>\nInstalace Geth a Swarm v Debianu<br \/>\nServer DBMS Firebird 3.0 dynamicky alokuje a uvol\u0148uje syst\u00e9movou pam\u011b\u0165, co\u017e m\u016f\u017ee v\u00e9st k jej\u00ed fragmentaci. Nap\u0159\u00edklad po jednor\u00e1zov\u00e9m odpojen\u00ed velk\u00e9ho po\u010dtu u\u017eivatel\u016f od superserveru mohou vznikat chyby p\u0159i nov\u00fdch p\u0159ipojen\u00edch.<br \/>\nStahov\u00e1n\u00ed distribuce Go<br \/>\nNastaven\u00ed prom\u011bnn\u00fdch prost\u0159ed\u00ed<br \/>\nKontrola verze Go<br \/>\nInstalace Geth a Swarm<br \/>\nVytv\u00e1\u0159\u00edme soukrom\u00fd blockchain<br \/>\n\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0444\u0430\u0439\u043b genesis.json<br \/>\nVytv\u00e1\u0159\u00edme pracovn\u00ed adres\u00e1\u0159<br \/>\nVytv\u00e1\u0159\u00edme \u00fa\u010det<br \/>\nSpou\u0161t\u00edme inicializaci uzlu<br \/>\nParametry spu\u0161t\u011bn\u00ed uzlu<br \/>\nP\u0159ipojujeme se k na\u0161emu uzlu<br \/>\nSpr\u00e1va t\u011b\u017eby a kontrola z\u016fstatku<br \/>\nUkon\u010den\u00ed konzole Geth<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">Lekce 3. P\u0159\u00edprava pracovn\u00edho prost\u0159ed\u00ed na Raspberry Pi 3<\/b>P\u0159\u00edprava Raspberry Pi 3 k pr\u00e1ci<br \/>\nInstalace Rasberian<br \/>\nInstalace aktualizac\u00ed<br \/>\nPovolen\u00ed p\u0159\u00edstupu SSH<br \/>\nNastaven\u00ed statick\u00e9 IP adresy<br \/>\nInstalace nezbytn\u00fdch utilit<br \/>\nInstalace Go<br \/>\nStahov\u00e1n\u00ed distribuce Go<br \/>\nNastaven\u00ed prom\u011bnn\u00fdch prost\u0159ed\u00ed<br \/>\nKontrola verze Go<br \/>\nInstalace Geth a Swarm<br \/>\nVytv\u00e1\u0159\u00edme soukrom\u00fd blockchain<br \/>\nKontrola \u00fa\u010dtu a z\u016fstatku<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">Lekce 4. \u00da\u010dty a p\u0159evod prost\u0159edk\u016f mezi \u00fa\u010dty<\/b>Zobrazit a p\u0159idat \u00fa\u010dty<br \/>\nZobrazit seznam \u00fa\u010dt\u016f<br \/>\nP\u0159id\u00e1n\u00ed \u00fa\u010dtu<br \/>\nParametry p\u0159\u00edkazu geth account<br \/>\nHesla \u00fa\u010dt\u016f<br \/>\nKryptom\u011bna v Ethereum<br \/>\nM\u011bnov\u00e9 jednotky Ethereum<br \/>\nStanoven\u00ed aktu\u00e1ln\u00edho z\u016fstatku na\u0161ich \u00fa\u010dt\u016f<br \/>\nP\u0159evod prost\u0159edk\u016f z jednoho \u00fa\u010dtu na jin\u00fd<br \/>\nMetoda eth.sendTransaction<br \/>\nZobrazit stav transakce<br \/>\nP\u0159\u00edjemce transakce<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">Lekce 5. Publikace prvn\u00ed smlouvy<\/b>Chytr\u00e9 smlouvy v Ethereum<br \/>\nProv\u00e1d\u011bn\u00ed chytr\u00e9 smlouvy<br \/>\nVirtu\u00e1ln\u00ed stroj Ethereum<br \/>\nIntegrovan\u00e9 v\u00fdvojov\u00e9 prost\u0159ed\u00ed Remix Solidity IDE<br \/>\nSpu\u0161t\u011bn\u00ed kompilace<br \/>\nVyvol\u00e1n\u00ed funkc\u00ed smlouvy<br \/>\nPublikace smlouvy v soukrom\u00e9 s\u00edti<br \/>\nZ\u00edsk\u00e1n\u00ed definice ABI a bin\u00e1rn\u00edho k\u00f3du smlouvy<br \/>\nPublikace smlouvy<br \/>\nKontrola stavu publikace smlouvy<br \/>\nVyvol\u00e1n\u00ed funkc\u00ed smlouvy<br \/>\nSkl\u00e1dac\u00ed kompil\u00e1tor solc<br \/>\nInstalace solc na Ubuntu<br \/>\nInstalace solc na Debian<br \/>\nKompilace smlouvy HelloSol<br \/>\nPublikace smlouvy<br \/>\nInstalace solc na Rasberian<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">\u0423\u0440\u043e\u043a 6. \u0421\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0438 Node.js<\/b>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Node.js<br \/>\nInstalace na Ubuntu<br \/>\nInstalace na Debian<br \/>\nInstalace a spu\u0161t\u011bn\u00ed Ganache-cli<br \/>\nInstalace Web3<br \/>\nInstalace solc<br \/>\nInstalace Node.js na Rasberian<br \/>\nSkript pro z\u00edsk\u00e1n\u00ed seznamu \u00fa\u010dt\u016f v konzole<br \/>\nSkript pro publikaci chytr\u00e9 smlouvy<br \/>\nSpu\u0161t\u011bn\u00ed a z\u00edsk\u00e1n\u00ed parametr\u016f<br \/>\nZ\u00edsk\u00e1n\u00ed parametr\u016f spu\u0161t\u011bn\u00ed<br \/>\nKompilace smlouvy<br \/>\nOdemknut\u00ed \u00fa\u010dtu<br \/>\nStahov\u00e1n\u00ed ABI a bin\u00e1rn\u00edho k\u00f3du smlouvy<br \/>\nOcen\u011bn\u00ed pot\u0159ebn\u00e9ho mno\u017estv\u00ed plynu<br \/>\nVytvo\u0159en\u00ed objektu a spu\u0161t\u011bn\u00ed publikace smlouvy<br \/>\nSpu\u0161t\u011bn\u00ed skriptu publikace smlouvy<br \/>\nVyvol\u00e1n\u00ed funkc\u00ed chytr\u00e9 smlouvy<br \/>\nJe mo\u017en\u00e9 aktualizovat publikovanou chytrou smlouvu<br \/>\nPr\u00e1ce s Web3 verze 1.0.x<br \/>\nZ\u00edsk\u00e1n\u00ed seznamu \u00fa\u010dt\u016f<br \/>\nPublikace smlouvy<br \/>\nVyvol\u00e1n\u00ed funkc\u00ed smlouvy<br \/>\nP\u0159evod prost\u0159edk\u016f z jednoho \u00fa\u010dtu na jin\u00fd<br \/>\nP\u0159evod prost\u0159edk\u016f na \u00fa\u010det smlouvy<br \/>\nAktualizace chytr\u00e9 smlouvy HelloSol<br \/>\nVytvo\u0159en\u00ed skriptu pro zobrazen\u00ed z\u016fstatku \u00fa\u010dtu<br \/>\n\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 getBalance \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 call_contract_get_promise.js<br \/>\nDopl\u0148ujeme \u00fa\u010det chytr\u00e9 smlouvy<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">Lekce 7. \u00davod do Truffle<\/b>Instalace Truffle<br \/>\nVytv\u00e1\u0159\u00edme projekt HelloSol<br \/>\nVytvo\u0159en\u00ed adres\u00e1\u0159e a soubor\u016f projektu<br \/>\nAdres\u00e1\u0159 contracts<br \/>\nKatalog migrations<br \/>\nKatalog test<br \/>\n\u0424\u0430\u0439\u043b truffle-config.js<br \/>\nKompilace smlouvy HelloSol<br \/>\nSpu\u0161t\u011bn\u00ed publikace smlouvy<br \/>\nVol\u00e1n\u00ed funkc\u00ed smlouvy HelloSol v pozv\u00e1nce Truffle<br \/>\n\u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 HelloSol \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 JavaScript \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Node.js<br \/>\nInstalace modulu truffle-contract<br \/>\nVol\u00e1n\u00ed funkc\u00ed smlouvy getValue a getString<br \/>\nVol\u00e1n\u00ed funkc\u00ed smlouvy setValue a setString<br \/>\n\u00daprava smlouvy a op\u011btovn\u00e9 zve\u0159ejn\u011bn\u00ed<br \/>\nPr\u00e1ce s Web3 verze 1.0.x<br \/>\nProv\u00e1d\u00edme zm\u011bny ve smart kontraktu HelloSol<br \/>\nSkripty pro vol\u00e1n\u00ed metod smlouvy<br \/>\nTestov\u00e1n\u00ed v Truffle<br \/>\nTest na Solidity<br \/>\nTest na JavaScript<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">Lekce 8. Datov\u00e9 typy Solidity<\/b>Smlouva pro studium datov\u00fdch typ\u016f<br \/>\nLogick\u00e9 datov\u00e9 typy<br \/>\nBezpodpisov\u00e1 cel\u00e1 \u010d\u00edsla a cel\u00e1 \u010d\u00edsla se znam\u00e9nkem<br \/>\n\u010c\u00edsla s pevnou desetinnou \u010d\u00e1rkou<br \/>\nAdresa<br \/>\nProm\u011bnn\u00e9 slo\u017een\u00fdch typ\u016f<br \/>\nPole pevn\u00e9 velikosti<br \/>\nDynamick\u00e1 pole<br \/>\nSeznam<br \/>\nStruktury<br \/>\nSlovn\u00edky mapping<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">Lekce 9. Migrace smluv do soukrom\u00e9 s\u00edt\u011b a do s\u00edt\u011b Rinkeby<\/b>Publikace smlouvy z Truffle do soukrom\u00e9 s\u00edt\u011b Geth<br \/>\nP\u0159\u00edprava uzlu soukrom\u00e9 s\u00edt\u011b<br \/>\nP\u0159\u00edprava smlouvy k provozu<br \/>\nKompilace a migrace smlouvy do s\u00edt\u011b Truffle<br \/>\nSpu\u0161t\u011bn\u00ed migrace do m\u00edstn\u00ed s\u00edt\u011b geth<br \/>\nZ\u00edsk\u00e1n\u00ed artefakt\u016f Truffle<br \/>\nPublikace smlouvy z Truffle v testovac\u00ed s\u00edti Rinkeby<br \/>\nP\u0159\u00edprava uzlu Geth k pr\u00e1ci s Rinkeby<br \/>\nSynchronizace uzlu<br \/>\nP\u0159id\u00e1n\u00ed \u00fa\u010dt\u016f<br \/>\nDopln\u011bn\u00ed \u00fa\u010dtu Rinkeby etherem<br \/>\nSpu\u0161t\u011bn\u00ed migrace smlouvy do s\u00edt\u011b Rinkeby<br \/>\nZobrazen\u00ed informac\u00ed o smlouv\u011b v s\u00edti Rinkeby<br \/>\nKonzole Truffle pro s\u00ed\u0165 Rinkeby<br \/>\nJednodu\u0161\u0161\u00ed zp\u016fsob vol\u00e1n\u00ed funkc\u00ed smlouvy<br \/>\n\u0412\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Node.js<br \/>\nP\u0159evod prost\u0159edk\u016f mezi \u00fa\u010dty v konzole Truffle pro Rinkeby<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">Lekce 10. Decentralizovan\u00e9 \u00falo\u017ei\u0161t\u011b dat Ethereum Swarm<\/b>Jak funguje Ethereum Swarm<br \/>\nInstalace a spu\u0161t\u011bn\u00ed Swarm<br \/>\nOperace se soubory a adres\u00e1\u0159i<br \/>\nNahr\u00e1n\u00ed souboru do Ethereum Swarm<br \/>\n\u010cten\u00ed souboru z Ethereum Swarm<br \/>\nZobrazen\u00ed manifestu nahran\u00e9ho souboru<br \/>\nNahr\u00e1n\u00ed adres\u00e1\u0159\u016f s podadres\u00e1\u0159i<br \/>\n\u010cten\u00ed souboru z nahran\u00e9ho adres\u00e1\u0159e<br \/>\nPou\u017eit\u00ed ve\u0159ejn\u00e9 br\u00e1ny Swarm<br \/>\n\u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a Swarm \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 Node.js<br \/>\nModul Perl Net::Ethereum::Swarm<br \/>\nInstalace modulu Net::Ethereum::Swarm<br \/>\nZ\u00e1pis a \u010dten\u00ed dat<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">Lekce 11. Framework Web3.py pro pr\u00e1ci s Ethereum v Pythonu<\/b>Instalace Web3.py<br \/>\nAktualizace a instalace pot\u0159ebn\u00fdch bal\u00ed\u010dk\u016f<br \/>\nInstalace modulu easysolc<br \/>\nPublikace smlouvy pomoc\u00ed Web3.py<br \/>\nKompilace smlouvy<br \/>\nP\u0159ipojen\u00ed k poskytovateli<br \/>\nProv\u00e1d\u011bn\u00ed publikace smlouvy<br \/>\nUlo\u017een\u00ed adresy smlouvy a abi do souboru<br \/>\nSpu\u0161t\u011bn\u00ed skriptu publikace smlouvy<br \/>\nVol\u00e1n\u00ed metod smlouvy<br \/>\n\u010cten\u00ed adresy a abi smlouvy ze souboru JSON<br \/>\nP\u0159ipojen\u00ed k poskytovateli<br \/>\nVytvo\u0159en\u00ed objektu smlouvy<br \/>\nVol\u00e1n\u00ed metod smlouvy<br \/>\nTruffle a Web3.py<br \/>\nShrnut\u00ed lekce<\/p>\n<p><b class=\"spoiler_title\">Lekce 12. Or\u00e1kula<\/b>M\u016f\u017ee smart kontrakt d\u016fv\u011b\u0159ovat \u00fadaj\u016fm z vn\u011bj\u0161\u00edho sv\u011bta<br \/>\nOr\u00e1kula jako informa\u010dn\u00ed zprost\u0159edkovatel\u00e9 blockchainu<br \/>\nDatov\u00fd zdroj<br \/>\nK\u00f3d pro zobrazen\u00ed dat ze zdroje<br \/>\nOracle pro zapisov\u00e1n\u00ed sm\u011bnn\u00e9ho kurzu do blockchainu<br \/>\nSmlouva USDRateOracle<br \/>\nAktualizace sm\u011bnn\u00e9ho kurzu ve smart kontraktu<br \/>\nPou\u017eit\u00ed poskytovatele Web Socket<br \/>\n\u010cek\u00e1n\u00ed na ud\u00e1lost RateUpdate<br \/>\nZpracov\u00e1n\u00ed ud\u00e1losti RateUpdate<br \/>\nIniciace aktualizace dat ve smart kontraktu<br \/>\nShrnut\u00ed lekce<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/467347\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0434\u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430\u0434 \u043a\u043d\u0438\u0433\u043e\u0439 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb, \u0438 \u0432\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0430 \u043a\u043d\u0438\u0433\u0430 \u0438\u0437\u0434\u0430\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u041b\u0438\u0442\u0440\u0435\u0441\u0435. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u043e\u044f \u043a\u043d\u0438\u0433\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 Solidity \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 DApp \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041e\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 12 \u0443\u0440\u043e\u043a\u043e\u0432 \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0438\u0445, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29275,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-39018","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043d\u0438\u0433\u0430 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:27:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kniha \u201eVytv\u00e1\u0159en\u00ed smart kontrakt\u016f Solidity pro blockchain Ethereum. Praktick\u00fd pr\u016fvodce\u201c | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043d\u0438\u0433\u0430 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb | ProHoster","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:27:25+00:00","article:modified_time":"2019-10-31T19:27:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39018","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 00:24:24","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:58:39","updated":"2026-01-24 00:24:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/39018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=39018"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/39018\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/29275"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=39018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=39018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=39018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}