You are on page 1of 25

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ

«КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ


імені ІГОРЯ СІКОРСЬКОГО»
Факультет інформатики та обчислювальної техніки
Кафедра автоматики та управління в технічних системах

«На правах рукопису» До захисту допущено:


УДК 004.04 Завідувач кафедри
________ Олександр РОЛІК
«___»_____________20__ р.

Магістерська дисертація
на здобуття ступеня магістра
за освітньо-професійною програмою «Програмне забезпечення
інформаційно-комунікаційних систем»
зі спеціальності 121 «Інженерія програмного забезпечення»
на тему: «Система статичного аналізу смарт-контрактiв»

Виконав (-ла):
студент (-ка) VІ курсу, групи ІТ-93мп
Ступницький Антон Олексійович __________

Керівник:
професор каф. АУТС, д.т.н,
Корнієнко Богдан Ярославович __________
Рецензент:
доцент каф. ТПЗА, к.т.н.,
Ладієва Леся Ростиславівна __________

Засвідчую, що у цій магістерській


дисертації немає запозичень з праць
інших авторів без відповідних посилань.
Студент (-ка) _____________

Київ – 2020 року


Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Факультет інформатики та обчислювальної техніки
Кафедра автоматики та управління в технічних системах
Рівень вищої освіти – другий (магістерський)
Спеціальність – 121 «Інженерія програмного забезпечення»
Освітньо-професійна програма «Програмне забезпечення інформаційно-
комунікаційних систем»

ЗАТВЕРДЖУЮ
Завідувач кафедри
_______ Олександр РОЛІК
«___»_____________20__ р.

ЗАВДАННЯ
на магістерську дисертацію студенту
Ступницькому Антону Олексійовичу

1. Тема дисертації «Система статичного аналізу смарт-контрактiв», науковий


керівник дисертації Корнієнко Богдан Ярославович, професор каф. АУТС, д.т.н,
затверджені наказом по університету від «26» 10 2020 р. №3132-с

2. Термін подання студентом дисертації _______________________________


3. Об’єкт дослідження: процес забезпечення інформаційної безпеки смарт-
контрактів на базі платформи Ethereum
4. Перелік завдань, які потрібно розробити: 1. Виконати огляд предметної області
і літератури з теми дослідження. Визначити актуальність забезпечення
захищеності смарт-контрактів; 2. Виконати дослідження проблеми
інформаційної безпеки смарт-контрактів платформи Ethereum; 3. Розробити
статичний аналізатор смарт-контрактів на базі платформи Ethereum та порівняти
основні характеристики з характеристиками існуючого аналогу системи

5. Орієнтовний перелік графічного (ілюстративного) матеріалу: архітектура


EVM, структура розробленого аналізатора, алгоритм роботи, порівняльна
таблиця характеристик з існуючим аналогом

7. Орієнтовний перелік публікацій: міжнародна науково-практична конфенеція


«Winter InfoCom Advanced Solutions 2020

8. Дата видачі завдання 05.09.2020


Календарний план
№ Назва етапів виконання Строк виконання етапів
Примітка
з/п магістерської дисертації магістерської дисертації
1 Огляд літератури з теми дослідження 11.10.2020
Написання основної частини
2 21.10.2020
дисертації
3 Розробка стартап-проекту 12.11.2020
4 Оформлення магістерської дисертації 31.11.2020

Студент Антон Ступницький

Науковий керівник Богдан Корнієнко


РЕФЕРАТ

Робота містить 128 сторінок, 23 рисунка, 17 таблиць. Було використано 42


джерела.
Актуальність теми пояснюється тим, що в нинішній час спостерігається
тенденція зі збільшення кількості несанкціонованих доступів зловмисниками до
смарт-контрактів. Це призводить до необхідності оптимізації та покращення
методів захисту смарт-контрактів, які побудовані на базі платформи Ethereum.
Мета роботи: розробка статичного аналізатора смарт-контрактів на базі
платформи Ethereum.
Задачі дослідження:
1. Виконати огляд предметної області і літератури з теми дослідження.
Визначити актуальність забезпечення захищеності смарт-контрактів;
2. Виконати дослідження проблеми інформаційної безпеки смарт-
контрактів платформи Ethereum
3. Розробити статичний аналізатор смарт-контрактів на базі платформи
Ethereum та порівняти основні характеристики з характеристиками існуючого
аналогу системи
Об’єкт дослідження: процес забезпечення інформаційної безпеки смарт-
контрактів на базі платформи Ethereum
Предмет дослідження: Смарт-контракти, побудовані на платформі
Ethereum
Методи дослідження: аналізу, порівняння, статистики, дослідження.
Наукова новизна отриманих результатів полягає у вдосконаленні
існуючих методів захисту смарт-контрактів на базі платформи Ethereum.
Практичне значення одержаних результатів: розроблений статичний
аналізатор можна застосовувати для смарт-контрактів, які розроблені на
платформі Ethereum.
Апробація результатів дисертації. Результати досліджень опубліковані
на X Міжнародній науково-практичній конфенеції «Winter InfoCom Advanced
Solutions 2020».
Публікації. З теми магістерської дисертації опубліковані тези доповідей
на тему «Система статичного аналізу смарт-контрактів платформи Ethereum».
Представлена магістерська дисертація присвячена розробці статичного
аналізатора смарт-контрактів, які побудовані на базі платформи Ethereum.
Виконано огляд літератури з теми дослідження, за результатами якого визначено
актуальність забезпечення смарт-контрактів. Окрім того, розглянуто проблеми
інформаційної безпеки смарт-контрактів платформи Ethereum, за результатами
огляду сформовані вимоги до системи, а також показана актуальність оптимізації
існуючих рішень.
Представлено розробку статичного аналізатора, побудовано алгоритм
роботи і виконане тестування. Отримані характеристики системи були порівняні
з існуючими аналогами системи, в яких зазначені переваги розробленого
аналізатора над існуючими аналогами.
Ключові слова: смарт-контракт, інформаційна безпека, механізми
захисту, статичний аналізатор, алгоритм.
ABSTRACT

The work contains 128 pages, 24 figures, 17 tables. 42 sources were used.
The relevance of the topic is explained by the fact that currently there is a
tendency to increase the number of unauthorized access by criminals to smart contracts.
This leads to the need to optimize and improve the methods of protection of smart
contracts, which are based on the Ethereum platform.
Purpose: development of a static analyzer of smart contracts based on Ethereum
platform.
Objectives of research:
1. Review the subject area and literature on the research topic. Determine the
relevance of ensuring the security of smart contracts;
2. Carry out research on the problem of information security of smart contracts
of the Ethereum platform
3. Develop a static analyzer of smart contracts based on the Ethereum platform
and compare the main characteristics with the characteristics of the existing analogue
of the system
Object of research: the process of securing information security of smart
contracts based on Ethereum platform.
Subject of research: Smart contracts, encouraged on Ethereum platforms.
Research methods: analysis, comparison, statistics, research.
The scientific novelty of the obtained results is the improvement of existing
methods of protection of smart contracts based on the Ethereum platform.
Practical significance of the obtained results: the developed static analyzer can
be used for smart contracts developed on the Ethereum platform.
Approbation of dissertation results. The research results were published at the
X International Scientific and Practical Conference "Winter InfoCom Advanced
Solutions 2020".
Publications. On the topic of the master's dissertation published abstracts on
"The system of static analysis of smart contracts platform Ethereum."
In this paper, the static analysis system of the smart contracts on Ethereum
platform was developed. A review of the literature on the research topic was performed,
the results of which determined the relevance of providing smart contracts. In addition,
the problems of information security of smart contracts of the Ethereum platform are
considered, the results of the review form the requirements for the system, as well as
the relevance of optimizing existing solutions.
The development of a static analyzer is presented, the algorithm of work is built
and testing is performed. The obtained characteristics of the system were compared
with existing analogues of the system, which indicated the advantages of the developed
analyzer over existing analogues.
Keywords: smart contract, information security, protection mechanisms, static
analyzer, algorithm.
8

ЗМІСТ
ВСТУП.......................................................................................................................... 9
1 ОГЛЯД ПРЕДМЕТНОЇ ОБЛАСТІ І ЛІТЕРАТУРИ З ТЕМИ ДОСЛІДЖЕННЯ.
АКТУАЛЬНІСТЬ ЗАБЕЗПЕЧЕННЯ ЗАХИЩЕНОСТІ СМАРТ-КОНТРАКТІВ11
1.1 Поняття смарт-контракту ............................................................................... 11
1.2 Сфери застосування смарт-контрактів.......................................................... 16
1.3 Актуальність забезпечення захищеності смарт контрактів ........................ 24
2 АНАЛІЗ ПРОБЛЕМ ІНФОРМАЦІЙНОЇ БЕЗПЕКИ СМАРТ-КОНТРАКТІВ
ПЛАТФОРМИ ETHEREUM .................................................................................... 28
2.1 Аналіз проблем інформаційної безпеки........................................................ 28
2.2 Існуючі механізми захисту смарт-контрактів .............................................. 36
2.3 Формування вимог до статичного аналізатора ............................................ 40
3 РОЗРОБКА СТАТИЧНОГО АНАЛІЗАТОРА СМАРТ-КОНТРАКТІВ НА БАЗІ
ПЛАТФОРМИ ETHEREUM .................................................................................... 41
3.1 Необхідність оптимізації існуючих рішень.................................................. 41
3.2 Проектування архітектури і алгоритму роботи статичного аналізатора .. 43
3.3 Проектування програмного інтерфейсу........................................................ 48
3.4 Тестування та аналіз отриманих результатів ............................................... 55
4 РОЗРОБЛЕННЯ СТАРТАП-ПРОЕКТУ .............................................................. 59
4.1 Можливості запуску проекту .......................................................................... 60
4.2 Технологічний аудит ....................................................................................... 61
4.3 Розроблення ринкової стратегії проекту ....................................................... 61
4.4 Розроблення маркетингової програми стартап-проекту .............................. 68
4.5 Висновки до розділу ........................................................................................ 70
ВИСНОВКИ ............................................................................................................... 71
ПЕРЕЛІК ПОСИЛАНЬ ............................................................................................. 73
Додаток А. Вихідний код статичного аналізатора................................................. 78
9

ВСТУП

Безпека - одна з найважливіших характеристик будь-якої інформаційної


системи, в тому числі і смарт-контракту. Знання найслабших місць конкретної
мережі блокчейнів може допомогти розробникам зробити свої контракти менш
уразливими для різних вразливостей і атак.
За задумом смарт-контракти повинні виконуватися тільки при заздалегідь
визначених обставинах і бути повністю безпечними. Але, будучи просто ще
однією версією програмного забезпечення, вони схильні до безлічі проблем з
безпекою.
На сьогоднішній день існує декілька десятків платформ смарт-контрактів.
У деяких з них є свої мови для розробки смарт-контрактів, наприклад, Solidity на
платформі Ethereum. Решта дозволяють використовувати більш поширені мови
програмування, такі як C ++ в EOS або JavaScript. Але незалежно від мови,
помилки і уразливості в вихідному коді є основними причинами проблем
безпеки в смарт-контрактах.
Ще одним поширеним джерелом критичних помилок і вразливостей є
віртуальні машини, використовувані в мережі. Наприклад, віртуальна машина
Ethereum (EVM) схильна до кількох вразливостей: від проблем контролю
доступу до незмінних виявлень, викликаних помилками програмування в коді
контракту.
Ethereum - це проект з відкритим вихідним кодом, який представив
концепцію смарт-контрактів в тому вигляді, в якому ми її знаємо сьогодні. В
нинішній час спостерігається порушення інформаційної безпеки смарт-
контракта, який розроблений на базі платформи Ethereum. Порушення
інформаційної безпеки може призвести до крадіжки конфіденційних даних і, в
свою чергу, до негативних наслідків для користувачів.
Все вищенаведене говорить про необхідність вдосконалення
інформаційної безпеки смарт-контрактів. Одним із методів покращення
10

інформаційної безпеки є використання статичного аналізатора, що пояснює


актуальність магістерської дисертації.
Метою написання магістерської дисертації є розробка статичного
аналізатора смарт-контрактів на базі платформи Ethereum.
При написанні роботи були поставлені наступні задачі:
1. Виконати огляд предметної області і літератури з теми дослідження.
Визначити актуальність забезпечення захищеності смарт-контрактів;
2. Виконати дослідження проблеми інформаційної безпеки смарт-
контрактів платформи Ethereum;
3. Розробити статичний аналізатор смарт-контрактів на базі платформи
Ethereum та порівняти основні характеристики з характеристиками існуючого
аналогу системи.
Об’єкт дослідження: процес забезпечення інформаційної безпеки смарт-
контрактів на базі платформи Ethereum
Предмет дослідження: Смарт-контракти, побудовані на платформі
Ethereum
Методи дослідження: аналізу, порівняння, статистики, дослідження.
Наукова новизна отриманих результатів полягає у вдосконаленні
існуючих методів захисту смарт-контрактів на базі платформи Ethereum.
Практичне значення одержаних результатів: розроблений статичний
аналізатор можна застосовувати для смарт-контрактів, які розроблені на
платформі Ethereum.
Апробація результатів дисертації. Результати досліджень опубліковані
на X Міжнародній науково-практичній конфенеції «Winter InfoCom Advanced
Solutions 2020».
Публікації. З теми магістерської дисертації опубліковані тези доповідей
на тему «Система статичного аналізу смарт-контрактів платформи Ethereum».
11

1 ОГЛЯД ПРЕДМЕТНОЇ ОБЛАСТІ І ЛІТЕРАТУРИ З ТЕМИ


ДОСЛІДЖЕННЯ. АКТУАЛЬНІСТЬ ЗАБЕЗПЕЧЕННЯ ЗАХИЩЕНОСТІ
СМАРТ-КОНТРАКТІВ

1.1 Поняття смарт-контракту

Смарт-контракт - це контракт, умови угоди між контрагентами якого


вбудовані в рядки коду. По суті, смарт-контракт - це цифрова версія
стандартного паперового контракту, яка автоматично перевіряє виконання, а
також забезпечує виконання умов контракту [1].
Смарт-контракт виконується через мережу блокчейн, і код контракту
відтворюється на багатьох комп'ютерах, що входять в мережу. Це забезпечує
більш прозоре і безпечне сприяння і виконання договірних умов.
Більш того, смарт-контракти не потребують посередника для виконання,
тому що код смарт-контракту перевіряється усіма учасниками мережі блокчейн.
Усунення посередника з контракту допомагає істотно знизити витрати
контрагентів [2].
Концепція смарт-контрактів в першу чергу заснована на ідеї технології
блокчейн.
Блокчейн - це децентралізована мережа, що складається з постійно
зростаючого списку записів (блоків), пов'язаних з допомогою криптографії.
Мережа блокчейн не включає єдину центральну точку, як звичайна база даних.
Дані, що зберігаються в ланцюжку блоків, використовуються всіма
комп'ютерами, складовими мережі. Таким чином, мережа менш схильна до
можливих збоїв або атакам.
Крім того, в блокчейні запис на одному комп'ютері не може бути змінений
без зміни того ж запису на інших машинах в мережі. Транзакції, що виконуються
через ланцюжок блоків, згруповані в блоки, які безпосередньо пов'язані в
ланцюжок. Новий блок створюється тільки після завершення попереднього
12

блоку. Блоки розташовані в лінійному хронологічному порядку, і кожен блок


містить криптографічний хеш попереднього блоку [2].
Більшість смарт-контрактів написані на одній з мов програмування,
створених саме для цих цілей (наприклад, Solidity) [3].
Необхідно, щоб вхідні параметри та етапи виконання смарт-контракту
були конкретними і об'єктивними. Іншими словами, «якщо відбудеться Х - тоді
зробити Y». Отже, смарт-контракти виконують найпростіші завдання, наприклад
автоматично переводять криптовалюту з гаманця одного боку на гаманець
іншого, якщо дотримані необхідні умови.
У міру поширення блокчейна і збільшення коштів, що вкладаються в
токени або відправляються в рамках блокчейна (on-chain), смарт-контракти
будуть ускладнюватися і отримувати можливість обробляти складні транзакції
[4]. Багато розробників вже створюють більш складні смарт-контракти,
об'єднуючи в них кілька етапів транзакцій.
Перш ніж скомпільований смарт-контракт буде виконаний, потрібно
оплатити комісію за додавання контракту в блокчейн. Наприклад, в Ethereum
смарт-контракти виконуються у віртуальній машині Ethereum Virtual Machine
(EVM), а комісія в криптовалюті ether називається газом. Чим складніше смарт-
контракт, тим більше «газу» потрібно заплатити. Тобто газ - це своєрідний шлюз,
що захищає EVM від виконання дуже складних або чисельних смарт-контрактів
[4].
Переваги смарт-контрактів наступні [5]:
- Швидкість і точність: смарт-контракти є цифровими і автоматизованими,
тому користувачу не доведеться витрачати час на обробку документів або
погодження та виправлення помилок, які часто записуються в документи,
заповнені вручну. Комп'ютерний код також більш точний, ніж юридичний, на
якому пишуться традиційні контракти.
- Довіра: смарт-контракти автоматично виконують транзакції відповідно з
заздалегідь визначеними правилами, і зашифровані записи цих транзакцій
13

спільно використовуються учасниками. Таким чином, ніхто не повинен


сумніватися, чи була інформація змінена для особистої вигоди.
Безпека: записи транзакцій блокчейна зашифровані, тому їх дуже складно
зламати. Оскільки кожний окрема запис пов'язаний з попередніми і наступними
записами в розподіленому реєстрі, для зміни запису потрібно змінити весь
ланцюжок.
Економія: смарт-контракти усувають необхідність в посередниках,
оскільки учасники можуть довіряти видимим даними і технологіям для
правильного виконання транзакції. Немає необхідності в додатковій людині для
перевірки умов угоди, тому що вони вбудовані в код.
Термін «смарт-контракт» придумав близько 20 років тому фахівець з
інформатики криптограф Нік Сабо (Nick Szabo), який тоді був аспірантом
Вашингтонського університету.
Смарт-контракти «розумніші» паперових, тому що автоматично
виконують заздалегідь запрограмовані кроки. Але їх не можна розглядати як
інтелектуальні інструменти, здатні аналізувати більш суб'єктивні вимоги. Сабо
призводить класичний приклад смарт-контракту: це вендінговий автомат. Якщо
умови «контракту» влаштовують покупця (тобто, він опускає гроші в автомат),
то машина автоматично діє згідно з умовами угоди і надає покупку.
Ще один витік сучасних смарт-контрактів - Ricardian Contract. Ця ідея
з'явилася в 1996-му в роботі Ian Grigg і Gary Howland, присвяченій платіжній
системі Ricardo. Грігг представляв рікардіанський контракт як місток між
текстовими контрактами і кодом з наступними параметрами [5]:
1) контракт, який емітент пропонує утримувачам;
2) легко розуміється людьми (як і звичайний паперовий контракт);
4) зчитується програмами;
5) підписується цифровим чином;
6) містить ключі і інформацію про сервер;
7) поєднується з унікальним і захищеним ідентифікатором[6].
14

Приклад програмного коду логіки смарт-контракту представлений на


рисунку 1.1.

Рисунок 1.1 - Приклад програмного коду логіки смарт-контракту

У дискусіях про смарт-контракти викликає складності сам термін, який


використовується для двох різних парадигм.
Перша парадигма - смарт-контракти, які створюються і розгортаються без
обов'язкових до виконання текстових контрактів. Наприклад, дві сторони усно
домовляються, які ділові відносини хочуть встановити, і відразу переводять
домовленість в виконуваний код. Назвемо це «виключно програмні смарт-
контракти» (code-only smart contracts).
Друга парадигма - смарт-контракти, які застосовуються як засіб для
реалізації конкретних положень традиційного текстового контракту, текст якого
посилається на використання смарт-контракту для реалізації цих положень [7].
До теперішнього часу відсутня загальноприйнята класифікація смарт-
контрактів, але з точки зору виконання угод можуть бути виділені наступні види
смарт-контрактів:
15

- контроль майнових відносин - володіння і проведення операцій з


цифровими активами, включаючи криптовалюту і маркери (Bitcoin, EТН, XRP і
інші);
- фінансові сервіси - торгове фінансування, торгівля на біржі, участь в
аукціонах і інше;
- кредитні зобов'язання - виконання зобов'язань по різним формам
банківських кредитних продуктів в момент настання подій;
- соціальні сервіси - процедури проведення голосувань, виборів, процеси
страхування;
- організація управління доставкою і зберіганням товарів.
Практика використання смарт-контрактів на сьогоднішній день зводиться
в основному до часткової автоматизації окремих аспектів угод, таких як обмін
цифровими активами, наприклад обмін грошових коштів на майнові права.
Характеристики смарт-контракту представлені на малюнку 1.2.

Рисунок 1.2 - Характеристики смарт-контрактів


16

В роботі [8] вказується, що смарт-контракти - це різновид облікового


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

1.2 Сфери застосування смарт-контрактів

У світовій практиці смарт-контракти пілотуються і застосовуються в


фінансовому секторі, в тому числі в банківській сфері і сфері страхування, в
державному секторі, при первинному розміщенні токенів (ICO), а також в інших
сферах, наприклад в угодах парі і лотереях. При цьому в даний час використання
смарт-контрактів обмежене через відсутність їх законодавчого регулювання та
захисту прав учасників [8].
Банківський сектор в основному здійснює свою діяльність на основі
договірних угод. Умови цих контрактів підлягають виконанню третіми
сторонами в разі порушення умов. Індивідуальний підхід до кожного клієнта -
повільний і дорогий процес для «гравців» банківської галузі. Наявність цих умов
в мережі, яка автоматично виконує контракти, відкриває безліч можливостей для
банківської галузі.
Обробка страхових претензій. Врегулювання страхових вимог часто
вимагає оцінки законності претензії і зустрічної перевірки умов контракту для
підтвердження претензії. Цей процес часто затягується, тому що страховики
прагнуть суворо виключати шахрайські претензії. У деяких випадках претензії
часто призводять до судових розглядів, що може привести до незадоволеності
кожної зі сторін контракту.
17

Завдяки технології блокчейн смарт-контракти пропонують автоматизовану


обробку страхових претензій для банківського сектора. Смарт-контракти
дозволяють клієнту подати заявку, яка потім автоматично підтверджується
кодами, записаними в мережі блокчейн. Перевірка включає в себе оцінку вимог
для перевірки їх законності, а потім автоматичне виконання умов контракту,
наприклад, компенсацію потерпілому.
Грошові перекази в реальному часі. Банки обробляють кілька транзакцій
для своїх клієнтів. Обробка цих транзакцій може сповільнитися через
накопичення. Крім того, банки беруть участь в ділових операціях з іншими
підприємствами, включаючи постачальників і основних партнерів.
Переказ коштів цим підприємствам часто є регулярним, і затримка з
перекладом може погіршити ділові відносини. Впровадження системи грошових
переказів на основі смарт-контрактів спрощує обробку платежів постачальникам
і переказ коштів клієнтам та іншим зацікавленим сторонам.
Деякі банки звернулися за послугами з розробки смарт-контрактів для
прискорення грошових переказів при збереженні точності та прозорості,
оскільки коди смарт-контрактів незмінні і розподіляються в мережі.
Крім того, смарт-контракти прискорюють розрахунки, так як після
завершення угоди деталі транзакцій автономно перевіряються між банком і
клієнтом, і розрахунки обробляються.
Прозорий аудит. Традиційні контракти часто ґрунтуються на суворих
правилах, що вимагають від банків великих вкладень в оформлення документів
для ведення обліку. Це явище є причиною повільної цифровізації банківської
галузі. Оскільки банки надають різні послуги, такі як фінансування торгівлі і
надання кредитів, вони зобов'язані вести облік кожного виду діяльності.
Ці записи часто можуть бути змінені і можуть привести до невірної
інформації. Рішення для розробки смарт-контрактів для банків включають в себе
необхідні інструменти для бухгалтерського обліку, засновані на непідкупних
кодах в мережі блокчейн.
18

Рішення поширюються в мережі для підвищення прозорості збережених


записів. Таким чином, банки виключають можливість проникнення в свої
бухгалтерські записи і, отже, позбавляються від втрати коштів в бізнесі.
Смарт-контракти також можуть бути розгорнуті в банках на загальних
зборах, щоб розширити участь зацікавлених сторін за допомогою голосування за
дорученням. Технологія дозволяє всім зацікавленим сторонам прозоро брати
участь в ухваленні рішень [9].
Фінансуючи торговельну діяльність або пропонуючи позику клієнтові,
банк повинен підтвердити особистість клієнта. Крім того, пропонуючи
синдиковані кредити, банки повинні підтвердити особистість клієнта. Процес
отримання таких даних, як кредитні історії, від інших організацій може бути
важким і, ймовірно, дорогим для банків.
Банки, які впроваджують систему смарт-контрактів для своїх операцій,
можуть легко ділитися кредитними рейтингами окремих осіб і перевіряти їх
особистість на основі записів в ланцюжку блоків. Крім того, смарт-контракти
будуть сприяти дотриманню відповідних вимог, таких як податкові декларації,
для клієнтів, забезпечуючи обробку звітів про транзакції клієнтів в режимі
реального часу.
Банки можуть значно виграти, прийнявши смарт-контракти для своїх
систем. Всі обговорювані можливості є каналом мінімізації витрат на поточні
операції, особливо адміністративних. Банки також обмежують ймовірність
помилкових записів і підвищують прозорість. Таким чином банки поліпшать
суспільні відносини з клієнтами і, як наслідок, вражаючу ступінь їх
задоволеності. Смарт-контракти також допомагають мінімізувати ризики, з
якими можна зіткнутися під час операцій, наприклад, компенсація шахрайських
вимог.
З прикладної точки зору блокчейн - це інновація, яка базується на трьох
концепціях: мережа P2P, асиметрична криптографія і розподілений консенсус на
основі рішення математичних задач.
19

Блокчейн може розглядатися як синхронізована БД з такою кількістю


копій, як і вузлів в мережі.
Блоки в даній технології представлені у вигляді рисунку 1.3.

Рисунок 1.3 - Блоки в технології Блокчейн

Блок будується з назви і списку транзакцій. Назва складається зі свого хеш-


значення, хеша попереднього блоку, хеша транзакцій і додаткової інформації
(рисунок 1.4). Наприклад, перша транзакція - отримання комісії, яке потім стане
винагородою для користувача, який створив блок [9].

Рисунок 1.4 - Дерево Меркеля


20

Хешування - метод, який приймає на вхід інформацію різної довжини і


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

Рисунок 1.5 - Приклад результатів хешування

В рамках виконання магістерської дисертації будуть розглядатися смарт-


контракти на платформі Ethereum.
В основі протоколу і роботи Ethereum лежить віртуальна машина Ethereum,
або скорочено EVM. Як можна здогадатися з назви, це обчислювальний механізм,
який не сильно відрізняється від віртуальних машин Microsoft .NET Framework або
LLVM або інтерпретаторів інших мов програмування, скомпільованих за
допомогою байт-коду, таких як Java.
EVM є частиною Ethereum, яка займається розгортанням і виконанням
інтелектуальних контрактів. Прості транзакції перенесення значень з одного EOA
(Externally Owned Account) в інший не вимагають його участі, практично, але все
інше буде включати оновлення стану, що обчислюється EVM.
На високому рівні EVM, що працює на блокчейні Ethereum, можна уявити
як глобальний децентралізований комп'ютер, що містить мільйони виконуваних
об'єктів, кожен зі своїм власним постійним сховищем даних.
EVM - це квазі кінцевий автомат Тюрінга; «Квазі», тому що всі процеси
виконання обмежені кінцевим числом обчислювальних кроків - кількістю газу,
доступного для будь-якого виконання контракту.
21

Таким чином, проблема зупинки «вирішена» (все виконання програми буде


зупинено), і виключається ситуація, коли виконання може (випадково або
зловмисно) виконуватися вічно (що призводить до повної зупинки платформи
Ethereum).
EVM має стекову архітектуру, що зберігає всі значення в пам'яті в стеку.
Платформа працює з розміром слова 256 біт (в основному для спрощення операцій
хешування і еліптичної кривої) і має кілька адресованих компонентів даних:
1. Постійний програмний код ПЗП, завантажений байт-кодом смарт-
контракту;
2.Енергозалежна пам'ять, де кожне місце розташування явно ініціалізується
нулем;
3.Постійне сховище, що є частиною стану Ethereum, також ініціалізується
нулями.
Існує також набір змінних середовища і даних, доступних під час
виконання.
Архітектура EVM представлена на рисунку 1.6.

Рисунок 1.6 - Архітектура EVM


22

Арифметичні інструкції коду операції:


MUL // множимо два верхні елементи стека
SUB // віднімаємо два верхні елементи стека
DIV // Цілочисельний розподіл
SDIV // Цілочисельний розподіл зі знаком
MOD // Операція по модулю (залишок)
SMOD // Підпис по модулю
ADDMOD // Додавання по модулю будь-якого числа
MULMOD // Множення по модулю будь-якого числа
EXP // Експоненціальна операція
SIGNEXTEND // розширити довжину цілого числа зі знаком до двох
SHA3 // обчислити хеш Keccak-256 блоку пам'яті
Розглянемо ще кілька прикладів операцій.
Системні Операції
Коди операцій для системи, яка виконує програму:
LOGx // Додаємо запис журналу з темами + x +, де + x + - будь-яке ціле число
від 0 до 4 включно.
CREATE // Створити новий обліковий запис з відповідним кодом
CALL // Повідомлення-виклик в інший обліковий запис, тобто запуск коду
іншого облікового запису
CALLCODE // Повідомлення-виклик в цей обліковий запис з кодом іншого
облікового запису
RETURN // Зупинити виконання і повернути вихідні дані
DELEGATECALL // Повідомлення-виклик в цей обліковий запис з кодом
альтернативного облікового запису, але зі збереженням поточних значень
відправника і значення
STATICCALL // Статичне повідомлення-дзвінок в обліковий запис
REVERT // Зупинити виконання, повертаючи зміни стану, але повертаючи
дані
INVALID // Зазначена невірна інструкція
23

Приклад найпростішого контракту:


// Our first contract is a faucet!
contract Faucet {

// Give out ether to anyone who asks


function withdraw (uint withdraw_amount) public {

// Limit withdrawal amount


require (withdraw_amount <= 100000000000000000);

// Send the amount to the address that requested it


msg.sender.transfer (withdraw_amount);
}

// Accept any incoming amount


function () public payable {}

}
Газ є найважливішим компонентом Ethereum і виконує подвійну роль: як
буфер між мінливою ціною Ethereum і винагородою Майнерам за виконану ними
роботу, а також як захист від атак відмови в обслуговуванні.
Щоб запобігти випадкові або зловмисні нескінченні цикли або інші
обчислювальні втрати в мережі, ініціатор кожної транзакції повинен встановити
обмеження на кількість обчислень, за які вони готові платити.
Таким чином, газова система позбавляє зловмисників можливості
відправляти «спамові» транзакції, оскільки вони повинні платити пропорційно
за обчислювальні ресурси, пропускну здатність і ресурси зберігання, які вони
споживають.
Коли EVM необхідний для завершення транзакції, в першому випадку йому
надається подача газу, що дорівнює кількості, яка зазначена лімітом газу в
транзакції. Кожен виконуваний код операції має вартість газу, тому подача газу
EVM скорочується в міру виконання програми EVM. Перед кожною операцією
EVM перевіряє, чи достатньо газу для оплати виконання операції.
Якщо не вистачає газу, виконання зупиняється і транзакція скасовується.
Однак ініціатор транзакції як і раніше платить за весь спожитий газ за вказаною
ціною.
24

Ліміт блочного газу - це максимальна кількість газу, яка може споживатися


усіма транзакціями в блоці, і обмежує кількість транзакцій, які можуть
поміститися в блок.
Наприклад, скажімо, у нас є 5 транзакцій, чиї ліміти на газ були встановлені
на 30 000, 30 000, 40 000, 50 000 і 50 000. Якщо ліміт газу блоку становить 180 000,
будь-які чотири з цих транзакцій можуть поміститися в блоці, в той час як п'ятій
доведеться чекати майбутнього блоку. Як зазначалося раніше, Майнер вирішує,
які транзакції включити в блок. Різні Майнери, ймовірно, оберуть різні комбінації,
головним чином тому, що вони отримують транзакції з мережі в іншому порядку
[10].

1.3 Актуальність забезпечення захищеності смарт контрактів

В роботі [11] зазначено, що кодування безпечного смарт-контракту є


надзвичайно складним завданням.
Цей факт призвів до того, що MIT Technology Review і інші журнали
опублікували статті, в яких стверджувалося, що смарт-контракти Ethereum повні
вразливостей [12].
Цей висновок в основному заснований на дослідній роботі [13], в якій
зазначається, що «аналіз майже одного мільйона смарт-контрактів зазначає 34
200 контрактів як вразливі». Інше дослідження показало, що більше 45% смарт-
контрактів, написаних на Solidity, мають ту чи іншу форму уразливості.
Більшість смарт-контрактів мають уразливості, стандарти розробки
залишають великі можливості для поліпшення, а попит на ресурси аудиту
перевищує. Незважаючи на те, що смарт-контракти побудовані на захищених
блокчейн-мережах, вони часто містять помилки, бекдори і лазівки, готові до
експлуатації.
В роботі [13] також визначена наступні дві проблеми смарт-контрактів:
25

1. У порівнянні з традиційною розробкою програмного забезпечення, в


дисципліні програмування смарт-контрактів відсутні стандартизовані передові
практики.
2. Смарт-контракти засновані на нестандартному життєвому циклі
програмного забезпечення, відповідно до якого програми, які поставляються, не
можуть бути оновлені або виправлені.
Існує також той факт, що багато з крипто-токенів стали представляти таку
значну цінність, що зловмисники дуже зацікавлені в пошуку і використанні
помилок в контрактах, які обробляють або зберігають їх безпосередньо для
отримання прибутку
Крім того, бум блокчейнів викликав різке зростання потреби в розробників
смарт-контрактів.
Блокчейн став самим швидкозростаючим навиком з більш ніж 5000
навичок з точки зору виставлення рахунків фрілансерам - зростання більш ніж
на 35000% за рік».
В результаті багато недосвідчених розробників програмного забезпечення
було найнято тільки для задоволення попиту.
Таким чином, існуючі розподілені системи дають зловмисникам значні
можливості для здійснення загроз, що порушують властивості інформаційної
безпеки.
У період 2010-2020 року було вироблено значну кількість атак на смарт-
контракти.
Хакери в період 2015-2020 зламали більше 14% поставок криптовалюти
[12].
Розглянемо деякі приклади хакерських атак.
1. DAO Hack. DAO- це децентралізована автономна організація, яка працює
по закодованими правилами. Рішення приймаються в електронному вигляді за
допомогою письмового комп'ютерного коду або шляхом голосування членів
організації, що усуває необхідність в документах і, отже, в системі
децентралізованого контролю.

You might also like