It boek "Creating Solidity smart contracts for the Ethereum blockchain. Praktyske gids"

It boek "Creating Solidity smart contracts for the Ethereum blockchain. Praktyske gids"
Foar mear as in jier haw ik wurke oan it boek "Creating Solidity Smart Contracts for the Ethereum Blockchain. Praktyske gids", en no is dit wurk foltôge, en it boek publisearre en beskikber yn Liters.

Ik hoopje dat myn boek jo sil helpe gau te begjinnen mei it meitsjen fan Solidity smart kontakten en ferspraat DApps foar de Ethereum blockchain. It bestiet út 12 lessen mei praktyske taken. Nei't se har foltôge hawwe, sil de lêzer har eigen lokale Ethereum-knooppunten kinne oanmeitsje, tûke kontrakten publisearje en har metoaden neame, gegevens útwikselje tusken de echte wrâld en tûke kontrakten mei orakels, en wurkje mei it Rinkeby-test-debugnetwurk.

It boek is rjochte oan elkenien dy't ynteressearre is yn avansearre technologyen op it mêd fan blockchains en wol gau kennis krije dy't har ynteressant en kânsryk wurk dwaan kin.

Hjirûnder fine jo de ynhâldsopjefte en it earste haadstik fan it boek (ek op Litrese Fragminten fan it boek binne beskikber). Ik hoopje feedback, opmerkings en suggestjes te ûntfangen. Ik sil besykje dit alles yn 'e rekken te hâlden by it tarieden fan de folgjende edysje fan it boek.

YnhâldsopjefteYnliedingUs boek is bedoeld foar dyjingen dy't net allinich de prinsipes fan 'e Ethereum blockchain wolle begripe, mar ek praktyske feardigens te krijen by it meitsjen fan ferspraat DApps yn' e Solidity-programmearringstaal foar dit netwurk.

It is better net allinich dit boek te lêzen, mar om dermei te wurkjen, praktyske taken út te fieren beskreaun yn 'e lessen. Om te wurkjen sille jo in lokale kompjûter, firtuele of wolkeserver nedich hawwe mei Debian of Ubuntu OS ynstalleare. Jo kinne ek Raspberry Pi brûke om in protte taken út te fieren.

By de earste les Wy sille sjen nei de bestjoeringsprinsipes fan 'e Ethereum blockchain en basisterminology, en ek prate oer wêr't dizze blockchain kin wurde brûkt.

Goal twadde les - meitsje in privee Ethereum blockchain knooppunt foar fierder wurk binnen dizze kursus op in Ubuntu en Debian tsjinner. Wy sille sjen nei de funksjes fan it ynstallearjen fan basis nutsbedriuwen, lykas geth, dy't de wurking fan ús blockchain-knooppunt garandearret, en ek de swarm desintralisearre data-opslach-daemon.

Tredde les sil jo leare hoe't jo eksperimintearje mei Ethereum op in goedkeape Raspberry Pi-mikrokomputer. Jo sille it Rasberian bestjoeringssysteem (OS) ynstalleare op 'e Raspberry Pi, it Geth-hulpprogramma dat de blockchain-knooppunt oandriuwt, en de Swarm desintralisearre gegevensopslach-daemon.

Les fjouwer is wijd oan akkounts en cryptocurrency-ienheden op it Ethereum-netwurk, en ek manieren om fûnsen fan it iene akkount nei it oare oer te setten fan 'e Geth-konsole. Jo sille leare hoe't jo akkounts kinne oanmeitsje, transaksjes foar oerdracht fan fûnsen begjinne, en transaksjestatus en ûntfangst krije.

Yn de fyfde les Jo sille yn 'e kunde komme mei tûke kontrakten op it Ethereum-netwurk en leare oer har útfiering troch de Ethereum firtuele masine.

Jo sille jo earste tûke kontrakt oanmeitsje en publisearje op it Ethereum privee netwurk en learje hoe't jo har funksjes neame. Om dit te dwaan, sille jo de Remix Solidity IDE brûke. Jo sille ek leare hoe't jo de solc-batch-kompiler ynstallearje en brûke.
Wy sille ek prate oer de saneamde Application Binary Interface (ABI) en jo leare hoe't jo it brûke.

Seisde les is wijd oan it meitsjen fan JavaScript-skripts dy't Node.js útfiere en operaasjes útfiere mei Solidity smart kontrakten.

Jo sille Node.js ynstalleare op Ubuntu, Debian en Rasberian OS, skriuw skripts om in tûk kontrakt te publisearjen op it lokale netwurk fan Ethereum en har funksjes neame.

Derneist sille jo leare hoe't jo fûnsen kinne oerdrage tusken reguliere akkounts mei skripts, en ek kredytje se op tûke kontraktakkounts.

Yn de sânde les Jo sille leare hoe't jo it Truffle-ramt ynstallearje en brûke, populêr ûnder ûntwikkelders fan tûke kontrakten fan Solidity. Jo sille leare hoe't jo JavaScript-skripts meitsje dy't kontraktfunksjes neame mei de truffel-kontraktmodule, en jo tûke kontrakt testje mei Truffle.

Achtste les wijd oan Solidity-gegevenstypen. Jo sille tûke kontrakten skriuwe dy't wurkje mei gegevenstypen lykas ûndertekene en net-ûndertekene heule getallen, ûndertekene nûmers, stringen, adressen, komplekse fariabelen, arrays, enumeraasjes, struktueren en wurdboeken.

Yn de njoggende les Jo sille ien stap tichterby wêze by it meitsjen fan tûke kontrakten foar it Ethereum mainnet. Jo sille leare hoe't jo kontrakten kinne publisearje mei Truffle op it privee netwurk fan Geth, lykas ek op it Rinkeby testnet. Debuggen fan in tûk kontrakt op it Rinkeby-netwurk is heul nuttich foardat jo it op it haadnetwurk publisearje - hast alles is dêr echt, mar fergees.

As ûnderdiel fan 'e les sille jo in Rinkeby-testnetwurkknooppunt oanmeitsje, it finansiere mei fûnsen en in tûk kontrakt publisearje.

Les 10 wijd oan Ethereum Swarm ferspraat gegevens opslach. Troch ferdielde opslach te brûken, besparje jo op it bewarjen fan grutte hoemannichten gegevens op 'e Ethereum blockchain.

Yn dit tutorial sille jo in lokale Swarm-opslach oanmeitsje, operaasjes skriuwe en lêze op bestannen en mappen mei bestannen. Folgjende sille jo leare hoe't jo wurkje mei de iepenbiere Swarm-poarte, skripts skriuwe om tagong te krijen ta Swarm fan Node.js, en ek it Perl Net :: Ethereum :: Swarm-module te brûken.

Lesdoel 11 - master wurkje mei Solidity smart kontrakten mei de populêre Python programmeartaal en it Web3.py ramt. Jo sille it ramt ynstallearje, skripts skriuwe om it tûke kontrakt te kompilearjen en te publisearjen, en de funksjes oproppe. Yn dit gefal, Web3.py sil brûkt wurde sawol op har eigen en yn gearhing mei de Truffle yntegrearre ûntwikkeling omjouwing.

Op les 12 jo sille leare om gegevens oer te dragen tusken tûke kontrakten en de echte wrâld mei help fan orakels. Dit sil nuttich wêze foar jo om gegevens te ûntfangen fan websiden, IoT-apparaten, ferskate apparaten en sensoren, en gegevens fan tûke kontrakten nei dizze apparaten te stjoeren. Yn it praktyske diel fan 'e les meitsje jo in orakel en in tûk kontrakt dat de aktuele wikselkoers tusken USD en roebel ûntfangt fan' e webside fan 'e Sintrale Bank fan' e Russyske Federaasje.

Les 1. Koart oer de blockchain en it Ethereum netwurkIt doel fan de les: yn 'e kunde komme mei de bestjoeringsprinsipes fan' e Ethereum blockchain, har gebieten fan tapassing en basisterminology.
Praktyske taken: net opnommen yn dizze les.

D'r is hjoed amper in software-ûntwikkelder dy't neat heard hat oer blockchain-technology (Blockchain), Krypto-faluta (Cryptocurrency of Krypto-faluta), Bitcoin (Bitcoin), initial muntoanbod (ICO, Initial coin offering), smart kontrakten (Smart Contract), lykas oare begripen en termen yn ferbân mei blockchain.

Blockchain technology iepenet nije merken en skept banen foar programmeurs. As jo ​​​​alle intricacies fan cryptocurrency-technologyen en smart kontrakttechnologyen begripe, dan moatte jo gjin problemen hawwe mei it tapassen fan dizze kennis yn 'e praktyk.

It moat sein wurde dat d'r in protte spekulaasje is oer Krypto-munten en blockchains. Wy sille diskusjes oan 'e kant litte oer feroaringen yn cryptocurrency tariven, de skepping fan piramiden, de intricacies fan cryptocurrency wetjouwing, ensfh. Yn ús oplieding sille wy benammen rjochtsje op 'e technyske aspekten fan' e tapassing fan smart kontrakten fan 'e Ethereum blockchain (Ethereum, Ether) en de ûntwikkeling fan saneamde desintralisearre applikaasjes (Distributed Application, DApp).

Wat is blockchain

Blockchain (Block Chain) is in keatling fan gegevensblokken dy't op in bepaalde manier mei elkoar ferbûn binne. Oan it begjin fan 'e keten is d'r it earste blok, dat it primêre blok (genesisblok) of genesisblok neamd wurdt. It wurdt folge troch de twadde, dan de tredde ensafuorthinne.

Al dizze gegevensblokken wurde automatysk duplikearre op ferskate knooppunten fan it blockchain-netwurk. Dit soarget foar desintralisearre opslach fan blockchain-gegevens.
Jo kinne tinke oan in blockchain-systeem as in grut oantal knopen (fysike of firtuele servers) ferbûn yn in netwurk en replikearje alle feroaringen yn 'e keten fan gegevensblokken. Dit is as in gigantyske multi-server kompjûter, en de knopen fan sa'n kompjûter (servers) kinne ferspraat wurde oer de hiele wrâld. En jo kinne jo kompjûter ek tafoegje oan it blockchain-netwurk.

Ferspraat databank

In blockchain kin wurde tocht as in ferspraat database dy't wurdt replikearre oer alle knooppunten fan it blockchain netwurk. Yn teory sil de blockchain operasjoneel wêze salang't op syn minst ien knooppunt wurket, en alle blokken fan 'e blockchain opslaan.

Ferspraat Data Registry

Blockchain kin wurde tocht as in ferspraat ledger fan gegevens en operaasjes (transaksjes). In oare namme foar sa'n register is in grutboek.

Gegevens kinne wurde tafoege oan in ferdield ledger, mar it kin net feroare of wiske. Dizze ûnmooglikheid wurdt berikt, benammen troch it brûken fan kryptografyske algoritmen, spesjale algoritmen foar it tafoegjen fan blokken oan 'e keten en desintralisearre gegevensopslach.

By it tafoegjen fan blokken en it útfieren fan operaasjes (transaksjes), wurde privee en iepenbiere kaaien brûkt. Se beheine blockchain-brûkers troch se allinich tagong te jaan ta har eigen blokken fan gegevens.

Transaksjes

Blockchain bewarret ynformaasje oer operaasjes (transaksjes) yn blokken. Tagelyk kinne âlde, al foltôge transaksjes net weromdraaid of feroare wurde. Nije transaksjes wurde opslein yn nije, tafoege blokken.

Op dizze manier kin de heule transaksjeskiednis ûnferoare wurde opnommen op 'e blockchain. Dêrom kin blockchain brûkt wurde om bygelyks banktransaksjes, copyrightynformaasje, skiednis fan feroaringen yn eigendomseigners feilich op te slaan, ensfh.

De Ethereum blockchain befettet saneamde systeem steaten. As transaksjes wurde útfierd, feroaret de steat fan 'e earste steat nei de hjoeddeistige steat. Transaksjes wurde opnommen yn blokken.

Iepenbiere en partikuliere blockchains

Dêrby moat opmurken wurde dat alles sein is wier allinnich foar de saneamde iepenbiere blockchain netwurken, dat kin net wurde kontrolearre troch in yndividu of juridyske entiteit, oerheidsynstânsje of oerheid.
Saneamde privee blockchain netwurken binne ûnder de folsleine kontrôle fan harren makkers, en alles is mooglik dêr, Bygelyks, in folsleine ferfanging fan alle blokken fan de keten.

Praktyske tapassingen fan blockchain

Wat kin blockchain nuttich wêze foar?

Koartsein, blockchain kinne jo feilich útfiere transaksjes (transaksjes) tusken minsken of bedriuwen dy't net fertrouwe inoar. Gegevens opnommen yn 'e blockchain (transaksjes, persoanlike gegevens, dokuminten, sertifikaten, kontrakten, faktueren, ensfh.) kinne net ferfalske of ferfongen wurde nei opname. Dêrom, basearre op de blockchain, is it mooglik om te meitsjen, bygelyks, fertroude ferspraat registers fan ferskate soarten fan dokuminten.

Fansels witte jo dat cryptocurrency-systemen wurde makke op basis fan blockchains, ûntworpen om gewoan papierjild te ferfangen. Papierjild wurdt ek wol fiat neamd (fan Fiat Money).
Blockchain soarget foar de opslach en ûnferoarlikens fan transaksjes opnommen yn blokken, wêrtroch it kin wurde brûkt om cryptocurrency-systemen te meitsjen. It befettet de hiele skiednis fan 'e oerdracht fan Krypto-fûnsen tusken ferskate brûkers (akkounts), en elke operaasje kin wurde folge.

Hoewol transaksjes binnen cryptocurrency-systemen anonym kinne wêze, it weromlûken fan cryptocurrency en it wikseljen fan it foar fiatjild resultearret meast yn it iepenbierjen fan de identiteit fan de eigner fan 'e cryptocurrency-aktiva.

Saneamde tûke kontrakten, dy't software binne dy't rinne op it Ethereum-netwurk, kinne jo it proses automatisearje fan it konkludearjen fan transaksjes en it kontrolearjen fan har ymplemintaasje. Dit is foaral effektyf as betelling foar de transaksje wurdt útfierd mei help fan de Ether cryptocurrency.

De Ethereum blockchain en Ethereum smart kontrakten skreaun yn 'e programmeartaal Solidity kinne brûkt wurde, bygelyks yn' e folgjende gebieten:

  • in alternatyf foar notarisaasje fan dokuminten;
  • opslach fan in register fan ûnreplik guod objekten en ynformaasje oer transaksjes mei ûnreplik guod objekten;
  • opslach fan copyright ynformaasje oer yntellektueel eigendom (boeken, bylden, muzykwurk, ensfh.);
  • skepping fan ûnôfhinklike stimsystemen;
  • finânsjes en bankieren;
  • logistyk op ynternasjonale skaal, folgjen fan de beweging fan guod;
  • opslach fan persoanlike gegevens as analoog oan in identiteitskaartsysteem;
  • feilige transaksjes op kommersjeel fjild;
  • it opslaan fan de resultaten fan medyske ûndersiken, lykas ek de skiednis fan foarskreaune prosedueres

Problemen mei blockchain

Mar, fansels, net alles is sa ienfâldich as it liket!

D'r binne problemen mei it ferifiearjen fan gegevens foar it tafoegjen fan it oan 'e blockchain (binne se bygelyks falsk?), problemen mei de feiligens fan systeem- en tapassingssoftware dy't brûkt wurdt om te wurkjen mei de blockchain, problemen mei de mooglikheid om sosjale yngenieurmetoaden te brûken om tagong te stellen oan cryptocurrency wallets, ensfh .P.

Nochris, as wy it net hawwe oer in iepenbiere blockchain, wêrfan de knooppunten oer de hiele wrâld ferspraat binne, mar oer in privee blockchain dy't ta in persoan of organisaasje heart, dan sil it nivo fan fertrouwen hjir net heger wêze as it nivo fan fertrouwen yn dizze persoan of dizze organisaasje.

It moat ek rekken hâlden wurde dat de gegevens opnommen yn 'e blockchain foar elkenien beskikber wurde. Yn dizze sin is blockchain (benammen iepenbier) net geskikt foar it bewarjen fan fertroulike ynformaasje. It feit dat ynformaasje oer de blockchain lykwols net feroare wurde kin, kin helpe om ferskate soarten frauduleuze aktiviteiten te foarkommen of te ûndersiikjen.

Ethereum desintralisearre applikaasjes sille handich wêze as jo betelje foar har gebrûk mei cryptocurrency. Hoe mear minsken dy't cryptocurrency hawwe of ree binne om it te keapjen, hoe populêrder DApps en tûke kontrakten wurde.

Algemiene problemen mei blockchain dy't har praktyske tapassing hinderje, binne de beheinde snelheid wêrop nije blokken tafoege wurde kinne en de relatyf hege kosten fan transaksjes. Mar technology yn dit gebiet is aktyf ûntwikkeljen, en der binne hope dat technyske problemen wurde oplost oer de tiid.

In oar probleem is dat tûke kontrakten op 'e Ethereum blockchain operearje yn in isolearre omjouwing fan firtuele masines, en hawwe gjin tagong ta echte wrâldgegevens. Benammen it programma foar tûk kontrakt kin net sels gegevens lêze fan siden of alle fysike apparaten (sensors, kontakten, ensfh.), En kin ek gjin gegevens útfiere nei eksterne apparaten. Wy sille beprate dit probleem en manieren om it op te lossen yn in les wijd oan de saneamde Oracles - ynformaasje intermediaries fan smart kontrakten.

Der binne ek wetlike beheinings. Yn guon lannen is it bygelyks ferbean om cryptocurrency te brûken as betelmiddel, mar jo kinne it hawwe as in soarte fan digitale asset, lykas weardepapieren. Sokke aktiva kinne wurde kocht en ferkocht op 'e útwikseling. Yn alle gefallen, by it meitsjen fan in projekt dat wurket mei cryptocurrencies, moatte jo fertroud meitsje mei de wetjouwing fan it lân ûnder waans jurisdiksje jo projekt falt.

Hoe in blockchain keatling wurdt foarme

Lykas wy al sein hawwe, is blockchain in ienfâldige ketting fan gegevensblokken. Earst wurdt it earste blok fan dizze keatling foarme, dan wurdt it twadde tafoege, ensafuorthinne. Transaksjegegevens wurde oannommen dat se wurde opslein yn blokken, en wurde tafoege oan it meast resinte blok.

Yn Fig. 1.1 wy lieten de ienfâldichste ferzje fan in folchoarder fan blokken, dêr't de earste blok ferwiist nei de folgjende.

It boek "Creating Solidity smart contracts for the Ethereum blockchain. Praktyske gids"
Rys. 1.1. Ienfâldige folchoarder fan blokken

Mei dizze opsje is it lykwols heul maklik om te manipulearjen mei de ynhâld fan elke blok yn 'e keten, om't de blokken gjin ynformaasje befetsje om te beskermjen tsjin feroaringen. Yn betinken nommen dat de blockchain bedoeld is om te brûken troch minsken en bedriuwen tusken wa't der gjin fertrouwen is, kinne wy ​​konkludearje dat dizze metoade foar it bewarjen fan gegevens net geskikt is foar de blockchain.

Litte wy begjinne te beskermjen blokken tsjin ferfalsking. Op it earste poadium sille wy besykje elk blok te beskermjen mei in kontrôlesum (fig. 1.2).

It boek "Creating Solidity smart contracts for the Ethereum blockchain. Praktyske gids"
Rys. 1.2. Beskerming tafoegje foar dizze blokken mei in kontrôlesum

No kin in oanfaller it blok net gewoan feroarje, om't it de kontrôlesum fan 'e blokgegevens befettet. Kontrolearje de kontrôlesum sil sjen litte dat de gegevens binne feroare.

Om de kontrôlesum te berekkenjen kinne jo ien fan 'e hashingfunksjes brûke lykas MD-5, SHA-1, SHA-256, ensfh. Hash-funksjes berekkenje in wearde (bygelyks in tekststring fan konstante lingte) troch ûnomkearbere operaasjes út te fieren op in gegevensblok. De operaasjes binne ôfhinklik fan it type hashfunksje.

Sels as de ynhâld fan it gegevensblok in bytsje feroaret, sil de hashwearde ek feroarje. Troch it analysearjen fan 'e hashfunksjewearde is it ûnmooglik om it gegevensblok te rekonstruearjen wêrfoar it is berekkene.

Sil sa'n beskerming genôch wêze? Spitigernôch Nee.

Yn dit skema beskermet de kontrôlesum (hash-funksje) allinich yndividuele blokken, mar net de heule blockchain. Troch it algoritme te kennen foar it berekkenjen fan de hashfunksje, kin in oanfaller de ynhâld fan in blok maklik ferfange. Ek sil neat him foarkomme om blokken út 'e keatling te ferwiderjen of nije ta te foegjen.

Om de hiele keten as gehiel te beskermjen, kinne jo ek yn elke blok, tegearre mei de gegevens, in hash fan 'e gegevens fan 'e foarige blok opslaan (fig. 1.3).

It boek "Creating Solidity smart contracts for the Ethereum blockchain. Praktyske gids"
Rys. 1.3. Foegje de hash fan it foarige blok ta oan it gegevensblok

Yn dit skema, om in blok te feroarjen, moatte jo de hashfunksjes fan alle folgjende blokken opnij berekkenje. It soe lykje, wat is it probleem?

Yn echte blokken wurde ek keunstmjittige swierrichheden makke foar it tafoegjen fan nije blokken - algoritmen dy't in protte kompjûterboarnen fereaskje wurde brûkt. Yn betinken nommen dat om wizigingen oan in blok te meitsjen, jo net allinich dit iene blok moatte berekkenje, mar alle folgjende, sil dit ekstreem lestich wêze om te dwaan.

Lit ús ek betinke dat blockchain-gegevens wurde opslein (duplicated) op tal fan netwurkknooppunten, d.w.s. Desintralisearre opslach wurdt brûkt. En dit makket it folle dreger om in blok fake, omdat feroarings moatte wurde makke oan alle netwurk knopen.

Sûnt blokken bewarje ynformaasje oer it foarige blok, is it mooglik om te kontrolearjen de ynhâld fan alle blokken yn 'e keatling.

Ethereum Blockchain

De Ethereum blockchain is in platfoarm wêrop ferspraat DApps kinne wurde makke. Oars as oare platfoarms, lit Ethereum it brûken fan saneamde tûke kontrakten (tûke kontrakten), skreaun yn 'e programmeartaal Solidity.

Dit platfoarm is makke yn 2013 troch Vitalik Buterin, oprjochter fan Bitcoin Magazine, en lansearre yn 2015. Alles wat wy sille studearje of dwaan yn ús opliedingskursus is spesifyk relatearre oan de Ethereum blockchain en Solidity smart kontrakten.

Mining of hoe blokken wurde makke

Mining is in frij kompleks en boarne-yntinsyf proses fan it tafoegjen fan nije blokken oan 'e blockchain-ketting, en hielendal net "cryptocurrency-mynjen." Mining soarget foar de funksjonaliteit fan 'e blockchain, om't it is dit proses dat ferantwurdlik is foar it tafoegjen fan transaksjes oan 'e Ethereum blockchain.

Minsken en organisaasjes dy't belutsen binne by it tafoegjen fan blokken wurde miners neamd.
De software dy't rint op 'e minerknooppunten besiket in hashingparameter te finen neamd Nonce foar it lêste blok om in spesifike hashwearde te krijen dy't troch it netwurk oanjûn is. It Ethash-hash-algoritme brûkt yn Ethereum lit jo de Nonce-wearde allinich krije fia opfolgjende sykopdracht.

As it minerknooppunt de juste Nonce-wearde fynt, dan is dit it saneamde bewiis fan wurk (PoW, Proof-of-work). Yn dit gefal, as in blok tafoege wurdt oan it Ethereum-netwurk, krijt de miner in bepaalde beleanning yn 'e netwurkfaluta - Ether. Op it stuit fan skriuwen is de beleanning 5 Ether, mar sil wurde fermindere oer de tiid.

Sa soargje Ethereum-miners de wurking fan it netwurk troch blokken ta te foegjen, en krije jild foar krypto-faluta foar dit. Jo sille in soad ynformaasje fine op it ynternet oer miners en mining, mar wy sille rjochtsje op it meitsjen fan Solidity-kontrakten en DApps op it Ethereum-netwurk.

Les gearfetting

Yn 'e earste les hawwe jo kunde makke mei de blockchain en leard dat it in spesjaal gearstalde folchoarder fan blokken is. De ynhâld fan earder opnommen blokken kin net wizige wurde, om't dit it opnij berekkenjen fan alle folgjende blokken op in protte netwurkknooppunten nedich is, wat in protte boarnen en tiid fereasket.

Blockchain kin brûkt wurde om de resultaten fan transaksjes op te slaan. It haaddoel dêrfan is om feilige transaksjes te organisearjen tusken partijen (persoanen en organisaasjes) tusken wa't der gjin fertrouwen is. Jo learden yn hokker spesifike gebieten fan bedriuw en yn hokker gebieten de Ethereum blockchain en Solidity smart kontrakten kinne wurde brûkt. Dit is de banksektor, registraasje fan eigendomsrjochten, dokuminten, ensfh.

Jo hawwe ek leard dat ferskate problemen kinne ûntstean by it brûken fan blockchain. Dit binne problemen fan it ferifiearjen fan ynformaasje tafoege oan 'e blockchain, de snelheid fan' e blockchain, de kosten fan transaksjes, it probleem fan gegevensútwikseling tusken tûke kontrakten en de echte wrâld, lykas potinsjele oanfallen troch oanfallers dy't rjochte binne op it stellen fan cryptocurrency-fûnsen fan brûkersaccounts .

Wy hawwe ek koart praat oer mynbou as it proses fan it tafoegjen fan nije blokken oan 'e blockchain. Mining is nedich om transaksjes te foltôgjen. Dejingen dy't belutsen binne by mynbou soargje foar it funksjonearjen fan 'e blockchain en krije dêrfoar in beleanning yn cryptocurrency.

Les 2. It tarieden fan in wurkomjouwing yn Ubuntu en Debian OSSelektearje in bestjoeringssysteem
Ynstallaasje fan de nedige nutsbedriuwen
Geth en Swarm ynstalleare op Ubuntu
Geth en Swarm ynstalleare op Debian
Foarriedige tarieding
It downloaden fan de Go-distribúsje
Ynstelle omjouwingsfariabelen
Kontrolearje de Go ferzje
Ynstallaasje fan Geth en Swarm
It meitsjen fan in privee blockchain
De genesis.json triem tariede
Meitsje in map foar wurk
Meitsje in akkount
Begjinne de node inisjalisaasje
Node Launch Opsjes
Ferbine mei ús knooppunt
Mining behear en lykwicht kontrôle
De Geth-konsole ôfslute
Les gearfetting

Les 3. De wurkomjouwing op Raspberry Pi 3 tariedeDe Raspberry Pi 3 tariede foar wurk
Ynstallaasje fan Rasberian
Ynstallearje updates
SSH-tagong ynskeakelje
It ynstellen fan in statysk IP-adres
Ynstallaasje fan de nedige nutsbedriuwen
Ynstallaasje fan Go
It downloaden fan de Go-distribúsje
Ynstelle omjouwingsfariabelen
Kontrolearje de Go ferzje
Ynstallaasje fan Geth en Swarm
It meitsjen fan in privee blockchain
Kontrolearje jo akkount en lykwicht
Les gearfetting

Les 4. Accounts en oerbringen fan fûnsen tusken akkountsBesjoch en foegje akkounts ta
Besjoch in list mei akkounts
It tafoegjen fan in akkount
geth akkount kommando opsjes
Account wachtwurden
Krypto-munt yn Ethereum
Ethereum Currency Units
Wy bepale it aktuele saldo fan ús akkounts
Fûnsen oermeitsje fan it iene akkount nei it oare
eth.sendTransaksje metoade
Besjoch transaksjestatus
Transaksje ûntfangst
Les gearfetting

Les 5. Publishing dyn earste kontraktSmart kontrakten yn Ethereum
Slim kontraktútfiering
Ethereum Virtual Machine
Yntegrearre ûntwikkeling omjouwing Remix Solidity IDE
Running kompilaasje
Calling kontrakt funksjes
It publisearjen fan in kontrakt op in privee netwurk
It krijen fan de ABI-definysje en de kontraktbinêre koade
Publikaasje fan it kontrakt
Kontrolearje it kontrakt publisearje transaksje status
Calling kontrakt funksjes
Batch-kompiler solc
Ynstallearje solc op Ubuntu
Ynstallearje solc op Debian
It kompilearjen fan it HelloSol-kontrakt
Publikaasje fan it kontrakt
Ynstallearje solc op Rasberian
Les gearfetting

Les 6. Smart kontrakten en Node.jsIt ynstallearjen fan Node.js
Ynstallaasje op Ubuntu
Ynstallaasje op Debian
Ynstallearje en útfiere Ganache-cli
Web3 ynstallaasje
Ynstallaasje fan solc
Node.js ynstalleare op Rasberian
Skript om in list mei akkounts yn 'e konsole te krijen
Skript foar it publisearjen fan in tûk kontrakt
Launch en krije parameters
Startopsjes krije
Kontrakt kompilaasje
It blokkearjen fan jo akkount
Laad ABI en kontrakt binêre koade
Berekkenje de fereaske hoemannichte gas
Meitsje in objekt en begjin in kontrakt te publisearjen
It útfieren fan it kontrakt publisearjende skript
Oprop smart kontrakt funksjes
Is it mooglik om in publisearre smart kontrakt te aktualisearjen?
Wurkje mei Web3 ferzje 1.0.x
In list mei akkounts krije
Publikaasje fan it kontrakt
Calling kontrakt funksjes
Fûnsen oermeitsje fan it iene akkount nei it oare
Fûnsen oermeitsje nei kontraktkonto
It bywurkjen fan it HelloSol smart kontrakt
Meitsje in skript om jo akkountsaldo te besjen
Foegje in oprop ta oan de funksje getBalance oan it skript call_contract_get_promise.js
Wy folje it smart kontrakt account oan
Les gearfetting

Les 7. Yntroduksje ta truffelYnstallaasje fan Truffle
Meitsje in HelloSol-projekt
It oanmeitsjen fan de projektmap en bestannen
Kontrakten directory
Katalogusmigraasjes
Directory test
truffle-config.js triem
It kompilearjen fan it HelloSol-kontrakt
Begjin mei it publisearjen fan in kontrakt
HelloSol-kontraktfunksjes oproppe yn in truffelprompt
Calling HelloSol kontrakt funksjes út in JavaScript skript running Node.js
Ynstallaasje fan de truffel-kontrakt module
It oproppen fan de kontraktfunksjes getValue en getString
Oprop kontrakt funksjes setValue en setString
Kontrakt wiziging en re-publikaasje
Wurkje mei Web3 ferzje 1.0.x
Feroarings oanmeitsje oan it HelloSol smart kontrakt
Skripten foar oprop kontrakt metoaden
Testen yn Truffel
Solidity test
JavaScript test
Les gearfetting

les 8. Solidity Data TypesKontrakt foar it learen fan gegevenstypen
Booleaanske gegevenstypen
Net-ûndertekene heule getallen en ûndertekene heule getallen
Fêste punt nûmers
Adres
Fariabelen fan komplekse soarten
Arrays fan fêste grutte
Dynamyske arrays
Enumeration
Strukturen
Wurdboeken mapping
Les gearfetting

Les 9. Migraasje fan kontrakten nei it privee netwurk en nei it Rinkeby netwurkIt publisearjen fan in kontrakt fan Truffle nei it privee Geth netwurk
It tarieden fan in privee netwurk knooppunt
It tarieden fan in kontrakt foar wurk
It kompilearjen en migrearjen fan in kontrakt nei it Truffle-netwurk
Begjin fan lokale netwurkmigraasje geth
Truffle-artefakten krije
It publisearjen fan in kontrakt fan Truffel oan it Rinkeby testnet
In Geth-knooppunt tariede om mei Rinkeby te wurkjen
Node syngronisaasje
Accounts tafoegje
Oanfolling fan jo Rinkeby-akkount mei ether
Start kontraktmigraasje nei it Rinkeby-netwurk
Besjoch kontraktynformaasje oer it Rinkeby netwurk
Truffelkonsole foar Rinkeby Network
Makliker manier om kontraktfunksjes te neamen
Calling kontrakt metoaden mei help fan Node.js
Fûnsen oermeitsje tusken akkounts yn 'e Truffle-konsole foar Rinkby
Les gearfetting

Les 10. Ethereum Swarm Desintralisearre Data StorageHoe wurket Ethereum Swarm?
Ynstallearje en lansearje Swarm
Operaasje mei triemmen en mappen
It opladen fan in bestân nei Ethereum Swarm
It lêzen fan in bestân fan Ethereum Swarm
Besjoch it manifest fan in opladen bestân
It laden fan mappen mei submappen
It lêzen fan in triem út in ynladen map
Mei help fan in iepenbiere Swarm poarte
Tagong ta Swarm fan Node.js-skripts
Perl Net :: Ethereum :: Swarm module
Ynstallaasje fan it Net :: Ethereum :: Swarm module
It skriuwen en lêzen fan gegevens
Les gearfetting

Les 11. Web3.py ramt foar wurkjen mei Ethereum yn PythonYnstallaasje fan Web3.py
It bywurkjen en ynstallearjen fan needsaaklike pakketten
It ynstallearjen fan de easysolc module
It publisearjen fan in kontrakt mei Web3.py
Kontrakt kompilaasje
Ferbine mei in provider
Útfiere kontrakt publikaasje
It opslaan fan it kontraktadres en abi yn in bestân
It útfieren fan it kontrakt publisearjende skript
Calling Kontrakt Metoaden
It lêzen fan it adres en abi fan in kontrakt fan in JSON-bestân
Ferbine mei in provider
It meitsjen fan in kontraktobjekt
Calling Kontrakt Metoaden
Truffel en Web3.py
Les gearfetting

Les 12. OrakelsKin in tûk kontrakt gegevens fan 'e bûtenwrâld fertrouwe?
Oracles as blockchain ynformaasje intermediaries
Gegevensboarne
Koade om gegevens fan boarne te fertsjintwurdigjen
Oracle foar it opnimmen fan de wikselkoers yn 'e blockchain
USDRateOracle Kontrakt
It bywurkjen fan de wikselkoers yn in tûk kontrakt
Mei help fan in Web Socket Provider
Wachtsje op RateUpdate-evenemint
Behannelje fan it RateUpdate-evenemint
Inisjearjen fan in gegevensfernijing yn in tûk kontrakt
Les gearfetting

Boarne: www.habr.com

Add a comment