А вам нравится «BIS Journal»?

Присоединяйтесь к обществу профессионалов по информационной безопасности.

«BIS Journal» рекомендует!
Нажмите МНЕ НРАВИТСЯ!

22 января, 2018«BIS Journal» № 4(27)/2017

Перцев Алексей

специалист Департамента аудита защищенности (Digital Security)


Большие достоинства – большие недостатки

Блокчейн, криптовалюты и вот это вот все

ОСНОВНЫЕ ПОНЯТИЯ

Прежде, чем мы начнем непосредственно рассматривать основные тендеции мира криптовалют, стоит определиться с ключевыми понятиями.

Блокчейн (blockchain) Если не вдаваться в детали, блокчейн – это постоянно растущий список записей, называемых блоками (block), которые связаны в цепочку (chain) с помощью криптографии. Каждый блок содержит время его создания, набор транзакций (не обязательно денежных) и криптографический хеш[1] предыдущего блока (так они и связываются в целочку). Он похож на бухгалтерскую книгу, хранящую транзакции между участниками сети, причем у каждого участника есть своя копия этой книги, и он взаимодействует с другими непосредственно, то есть напрямую (peer-to-peer network). Благодаря особенностям дизайна, блокчейн устойчив к «редактированию» данных – единожды внесенная запись не может быть изменена без изменения всех лежащих ниже блоков (это является сложной математической задачей, на практике не разрешимой).

Идея блокчейна появилась уже давно (1991 г.)[2], однако впервые получила практическое применение для создания криптовалюты Bitcoin в 2008 году.

Криптовалюта (на примере Bitcoin) В основе каждой[3] криптовалюты лежит идея блокчейна – все новые транзакции пользователей сети собираются в блок, и далее находится его хеш для помещения в цепочку. Эта операция может быть выполнена любым участником сети, причем в блокчейн будет помещен блок того, кто это сделает первым. На данном этапе любую криптовалюту поджидает нюанс (оставим в стороне проверку действительности самих транзакций). Нахождение хеша от данных произвольной длины занимает у современных компьютеров мгновение, поэтому теоретически любой может переписать всю историю блокчейна в свою пользу. Чтобы этого не происходило, любой криптовалюте нужен некий механизм консенсуса, который позволял бы всем участникам сети убедиться в существовании одной и единственной версии блокчейна, а также делал бы нахождение хеша блока сложной, алгоритмически неразрешимой задачей, либо каким-либо другим способом реализовывал децентрализацию.

В криптовалюте Bitcoin такой механизм консенсуса называтся proof-of-work. Заключается он в следующем: для всех участников сети объявляется правило, согласно которому полученный хеш блока должен быть меньше определенного числа или, как еще говорят, должен быть «красивым», т.е. содержать определенное количество нулей в начале, например, «00000000000000001e8d6829a8a21adc5d38d0a473b144b6765798e61f98bd1d»[4]. Это и является неразрешимой задачей – нельзя написать алгоритм, выдающий такие хеши для произвольных данных. Поэтому участники используют для своих целей перебор – добавляют некий кусочек данных (nonce) в блок, выполняют хеширование и проверяют, выполнено ли условие proof-of-work. Если оно не выполнено, то изменяют nonce и повторяют заново. Этот процесс называется майнингом (mining), а участников, выполняющих эту работу, именуют «майнерами». Майнер, нашедщий подходящий хеш, получает вознаграждение – так, помимо прочего, образуются новые монеты в сети (эммисия).

Таким образом, заранее неизвестно, кто именно найдет хеш для следующего блока – за счет этого достигается децентрализация, а также это дает возможность участникам не доверять друг другу. Bitcoin и другие криптовалюты обладают еще массой других замечательных свойств. Однако эти два самые «продающие». Следует так же знать, что существуют другие механизмы консенсуса, избавляющие участников от необходимости делать «бесполезные» энергозатратные вычисления, такие как proof-of-stake, proof-of-burn и др[5].

Последнее, перед тем как мы перейдем к следующей части, – это ответ на вопрос: «А что мешает майнеру изменить мою транзакцию, чтобы я остался без денег?» Отвечает Сатоши Накомото (создатель Bitcoin): «Каждая выпущенная участником транзакция обладает цифровой подписью!» То есть любой в сети может проверить подпись и удостовериться, что транзакция не подделана. Если изменить данные в транзакции (например, адрес получателя), то подпись станет недействительной и не будет включена в блок.

Данное описание не является исчерпывающим (заинтересовавщийся читатеть может найти более детальное описание в whitepaper конкретной криптовалюты), однако, оно было необходимо для того, чтобы перейти к следующему блоку.

Смарт контракты. В 2013 году Виталий Бутерин представил миру криптовалюту под названием Ethereum. Одним из ее плюсов по сравнению с Bitcoin является возможность реализации смарт контрактов. Смарт контракт в контексте сети Ethereum - это некая сделка между участниками сети, описанная языком логики с помощью специального языка программирования. Смарт контракт существует в блокчейне и наследует его ключевое свойство: контракт не может быть изменен ни одной из сторон или другими участниками сети. Участники взаимодействуют со смарт контрактом посредством транзакций. А исполняется[6] контракт в процессе майнинга. Поскольку результаты работы смарт контракта записываются в блокчейн, майнеру необходимо выполнить те действия, которые предписывает контракт, прежде чем начинать искать необходимый хеш.

Рассмотрим подробнее типы смарт контрактов:

- Обычный смарт контракт – минимальная единица автоматизации. Может и не принимать никаких финансовых решений вовсе;
- DApp (decentralized application) – один или несколько контрактов, выполняющих функции доверенного лица при взаимодействии участников;
- DO (decentralized organization) – обычно масса контрактов, описывающих участников организации (инвесторы, работники, потребители и т.д.), а также протокол взаимодействия между ними. От DApp, главным образом, отличается тем, что больше похожа на организацию, чем на сервис;
- DAO (decentralized autonomous organization) – в сущности, то же, что и DO, однако, меньше зависит от людей. Слово autonomous здесь – маркетинговый ход, на самом деле такая система должна полностью сама жить в сети и принимать решения самостоятельно, что очень близко к искусственному интеллекту;
- DAC (decentralized autonomous corporation) – в отличие от DAO, DAC приносит дивиденды держателям внутренней валюты.

ПРИМЕНЕНИЕ В РЕАЛЬНОЙ ЖИЗНИ

Теперь можно перейти к тому, какое применение блокчейн, криптовалюты и смарт контракты нашли в реальной жизни.

Замена фиатных денег. Валюты с блокчейном в их основе способны полностью заменить существующие деньги различных государств (фиат), причем в процессе взаимодействия между участниками не будет третьих лиц. Также различные криптовалюты реализуют такие полезные свойства, как анонимность и необратимость. Комиссия, как и в обычных денежных переводах, взымается, но не зависит от суммы и зачастую может регулироваться самим отправителем – чем больше комиссия, тем быстрее пройдет транзакция. Иногда она и вовсе отсутствует.

Медицина. Внедрение блокчейна в процесс организации страхования в здравоохранении могло бы серьезно улучшить систему в целом. Во-первых, такие технологии позволяют организовать единую БД, в которой данные сверялись бы одним нажатием воображаемой компьютерной клавиши. Во-вторых, оплата счетов по страховым полисам может быть полностью автоматизирована, поскольку сама структура блокчейна будет препятствовать ошибкам при оплате, двойным расходованиям и т.д. Освободившиеся от обслуживания раздутого штата контролёров и учётчиков средства можно было бы пустить на повышение качества медицинских услуг[7].

Банковское дело. Поскольку технология хорошо зарекомендовала себя в финансовом секторе, многие банки стремятся ее задействовать. Например, Сбербанк готовит запуск платформы торгового финансирования на «блоковой цепи». На блокчейн должны перейти внутренний документооборот и обслуживание клиентов по большинству вопросов[8].

Казино. Технология блокчейна способна серьезно изменить мир азартных игр. На ее основе можно построить казино целиком. Доверия к такому казино будет больше, ведь его логика - в неизменяемом блокчейне[9].

Сфера услуг. Здесь блокчейн облегчит взаимодействие между исполнителем и заказчиком. Как пример можно привести фриланс-биржу Ethlance[10], основанную на взаимодействии участников посредством смарт контрактов.

ВАЖНОЕ О БЕЗОПАСНОСТИ

Недостатки блокчейна. Механизм консенсуса proof-of-work опирается на то, что в сети не должно быть майнера, обладающего > 51% вычислительной мощности сети. Иначе он может единолично создать свою альтернативную ветвь текушего блокчейна (fork), смайнить в ней на один блок больше, чем в основной цепи (это может получиться, подсказывает нам теория вероятности), и тогда эта альтернативная ветвь будет принята всеми остальными участниками сети как оригинальная (по правилам proof-of-work).

Пример. Одна из российских компаний подверглась атаке Ransomware, в ходе которой вымогатели попросили выкуп за зашифрованные данные в биткоинах. Поскольку организация обладает огромными вычислительными мощностями (как раз больше 51% мощности сети Bitcoin), решено провернуть следующий трюк:

1. Компания совершает транзакцию на адрес вымогателей, которая попадает в следующий блок. Параллельно начинает майнить альтернативную ветвь блокчейна, в которой она ничего не платила вымогателям.
2. Кто-то из участников сети находит действительный хеш для блока с транзакцией на счет вымогателей, те видят у себя в кошельке прибавление на нужную сумму и на радостях публикуют ключ для расшифровки у себя в Twitter
3. К этому моменту компания уже нашла валидный хеш для своего альтернативного блока и вступила в гонку с остальной сетью за то, чтобы найти нужный хеш для следующего блока с новыми транзакциями. Скорее всего, она сделает это быстрее остальной сети, поскольку обладает большей мощностью. В любом случае, можно попробовать со следующими блоками.
4. В случае успеха, компания рассылает всем остальным участникам свою альтернативную ветвь, и вся сеть ее принимает – по правилам proof-of-work все участники принимают за основную цепь наибольшей длины. Таким образом, в кошельке компании так и останется отправленная сумма, а вымогателям не достанется ничего.

Читателю предлагается самому решить, кто в этой истории отрицательный персонаж – криптовымогатели или компания, совершившая атаку на криптовалюту Bitcoin.

Альтернативные цепочки иногда создаются и без каких-либо атак. Насколько часто -  зависит от настроек proof-of-work. Поэтому, если вы получили транзакцию, рекомендуется дождаться нескольких подтверждений (conformations), прежде чем «отгружать товар». Чем глубже блок с вашей транзакцией в блокчейне, тем больше вероятность, что не была случайно создана другая цепь без вашей транзакции и ее примет вся сеть. А это, как вы понимаете, занимает время, – в случае с биткоином каждый блок добывается каждые десять минут, а дожидаться рекомендуется хотя бы до трех подтверждений. Отметим, что есть и другие криптовалюты, которые обладают гораздо меньшим временем транзакций, в том числе совершаемые мгновенно.

Если кто-то не согласен с мнением сообщества или разработчиков, он может просто убедить участников сети перейти на свою ветвь блокчейна или какой-либо криптовалюты. И если необходимое число согласится, в мире появится еще одна криптовалюта. Так, например, произошло во время скандала с криптовалютой Ethereum Classic, когда хакеры украли $60М у организации TheDAO. И когда появилась Bitcoin Cash как улучшенная версия оригинальной валюты Bitcoin.

Также сети могут подвергаться DDOS-атакам. Например, в сентябре 2016 года сеть Ethereum практически не функционировала, поскольку майнеры были заняты обработкой миллионов транзакций злоумышленников. Для этого требовалось выполнить одну дешевую, но затратную для майнеров операцию – нужно было перечитать информацию о состоянии блокчейна с диска. И все майнеры в сети были заняты именно этим вместо того, чтобы осуществлять работу сети.

Недостатки смарт контрактов. Поскольку смарт контракт является программой, написанной человеком, всегда есть шанс наличия в нем уязвимостей. Ситуацию усугубляют такие моменты:

- языки смарт контрактов очень свежие;
- документация не всегда целиком отражает возможности языка;
- присутствует своя сцецифика работы на блокчейне;
- отсутствуют полноценные среды разработки, к которым все так привыкли;
- список можно продолжать...

Поэтому неизменяемость смарт контрактов не только их преимущество, но и недостаток. Ошибки программистов порой приводят к потерям серьезных денег[11][12], а исправить уже ничего нельзя. Единственный способ - это выпустить новый исправленный смарт контракт и перевести на него Ether (внутренняя валюта сети Ethereum) со старого, если он еще остался.

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

Поэтому для получения данных из внешних источников нужны Оракулы. А это либо люди либо так или иначе подконтрольная им техника. Создатели прикладывают серьезные усилия, чтобы сеть была как можно менее зависимой от людей, однако это не всегда возможно.

Под сомнение можно поставить и успех широко афишируемой «децентрализации» криптовалют. Рынок майнинга Bitcoin представляет собой около 20 компаний (пулов), в руках которых сосредоточена огромная вычислительная мощность сети. Произошло это потому, что были изобретены специальные устройства ASIC (Application-specific integrated circuit), которые пригодны лишь для того, чтобы майнить, но делают они это гораздо эффективнее современных процессоров или видеокарт. Так вот, компании обладают тысячами таких устройств и, договорившись, они способны проворачивать различные неприятные трюки.

Разработка ASIC для майнинга в сети Ethereum – слишком дорогое удовольствие (сеть специально так спроектирована). Однако есть другие нюансы. Для того, чтобы со смарт контрактами было удобно взаимодействовать прямо из браузера без установки дополнительного ПО, разработчики используют библиотеки (например, web3), которые обращаются к специальным шлюзам между сетью интернет и сетью Ethereum. Компаний, предоставляющих такие шлюзы, пока всего две. Если использовать подобный подход, теряется чуть ли не главное преимущество криптовалюты - децентрализация. Из этой ситуации можно выйти, подняв свой собственный шлюз, но это слегка выходит за рамки привычного user experience среднестатистического фермера.  


Итак, мы познакомились с миром криптовалют, получили представление о том, что такое блокчейн, криптовалюта и смарт контракты. Наверняка интуиция уже подсказывает вам, где все это можно применить. Из новых словечек, релевантных бизнесу, привнесенных в нашу жизнь вместе с блокчейном, осталось разве что понятие ICO (Initial coin offering), но и это не что иное, как IPO (Initial public offering), разве что проходит чаще всего под контролем смарт контракта.

Также мы прошлись по основным нюансам, о которых не говорят перед ICO. И теперь, слушая очередную презентацию криптовалюты, спасающей мир, вы сможете лучше оценить идею проекта и задать правильные вопросы, не только с точки зрения бизнеса, но и реализации. Удачи!


[1] Хеширование (hashing) - преобразование входных данных произвольной длины в (выходную) строку фиксированной длины (хеш).

[2] https://link.springer.com/article/10.1007/BF00196791

[3] На самом деле не каждой, но в данном обзоре мы касаемся только таких.

[4] Шестнадцеричная запись числа

[5] https://www.coindesk.com/short-guide-blockchain-consensus-protocols/

[6] Имеется ввиду исполнения инструкций машинного кода.

[7] http://forklog.com/longrid-blokchejn-i-meditsina/

[8] https://bosfera.ru/press-release/blokcheyn-v-bankovskoy-sisteme-vzglyad-sberbanka

[9] https://dao.casino/

[10] https://ethlance.com/

[11] https://www.coindesk.com/understanding-dao-hack-journalists/

[12] https://www.ethnews.com/massive-hack-hits-ethereum-parity-clients--more-than-30m-of-ether-still-at-large


Мы в социальных сетях

События

Пн
Вт
Ср
Чт
Пт
Сб
Вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
К ближайшим мероприятиям...