Блокчейн

Блокчейн (англ. blockchain, block chain[1] від block — блок, chain — ланцюг, тобто ланцюжок блоків) розподілена база даних, що зберігає впорядкований ланцюжок записів (так званих блоків), що постійно довшає.[2][3] Кожен блок містить часову позначку, хеш попереднього блоку та дані транзакцій, подані як хеш-дерево.[4]:6[5] Інформація про транзакції зазвичай надається відкритою, не шифрованою. Захистом від підробки та спотворення слугує включення хешу всього блоку у наступний блок. Тому внесення змін в один з блоків вимагає відповідних змін в усіх блоках після нього, що зазвичай виявляється або дуже складно, або дуже коштовно.

Таку розподілену базу даних закладено в основу криптовалюти Bitcoin (вона була описана 2008 і реалізована 2009 року). По суті, це своєрідна книга обліку всіх операцій.[2]

Історія

Кількість транзакцій біткоіна по днях (Січень 2009 — Вересень 2017)

Перша робота над криптографічно захищеним ланцюгом блоків була описана 1991-го року Стюартом Хабером (англ. Stuart Haber) та У. Скоттом Сторнеттою (англ. W. Scott Stornetta).[6][3] Вони хотіли запровадити систему, де часові позначки документів неможливо спотворити чи пошкодити. 1992-го року Байєр, Хабер і Сторнетта використали в проекті дерево Меркла, що покращило ефективність, дозволяючи включати в один блок декілька документів.[3][7]

Задум першого блокчейну було розроблено людиною (або гуртком людей), відомою як Сатоші Накамото 2008-го року. Цей задум Накамото втілив наступного року, розробивши основний складник криптовалюти Bitcoin, де він служить відкритою книгою обліку для всіх транзакцій в мережі.[2] Завдяки блокчейну, Bitcoin став першою цифровою валютою, де проблему подвійних витрат було вирішено без залучення довірених вузлів або централізованого сервера. Відтак устрій Bitcoin став взірцем для багатьох інших застосувань.[8]

У серпні 2014 р. розмір блокчейн-файлу Bitcoin, що містить відомості про всі транзакції мережі, сягнув 20 Гб (гігабайтів).[9] У січні 2015 року розмір зріс до майже 30 Гб, а з січня 2016 року по січень 2017 року Bitcoin блокчейн виріс з 50 ГБ до 100 ГБ.[10]

Слова «блок» і «ланцюг» використовувались окремо в первинній роботі Сатоші Накамото, але потім, з 2016 року, вони стали вживатись як одне слово — блокчейн. Термін блокчейн 2.0 належить до нових застосувань розподіленої блокчейн бази даних, яка вперше виникла 2014 року.[11] The Economist описав одну з реалізацій цього блокчейну другого покоління як «мову програмування, що дозволяє користувачам писати більш складні та витончені угоди, створюючи таким чином рахунки-фактури, які сплачують себе після доставки товару, або сертифікати, що самі надсилають своїм власникам дивіденди, щойно прибуток сягає певного рівня». Очікується, що вони допоможуть людям інтегруватись у світову економіку, захистять конфіденційність учасників, дозволять людям «монетизувати свою власну інформацію» та забезпечать творцям компенсацію за їхню інтелектуальну власність. Технологія блокчейн другого покоління дозволяє зберігати «стійкий цифровий ідентифікатор та особу» індивідуума та надає просунутий шлях вирішення проблеми суспільної нерівності шляхом «потенційної зміни способів розподілу багатства».

У травні 2018 року Gartner з'ясував, що лише 1 % ІТ-директорів з інформаційних технологій заявляли про будь-яке використання блокчейнів у своїх компаніях, а лише 8 % директорів «планували або розглядають можливість спробувати використання блокчейну» найближчим часом.[12]

Блок транзакцій

Блок транзакцій — спеціальна структура для запису нових транзакцій в системі Біткоїн та аналогічних їй[13].

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

Щоб транзакція вважалася достовірною («підтвердженою»), її формат та підписи мусять перевірити й записати (разом з іншими транзакціями) в новий блок. Але справді надійна перевірка достовірності транзакції потребує наявності декількох наступних блоків. Кожен наступний блок посилається на попередній, тож усі блоки можна вишикувати в один ланцюжок, що являтиме собою історію транзакцій за ввесь час існування системи. Перший блок ланцюжка первинний блок (англ. genesis block) — то окремий випадок, бо в нього відсутній материнський блок[14].

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

Далі йдуть всі або деякі з останніх транзакцій, які ще не були записані в попередні блоки. Для транзакцій в блоці використовується деревисте хешування[15], аналогічне формуванню хеш-суми файлу в протоколі BitTorrent. Транзакції, крім нарахування комісії за створення блоку, містять всередині атрибута input посилання на транзакцію, за якою на цей рахунок були отримані біткоїни. Комісійні операції можуть містити в атрибуті будь-яку інформацію (для них це поле носить назву англ. Coinbase parameter), оскільки у них немає батьківських транзакцій.

Створений блок буде прийнятий іншими користувачами, якщо числове значення хешу заголовка менше або дорівнює певному числу, величина якого періодично коригується. Оскільки результат хешування (функції SHA-256) необоротний, немає алгоритму отримання бажаного результату, окрім повного перебору чи пошуку навмання. Якщо хеш не задовольняє умову, то довільно змінюється блок службової інформації в заголовку, а хеш обчислюється знов. Зазвичай потрібно чимало переобчислень. Коли умову дотримано, вузол висилає створений блок іншим підключеним вузлам, а ті його перевіряють. Якщо помилок немає, то блок вважається доданим в ланцюжок, і вже його хеш міститиме наступний блок[13].

Величина цільового числа, з яким порівнюється хеш, коригується через кожні 2016 блоків. Заплановано, що вся мережа витрачатиме на створення одного блоку приблизно 10 хвилин, на 2016 блоків — близько двох тижнів. Якщо 2016 блоків сформовано швидше, то ціль трохи зменшують і досягти її стає важче, інакше ціль збільшують. Зміна складності обчислень не впливає на надійність мережі Біткоїн і потрібна лише для того, щоб система створювала блоки з майже постійною швидкістю незалежно від потужності мережі[16].

Ланцюжок блоків

Основна послідовність блоків (чорні) є найдовшою від початкового (зелений) до поточного. Побічні гілки (фіолетові) відсікаються.

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

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

Кожну транзакцію переказу коштів, що містилась лише у відхилених гілках, знов буде поставлено в чергу, а відтак включено в черговий блок. Натомість транзакції з одержання винагороди за створення відхилених зрештою блоків не отримають дальших підтверджень і відповідні «зайві» кошти буде втрачено[15].

Розподілена база даних Blockchain — це ланцюжок блоків, що постійно зростає, зберігаючи всю історію транзакцій. Копія бази даних або її частини одночасно зберігаються на безлічі комп'ютерів та синхронізуються відповідно до формальних правил побудови ланцюжка блоків. Дані блоків не шифровані і доступні у відкритому вигляді, проте захищені від змін криптографічно через хеш-ланцюжок[17].

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

До версії 0.8.0 для зберігання ланцюжка блоків основний клієнт використовував Berkeley DB, починаючи з версії 0.8.0 розробники перейшли на LevelDB[18].

Підтвердження транзакцій

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

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

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

Для зменшення впливу таких ситуацій на мережу існують обмеження на розпорядження щойно отриманими біткоїнами. Згідно сервісу blockchain.info до травня 2015 року максимальна довжина відкинутих ланцюжків була 5 блоків[20]. Необхідне число підтверджень для розблокування отриманого залежить від програми-клієнта або від вказівок приймаючої сторони. Клієнт «Bitcoin-qt» для відправлення не потребує наявності підтверджень, однак у більшості одержувачів за замовчуванням виставлено вимогу 6 підтверджень, тобто реально скористатися отриманим зазвичай можна через годину. Різні онлайн-сервіси часто встановлюють свій поріг підтверджень.

Біткоїни, отримані за створення блоку, протокол дозволяє використовувати після 100 підтверджень[21], але стандартна програма-клієнт показує комісію через 120 підтверджень, тобто зазвичай скористатися комісією можна приблизно через 20 годин після її нарахування.

«Подвійне витрачання»

Якщо контролювати понад 50 % сумарної обчислювальної потужності мережі, то існує теоретична можливість при будь-якому порозі підтверджень одні і ті ж біткоїни передати два рази різним одержувачам[22] — одна з транзакцій буде публічною і буде підтверджуватися в загальному порядку, а друга не буде афішуватися, її підтвердження відбуватиметься блоками прихованої паралельної гілки. Лише через деякий час мережа отримає відомості про другу транзакцію, вона стане підтвердженою, а перша втратить підтвердження і буде ігноруватися. В результаті не відбудеться подвоєння біткоїнів[23], але зміниться їхній поточний власник, при цьому перший отримувач втратить біткоїни без будь-яких компенсацій.

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

Подвійне витрачання біткоїнів на практиці ніколи не було зафіксовано. На травень 2015 року паралельні ланцюжки ніколи не перевищували 5 блоків.[20]

Складність

За вимогу до хешів блоків відповідає спеціальний параметр, званий «складність».

Оскільки обчислювальні потужності мережі непостійні, цей параметр перераховується клієнтами мережі через кожні 2016 блоків таким чином, щоб підтримувати середню швидкість формування розподіленої БД на рівні 2016 блоків за два тижні. Таким чином 1 блок повинен створюватися приблизно раз на десять хвилин. На практиці, коли обчислювальна потужність мережі зростає — відповідні часові проміжки коротші, а коли знижується — довші[24].

Перерахунок складності з прив'язкою до часу можливий завдяки наявності в заголовках блоків часу їх створення. Він записаний в Unix-форматі і взятий за системним годинником автора блоку (якщо блок створений у пулі, то за системним годинником сервера цього пулу)[25].

Використання

В 2016 році Міжнародною організацією зі стандартизації (ISO) було створено комітет для напрацювання міжнародного стандарту з технологій блокчейн[26].

Україна

В 2017 році технологія блокчейн була використана для оновленої системи електронних торгів арештованим майном СЕТАМ. У жовтні 2017 року із використанням блокчейн було реалізовано оновлену версію інформаційної системи державного земельного кадастру[27].

У світі

Мер столиці Південної Кореї оголосив про намір зробити з Сеула «розумне» місто на блокчейні. Стратегія, що має назву Blockchain Urban Plan, розрахована на 2018—2022 роки. Загалом інновації охоплять 14 державних служб у 5 галузях. Основні служби, які переведуть на блокчейн, — це соцзабезпечення, архів експлуатації транспортних засобів, видача сертифікатів, керування пожертвами та система голосування.[28]

Військова сфера

Різні випадки потенційного використання блокчейну у мультидоменних операціях обговорюються у військових спільнотах[29]. У цьому контексті блокчейн визначають як цифрову інформаційну систему для передачі даних у зашифрованому розподіленому форматі на полі бою в різних доменах. Вважається, що технологія блокчейну є перехідною від традиційної мережі даних до використання квантово заплутаного зв’язку[29]. До переліку можливих випадків застосування блокчейну у військових операціях слід віднести крипто-захищену цифрову ідентифікацію та доступ до цифрових близнюків, смарт-контракти як процедуру видачі наказів військам і виконання логістичних запитів, обмін даними доповненої реальності на полі бою, моніторинг здоров'я солдат та стану озброєння чи військової техніки тощо[29]. З іншого боку, технологію блокчейну слід поєднувати з машинним навчанням. Як приклад, блокчейн доцільно використовувати для узгодженого оновлення кількох ідентичних нейронних мереж дронів у складі рою з метою адаптації до нових ситуацій або підвищення точності[29].

Примітки

  1. Satoshi, 2008, с. 2-3.
  2. Economist Staff (31 жовтня 2015). Blockchains: The great chain of being sure about things. The Economist. Процитовано 18 червня 2016. «[Subtitle] The technology behind bitcoin lets people who do not know or trust each other build a dependable ledger. This has implications far beyond the crypto currency.»
  3. Narayanan, Arvind; Bonneau, Joseph; Felten, Edward; Miller, Andrew; Goldfeder, Steven (2016). Bitcoin and cryptocurrency technologies: a comprehensive introduction. Princeton: Princeton University Press. ISBN 978-0-691-17169-2.
  4. Blockchain. Investopedia. Процитовано 19 березня 2016. «Based on the Bitcoin protocol, the blockchain database is shared by all nodes participating in a system.»
  5. «Merkle trees are a fundamental part of what makes blockchains tick.», blog.ethereum.org/2015
  6. Haber, Stuart; Stornetta, W. Scott (January 1991). How to time-stamp a digital document. Journal of Cryptology 3 (2): 99–111. doi:10.1007/bf00196791. Процитовано 4 липня 2017.
  7. Bayer, Dave; Haber, Stuart; Stornetta, W. Scott (March 1992). Improving the Efficiency and Reliability of Digital Time-Stamping. Sequences 2: 329–334. doi:10.1007/978-1-4613-9323-8_24. Процитовано 4 липня 2017.
  8. Nakamoto, Satoshi (October 2008). Bitcoin: A Peer-to-Peer Electronic Cash System. bitcoin.org. Архів оригіналу за 20 березня 2014. Процитовано 28 квітня 2014.
  9. Nian, Lam Pak; Chuen, David LEE Kuo (2015). A Light Touch of Regulation for Virtual Currencies. У Chuen, David LEE Kuo. Handbook of Digital Currency: Bitcoin, Innovation, Financial Instruments, and Big Data. Academic Press. с. 319. ISBN 978-0-12-802351-8.
  10. Blockchain Size. Blockchain. Blockchain Luxembourg S.A. Архів оригіналу за 3 березня 2017.
  11. Bheemaiah, Kariappa (January 2015). Block Chain 2.0: The Renaissance of Money. Wired. Архів оригіналу за 14 листопада 2016. Процитовано 13 листопада 2016.
  12. Hype Killer - Only 1% of Companies Are Using Blockchain, Gartner Reports | Artificial Lawyer. Artificial Lawyer (en-GB). 4 травня 2018. Процитовано 22 травня 2018.
  13. Satoshi, 2008, с. 3.
  14. Genesis Block, Block 0 (англ.). Процитовано 21 грудня 2015.
  15. Satoshi, 2008, с. 4.
  16. Finding 2016 Blocks (англ.). Процитовано 21 грудня 2015.
  17. Satoshi, 2008, с. 5.
  18. Релиз Bitcoin 0.8.0 - OpenSource - Новости. Архів оригіналу за 13 березня 2013. Процитовано 22 лютого 2013.
  19. Bitcoin is under attack (англ.). Процитовано 21 грудня 2015.
  20. Число брошенных блоков (англ.). Процитовано 21 грудня 2015.
  21. Bitcoin Developer Examples (англ.). Процитовано 21 грудня 2015.
  22. Статья о вероятности Double Spending атаки (англ.). Архів оригіналу за 21 травня 2013. Процитовано 17 травня 2016.
  23. Satoshi, 2008, с. 6-8.
  24. Графики изменения сложности сети Bitcoin (англ.). Процитовано 21 грудня 2015.
  25. Bitcoin hash (англ.). Процитовано 21 грудня 2015.
  26. Paul Rosenzweig (19 серпня 2017). Blockchain Standards. Lawfare.
  27. Державний земельний кадастр перейшов на технологію Blockchain. Міністерство аграрної політики та продовольства України. 03.10.2017. Архів оригіналу за 03.10.2017. Процитовано 03.10.2017.
  28. До 2022 року Сеул стане розумним містом на блокчейні. Tokar.ua (uk-UA). 25 жовтня 2018. Процитовано 6 листопада 2018.
  29. Slyusar V.I. Blockchain technology in future multi-domain operations.// Збірник матеріалів науково-практичної конференції “Застосування Сухопутних військ Збройних Сил України у конфліктах сучасності”.– Львів: Національна академія Сухопутних військ імені гетьмана Петра Сагайдачного. Науковий центр Сухопутних військ. – 18 листопада 2021 року. - С. 210 - 211.

Література

  • Melanie Swan. Blockchain: Blueprint for a New Economy. — 2015. — 152 p. — ISBN 978-1-4919-2047-3.
  • Pedro Franco. Understanding Bitcoin: Cryptography, Engineering and Economics. — John Wiley & Sons, 2014. — 288 p. — ISBN 978-1-119-01916-9.
  • Andreas M. Antonopoulos. 7. The Blockchain // Mastering Bitcoin. — 2014. — ISBN 978-1-4493-7404-4.
  • Nakamoto, Satoshi (2008). Bitcoin: A Peer-to-Peer Electronic Cash System. Bitcoin.org. Процитовано 31 жовтня 2008.
  • Дон Тепскотт, Алекс Тепскотт. «Блокчейн-революція». Переклад з англійської Юлії Григоренко, Ганни Лелів. Львів: Видавництво «Літопис», 2019. 492 с. ISBN 966-8853-58-6

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.