Книга Створення смарт-контрактів Solidity для блокчейну Ethereum. Практичний посібник»

Книга Створення смарт-контрактів Solidity для блокчейну Ethereum. Практичний посібник»
Більше року я працював над книгою Створення смарт-контрактів Solidity для блокчейну Ethereum. Практичний посібник», і ось тепер ця робота завершена, а книга видана та доступна в Літресі.

Сподіваюся, моя книга допоможе швидко приступити до створення смарт-контактів Solidity та розподілених програм DApp для блокчейну Ethereum. Вона складається з 12 уроків із практичними завданнями. Виконавши їх, читач зможе створювати власні локальні вузли Ethereum, публікувати смарт-контракти та викликати їх методи, обмінюватися даними між реальним світом та смарт-контрактами за допомогою оракулів, працювати з тестовою мережею налагодження Rinkeby.

Книга адресована всім, хто цікавиться передовими технологіями в області блокчейнов і хоче швидко отримати знання, що дозволяють займатися цікавою і перспективною роботою.

Нижче ви знайдете зміст і перший розділ книги (також на Літресі доступні фрагменти книги). Сподіваюся отримати зворотний зв'язок, зауваження та пропозиції. Все це я постараюся врахувати під час підготовки наступної редакції книги.

ЗмістЗапровадженняНаша книга призначена для тих, хто хоче не тільки зрозуміти принципи роботи блокчейну Ethereum, але й отримати практичні навички у створенні розподілених програм DApp мовою програмування Solidity для цієї мережі.

Цю книгу краще не просто читати, а працювати з нею, виконуючи практичні завдання, описані в уроках. Для роботи вам знадобиться локальний комп'ютер, віртуальний або хмарний сервер із встановленою ОС Debian або Ubuntu. Також для виконання багатьох завдань можна використовувати Raspberry Pi.

На першому уроці ми розглянемо принципи роботи блокчейну Ethereum та основну термінологію, а також розповімо про те, де можна використовувати цей блокчейн.

Мета другого уроку — створити вузол приватного блокчейну Ethereum для подальшої роботи в рамках цього курсу на сервері Ubuntu та Debian. Ми розглянемо особливості встановлення основних утиліт, таких як geth, що забезпечує роботу вузла нашого блокчейну, а також демон децентралізованого сховища даних swarm.

Третій урок навчить вас проводити експерименти з Ethereum на недорогому мікрокомп'ютері Raspberry Pi. Ви встановите операційну систему (ОС) Rasberian на Raspberry Pi, утиліту Geth, що забезпечує роботу вузла блокчейна, а також демон децентралізованого сховища даних Swarm.

Четвертий урок присвячений обліковим записам та криптовалютним одиницям у мережі Ethereum, а також способам переказу коштів з одного облікового запису на інший з консолі Geth. Ви навчитеся створювати акаунти, ініціювати транзакції переказу коштів, отримувати стан транзакції та її квитанцію.

На п'ятому уроці ви познайомитеся зі смарт-контрактами в мережі Ethereum, дізнаєтесь про їх виконання віртуальною машиною Ethereum.

Ви створите та опублікуєте у приватній мережі Ethereum свій перший смарт-контракт і навчитеся викликати його функції. Для цього ви використовуватимете середовище розробки Remix Solidity IDE. Крім того, ви навчитеся встановлювати та використовувати пакетний компілятор solc.
Також ми розповімо про так званий бінарний інтерфейс програми Application Binary Interface (ABI) і навчимо його використовувати.

Шостий урок присвячений створенню скриптів JavaScript, що працюють під керуванням Node.js та виконують операції зі смарт-контрактами Solidity.

Ви встановите Node.js в Ubuntu, Debian і Rasberian, напишете скрипти для публікації смарт-контракту в локальній мережі Ethereum і виклику його функцій.

Крім того, ви навчитеся перекладати за допомогою скриптів кошти між звичайними обліковцями, а також зараховувати їх на облікові записи смарт-контрактів.

На сьомому уроці ви навчитеся встановлювати та використовувати популярне серед розробників смарт-контрактів Solidity інтегроване середовище Truffle. Ви навчитеся створювати скрипти JavaScript, що викликають функції контрактів за допомогою модуля truffle-contract, а також виконайте тестування смарт-контракту засобами Truffle.

Восьмий урок присвячений типу даних Solidity. Ви напишете смарт-контракти, що працюють із такими типами даних, як знакові та беззнакові цілі числа, числа зі знаком, рядки, адреси, змінні складних типів, масиви, перерахування, структури та словники.

На дев'ятому уроці Ви наблизитесь ще на крок до створення смарт-контрактів для основної мережі Ethereum. Ви навчитеся публікувати контракти за допомогою Truffle у приватній мережі Geth, а також у тестовій мережі Rinkeby. Налагодження смарт-контракту в мережі Rinkeby дуже корисне перед його публікацією в основній мережі там практично все по-справжньому, але безкоштовно.

У рамках уроку ви створите вузол тестової мережі Rinkeby, поповніть його засобами та опублікуєте смарт-контракт.

Урок 10 присвячений розподіленим сховищам даних Ethereum Swarm. Використовуючи розподілені сховища, ви заощаджуєте на зберіганні даних великого об'єму в блокчейні Ethereum.

В рамках цього уроку ви створите локальне сховище Swarm, виконайте операції запису та читання файлів, а також каталогів із файлами. Далі ви навчитеся працювати з публічним шлюзом Swarm, напишіть скрипти для звернення до Swarm із Node.js, а також за допомогою модуля Perl Net::Ethereum::Swarm.

Мета уроку 11 — освоїти роботу зі смарт-контрактами Solidity із застосуванням популярної мови програмування Python та фреймворку Web3.py. Ви встановите цей фреймворк, напишіть скрипти для компіляції та опублікування смарт-контракту, а також для виклику його функцій. При цьому Web3.py буде використаний як сам собою, так і спільно з інтегрованим середовищем розробки Truffle.

На 12 уроці ви навчитеся передавати дані між смарт-контрактами та реальним світом за допомогою оракулів. Це стане вам у нагоді для отримання даних з Web-сайтів, пристроїв інтернету речей IoT, різних приладів і датчиків, і відправки даних із смарт-контрактів на ці пристрої. У практичній частині уроку ви створите оракул і смарт-контракт, який отримує актуальний курс обміну USD на рублі із сайту ЦБ РФ.

Урок 1. Коротко про блокчейн та мережу EthereumМета уроку: ознайомитися з принципами роботи блокчейну Ethereum, областями його застосування та основною термінологією.
Практичні завдання: у цьому уроці не передбачено.

Навряд чи сьогодні є розробник програмного забезпечення (ПЗ), який би нічого не чув про технологію блокчейн (Blockchain), криптовалюти (Cryptocurrency або Crypto Currency), біткоїни (Bitcoin), первинне розміщення монет (ICO, Initial coin offering), смарт-контракти (Smart Contract), а також інших поняттях та термінах, що мають відношення до блокчейну.

Технологія блокчейна відкриває нові ринки та створює робочі місця для програмістів. Якщо ви осягнете всі тонкощі криптовалютних технологій та технологій смарт-контрактів, то у вас не повинно бути проблем із застосуванням цих знань на практиці.

Треба сказати, що навколо криптовалют та блокчейнів виникає багато спекуляцій. Ми залишимо осторонь міркування про зміни курсів криптовалют, про створення пірамід, про тонкощі криптовалютного законодавства тощо. У нашому навчальному курсі ми зосередимося головним чином на технічних аспектах застосування смарт-контрактів блокчейна Ethereum (ефіріум, ефір) та розробки так званих децентралізованих програм (Distributed Application, DApp).

Що таке блокчейн

Блокчейн (Blockchain, Block Chain) є ланцюжок блоків даних, пов'язаних один з одним певним чином. На початку ланцюжка знаходиться перший блок, який називається первинним блоком (genesis block) чи блоком генези. За ним слідує другий, потім третій і так далі.

Всі ці блоки даних автоматично дублюються на численних вузлах мережі блокчейну. Таким чином забезпечується децентралізоване зберігання даних блокчейну.
Ви можете уявити систему блокчейна як велику кількість вузлів (фізичних або віртуальних серверів), об'єднаних в мережу і реплікують всі зміни в ланцюжку блоків даних. Це ніби гігантський мультисерверний комп'ютер, причому вузли такого комп'ютера (сервери) можуть бути розкидані по всьому світу. І ви також можете додати свій комп'ютер до мережі блокчейна.

Розподілена база даних

Блокчейн можна уявити як розподілену базу даних, реплицируемую попри всі вузли мережі блокчейна. Теоретично блокчейн буде працездатний до тих пір, поки працює хоча б один вузол, що зберігає всі блоки блокчейну.

Розподілений реєстр даних

Блокчейн можна уявити, як це розподілений реєстр даних та операцій (транзакцій). Ще одна назва такого реєстру — гросбух.

До розподіленого реєстру можна додавати дані, але їх неможливо змінювати або видаляти. Така неможливість досягається, зокрема, застосуванням криптографічних алгоритмів, спеціальних алгоритмів додавання блоків у ланцюжок та децентралізованим зберіганням даних.

При додаванні блоків та виконанні операцій (транзакцій) використовуються приватні та публічні ключі. Вони обмежують користувачів блокчейну, надаючи їм доступ лише до своїх блоків даних.

Транзакції

Блокчейн зберігає інформацію про операції (транзакції) у блоках. У цьому старі, вже виконані транзакції, неможливо відкотити чи змінити. Нові транзакції зберігаються у нових, доданих блоках.

Таким чином, у блокчейні може бути записана в незмінному вигляді вся історія транзакцій. Тому блокчейн може бути використаний, наприклад, для надійного зберігання банківських операцій, відомостей про авторське право, історію змін власників об'єктів нерухомості тощо.

Блокчейн Ethereum містить звані стану системи. У міру виконання транзакцій стан змінюється від початкового до поточного. Транзакції записуються у блоки.

Публічні та приватні блокчейни

Тут слід зазначити, що це сказане вірно лише з так званих громадських мереж блокчейн, які можуть контролюватись ніякими окремими фізичними чи юридичними особами, державними органами чи урядами.
Так звані приватні мережі блокчейн знаходяться під повним контролем їхніх творців, і там можливо все, наприклад, повна заміна всіх блоків ланцюжка.

Практичні застосування блокчейну

Для чого може стати в нагоді блокчейн?

Якщо коротко, блокчейн дозволяє безпечним чином проводити операції (угоди) між персонами або компаніями, що не довіряють один одному. Записані в блокчейн дані (транзакції, персональні дані, документи, свідоцтва, договори, накладні тощо) неможливо підробити або замінити після запису. Тому на базі блокчейна можна створювати, наприклад, довірені розподілені реєстри різноманітних документів.

Звичайно, ви знаєте, що на базі блокчейнів створюються криптовалютні системи, які мають замінити звичайні паперові гроші. Паперові гроші називають фіатними (від Fiat Money).
Блокчейн забезпечує зберігання та незмінність транзакцій, записаних у блоки, тому його можна використовувати для створення криптовалютних систем. Він містить історію передачі крипто-средств між різними користувачами (акаунтами), причому будь-яка операція може бути відстежена.

Хоча операції всередині криптовалютних систем можуть бути анонімними, виведення криптовалюти та обмін її на фіатні гроші зазвичай призводить до розкриття особистості власника криптовалютного активу.

Так звані смарт-контракти, що є програмним забезпеченням, що працює в мережі Ethereum, дозволяють автоматизувати процес укладання угод і контроль їх виконання. Особливо це ефективно, якщо оплата за угодою проводиться криптовалютою Ether (ефір).

Блокчейн Ethereum та смарт-контракти Ethereum, написані мовою програмування Solidity, можуть використовуватися, наприклад, у таких областях:

  • альтернатива нотаріальному засвідченню документів;
  • зберігання реєстру об'єктів нерухомості та відомостей про операції з об'єктами нерухомості;
  • зберігання відомостей про авторські права на об'єкти інтелектуальної власності (книги, зображення, музичні твори тощо);
  • створення систем незалежного голосування;
  • сфера фінансів та банківська діяльність;
  • логістика у міжнародних масштабах, відстеження переміщення вантажів;
  • зберігання персональних даних як аналог системи посвідчень особи;
  • безпечні угоди у комерційній галузі;
  • зберігання результатів медичних обстежень, а також історії призначених процедур

Проблеми з блокчейном

Але, зрозуміло, не все так просто, як могло б здатися!

Є проблеми з верифікацією даних перед їх додаванням у блокчейн (наприклад, чи не підроблені вони?), проблеми в безпеці системного та прикладного ПЗ, що застосовується для роботи з блокчейном, проблеми з можливістю використання методів соціальної інженерії для викрадення доступу до гаманців з криптовалютою тощо .п.

Знову ж таки, якщо йдеться не про публічний блокчейн, вузли якого розкидані по всьому світу, а про приватний блокчейн, що належить персону чи організації, то рівень довіри тут буде не вищим ніж рівень довіри до цієї персони чи цієї організації.

Також слід враховувати, що дані, записані в блокчейн, стають доступними для всіх. У цьому сенсі блокчейн (особливо публічний) не підходить для зберігання конфіденційної інформації. Однак той факт, що інформацію в блокчейні неможливо змінити, може допомогти запобігти або розслідувати різноманітні шахрайські дії.

Децентралізовані програми Ethereum будуть зручні, якщо платити за їх використання криптовалютою. Чим більше людей, які володіють криптовалютою або готові її придбати, тим більшу популярність отримають програми DApp і смарт-контракти.

Серед загальних проблем блокчейну, що ускладнюють його практичне застосування, можна згадати обмежену швидкість додавання нових блоків та відносно високу вартість транзакцій. Але технології у цій галузі активно розвиваються, і є сподівання, що технічні проблеми з часом будуть вирішені.

Ще одна проблема полягає в тому, що смарт-контракти блокчейну Ethereum працюють в ізольованому середовищі віртуальних машин і не мають доступу до даних реального світу. Зокрема, програма смарт-контракту не може сама прочитати дані з сайтів або фізичних пристроїв (датчики, контакти тощо), а також не може вивести дані на будь-які зовнішні пристрої. Цю проблему та способи її вирішення ми обговорюватимемо на уроці, присвяченому так званим Оракулам — інформаційним посередникам смарт-контрактів.

Також є обмеження у галузі законодавства. У деяких країнах, наприклад, забороняється використовувати криптовалюту як платіжний засіб, але можна володіти нею як цифровим активом, на кшталт цінних паперів. Такі активи можна купувати та продавати на біржі. У будь-якому випадку, при створенні проекту, який працює з криптовалютами, необхідно ознайомитись із законодавством тієї країни, під юрисдикцію якої попадає ваш проект.

Як формується ланцюжок блокчейна

Як ми вже говорили, блокчейн є простим ланцюжком блоків даних. Спочатку формується перший блок цього ланцюжка, потім до нього додається другий і таке інше. Передбачається, що дані транзакцій зберігаються в блоках і додаються в останній блок.

На рис. 1.1 ми показали найпростіший варіант послідовності блоків, де перший блок посилається наступний.

Книга Створення смарт-контрактів Solidity для блокчейну Ethereum. Практичний посібник»
Мал. 1.1. Проста послідовність блоків

У такому варіанті, однак, можна дуже легко підробити вміст будь-якого блоку ланцюжка, оскільки блоки не містять жодної інформації для захисту від змін. Враховуючи, що блокчейн призначений для використання людей та компаній, між якими немає довіри, можна зробити висновок, що такий спосіб зберігання даних для блокчейну не підходить.

Давайте займемося захистом блоків від підробки. На першому етапі спробуємо захистити кожен блок контрольною сумою (рис. 1.2).

Книга Створення смарт-контрактів Solidity для блокчейну Ethereum. Практичний посібник»
Мал. 1.2. Додаємо захист даних блоків контрольною сумою

Тепер зловмисник не може просто так змінити блок, тому що в ньому знаходиться контрольна сума даних блоку. Перевірка контрольної суми покаже, що дані змінили.

Для обчислення контрольної суми можна використовувати одну з функцій хешування, таку, як MD-5, SHA-1, SHA-256 і т.п. Хеш-функції обчислюють деяке значення (наприклад, у вигляді текстового рядка постійної довжини) внаслідок виконання незворотних операцій над блоком даних. Операції залежить від виду хеш-функции.

Навіть якщо невелика зміна вмісту блоку даних, значення хеш-функції також зміниться. Аналізуючи значення хеш-функції, неможливо відновити блок даних, котрим вона обчислена.

Чи буде достатній такий захист? На жаль немає.

У цій схемі контрольна сума (хеш-функція) захищає лише окремі блоки, але не весь ланцюжок блоків. Знаючи алгоритм обчислення хеш-функції, зловмисник може легко підмінити вміст блоку. Також ніщо не завадить йому видалити блоки із ланцюжка або додати нові.

Щоб захистити весь ланцюжок загалом, можна зберігати у кожному блоці разом із даними ще й хеш даних попереднього блоку (рис. 1.3).

Книга Створення смарт-контрактів Solidity для блокчейну Ethereum. Практичний посібник»
Мал. 1.3. Додаємо до блоку даних хеш попереднього блоку

У цій схемі, щоб змінити якийсь блок, потрібно перерахувати хеш-функції всіх наступних блоків. Здавалося б, у чому проблема?

У реальних блокчейнах додатково створені штучні труднощі додавання нових блоків — використовуються алгоритми, потребують багато обчислювальних ресурсів. З урахуванням того, що для внесення змін до блоку перерахувати потрібно не один цей блок, а всі наступні зробити це буде вкрай складно.

Згадаймо також, дані блокчейна зберігаються (дублюються) на численних вузлах мережі, тобто. використовується децентралізоване зберігання. І це багаторазово ускладнює підробку блоку, т.к. зміни потрібно внести на всі вузли мережі.

Оскільки блоки зберігають інформацію про попередній блок, можна перевірити вміст всіх блоків ланцюжка.

Блокчейн Ethereum

Блокчейн Ethereum є платформою, на базі якої можна створювати розподілені програми DApp. На відміну від інших платформ, Ethereum дозволяє використовувати звані розумні контракти (смарт-контракти, smart contracts), написані мовою програмування Solidity.

Ця платформа була створена у 2013 році Віталіком Бутеріним, засновником журналу Bitcoin Magazine, та запущена у 2015 році. Все, що ми будемо вивчати або робити в нашому навчальному курсі, стосується саме блокчейну Ethereum та смарт-контрактів Solidity.

Майнінг або як створюються блоки

Майнінг (mining) є досить складним і ресурсомістким процесом додавання нових блоків у ланцюжок блокчейна, а зовсім не «видобуток криптовалют». Майнінг забезпечує працездатність блокчейну, т.к. саме цей процес відповідає за додавання транзакцій до блокчейну Ethereum.

Люди та організації, що займаються додаванням блоків, називаються майнерами (miner).
Програмне забезпечення, що працює на вузлах майнерів, намагається підібрати для останнього блоку параметр хешування з назвою Nonce, щоб вийшло певне значення хеш-функції, заданої мережею. Алгоритм хешування Ethash, застосовуваний Ethereum, дозволяє отримати значення Nonce тільки шляхом послідовного перебору.

Якщо вузол майнера знайшов правильне значення Nonce, це є так званим доказом роботи (PoW, Proof-of-work). У разі, якщо блок буде додано до мережі Ethereum, майнер отримує певну винагороду у валюті мережі — Ether. На момент підготовки нашої книги винагорода становить 5 Ether, проте згодом вона буде знижена.

Таким чином, майнери Ethereum забезпечують роботу мережі, додаючи блоки і отримують за це криптовалютні гроші. В інтернеті ви знайдете масу інформації про майнерів та майнінг, а ми зосередимося на створенні контрактів Solidity та децентралізованих додатків DApp у мережі Ethereum.

підсумки уроку

На першому уроці ви познайомилися з блокчейном і дізналися, що він є особливим чином складеною послідовністю блоків. Вміст раніше записаних блоків неможливо змінити, тому що для цього доведеться перерахувати всі наступні блоки на багатьох вузлах мережі, на що потрібно багато ресурсів та часу.

Блокчейн може застосовуватись для збереження результатів виконання транзакцій. Його головне призначення - організація безпечного виконання транзакцій між сторонами (персонами та організаціями), між якими немає довіри. Ви дізналися, в яких галузях бізнесу та в яких сферах можна використовувати блокчейн Ethereum та смарт-контракти Solidity. Це банківська сфера, реєстрація прав власності, документів тощо.

Ви також дізналися, що при використанні блокчейна можуть виникати різні проблеми. Це проблеми верифікації інформації, що додається до блокчейну, швидкість роботи блокчейну, вартість транзакцій, проблема обміну даними між смарт-контрактами та реальним світом, а також потенційно можливі атаки зловмисників, спрямовані на викрадення криптовалютних засобів з облікових записів користувачів.

Також ми коротко розповіли про майнінг як про процес додавання нових блоків до блокчейну. Майнінг необхідний виконання транзакцій. Ті, хто займається майнінгом, забезпечують працездатність блокчейну та отримують за цю винагороду у криптовалюті.

Урок 2. Підготовка робочого середовища в ОС Ubuntu та DebianВибір операційної системи
Встановлення необхідних утиліт
Установка Geth і Swarm в Ubuntu
Встановлення Geth та Swarm у Debian
попередня підготовка
Завантаження дистрибутива Go
Встановлення змінних оточення
Перевірка версії Go
Установка Geth та Swarm
Створюємо приватний блокчейн
Готуємо файл genesis.json
Створюємо каталог для роботи
Створюємо обліковий запис
Запускаємо ініціалізацію вузла
Параметри запуску вузла
Підключаємось до нашого вузла
Управління майнінгом та перевірка балансу
Завершення роботи консолі Geth
підсумки уроку

Урок 3. Підготовка робочого середовища на Raspberry Pi 3Підготовка Raspberry Pi 3 до роботи
Установка Rasberian
Встановлення оновлень
Увімкнення доступу SSH
Встановлення статичної адреси IP
Встановлення необхідних утиліт
Установка Go
Завантаження дистрибутива Go
Встановлення змінних оточення
Перевірка версії Go
Установка Geth та Swarm
Створюємо приватний блокчейн
Перевірка облікового запису та балансу
підсумки уроку

Урок 4. Облікові записи та переказ коштів між аккаунтамиПерегляд та додавання облікових записів
Перегляд списку облікових записів
Додавання облікового запису
Параметри команди geth account
Паролі облікових записів
Криптовалюта в Ethereum
Грошові одиниці Ethereum
Визначаємо поточний баланс наших облікових записів
Переказ коштів з одного облікового запису на інший
Метод eth.sendTransaction
Перегляд стану транзакції
Квитанція транзакції
підсумки уроку

Урок 5. Публікація першого контрактуСмарт-контракти у Ethereum
Виконання смарт-контракту
Віртуальна машина Ethereum
Інтегроване середовище розробки Remix Solidity IDE
Запуск компіляції
Виклик функцій контракту
Публікація контракту у приватній мережі
Отримуємо визначення ABI та двійковий код контракту
Публікація контракту
Перевірка стану транзакції публікації контракту
Виклик функцій контракту
Пакетний компілятор
Установка solc в Ubuntu
Встановлення solc у Debian
Компіляція контракту HelloSol
Публікація контракту
Установка solc на Rasberian
підсумки уроку

Урок 6. Смарт-контракти та Node.jsВстановлення Node.js
Установка в Ubuntu
Встановлення в Debian
Встановлення та запуск Ganache-cli
Встановлення Web3
Установка Solc
Встановлення Node.js на Rasberian
Скрипт для отримання списку облікових записів у консолі
Скрипт для публікації смарт-контракту
Запуск та отримання параметрів
Отримання параметрів запуску
Компіляція контракту
Розблокування облікового запису
Завантаження ABI та бінарного коду контракту
Оцінка необхідної кількості газу
Створення об'єкта та запуск публікації контракту
Запуск скрипту публікації контракту
Виклик функцій смарт-контракту
Чи можливе оновлення опублікованого смарт-контракту
Робота з Web3 версією 1.0.x
Отримуємо список облікових записів
Публікація контракту
Виклик функцій контракту
Переказ коштів з одного облікового запису на інший
Переказ коштів на обліковий запис контракту
Оновлюємо смарт-контракт HelloSol
Створюємо скрипт для перегляду балансу облікового запису
Додаємо виклик функції getBalance у скрипт call_contract_get_promise.js
Поповнюємо рахунок смарт-контракту
підсумки уроку

Урок 7. Вступ до TruffleУстановка Truffle
Створюємо проект HelloSol
Створення каталогу та файлів проекту
Каталог contracts
Каталог migrations
Каталог test
Файл truffle-config.js
Компіляція контракту HelloSol
Запуск публікації контракту
Виклик функцій контракту HelloSol у запрошенні Truffle
Виклик функцій контракту HelloSol із скрипту JavaScript під керуванням Node.js
Встановлення модуля truffle-contract
Виклик функцій контракту getValue та getString
Виклик функцій контракту setValue та setString
Зміна контракту та повторна публікація
Робота з Web3 версією 1.0.x
Вносимо зміни до смарт-контракту HelloSol
Скрипти для виклику методів контракту
Тестування у Truffle
Тест на Solidity
Тест на JavaScript
підсумки уроку

Урок 8. Типи даних SolidityКонтракт вивчення типів даних
Логічні типи даних
Беззнакові цілі числа та цілі числа зі знаком
Числа з фіксованою комою
Адреса
Змінні складні типи
Масиви фіксованого розміру
Динамічні масиви
перерахування
структури
Словники mapping
підсумки уроку

Урок 9. Міграція контрактів у приватну мережу та у мережу RinkebyПублікація контракту з Truffle до приватної мережі Geth
Підготовка вузла приватної мережі
Підготовка контракту до роботи
Компіляція та міграція контракту до мережі Truffle
Запуск міграції до локальної мережі geth
Добуваємо артефакти Truffle
Публікація контракту з Truffle у тестовій мережі Rinkeby
Підготовка вузла Geth для роботи з Rinkeby
Синхронізація вузла
Додавання облікових записів
Поповнення облікового запису Rinkeby ефіром
Запуск міграції контракту до мережі Rinkeby
Перегляд інформації про контракт у мережі Rinkeby
Консоль Truffle для мережі Rinkeby
Найпростіший спосіб виклику функцій контракту
Виклик методів контракту за допомогою Node.js
Переказ коштів між аккаунтами у консолі Truffle для Rinkby
підсумки уроку

Урок 10. Децентралізоване сховище даних Ethereum SwarmЯк працює Ethereum Swarm
Встановлення та запуск Swarm
Операції з файлами та каталогами
Завантаження файлу в Ethereum Swarm
Читання файлу з Ethereum Swarm
Перегляд маніфесту завантаженого файлу
Завантаження каталогів з підкаталогами
Читання файлу із завантаженого каталогу
Використання публічного шлюзу Swarm
Звернення до Swarm із скриптів Node.js
Модуль Perl Net:: Ethereum :: Swarm
Встановлення модуля Net::Ethereum::Swarm
Запис та читання даних
підсумки уроку

Урок 11. Фреймворк Web3.py для роботи з Ethereum на PythonВстановлення Web3.py
Оновлення та встановлення необхідних пакетів
Встановлення модуля easysolc
Публікація контракту за допомогою Web3.py
Компіляція контракту
Підключення до провайдера
Виконання публікації контракту
Збереження адреси контракту та abi у файлі
Запуск скрипту публікації контракту
Виклик методів контракту
Читання адреси та abi контракту з файлу JSON
Підключення до провайдера
Створення об'єкта контракту
Виклик методів контракту
Truffle та Web3.py
підсумки уроку

Урок 12. ОракулиЧи може смарт-контракт довіряти даним із зовнішнього світу
Оракули як інформаційні посередники блокчейну
Джерело даних
Код для представлення даних із джерела
Оракул для запису обмінного курсу в блокчейн
Контракт USDRateOracle
Оновлення обмінного курсу у смарт-контракті
Використання провайдера Web Socket
Очікування події RateUpdate
Обробка події RateUpdate
Ініціювання оновлення даних у смарт-контракті
підсумки уроку

Джерело: habr.com

Додати коментар або відгук