La libro "Kreante Solidajn inteligentajn kontraktojn por la blokĉeno de Ethereum. Praktika gvidilo"

La libro "Kreante Solidajn inteligentajn kontraktojn por la blokĉeno de Ethereum. Praktika gvidilo"
Dum pli ol unu jaro mi laboras pri la libro "Kreante Solidajn Inteligentajn Kontraktojn por la Ethereum Blockchain. Praktika Gvidilo", kaj nun ĉi tiu laboro estas finita, kaj la libro eldonita kaj havebla en Litroj.

Mi esperas, ke mia libro helpos vin rapide komenci krei solidajn inteligentajn kontaktojn kaj distribuitajn DApps por la blokĉeno de Ethereum. Ĝi konsistas el 12 lecionoj kun praktikaj taskoj. Kompletinte ilin, la leganto povos krei siajn proprajn lokajn Ethereum-nodojn, publikigi inteligentajn kontraktojn kaj voki iliajn metodojn, interŝanĝi datumojn inter la reala mondo kaj inteligentaj kontraktoj uzante orakolojn, kaj labori kun la Rinkeby-prova sencimreto.

La libro estas adresita al ĉiuj, kiuj interesiĝas pri altnivelaj teknologioj en la kampo de blokĉeno kaj volas rapide akiri scion, kiuj permesos al ili okupiĝi pri interesa kaj promesplena laboro.

Malsupre vi trovos la enhavtabelon kaj la unuan ĉapitron de la libro (ankaŭ plu Litrezo fragmentoj de la libro haveblas). Mi esperas ricevi komentojn, komentojn kaj sugestojn. Ĉion ĉi mi provos konsideri, kiam mi preparos la venontan eldonon de la libro.

EnhavtabeloEnkondukoNia libro estas celita por tiuj, kiuj volas ne nur kompreni la principojn de la blokĉeno de Ethereum, sed ankaŭ akiri praktikajn kapablojn krei distribuitajn DApps en la programlingvo Solidity por ĉi tiu reto.

Pli bone estas ne nur legi ĉi tiun libron, sed labori kun ĝi, plenumante praktikajn taskojn priskribitajn en la lecionoj. Por labori, vi bezonos lokan komputilon, virtualan aŭ nuban servilon kun Debian aŭ Ubuntu OS instalita. Vi ankaŭ povas uzi Raspberry Pi por plenumi multajn taskojn.

Ĉe la unua leciono Ni rigardos la funkciajn principojn de la blokĉeno de Ethereum kaj bazan terminologion, kaj ankaŭ parolos pri kie ĉi tiu blokĉeno povas esti uzata.

Golo dua leciono — kreu privatan Ethereum-blokĉennodon por plua laboro ene de ĉi tiu kurso en Ubuntu kaj Debian-servilo. Ni rigardos la funkciojn de instalado de bazaj utilecoj, kiel geth, kiu certigas la funkciadon de nia blokĉena nodo, same kiel la svarman malcentralizitan datum-stokadon.

Tria leciono instruos vin kiel eksperimenti kun Ethereum sur malmultekosta mikrokomputilo Raspberry Pi. Vi instalos la Rasberian operaciumon (OS) sur la Raspberry Pi, la Geth-utilo, kiu funkciigas la blokĉenan nodon, kaj la demonon de malcentralizita datumstokado de Swarm.

Leciono kvar estas dediĉita al kontoj kaj kriptaj monunuoj en la reto Ethereum, same kiel manieroj translokigi financojn de unu konto al alia de la Geth-konzolo. Vi lernos kiel krei kontojn, komenci transakciojn pri transdono de fondaĵoj kaj akiri transakcian statuson kaj kvitancon.

En la kvina leciono Vi konatiĝos kun inteligentaj kontraktoj en la reto Ethereum kaj lernos pri ilia ekzekuto de la virtuala maŝino de Ethereum.

Vi kreos kaj publikigos vian unuan inteligentan kontrakton sur la privata reto Ethereum kaj lernos kiel nomi ĝiajn funkciojn. Por fari tion, vi uzos la Remix Solidity IDE. Vi ankaŭ lernos kiel instali kaj uzi la solc batch-kompililon.
Ni ankaŭ parolos pri la tiel nomata Aplika Binara Interfaco (ABI) kaj instruos vin kiel uzi ĝin.

Sesa leciono estas dediĉita al kreado de JavaScript-skriptoj kurantaj Node.js kaj farado de operacioj kun Solidity inteligentaj kontraktoj.

Vi instalos Node.js sur Ubuntu, Debian kaj Rasberian OS, skribos skriptojn por publikigi inteligentan kontrakton sur la loka reto Ethereum kaj vokos ĝiajn funkciojn.

Krome, vi lernos kiel transdoni financojn inter regulaj kontoj uzante skriptojn, kaj ankaŭ krediti ilin al inteligentaj kontraktokontoj.

En la sepa leciono Vi lernos kiel instali kaj uzi la kadron Truffle, populara inter la programistoj de inteligentaj kontraktoj de Solidity. Vi lernos kiel krei JavaScript-skriptojn, kiuj nomas kontraktajn funkciojn uzante la trufkontraktan modulon, kaj provos vian inteligentan kontrakton per Truffle.

Oka leciono dediĉita al Solidity-datumtipoj. Vi skribos inteligentajn kontraktojn, kiuj funkcias kun datumtipoj kiel subskribitaj kaj sensignaj entjeroj, subskribitaj nombroj, ĉenoj, adresoj, kompleksaj variabloj, tabeloj, nombradoj, strukturoj kaj vortaroj.

En la naŭa leciono Vi estos unu paŝo pli proksima al kreado de inteligentaj kontraktoj por la ĉefreto de Ethereum. Vi lernos kiel publikigi kontraktojn uzante Truffle en la privata reto Geth, same kiel en la Rinkeby-testreto. Sencimigi inteligentan kontrakton en la reto Rinkeby estas tre utila antaŭ ol publikigi ĝin en la ĉefa reto - preskaŭ ĉio estas reala tie, sed senpage.

Kiel parto de la leciono, vi kreos provan retan nodon de Rinkeby, financos ĝin per financoj kaj publikigos inteligentan kontrakton.

10-a Leciono dediĉita al Ethereum Swarm distribuita datumstokado. Uzante distribuitan stokadon, vi ŝparas pri stokado de grandaj kvantoj da datumoj sur la blokĉeno de Ethereum.

En ĉi tiu lernilo, vi kreos lokan Swarm-stokadon, skribos kaj legos operaciojn pri dosieroj kaj dosierujoj. Poste, vi lernos kiel labori kun la publika Swarm-enirejo, skribi skriptojn por aliri Swarm de Node.js, kaj ankaŭ uzi la Perl Net::Ethereum::Swarm-modulon.

Leciona celo 11 — majstro laborante kun Solidity inteligentaj kontraktoj uzante la popularan Python programlingvo kaj la Web3.py kadro. Vi instalos la kadron, skribos skriptojn por kompili kaj publikigi la inteligentan kontrakton, kaj nomos ĝiajn funkciojn. En ĉi tiu kazo, Web3.py estos uzata kaj memstare kaj kune kun la integra evolumedio de Truffle.

Ĉe leciono 12 vi lernos transdoni datumojn inter inteligentaj kontraktoj kaj la reala mondo uzante orakolojn. Ĉi tio estos utila por vi ricevi datumojn de retejoj, IoT-aparatoj, diversaj aparatoj kaj sensiloj, kaj sendi datumojn de inteligentaj kontraktoj al ĉi tiuj aparatoj. En la praktika parto de la leciono, vi kreos orakolon kaj inteligentan kontrakton, kiu ricevas la nunan kurzon inter USD kaj rubloj de la retejo de la Centra Banko de Rusa Federacio.

Leciono 1. Mallonge pri la blokĉeno kaj la reto EthereumLa celo de la leciono: konatiĝi kun la funkciaj principoj de la blokĉeno de Ethereum, ĝiaj kampoj de apliko kaj baza terminologio.
Praktikaj taskoj: ne inkluzivita en ĉi tiu leciono.

Apenaŭ ekzistas programisto hodiaŭ, kiu nenion aŭdis pri blokĉena teknologio (Blockchain), kriptaj moneroj (Cryptocurrency aŭ Crypto Currency), Bitcoin (Bitcoin), komenca monpropono (ICO, Komenca monpropono), inteligentaj kontraktoj (Smart Contract), same kiel aliaj konceptoj kaj terminoj rilataj al blokĉeno.

Blokoĉena teknologio malfermas novajn merkatojn kaj kreas laborpostenojn por programistoj. Se vi komprenas ĉiujn komplikaĵojn de kriptaj moneroj kaj inteligentaj kontraktoteknologioj, tiam vi ne havu problemojn por apliki ĉi tiun scion en la praktiko.

Oni devas diri, ke estas multe da spekulado ĉirkaŭ kriptaj moneroj kaj blokĉenoj. Ni flankenlasos diskutojn pri ŝanĝoj en kriptaj kurzoj, la kreado de piramidoj, la komplikaĵoj de kripta monero leĝaro, ktp. En nia trejna kurso ni koncentriĝos ĉefe pri la teknikaj aspektoj de la aplikado de inteligentaj kontraktoj de la blokĉeno de Ethereum (Ethereum, Ether) kaj la disvolviĝo de tiel nomataj malcentralizitaj aplikoj (Distribuita Apliko, DApp).

Kio estas blokĉeno

Blockchain (Block Chain) estas ĉeno de datumblokoj ligitaj unu al la alia en certa maniero. Komence de la ĉeno estas la unua bloko, kiu nomiĝas primara bloko (genezbloko) aŭ genezbloko. Ĝi estas sekvata de la dua, poste la tria kaj tiel plu.

Ĉiuj ĉi tiuj datumblokoj estas aŭtomate duobligitaj sur multaj nodoj de la blokĉena reto. Ĉi tio certigas malcentralizitan stokadon de blokĉenaj datumoj.
Vi povas pensi pri blokĉena sistemo kiel granda nombro da nodoj (fizikaj aŭ virtualaj serviloj) konektitaj en reto kaj reproduktantaj ĉiujn ŝanĝojn en la ĉeno de datumblokoj. Ĉi tio estas kiel giganta plur-servila komputilo, kaj la nodoj de tia komputilo (serviloj) povas esti disigitaj tra la tuta mondo. Kaj vi ankaŭ povas aldoni vian komputilon al la blokĉena reto.

Distribuita datumbazo

Blokoĉeno povas esti opiniita kiel distribuita datumbazo, kiu estas reproduktita tra ĉiuj nodoj de la blokĉena reto. En teorio, la blokĉeno estos funkcianta tiel longe kiel almenaŭ unu nodo funkcias, stokante ĉiujn blokojn de la blokĉeno.

Distribuita Datuma Registro

Blockchain povas esti opiniita kiel distribuita ĉeflibro de datumoj kaj operacioj (transakcioj). Alia nomo por tia registro estas ĉeflibro.

Datenoj povas esti aldonitaj al distribuita ĉeflibro, sed ĝi ne povas esti ŝanĝita aŭ forigita. Ĉi tiu neebleco estas atingita, precipe, per la uzo de kriptografiaj algoritmoj, specialaj algoritmoj por aldoni blokojn al la ĉeno kaj malcentralizita datumstokado.

Aldonante blokojn kaj plenumante operaciojn (transakcioj), privataj kaj publikaj ŝlosiloj estas uzataj. Ili limigas blokĉenajn uzantojn nur donante al ili aliron al siaj propraj blokoj de datumoj.

Transakcioj

Blockchain stokas informojn pri operacioj (transakcioj) en blokoj. Samtempe, malnovaj, jam finitaj transakcioj ne povas esti renversitaj aŭ ŝanĝitaj. Novaj transakcioj estas stokitaj en novaj, aldonitaj blokoj.

Tiamaniere, la tuta transakcia historio povas esti registrita senŝanĝa sur la blokĉeno. Sekve, blokĉeno povas esti uzata, ekzemple, por sekure stoki bankajn transakciojn, kopirajtajn informojn, historion de ŝanĝoj en posedantoj, ktp.

La blokĉeno de Ethereum enhavas tiel nomatajn sistemajn ŝtatojn. Dum transakcioj estas efektivigitaj, la stato ŝanĝiĝas de la komenca stato al la nuna stato. Transakcioj estas registritaj en blokoj.

Publikaj kaj privataj blokĉenoj

Oni devas rimarki ĉi tie, ke ĉio dirita estas vera nur por la tiel nomataj publikaj blokĉenaj retoj, kiuj ne povas esti kontrolitaj de iu ajn individua aŭ jura ento, registara agentejo aŭ registaro.
Tiel nomataj privataj blokĉenaj retoj estas sub la plena kontrolo de siaj kreintoj, kaj io ajn eblas tie, ekzemple kompleta anstataŭigo de ĉiuj blokoj de la ĉeno.

Praktikaj aplikoj de blokĉeno

Por kio povas esti utila blokĉeno?

Mallonge, blokĉeno permesas vin sekure efektivigi transakciojn (transakcioj) inter homoj aŭ kompanioj, kiuj ne fidas unu la alian. Datumoj registritaj en la blokĉeno (transakcioj, personaj datumoj, dokumentoj, atestiloj, kontraktoj, fakturoj, ktp.) ne povas esti falsitaj aŭ anstataŭigitaj post registrado. Tial, surbaze de la blokĉeno, eblas krei, ekzemple, fidindajn distribuitajn registrojn de diversaj specoj de dokumentoj.

Kompreneble, vi scias, ke kriptaj moneroj estas kreitaj surbaze de blokĉenoj, dezajnitaj por anstataŭigi ordinaran papermonon. Papera mono ankaŭ nomiĝas fiat (de Fiat Money).
Blockchain certigas la stokadon kaj neŝanĝeblecon de transakcioj registritaj en blokoj, tial ĝi povas esti uzata por krei kriptajn monersistemojn. Ĝi enhavas la tutan historion de la translokigo de kriptaj financoj inter malsamaj uzantoj (kontoj), kaj ajna operacio povas esti spurita.

Kvankam transakcioj ene de kriptaj monsistemoj povas esti anonimaj, retiri kriptan moneron kaj interŝanĝi ĝin kontraŭ fiatmono kutime rezultigas malkaŝi la identecon de la posedanto de la kripta monero-valoraĵo.

Tiel nomataj inteligentaj kontraktoj, kiuj estas programaro funkcianta en la reto Ethereum, permesas vin aŭtomatigi la procezon por fini transakciojn kaj kontroli ilian efektivigon. Ĉi tio estas precipe efika se pago por la transakcio estas farita per la Ether-kripta monero.

La Ethereum-blokĉeno kaj Ethereum inteligentaj kontraktoj skribitaj en la programlingvo Solidity povas esti uzataj, ekzemple, en la sekvaj areoj:

  • alternativo al notarigo de dokumentoj;
  • konservado de registro de nemoveblaĵoj kaj informoj pri transakcioj kun nemoveblaĵoj;
  • konservado de kopirajtaj informoj pri intelekta proprieto (libroj, bildoj, muzikaj verkoj, ktp.);
  • kreado de sendependaj balotsistemoj;
  • financo kaj bankado;
  • loĝistiko je internacia skalo, spurante la movadon de varoj;
  • stokado de personaj datumoj kiel analoga al sistemo de identkarto;
  • sekuraj transakcioj en la komerca kampo;
  • konservante la rezultojn de medicinaj ekzamenoj, same kiel la historion de preskribitaj proceduroj

Problemoj kun blokĉeno

Sed, kompreneble, ne ĉio estas tiel simpla kiel ĝi povus ŝajni!

Estas problemoj pri kontrolado de datumoj antaŭ ol aldoni ĝin al la blokĉeno (ekzemple, ĉu ili estas falsaj?), problemoj kun la sekureco de sistemo kaj aplikaĵa programaro uzata por labori kun la blokĉeno, problemoj kun la ebleco uzi sociajn inĝenierajn metodojn por ŝteli aliron. al monujoj de kriptaj moneroj, ktp .P.

Denove, se ni ne parolas pri publika blokĉeno, kies nodoj estas disigitaj tra la tuta mondo, sed pri privata blokĉeno apartenanta al persono aŭ organizo, tiam la nivelo de fido ĉi tie ne estos pli alta ol la nivelo de fido. en ĉi tiu persono aŭ ĉi tiu organizo.

Oni devas ankaŭ konsideri, ke la datumoj registritaj en la blokĉeno fariĝas disponeblaj por ĉiuj. Tiusence, blokĉeno (precipe publika) ne taŭgas por konservi konfidencajn informojn. Tamen, la fakto, ke informoj pri la blokĉeno ne povas esti ŝanĝita, povas helpi malhelpi aŭ esplori diversajn specojn de fraŭdaj agadoj.

Ethereum malcentralizitaj aplikoj estos oportunaj se vi pagos por ilia uzo kun kripta monero. Ju pli da homoj posedas kriptan moneron aŭ pretas aĉeti ĝin, des pli popularaj DApps kaj inteligentaj kontraktoj fariĝos.

Oftaj problemoj kun blokĉeno, kiuj malhelpas ĝian praktikan aplikon, inkluzivas la limigitan rapidecon, per kiu oni povas aldoni novajn blokojn kaj la relative altan koston de transakcioj. Sed teknologio en ĉi tiu areo aktive evoluas, kaj estas espero, ke teknikaj problemoj estos solvitaj kun la tempo.

Alia problemo estas, ke inteligentaj kontraktoj sur la blokĉeno de Ethereum funkcias en izolita medio de virtualaj maŝinoj, kaj ne havas aliron al realaj datumoj. Aparte, la inteligenta kontraktoprogramo ne povas mem legi datumojn de retejoj aŭ ajnaj fizikaj aparatoj (sensiloj, kontaktoj, ktp.), kaj ankaŭ ne povas eligi datumojn al iuj eksteraj aparatoj. Ni diskutos ĉi tiun problemon kaj manierojn solvi ĝin en leciono dediĉita al la tiel nomataj Orakoloj - informaj perantoj de inteligentaj kontraktoj.

Estas ankaŭ leĝaj limigoj. En iuj landoj, ekzemple, estas malpermesite uzi kriptan moneron kiel rimedon de pago, sed vi povas posedi ĝin kiel speco de cifereca valoraĵo, kiel valorpaperoj. Tiaj aktivoj povas esti aĉetitaj kaj venditaj sur la interŝanĝo. Ĉiukaze, kreante projekton, kiu funkcias kun kriptaj moneroj, vi devas konatiĝi kun la leĝaro de la lando, sub kies jurisdikcio via projekto falas.

Kiel blokĉeno estas formita

Kiel ni jam diris, blokĉeno estas simpla ĉeno de datumblokoj. Unue, la unua bloko de ĉi tiu ĉeno estas formita, tiam la dua estas aldonita al ĝi, kaj tiel plu. Transakciaj datumoj estas supozitaj esti stokitaj en blokoj, kaj estas aldonitaj al la plej lastatempa bloko.

En Fig. 1.1 ni montris la plej simplan version de sekvenco de blokoj, kie la unua bloko rilatas al la sekva.

La libro "Kreante Solidajn inteligentajn kontraktojn por la blokĉeno de Ethereum. Praktika gvidilo"
Rizo. 1.1. Simpla sekvenco de blokoj

Kun ĉi tiu opcio, tamen, estas tre facile mistrakti la enhavon de iu ajn bloko en la ĉeno, ĉar la blokoj ne enhavas ajnan informon por protekti kontraŭ ŝanĝoj. Konsiderante, ke la blokĉeno estas celita esti uzata de homoj kaj kompanioj, inter kiuj ne ekzistas fido, ni povas konkludi, ke ĉi tiu metodo de stokado de datumoj ne taŭgas por la blokĉeno.

Ni komencu protekti blokojn kontraŭ falsado. En la unua etapo, ni provos protekti ĉiun blokon per ĉeksumo (Fig. 1.2).

La libro "Kreante Solidajn inteligentajn kontraktojn por la blokĉeno de Ethereum. Praktika gvidilo"
Rizo. 1.2. Aldonante protekton por ĉi tiuj blokoj kun ĉeksumo

Nun atakanto ne povas simple ŝanĝi la blokon, ĉar ĝi enhavas la kontrolsumon de la blokaj datumoj. Kontroli la ĉeksumon montros, ke la datumoj estis ŝanĝitaj.

Por kalkuli la kontrolsumon, vi povas uzi unu el la haĉaj funkcioj kiel MD-5, SHA-1, SHA-256, ktp. Hash-funkcioj komputas valoron (ekzemple tekstoĉeno de konstanta longo) farante nemaligeblajn operaciojn sur bloko da datenoj. La operacioj dependas de la speco de hashfunkcio.

Eĉ se la enhavo de la datumbloko iomete ŝanĝiĝas, la hash-valoro ankaŭ ŝanĝiĝos. Analizante la hash-funkcian valoron, estas maleble rekonstrui la datumblokon por kiu ĝi estis kalkulita.

Ĉu tia protekto estos sufiĉa? Bedaŭrinde ne.

En ĉi tiu skemo, la checksum (hash-funkcio) nur protektas individuajn blokojn, sed ne la tutan blokĉenon. Konante la algoritmon por kalkuli la hashfunkcion, atakanto povas facile anstataŭigi la enhavon de bloko. Ankaŭ nenio malhelpos lin forigi blokojn de la ĉeno aŭ aldoni novajn.

Por protekti la tutan ĉenon kiel tuton, vi ankaŭ povas stoki en ĉiu bloko, kune kun la datumoj, hash de la datumoj de la antaŭa bloko (Fig. 1.3).

La libro "Kreante Solidajn inteligentajn kontraktojn por la blokĉeno de Ethereum. Praktika gvidilo"
Rizo. 1.3. Aldonu la haŝon de la antaŭa bloko al la datumbloko

En ĉi tiu skemo, por ŝanĝi blokon, vi devas rekalkuli la hashfunkciojn de ĉiuj postaj blokoj. Ŝajnus, kio estas la problemo?

En realaj blokĉenoj, artefaritaj malfacilaĵoj estas aldone kreitaj por aldoni novajn blokojn - algoritmoj kiuj postulas multajn komputikajn rimedojn estas uzataj. Konsiderante, ke por fari ŝanĝojn al bloko, vi devas rekalkuli ne nur ĉi tiun blokon, sed ĉiujn postajn, ĉi tio estos ege malfacile fari.

Ni memoru ankaŭ, ke blokĉenaj datumoj estas stokitaj (duobligataj) sur multaj retaj nodoj, t.e. Malcentralizita stokado estas uzata. Kaj ĉi tio multe pli malfacilas falsi blokon, ĉar ŝanĝoj devas esti faritaj al ĉiuj retaj nodoj.

Ĉar blokoj stokas informojn pri la antaŭa bloko, eblas kontroli la enhavon de ĉiuj blokoj en la ĉeno.

Ethereum blokĉeno

La blokĉeno de Ethereum estas platformo sur kiu distribuitaj DApps povas esti kreitaj. Male al aliaj platformoj, Ethereum permesas la uzon de tiel nomataj inteligentaj kontraktoj (inteligentaj kontraktoj), skribitaj en la programlingvo Solidity.

Ĉi tiu platformo estis kreita en 2013 de Vitalik Buterin, fondinto de Bitcoin Magazine, kaj lanĉita en 2015. Ĉio, kion ni studos aŭ faros en nia trejna kurso, rilatas specife al la Ethereum-blokoĉeno kaj la inteligentaj kontraktoj de Solidity.

Minado aŭ kiel blokoj estas kreitaj

Minado estas sufiĉe kompleksa kaj rimedo-intensa procezo aldoni novajn blokojn al la blokĉeno, kaj tute ne "kriptvaluta minado". Minado certigas la funkciecon de la blokĉeno, ĉar estas ĉi tiu procezo, kiu respondecas pri aldoni transakciojn al la blokĉeno de Ethereum.

Homoj kaj organizoj implikitaj en aldonado de blokoj nomiĝas ministoj.
La programaro funkcianta sur la ministnodoj provas trovi hashing-parametron nomitan Nonce por la lasta bloko por ricevi specifan hash-valoron specifitan de la reto. La Ethash hashing-algoritmo uzata en Ethereum permesas akiri la Nonce-valoron nur per sinsekva serĉo.

Se la ministo nodo trovas la ĝustan Nonce-valoron, tiam ĉi tio estas la tiel nomata pruvo de laboro (PoW, Proof-of-work). En ĉi tiu kazo, se bloko estas aldonita al la reto Ethereum, la ministo ricevas certan rekompencon en la reto-valuto - Ether. Al la horo de skribado, la rekompenco estas 5 Etero, sed ĉi tio reduktiĝos kun la tempo.

Tiel, Ethereum-ministoj certigas la funkciadon de la reto aldonante blokojn, kaj ricevas kriptan moneron por ĉi tio. Estas multaj informoj en la interreto pri ministoj kaj minado, sed ni koncentriĝos pri kreado de Solidaj kontraktoj kaj DApps en la reto Ethereum.

Leciona resumo

En la unua leciono, vi konatiĝis kun la blokĉeno kaj lernis, ke ĝi estas speciale kunmetita sekvenco de blokoj. La enhavo de antaŭe registritaj blokoj ne povas esti ŝanĝita, ĉar tio postulus rekalkuli ĉiujn postajn blokojn sur multaj retaj nodoj, kio postulas multajn rimedojn kaj tempon.

Blockchain povas esti uzata por stoki la rezultojn de transakcioj. Ĝia ĉefa celo estas organizi sekurajn transakciojn inter partioj (personoj kaj organizoj) inter kiuj ne ekzistas fido. Vi lernis en kiuj specifaj areoj de komerco kaj en kiuj areoj la Ethereum-blokoĉeno kaj Solidity inteligentaj kontraktoj povas esti uzataj. Ĉi tio estas la banka sektoro, registrado de proprietrajtoj, dokumentoj, ktp.

Vi ankaŭ lernis, ke diversaj problemoj povas aperi kiam vi uzas blokĉenon. Ĉi tiuj estas problemoj pri kontrolado de informoj aldonitaj al la blokĉeno, la rapideco de la blokĉeno, la kosto de transakcioj, la problemo de interŝanĝo de datumoj inter inteligentaj kontraktoj kaj la reala mondo, kaj ankaŭ eblaj atakoj de atakantoj celantaj ŝteli kriptajn monerojn de uzantkontoj. .

Ni ankaŭ mallonge parolis pri minado kiel la procezo aldoni novajn blokojn al la blokĉeno. Minado estas necesa por kompletigi transakciojn. Tiuj implikitaj en minado certigas la funkciadon de la blokĉeno kaj ricevas rekompencon en kripta monero por ĉi tio.

Leciono 2. Preparado de labormedio en Ubuntu kaj Debian OSElektante operaciumon
Instalante la necesajn utilecojn
Instalante Geth kaj Swarm sur Ubuntu
Instalante Geth kaj Swarm sur Debian
Prepara preparado
Elŝutante la Go-distribuon
Agordi mediajn variablojn
Kontrolante la Go-version
Instalante Geth kaj Swarm
Kreante privatan blokĉenon
Preparante la genesis.json-dosieron
Kreu dosierujon por laboro
Krei konton
Komencante la nodan inicialigon
Nodaj Lanĉaj Opcioj
Konekti al nia nodo
Minadministrado kaj ekvilibrokontrolo
Fermu la Get-konzolon
Leciona resumo

Leciono 3. Preparante la labormedion sur Raspberry Pi 3Preparante la Raspberry Pi 3 por laboro
Instalante Rasberian
Instalante ĝisdatigojn
Ebligante SSH-Aliro
Agordi Senmovan IP-adreson
Instalante la necesajn utilecojn
Instalante Go
Elŝutante la Go-distribuon
Agordi mediajn variablojn
Kontrolante la Go-version
Instalante Geth kaj Swarm
Kreante privatan blokĉenon
Kontrolante vian konton kaj ekvilibron
Leciona resumo

Leciono 4. Kontoj kaj translokado de financoj inter kontojVidu kaj aldonu kontojn
Vidu liston de kontoj
Aldonante konton
opcioj de komandaj kontoj geth
Kontaj pasvortoj
Kripta monero en Ethereum
Ethereum-Monunuoj
Ni determinas la nunan bilancon de niaj kontoj
Transloki financojn de unu konto al alia
eth.sendTransakcia Metodo
Rigardu transakcian staton
Transakcia kvitanco
Leciona resumo

Leciono 5. Eldonante vian unuan kontraktonInteligentaj kontraktoj en Ethereum
Inteligenta Kontrakta Ekzekuto
Virtuala Maŝino de Ethereum
Integrita evolumedio Remix Solidity IDE
Kuranta kompilo
Vokado de Kontraktaj Funkcioj
Eldoni kontrakton en privata reto
Akirante la ABI-difinon kaj la kontraktan binaran kodon
Publikigo de la kontrakto
Kontrolante la kontrakton publikigas transakcian staton
Vokado de Kontraktaj Funkcioj
Bata kompililo solc
Instalante solc sur Ubuntu
Instalante solc sur Debian
Kompilante la kontrakton HelloSol
Publikigo de la kontrakto
Instalante solc sur Rasberian
Leciona resumo

Leciono 6. Inteligentaj kontraktoj kaj Node.jsInstalante Node.js
Instalado sur Ubuntu
Instalado sur Debian
Instalado kaj funkciado de Ganache-cli
Web3-instalado
Instalante solc
Instalante Node.js sur Rasberian
Skripto por ricevi liston de kontoj en la konzolo
Skripto por eldoni inteligentan kontrakton
Lanĉi kaj akiri parametrojn
Akiro de lanĉaj opcioj
Kontrakta Kompilo
Malblokado de via konto
Ŝarĝante ABI kaj kontrakta binara kodo
Taksante la postulatan kvanton da gaso
Kreu objekton kaj komencu eldoni kontrakton
Kurante la skripton de eldonado de kontrakto
Voki inteligentajn kontraktofunkciojn
Ĉu eblas ĝisdatigi publikigitan inteligentan kontrakton?
Laborante kun Web3 versio 1.0.x
Akirante liston de kontoj
Publikigo de la kontrakto
Vokado de Kontraktaj Funkcioj
Transloki financojn de unu konto al alia
Transdonu financojn al kontrakta konto
Ĝisdatigi la inteligentan kontrakton HelloSol
Kreu skripton por vidi vian kontan saldon
Aldonu vokon al la funkcio getBalance al la skripto call_contract_get_promise.js
Ni plenigas la inteligentan kontraktokonton
Leciona resumo

Leciono 7. Enkonduko al TrufoInstalado de Truffle
Kreu HelloSol-projekton
Kreante la Projektan Dosierujon kaj Dosieroj
Dosierujo de kontraktoj
Katalogaj migradoj
Testo de dosierujo
truffle-config.js dosiero
Kompilante la kontrakton HelloSol
Komencu publikigi kontrakton
Voki HelloSol-Kontrakt-Funkciojn en Trufa Prompto
Voki HelloSol-kontraktajn funkciojn de JavaScript-skripto kuranta Node.js
Instalado de la trufo-kontrakta modulo
Voki la kontraktofunkciojn getValue kaj getString
Voki kontraktajn funkciojn setValue kaj setString
Kontraktmodifo kaj republikigo
Laborante kun Web3 versio 1.0.x
Farante ŝanĝojn al la inteligenta kontrakto HelloSol
Skriptoj por voki kontraktajn metodojn
Testado en Trufo
Testo de solideco
JavaScript-testo
Leciona resumo

Leciono 8. Solideco-DatumtipojKontrakto por lernado de datumtipoj
Buleaj datumtipoj
Sensignitaj entjeroj kaj signitaj entjeroj
Fikspunktaj nombroj
Adreso
Variabloj de kompleksaj tipoj
Fiksaj Grandecaj Tabeloj
Dinamikaj tabeloj
Translokigo
Strukturoj
Mapado de vortaroj
Leciona resumo

Leciono 9. Migrado de kontraktoj al la privata reto kaj al la reto RinkebyEldonante kontrakton de Truffle al la privata Geta reto
Preparante privatan retan nodon
Preparante kontrakton por laboro
Kompilante kaj migrante kontrakton al la Truffle-reto
Komencante lokan retan migradon geth
Akirante trufajn artefaktojn
Eldonante kontrakton de Truffle al la Rinkeby-testreto
Preparante Geth-nodon por labori kun Rinkeby
Noda sinkronigo
Aldonante kontojn
Plenigi vian Rinkeby-konton per etero
Lanĉante kontraktmigradon al la Rinkeby-reto
Vidante kontraktinformojn sur la Rinkeby-reto
Truffle Console por Rinkeby Network
Pli facila maniero voki kontraktajn funkciojn
Voki kontraktajn metodojn uzante Node.js
Transdonu financojn inter kontoj en la Truffle-konzolo por Rinkby
Leciona resumo

Leciono 10. Ethereum Swarm Malcentralizita Datuma StokadoKiel funkcias Ethereum Swarm?
Instalado kaj lanĉo de Swarm
Operacioj kun dosieroj kaj dosierujoj
Alŝuto de Dosiero al Ethereum Swarm
Legante dosieron de Ethereum Swarm
Rigardu la manifeston de alŝutita dosiero
Ŝargante dosierujojn kun subdosierujoj
Legante dosieron el elŝutita dosierujo
Uzante publikan Swarm-enirejon
Aliro al Swarm de Node.js-skriptoj
Perl Net::Ethereum::Swarm-modulo
Instalante la Reton::Ethereum::Swarm-modulon
Skribado kaj legado de datumoj
Leciona resumo

Leciono 11. Web3.py kadro por labori kun Ethereum en PythonInstalante Web3.py
Ĝisdatigi kaj instali necesajn pakaĵojn
Instalado de la modulo easysolc
Eldoni kontrakton uzante Web3.py
Kontrakta Kompilo
Konektante al provizanto
Efektivigu kontraktopublikigon
Konservado de la kontrakto-adreso kaj abi en dosiero
Kurante la skripton de eldonado de kontrakto
Voki Kontraktajn Metodojn
Legante la adreson kaj abi de kontrakto el JSON-dosiero
Konektante al provizanto
Kreante Kontraktan Objekton
Voki Kontraktajn Metodojn
Trufo kaj Web3.py
Leciona resumo

Leciono 12. OrakolojĈu inteligenta kontrakto povas fidi datumojn de la ekstera mondo?
Orakoloj kiel blokĉenaj informaj perantoj
Datuma fonto
Kodo por reprezenti datumojn de fonto
Orakolo por registri la kurzon en la blokĉeno
USDRateOracle Kontrakto
Ĝisdatigi la kurzon en inteligenta kontrakto
Uzante Retan Socket-Provizanton
Atendante eventon de RateUpdate
Pritrakti la eventon RateUpdate
Komencante datuman ĝisdatigon en inteligenta kontrakto
Leciona resumo

fonto: www.habr.com

Aldoni komenton