Кітап «Ethereum blockchain үшін Solidity смарт келісімшарттарын жасау. Практикалық нұсқаулық»

Кітап «Ethereum blockchain үшін Solidity смарт келісімшарттарын жасау. Практикалық нұсқаулық»
Мен бір жылдан астам уақыт бойы «Ethereum Blockchain үшін беріктік ақылды келісім-шарттарды жасау» кітабында жұмыс істеп жатырмын. Практикалық нұсқаулық», енді бұл жұмыс аяқталды және кітап жарияланған және литрмен қолжетімді.

Менің кітабым сізге Ethereum блокчейніне арналған Solidity смарт контактілерін және таратылған DApps құруды тез бастауға көмектеседі деп үміттенемін. Ол практикалық тапсырмалары бар 12 сабақтан тұрады. Оларды аяқтағаннан кейін оқырман өздерінің жергілікті Ethereum түйіндерін жасай алады, смарт-келісімшарттарды жариялай алады және олардың әдістерін шақыра алады, нақты әлем мен oracle көмегімен смарт келісімшарттар арасында деректер алмаса алады және Rinkeby сынақ отладтау желісімен жұмыс істей алады.

Кітап блокчейндер саласындағы озық технологияларға қызығушылық танытқан және қызықты әрі перспективалы жұмыс жасауға мүмкіндік беретін білімді тез алғысы келетіндердің барлығына арналған.

Төменде сіз кітаптың мазмұны мен бірінші тарауын таба аласыз (сонымен бірге Литр кітаптың үзінділері бар). Кері байланыс, ескертулер мен ұсыныстар аламын деп үміттенемін. Кітаптың келесі басылымын дайындағанда осының барлығын ескеруге тырысамын.

МазмұныКіріспеБіздің кітабымыз Ethereum блокчейнінің принциптерін түсініп қана қоймай, сонымен қатар осы желі үшін Solidity бағдарламалау тілінде таратылған DApps жасауда практикалық дағдыларды меңгергісі келетіндерге арналған.

Бұл кітапты жай оқып қана қоймай, сабақтарда сипатталған практикалық тапсырмаларды орындай отырып, онымен жұмыс істеу жақсы. Жұмыс істеу үшін сізге Debian немесе Ubuntu ОЖ орнатылған жергілікті компьютер, виртуалды немесе бұлттық сервер қажет. Сондай-ақ көптеген тапсырмаларды орындау үшін Raspberry Pi пайдалануға болады.

Бірінші сабақта Біз Ethereum блокчейнінің жұмыс істеу принциптерін және негізгі терминологияны қарастырамыз, сонымен қатар бұл блокчейнді қайда қолдануға болатыны туралы сөйлесеміз.

Максат екінші сабақ — Ubuntu және Debian серверінде осы курста әрі қарай жұмыс істеу үшін жеке Ethereum блокчейн түйінін жасаңыз. Біз блокчейн түйінінің жұмысын қамтамасыз ететін geth сияқты негізгі утилиталарды, сондай-ақ орталықтандырылмаған деректерді сақтау демоны тобын орнату мүмкіндіктерін қарастырамыз.

Үшінші сабақ қымбат емес Raspberry Pi микрокомпьютерінде Ethereum-пен тәжірибе жасауды үйретеді. Rasberian операциялық жүйесін (OS) Raspberry Pi жүйесіне, блокчейн түйінін қуаттандыратын Geth утилитасына және Swarm орталықтандырылмаған деректерді сақтау демонына орнатасыз.

Төртінші сабақ Ethereum желісіндегі шоттар мен криптовалюта бірліктеріне, сондай-ақ Geth консолінен бір шоттан екіншісіне ақша аудару тәсілдеріне арналған. Сіз шоттар жасауды, ақша аудару транзакцияларын бастауды және транзакция күйі мен түбіртегін алуды үйренесіз.

Бесінші сабақта Сіз Ethereum желісіндегі смарт келісімшарттармен танысасыз және олардың Ethereum виртуалды машинасымен орындалуы туралы білесіз.

Сіз Ethereum жеке желісінде алғашқы смарт келісім-шартыңызды жасап, жариялайсыз және оның функцияларын қалай шақыру керектігін үйренесіз. Мұны істеу үшін сіз Remix Solidity IDE пайдаланасыз. Сондай-ақ solc пакеттік компиляторын орнату және пайдалану жолын үйренесіз.
Біз сондай-ақ Application Binary Interface (ABI) деп аталатын туралы сөйлесеміз және оны қалай пайдалану керектігін үйретеміз.

Алтыншы сабақ Node.js жұмыс істейтін JavaScript сценарийлерін жасауға және Solidity смарт келісімшарттарымен операцияларды орындауға арналған.

Сіз Node.js бағдарламасын Ubuntu, Debian және Rasberian ОЖ орнатасыз, Ethereum жергілікті желісінде смарт келісімшартты жариялау үшін сценарийлер жазасыз және оның функцияларын шақырасыз.

Бұған қоса, сіз сценарийлерді пайдалана отырып, әдеттегі шоттар арасында ақша аударуды, сондай-ақ оларды смарт келісімшарт шоттарына несиелеуді үйренесіз.

Жетінші сабақта Сіз Solidity смарт келісімшарт әзірлеушілері арасында танымал Truffle құрылымын орнатуды және пайдалануды үйренесіз. Сіз трюфель-контракт модулін пайдаланып келісім-шарт функцияларын шақыратын JavaScript сценарийлерін жасауды үйренесіз және Truffle арқылы смарт келісімшартты сынайсыз.

Сегізінші сабақ Solidity деректер түрлеріне арналған. Қол қойылған және қол қойылмаған бүтін сандар, қол қойылған сандар, жолдар, мекенжайлар, күрделі айнымалылар, массивтер, тізімдер, құрылымдар және сөздіктер сияқты деректер түрлерімен жұмыс істейтін смарт келісімшарттарды жазасыз.

Тоғызыншы сабақта Ethereum негізгі желісі үшін смарт келісімшарттарды жасауға бір қадам жақындайсыз. Сіз Geth жеке желісінде, сондай-ақ Rinkeby testnet желісінде Truffle көмегімен келісімшарттарды жариялауды үйренесіз. Rinkeby желісіндегі смарт келісімшартты жөндеу оны негізгі желіде жарияламас бұрын өте пайдалы - онда барлығы дерлік нақты, бірақ тегін.

Сабақтың бөлігі ретінде сіз Rinkeby сынақ желісінің түйінін жасайсыз, оны қаражатпен қаржыландырасыз және смарт келісімшартты жариялайсыз.

сабақ 10 Ethereum Swarm таратылған деректерді сақтауға арналған. Бөлінген жадты пайдалану арқылы сіз Ethereum блокчейнінде деректердің үлкен көлемін сақтауға үнемдейсіз.

Бұл оқулықта сіз жергілікті Swarm сақтау орнын жасайсыз, файлдарда және файл каталогтарында жазу және оқу әрекеттерін жасайсыз. Әрі қарай, сіз жалпыға ортақ Swarm шлюзімен жұмыс істеуді, Node.js сайтынан Swarm-ға кіру үшін сценарийлерді жазуды, сондай-ақ Perl Net::Ethereum::Swarm модулін пайдалануды үйренесіз.

Сабақтың мақсаты 11 — танымал Python бағдарламалау тілі мен Web3.py негізін пайдаланып Solidity смарт келісімшарттарымен жұмыс істеуді меңгеру. Сіз құрылымды орнатасыз, смарт келісімшартты құрастыру және жариялау үшін сценарийлер жазасыз және оның функцияларын шақырасыз. Бұл жағдайда Web3.py жеке және Truffle біріктірілген әзірлеу ортасымен бірге пайдаланылады.

12 сабақта сіз oracle көмегімен смарт келісімшарттар мен нақты әлем арасында деректерді тасымалдауды үйренесіз. Бұл сізге веб-сайттардан, IoT құрылғыларынан, әртүрлі құрылғылар мен сенсорлардан деректерді алуға және смарт келісімшарттардан деректерді осы құрылғыларға жіберуге пайдалы болады. Сабақтың практикалық бөлігінде сіз Ресей Федерациясының Орталық банкінің веб-сайтынан АҚШ доллары мен рубль арасындағы ағымдағы айырбас бағамын алатын oracle және смарт келісімшарт жасайсыз.

1-сабақ. Блокчейн және Ethereum желісі туралы қысқашаСабақтың мақсаты: Ethereum блокчейнінің жұмыс істеу принциптерімен, оның қолдану аймақтарымен және негізгі терминологиясымен танысу.
Практикалық тапсырмалар: бұл сабақта қарастырылмаған.

Бүгінгі күні блокчейн технологиясы (Blockchain), криптовалюта (Криптовалюта немесе Crypto Currency), Bitcoin (Bitcoin), бастапқы монета ұсыну (ICO, Initial coin offering), смарт келісімшарттар (Smart Contract) туралы ештеңе естімеген бағдарламалық жасақтаманы әзірлеуші ​​жоқ. сондай-ақ блокчейнге қатысты басқа да ұғымдар мен терминдер.

Блокчейн технологиясы жаңа нарықтарды ашады және бағдарламашылар үшін жұмыс орындарын ашады. Егер сіз криптовалюта технологияларының және смарт-контракт технологияларының барлық қыр-сырын түсінсеңіз, онда бұл білімді тәжірибеде қолдануда қиындықтар болмауы керек.

Айта кету керек, криптовалюталар мен блокчейндер айналасында көптеген алыпсатарлық бар. Біз криптовалюта бағамдарының өзгеруі, пирамидаларды құру, криптовалюта заңнамасының күрделілігі және т.б. туралы талқылауларды қалдырамыз. Біздің оқу курсымызда біз негізінен Ethereum блокчейнінің (Ethereum, Ether) смарт келісім-шарттарын қолданудың техникалық аспектілеріне және орталықтандырылмаған қосымшалар (Distributed Application, DApp) деп аталатын әзірлеуге назар аударамыз.

Блокчейн дегеніміз не?

Блокчейн (Блок тізбегі) - белгілі бір жолмен бір-бірімен байланысқан деректер блоктарының тізбегі. Тізбектің басында бірінші блок (генезистік блок) немесе генезистік блок деп аталатын бірінші блок бар. Одан кейін екіншісі, содан кейін үшінші және т.б.

Барлық осы деректер блоктары блокчейн желісінің көптеген түйіндерінде автоматты түрде көшіріледі. Бұл блокчейн деректерін орталықтандырылмаған сақтауды қамтамасыз етеді.
Блокчейн жүйесін желіге қосылған және деректер блоктарының тізбегіндегі барлық өзгерістерді қайталайтын көптеген түйіндер (физикалық немесе виртуалды серверлер) ретінде қарастыруға болады. Бұл алып көпсерверлі компьютер сияқты және мұндай компьютердің (серверлердің) түйіндері дүние жүзінде шашыраңқы болуы мүмкін. Сіз де компьютеріңізді блокчейн желісіне қоса аласыз.

Бөлінген деректер қоры

Блокчейнді блокчейн желісінің барлық түйіндерінде қайталанатын таратылған дерекқор ретінде қарастыруға болады. Теориялық тұрғыдан блокчейн блокчейннің барлық блоктарын сақтай отырып, кем дегенде бір түйін жұмыс істеп тұрғанда жұмыс істейді.

Бөлінген деректер тізілімі

Блокчейнді деректер мен операциялардың (транзакциялардың) бөлінген кітапшасы ретінде қарастыруға болады. Мұндай тізілімнің тағы бір атауы бухгалтерлік кітап болып табылады.

Деректерді таратылған кітапқа қосуға болады, бірақ оны өзгерту немесе жою мүмкін емес. Бұл мүмкін еместікке, атап айтқанда, криптографиялық алгоритмдерді, тізбекке блоктарды қосудың арнайы алгоритмдерін және орталықтандырылмаған деректерді сақтауды қолдану арқылы қол жеткізіледі.

Блоктарды қосу және операцияларды (транзакцияларды) орындау кезінде жеке және ашық кілттер қолданылады. Олар блокчейн пайдаланушыларына тек өздерінің жеке деректер блоктарына рұқсат беру арқылы шектейді.

Мәмілелер

Блокчейн операциялар (транзакциялар) туралы ақпаратты блоктарда сақтайды. Бұл ретте ескі, әлдеқашан аяқталған транзакцияларды кері қайтаруға немесе өзгертуге болмайды. Жаңа транзакциялар жаңа, қосылған блоктарда сақталады.

Осылайша, бүкіл транзакция тарихын блокчейнге өзгеріссіз жазуға болады. Сондықтан блокчейнді, мысалы, банктік транзакцияларды, авторлық құқық туралы ақпаратты, меншік иелерінің өзгерістер тарихын және т.б. қауіпсіз сақтау үшін пайдалануға болады.

Ethereum блокчейнінде жүйе күйлері деп аталатындар бар. Транзакциялар орындалған сайын күй бастапқы күйден ағымдағы күйге өзгереді. Транзакциялар блоктарда жазылады.

Қоғамдық және жеке блокчейндер

Бұл жерде айта кететін жайт, айтылғандардың бәрі тек қоғамдық блокчейн деп аталатын желілерге қатысты, оны кез келген жеке немесе заңды тұлға, мемлекеттік орган немесе үкімет бақылай алмайды.
Жеке блокчейн желілері деп аталатындар оларды жасаушылардың толық бақылауында және ол жерде кез келген нәрсе мүмкін, мысалы, тізбектің барлық блоктарын толығымен ауыстыру.

Блокчейннің практикалық қолданбалары

Блокчейн не үшін пайдалы болуы мүмкін?

Қысқасы, блокчейн бір-біріне сенбейтін адамдар немесе компаниялар арасындағы транзакцияларды (транзакцияларды) қауіпсіз жүргізуге мүмкіндік береді. Блокчейнде жазылған деректерді (транзакциялар, жеке деректер, құжаттар, сертификаттар, келісім-шарттар, шот-фактуралар және т.б.) жазылғаннан кейін бұрмалауға немесе ауыстыруға болмайды. Сондықтан блокчейн негізінде, мысалы, әртүрлі құжаттардың сенімді таратылған тізілімдерін жасауға болады.

Әрине, кәдімгі қағаз ақшаны ауыстыруға арналған блокчейндер негізінде криптовалюта жүйелері құрылып жатқанын білесіз. Қағаз ақшаны фиат деп те атайды (Fiat Money-ден).
Блокчейн блоктарда жазылған транзакциялардың сақталуын және өзгермейтіндігін қамтамасыз етеді, сондықтан оны криптовалюта жүйелерін құру үшін пайдалануға болады. Ол әртүрлі пайдаланушылар (шоттар) арасында криптографиялық қаражатты аударудың бүкіл тарихын қамтиды және кез келген операцияны бақылауға болады.

Криптовалюта жүйелеріндегі транзакциялар анонимді болуы мүмкін болса да, криптовалюта алу және оны ақшаға айырбастау әдетте криптовалюта активінің иесінің жеке басын ашуға әкеледі.

Ethereum желісінде жұмыс істейтін бағдарламалық қамтамасыз ету болып табылатын смарт келісімшарттар транзакцияларды жасау және олардың орындалуын бақылау процесін автоматтандыруға мүмкіндік береді. Бұл транзакция үшін төлем Ether криптовалютасының көмегімен жүзеге асырылса, әсіресе тиімді.

Solidity бағдарламалау тілінде жазылған Ethereum blockchain және Ethereum смарт келісімшарттарын, мысалы, келесі салаларда пайдалануға болады:

  • құжаттарды нотариалды куәландыруға балама;
  • жылжымайтын мүлік объектілерінің тізілімін және жылжымайтын мүлік объектілерімен жасалған мәмілелер туралы ақпаратты сақтау;
  • зияткерлік меншік объектілеріне (кітаптар, суреттер, музыкалық шығармалар және т.б.) авторлық құқық туралы ақпаратты сақтау;
  • тәуелсіз дауыс беру жүйелерін құру;
  • қаржы және банк ісі;
  • халықаралық масштабтағы логистика, тауарлардың қозғалысын қадағалау;
  • жеке деректерді жеке куәлік жүйесінің аналогы ретінде сақтау;
  • коммерциялық саладағы қауіпсіз операциялар;
  • медициналық тексерулердің нәтижелерін, сондай-ақ белгіленген процедуралардың тарихын сақтау

Блокчейнмен проблемалар

Бірақ, әрине, бәрі көрінетіндей қарапайым емес!

Деректерді блокчейнге қоспас бұрын тексеру проблемалары бар (мысалы, олар жалған ба?), блокчейнмен жұмыс істеу үшін қолданылатын жүйелік және қолданбалы бағдарламалық қамтамасыз етудің қауіпсіздігіне қатысты мәселелер, қолжетімділікті ұрлау үшін әлеуметтік инженерия әдістерін пайдалану мүмкіндігіне қатысты мәселелер. cryptocurrency әмияндарға және т.б.. .P.

Тағы да, егер біз түйіндері бүкіл әлемге шашыраңқы таралған жалпыға ортақ блокчейн туралы емес, адамға немесе ұйымға тиесілі жеке блокчейн туралы айтатын болсақ, онда бұл жерде сенім деңгейі сенім деңгейінен жоғары болмайды. осы адамда немесе осы ұйымда.

Сондай-ақ блокчейнде жазылған деректер барлығына қолжетімді болатынын ескеру қажет. Бұл мағынада блокчейн (әсіресе көпшілікке арналған) құпия ақпаратты сақтауға жарамайды. Дегенмен, блокчейндегі ақпаратты өзгерту мүмкін еместігі әртүрлі алаяқтық әрекеттердің алдын алуға немесе тергеуге көмектеседі.

Ethereum орталықтандырылмаған қосымшалар, егер сіз оларды криптовалюта арқылы пайдалану үшін төлесеңіз, ыңғайлы болады. Неғұрлым көп адамдар криптовалютаға ие болса немесе оны сатып алуға дайын болса, DApps және смарт келісім-шарттар соғұрлым танымал болады.

Блокчейннің практикалық қолданылуына кедергі келтіретін жалпы проблемаларға жаңа блоктарды қосудың шектеулі жылдамдығы және транзакциялардың салыстырмалы түрде жоғары құны жатады. Бірақ бұл саладағы технология белсенді дамып келеді және техникалық мәселелер уақыт өте келе шешіледі деген үміт бар.

Тағы бір мәселе - Ethereum блокчейніндегі смарт келісім-шарттар виртуалды машиналардың оқшауланған ортасында жұмыс істейді және нақты әлемдегі деректерге қол жеткізе алмайды. Атап айтқанда, смарт келісімшарт бағдарламасы сайттардан немесе кез келген физикалық құрылғылардан (датчиктер, контактілер, т.б.) деректерді өзі оқи алмайды, сонымен қатар кез келген сыртқы құрылғыларға деректерді шығара алмайды. Бұл мәселені және оны шешу жолдарын біз Oracles деп аталатын сабақта талқылаймыз - смарт келісімшарттардың ақпараттық делдалдары.

Заңды шектеулер де бар. Кейбір елдерде, мысалы, криптовалюта төлем құралы ретінде пайдалануға тыйым салынады, бірақ сіз оны бағалы қағаздар сияқты сандық активтің бір түрі ретінде иелене аласыз. Мұндай активтерді биржада сатып алуға және сатуға болады. Кез келген жағдайда, криптовалюталармен жұмыс істейтін жобаны жасау кезінде жобаңыз юрисдикцияға жататын елдің заңнамасымен танысуыңыз керек.

Блокчейн тізбегі қалай қалыптасады

Жоғарыда айтқанымыздай, блокчейн - бұл деректер блоктарының қарапайым тізбегі. Алдымен осы тізбектің бірінші блогы қалыптасады, содан кейін оған екіншісі қосылады және т.б. Транзакция деректері блоктарда сақталады деп болжанады және ең соңғы блокқа қосылады.

Суретте. 1.1 біз блоктар тізбегінің қарапайым нұсқасын көрсеттік, мұнда бірінші блок келесіге сілтеме жасайды.

Кітап «Ethereum blockchain үшін Solidity смарт келісімшарттарын жасау. Практикалық нұсқаулық»
Күріш. 1.1. Блоктардың қарапайым тізбегі

Бұл опцияның көмегімен тізбектегі кез келген блоктың мазмұнын өзгерту өте оңай, өйткені блоктарда өзгерістерден қорғау үшін ешқандай ақпарат жоқ. Блокчейнді сенімсіз адамдар мен компаниялар қолдануға арналғанын ескере отырып, деректерді сақтаудың бұл әдісі блокчейнге жарамсыз деп қорытынды жасауға болады.

Блоктарды жалған жасаудан қорғауды бастайық. Бірінші кезеңде біз әрбір блокты бақылау сомасымен қорғауға тырысамыз (1.2-сурет).

Кітап «Ethereum blockchain үшін Solidity смарт келісімшарттарын жасау. Практикалық нұсқаулық»
Күріш. 1.2. Бұл блоктар үшін бақылау сомасымен қорғауды қосу

Енді шабуылдаушы блокты жай ғана өзгерте алмайды, өйткені ол блок деректерінің бақылау сомасын қамтиды. Бақылау сомасын тексеру деректердің өзгертілгенін көрсетеді.

Бақылау сомасын есептеу үшін MD-5, SHA-1, SHA-256 және т.б. сияқты хэштеу функцияларының бірін пайдалануға болады. Хэш функциялары деректер блогында қайтымсыз операцияларды орындау арқылы мәнді (мысалы, тұрақты ұзындықтағы мәтіндік жол) есептейді. Әрекеттер хэш функциясының түріне байланысты.

Деректер блогының мазмұны аздап өзгерсе де, хэш мәні де өзгереді. Хэш функциясының мәнін талдау арқылы ол есептелген деректер блогын қайта құру мүмкін емес.

Мұндай қорғаныс жеткілікті бола ма? Өкінішке орай жоқ.

Бұл схемада бақылау сомасы (хэш функциясы) тек жеке блоктарды қорғайды, бірақ бүкіл блокчейнді емес. Хэш функциясын есептеу алгоритмін біле отырып, шабуылдаушы блоктың мазмұнын оңай ауыстыра алады. Сондай-ақ, оған блоктарды тізбектен алып тастауға немесе жаңаларын қосуға ештеңе кедергі болмайды.

Бүкіл тізбекті тұтастай қорғау үшін деректермен бірге әрбір блокта алдыңғы блоктағы деректердің хэшін де сақтауға болады (1.3-сурет).

Кітап «Ethereum blockchain үшін Solidity смарт келісімшарттарын жасау. Практикалық нұсқаулық»
Күріш. 1.3. Деректер блогына алдыңғы блоктың хэшін қосыңыз

Бұл схемада блокты өзгерту үшін барлық кейінгі блоктардың хэш функцияларын қайта есептеу керек. Бір қарағанда, мәселе неде?

Нақты блокчейндерде жаңа блоктарды қосу үшін қосымша жасанды қиындықтар жасалады - көп есептеу ресурстарын қажет ететін алгоритмдер қолданылады. Блокқа өзгертулер енгізу үшін тек осы бір блокты ғана емес, одан кейінгілерді де қайта есептеу керек екенін ескерсек, мұны істеу өте қиын болады.

Сондай-ақ блокчейн деректері көптеген желі түйіндерінде сақталатынын (қайталанатынын) еске түсірейік, яғни. Орталықтандырылмаған сақтау орны пайдаланылады. Және бұл блокты қолдан жасауды әлдеқайда қиындатады, өйткені барлық желі түйіндеріне өзгертулер енгізу керек.

Блоктар алдыңғы блок туралы ақпаратты сақтайтындықтан, тізбектегі барлық блоктардың мазмұнын тексеруге болады.

Ethereum блокчейн

Ethereum блокчейн - бұл таратылған DApps жасауға болатын платформа. Басқа платформалардан айырмашылығы, Ethereum Solidity бағдарламалау тілінде жазылған смарт келісім-шарттарды (ақылды келісімшарттар) пайдалануға мүмкіндік береді.

Бұл платформаны 2013 жылы Bitcoin журналының негізін қалаушы Виталик Бутерин құрды және 2015 жылы іске қосылды. Біздің оқу курсында оқитын немесе жасайтын барлық нәрсе Ethereum blockchain және Solidity смарт келісімшарттарына қатысты.

Тау-кен өндіру немесе блоктар қалай жасалған

Майнинг - бұл блокчейн тізбегіне жаңа блоктарды қосудың өте күрделі және ресурсты қажет ететін процесі, бұл мүлдем «криптовалютаны өндіру» емес. Майнинг блокчейннің функционалдығын қамтамасыз етеді, өйткені дәл осы процесс Ethereum блокчейніне транзакцияларды қосуға жауапты.

Блоктарды қосуға қатысатын адамдар мен ұйымдар кеншілер деп аталады.
Шахтер түйіндерінде жұмыс істейтін бағдарламалық қамтамасыз ету желімен көрсетілген нақты хэш мәнін алу үшін соңғы блок үшін Nonce деп аталатын хэштеу параметрін табуға тырысады. Ethereum-да қолданылатын Ethash хэштеу алгоритмі Nonce мәнін тек дәйекті іздеу арқылы алуға мүмкіндік береді.

Егер кенші түйіні дұрыс Nonce мәнін тапса, онда бұл жұмыс дәлелі (PoW, Proof-of-work) деп аталады. Бұл жағдайда Ethereum желісіне блок қосылса, кенші желі валютасында - Эфирде белгілі бір сыйақы алады. Жазу кезінде сыйақы 5 эфирді құрайды, бірақ уақыт өте келе бұл азаяды.

Осылайша, Ethereum кеншілері блоктарды қосу арқылы желінің жұмысын қамтамасыз етеді және бұл үшін криптовалюталық ақша алады. Сіз интернетте кеншілер мен тау-кен өндіру туралы көптеген ақпаратты таба аласыз, бірақ біз Ethereum желісінде Solidity келісімшарттары мен DApps құруға назар аударамыз.

Сабақтың қысқаша мазмұны

Бірінші сабақта сіз блокчейнмен таныстыңыз және оның блоктардың арнайы құрастырылған тізбегі екенін білдіңіз. Бұрын жазылған блоктардың мазмұнын өзгерту мүмкін емес, өйткені бұл көптеген желі түйіндеріндегі барлық кейінгі блоктарды қайта есептеуді талап етеді, бұл көп ресурстар мен уақытты қажет етеді.

Блокчейн транзакциялардың нәтижелерін сақтау үшін пайдаланылуы мүмкін. Оның негізгі мақсаты – арасында сенім жоқ тараптар (адамдар мен ұйымдар) арасындағы қауіпсіз мәмілелерді ұйымдастыру. Сіз Ethereum blockchain және Solidity смарт келісімшарттарын бизнестің қандай нақты салаларында және қай салаларда қолдануға болатынын білдіңіз. Бұл банк секторы, меншік құқығын тіркеу, құжаттарды және т.б.

Сіз сондай-ақ блокчейнді пайдалану кезінде әртүрлі мәселелер туындауы мүмкін екенін білдіңіз. Бұл блокчейнге қосылған ақпаратты тексеру проблемалары, блокчейннің жылдамдығы, транзакциялардың құны, смарт келісімшарттар мен нақты әлем арасындағы деректер алмасу мәселесі, сондай-ақ пайдаланушы шоттарынан криптовалюта қаражатын ұрлауға бағытталған шабуылдаушылардың ықтимал шабуылдары. .

Біз сондай-ақ блокчейнге жаңа блоктарды қосу процесі ретінде тау-кен өндіру туралы қысқаша айттық. Транзакцияларды аяқтау үшін тау-кен өндіру қажет. Майнингпен айналысатындар блокчейннің жұмысын қамтамасыз етеді және бұл үшін криптовалютада сыйақы алады.

2-сабақ. Ubuntu және Debian ОЖ-да жұмыс ортасын дайындауОперациялық жүйені таңдау
Қажетті утилиталарды орнату
Ubuntu жүйесінде Geth және Swarm орнату
Debian жүйесінде Geth және Swarm орнату
Алдын ала дайындық
Go таратуы жүктелуде
Ортаның айнымалы мәндерін орнату
Go нұсқасын тексеру
Geth және Swarm орнату
Жеке блокчейн жасау
genesis.json файлын дайындау
Жұмысқа арналған каталог жасаңыз
Аккаунты құру
Түйінді инициализациялауды бастау
Түйінді іске қосу опциялары
Біздің түйінге қосылыңыз
Тау-кен өндірісін басқару және балансты тексеру
Geth консолін өшіру
Сабақтың қысқаша мазмұны

Сабақ 3. Raspberry Pi 3 жүйесінде жұмыс ортасын дайындауRaspberry Pi 3 құрылғысын жұмысқа дайындау
Rasberian орнату
Жаңартулар орнатылуда
SSH қатынасын қосу
Статикалық IP мекенжайын орнату
Қажетті утилиталарды орнату
Go орнату
Go таратуы жүктелуде
Ортаның айнымалы мәндерін орнату
Go нұсқасын тексеру
Geth және Swarm орнату
Жеке блокчейн жасау
Есептік жазбаны және теңгерімді тексеру
Сабақтың қысқаша мазмұны

4-сабақ. Шоттар және шоттар арасында ақша аударуЕсептік жазбаларды көру және қосу
Тіркелгілер тізімін қараңыз
Есептік жазба қосу
geth тіркелгісінің пәрмен опциялары
Тіркелгі құпия сөздері
Ethereum-дағы криптовалюта
Ethereum валюталық бірліктері
Біз шоттарымыздың ағымдағы сальдосын анықтаймыз
Қаражатты бір шоттан екіншісіне аудару
eth.sendTransaction әдісі
Транзакция күйін көру
Транзакция түбіртегі
Сабақтың қысқаша мазмұны

5-сабақ. Алғашқы келісім-шартты жариялауEthereum-дағы ақылды келісімшарттар
Ақылды келісім-шартты орындау
Ethereum виртуалды машинасы
Біріктірілген әзірлеу ортасы Remix Solidity IDE
Іске қосылған компиляция
Келісімшарт функцияларын шақыру
Жеке желіде келісімшартты жариялау
ABI анықтамасын және келісім-шарттың екілік кодын алу
Шартты жариялау
Келісімшартты жариялау транзакция күйін тексеру
Келісімшарт функцияларын шақыру
Пакеттік компилятор solc
Ubuntu жүйесінде solc орнату
Debian жүйесінде solc орнату
HelloSol келісімшартын құрастыру
Шартты жариялау
Rasberian жүйесінде solc орнату
Сабақтың қысқаша мазмұны

6-сабақ. Ақылды келісім-шарттар және Node.jsNode.js орнатылуда
Ubuntu жүйесінде орнату
Debian жүйесінде орнату
Ganache-cli орнату және іске қосу
Web3 орнату
Solc орнату
Rasberian жүйесінде Node.js орнату
Консольдегі тіркелгілер тізімін алу үшін сценарий
Смарт келісімшартты жариялауға арналған сценарий
Параметрлерді іске қосыңыз және алыңыз
Іске қосу опцияларын алу
Келісімшартты құрастыру
Тіркелгіңізді бұғаттаудан шығару
ABI және келісімшарттың екілік коды жүктелуде
Газдың қажетті мөлшерін бағалау
Нысан жасаңыз және келісімшартты жариялауды бастаңыз
Келісімшартты жариялау сценарийін іске қосу
Смарт келісімшарт функцияларын шақыру
Жарияланған смарт келісімшартты жаңарту мүмкін бе?
Web3 1.0.x нұсқасымен жұмыс істеу
Тіркелгілер тізімін алу
Шартты жариялау
Келісімшарт функцияларын шақыру
Қаражатты бір шоттан екіншісіне аудару
Келісімшарт шотына қаражат аудару
HelloSol смарт келісім-шартын жаңарту
Есептік жазбаңыздың балансын көру үшін сценарий жасаңыз
call_contract_get_promise.js сценарийіне getBalance функциясына қоңырау қосыңыз
Біз смарт келісімшарт шотын толтырамыз
Сабақтың қысқаша мазмұны

7-сабақ. Трюфельге кіріспеТрюфельді орнату
HelloSol жобасын жасаңыз
Жоба каталогы мен файлдарын жасау
Келісімшарттар каталогы
Каталогты тасымалдау
Каталог сынағы
truffle-config.js файлы
HelloSol келісімшартын құрастыру
Келісімшартты жариялауды бастаңыз
Трюфель шақыруында HelloSol келісім-шарт функцияларын шақыру
Node.js іске қосылған JavaScript сценарийінен HelloSol келісімшарт функцияларын шақыру
Трюфель-контракт модулін орнату
Келісімшарт функцияларын шақыру getValue және getString
Келісімшарт функцияларын шақыру setValue және setString
Шартты өзгерту және қайта жариялау
Web3 1.0.x нұсқасымен жұмыс істеу
HelloSol смарт келісімшартына өзгертулер енгізу
Келісімшарт әдістерін шақыруға арналған сценарийлер
Трюфельде сынау
Қаттылық сынағы
JavaScript сынағы
Сабақтың қысқаша мазмұны

Сабақ 8. Тұрақтылық деректерінің түрлеріДеректер түрлерін үйренуге арналған келісімшарт
Логикалық деректер түрлері
Таңбасыз бүтін сандар және таңбалы бүтін сандар
Бекітілген нүкте сандары
Мекен-жай
Күрделі типтегі айнымалылар
Тұрақты өлшемді массивтер
Динамикалық массивтер
Санақ
Құрылымдар
Сөздіктерді картаға түсіру
Сабақтың қысқаша мазмұны

9-сабақ. Келісімшарттарды жеке желіге және Rinkeby желісіне көшіруTruffle-дан жеке Geth желісіне келісімшартты жариялау
Жеке желі түйінін дайындау
Жұмысқа келісім-шартты дайындау
Келісімшартты құрастыру және Truffle желісіне көшіру
Жергілікті желіні тасымалдауды бастау geth
Трюфель артефактілерін алу
Truffle-тен Rinkeby testnet-ке келісімшартты жариялау
Ринкебимен жұмыс істеу үшін Гет түйінін дайындау
Түйінді синхрондау
Есептік жазбаларды қосу
Rinkeby есептік жазбаңызды эфирмен толықтыру
Rinkeby желісіне келісімшарттық көшіруді іске қосу
Rinkeby желісіндегі келісімшарт туралы ақпаратты қарау
Rinkeby желісіне арналған трюфель консолі
Келісімшарт функцияларын шақырудың оңай жолы
Node.js көмегімен келісімшарт әдістерін шақыру
Rinkby үшін Truffle консоліндегі шоттар арасында ақша аударыңыз
Сабақтың қысқаша мазмұны

10-сабақ. Ethereum Swarm орталықтандырылмаған деректерді сақтауEthereum Swarm қалай жұмыс істейді?
Swarm орнату және іске қосу
Файлдармен және каталогтармен операциялар
Файлды Ethereum Swarm жүйесіне жүктеп салу
Ethereum Swarm файлын оқу
Жүктеп салынған файлдың манифестін қараңыз
Ішкі каталогтары бар каталогтарды жүктеу
Жүктелген каталогтан файлды оқу
Жалпыға ортақ Swarm шлюзін пайдалану
Node.js сценарийлерінен Swarm жүйесіне қатынасу
Perl Net::Ethereum::Swarm модулі
Net::Ethereum::Swarm модулін орнату
Мәліметтерді жазу және оқу
Сабақтың қысқаша мазмұны

11-сабақ. Python тілінде Ethereum-мен жұмыс істеуге арналған Web3.py құрылымыWeb3.py орнатылуда
Қажетті пакеттерді жаңарту және орнату
Easysolc модулін орнату
Web3.py арқылы келісім-шартты жариялау
Келісімшартты құрастыру
Провайдерге қосылу
Келісімшартты жариялауды орындау
Келісімшарт мекенжайын және abi файлын сақтау
Келісімшартты жариялау сценарийін іске қосу
Келісімшартты шақыру әдістері
JSON файлынан келісім-шарттың мекенжайы мен abi мәнін оқу
Провайдерге қосылу
Шарт объектісін құру
Келісімшартты шақыру әдістері
Трюфель және Web3.py
Сабақтың қысқаша мазмұны

12-сабақ. OraclesАқылды келісім-шарт сыртқы дүниенің деректеріне сене ала ма?
Oracles blockchain ақпараттық делдалдары ретінде
Деректер көзі
Дереккөзден алынған деректерді көрсету үшін код
Блокчейндегі валюта бағамын жазуға арналған Oracle
USDRateOracle келісімшарты
Ақылды келісімшартта айырбас бағамын жаңарту
Web Socket Провайдерін пайдалану
RateUpdate оқиғасы күтілуде
RateUpdate оқиғасын өңдеу
Смарт келісімшартта деректерді жаңартуды бастау
Сабақтың қысқаша мазмұны

Ақпарат көзі: www.habr.com

пікір қалдыру