ПРИМЕНЕНИЕ ТЕХНОЛОГИИ БЛОКЧЕЙН В СИСТЕМЕ ИНТЕРНЕТ ВЕЩЕЙ
Журнал: Научный журнал «Студенческий форум» выпуск №26(249)
Рубрика: Технические науки
Научный журнал «Студенческий форум» выпуск №26(249)
ПРИМЕНЕНИЕ ТЕХНОЛОГИИ БЛОКЧЕЙН В СИСТЕМЕ ИНТЕРНЕТ ВЕЩЕЙ
Введение
Технология блокчейн (Blockchain) в современном мире набирает всё большую популярность. Способствует этому развитие концепции Web 3.0. Она предполагает обеспечение взаимодействия и понимание данных в компьютерной сети не человеком (как в случае с Web 2.0), а компьютерными системами. В построении такой системы ключевую роль играет блокчейн, так как на данный момент это единственный проверенный временем механизм обеспечения децентрализованного и наиболее безопасного хранения данных. С момента создания первого блокчейна Bitcoin прошло более 10 лет, при этом ни одна атака на него не закончилась успехом для нападающей стороны, хотя выгода от совершения такой атаки очевидна (достаточно посмотреть курс этой криптовалюты). Децентрализованное хранение данных и их безопасность – это основные критерии для создания сети, в которой информация воспринимается компьютерными системами.
Также в современном мире уже набрала (и продолжает набирать) популярность технология создания систем Интернет Вещей (IoT). Она позволяет конечным устройствам, находящимся в одной компьютерной сети, обмениваться информацией без участия человека. В роли конечных устройств как правило выступают датчики и исполнительные устройства. Основная задача датчиков – измерить какой-то параметр (температуру, освещение, ЧСС человека, наличие движения и тд.), сформировать набор данных и отправить контроллеру, который будет принимать решение на основе полученных им данных. Исполнительные устройства получают от контроллера информацию о том, какие действия необходимо выполнить. Простым примером такого взаимодействия может являться следующий сценарий: контроллер, получивший от датчика данные, проверяет температуру в комнате и, если это значение превышает установленную пользователем норму, посылает сигнал другому устройству на включение кондиционирования воздуха.
Существует огромное количество применения системы Интернет Вещей: автоматизация повседневных задач, медицина и здравоохранение, уход за пожилыми людьми, транспорт, производство, сельское хозяйство и многое другое. Также сама концепция достаточно гибкая и не обязательно должна следовать принципу, описанному выше. В некоторых системах датчики могут выполнять роль контроллера. Управление вещами может осуществляться человеком с помощью таких устройств, как компьютер, смартфон или умные часы. Сами устройства могут быть объединены как в глобальную, так и локальную компьютерную сеть. Всё это зависит от потребностей клиента. Однако неизменным остаётся один факт. Интернет вещей является примером реализации концепции передачи данных между устройствами и анализа этих данных без участия человека. Иными словами, с помощью этой системы можно создавать сети, соответствующие основному требованию Web 3.0. Конечно, не стоит забывать, что Web 3.0 – это нечто большее. Эта концепция описывает подход к развитию интернет-технологий в целом. Однако уже начинают появляться планы внедрения системы Интернет Вещей в города, объединяя таким образом в единую сеть гораздо большее количество устройств, чем один дом или предприятие. Наблюдая за этой тенденцией становится ясно, что Интернет Вещей, как и блокчейн, может стать основой концепции Web 3.0. Возникает вопрос: можно ли использовать технологию блокчейн в системе Интернет вещей? Необходимо выяснить, с какими проблемами можно столкнуться, а также какие преимущества и недостатки существуют у данного подхода.
Принцип работы технологии блокчейн
Блокчейн – это структура хранения данных. Он представляет собой связный список. Отличие от классического связного списка здесь только в том, что адресом каждого блока является его хеш-сумма. Она составляется из данных, которые хранит каждый блок (это может быть любая информация). Блок хранит хеш-сумму предыдущего блока, таким образом строится цепочка блоков. Если изменить какой-либо элемент в этой цепочке, его хеш-сумма изменится, и, как следствие, все последующие блоки будут недействительны. Чтобы вновь сделать цепочку правильной, необходимо изменить хеш-суммы всех последующих блоков. На рисунке 1 приведена схема цепочки.
Рисунок 1. Принцип построения цепочки блоков
Изменения в блоке N-1 какого-либо значения изменит его Hash (хеш-сумму). Значение Parent Hash в блоке N (хеш-сумма предыдущего блока) после этого также должно быть изменено. Но после этого также необходимо будет изменить значение Parent Hash в блоке N+1. Такое же действие нужно будет проделать для всей цепочки. Из этого можно сделать вывод: изменение цепочки без пересчёта хеш-сумм всех последующих блоков невозможно.
Однако вычислить хеш-сумму достаточно просто. Чтобы усложнить этот процесс была придумана концепция Proof-of-work (доказательство работы). Суть заключается в создании правила для получения хеш-суммы [1]. Например: для того, чтобы получить хеш-сумму блока, необходимо сложить сумму предыдущего блока с текущей и умножить на какое-то число (назовём его nonce). Также накладывается ограничение, например: хеш-сумма в конце должна содержать 4 нуля. Изменять предыдущий блок мы не можем, данные в текущем блоке также не могут быть изменены. Для этого и существует число nonce (оно входит в блок). И теперь задача получения хеш-суммы сводится к подбору такого числа. Этот процесс называется майнингом. Он необходим для создания нового блока. Теперь, чтобы подменить часть цепочки, необходимо проделать Proof-of-work для каждого последующего блока.
В описании структуры данных блокчейна нет ни слова о децентрализации данных [2]. Важно понимать: сама структура данных гарантирует только неизменяемость данных в цепочке. Однако без децентрализации данных технология не имеет смысла. Сам по себе майнинг не предполагает валидации данных внутри блока.
Чтобы обеспечить децентрализацию данных необходимо иметь несколько майнеров.
У каждого из них будет содержаться своя копия цепочки блоков.
Таким образом, все устройства в сети поделены на 2 типа: клиент, который посылает данные (транзакции) и майнер (валидатор), который эти данные принимает и занимается добавлением новых блоков в цепочку. Майнеров также называют узлами (нодами). Они сохраняют данные в очередь, подбирают число nonce, и, когда нужное число найдено, формируют новый блок данных и добавляют его в цепочку.
После этого ему необходимо уведомить остальных майнеров о том, что цепочка изменилась. Он рассылает её всем узлам, после чего другие майнеры перестают подбирать значения и начинают проверять цепочку. Валидация блокчейна гораздо проще создания новых блоков. Она заключается в проверке правильности хеш-сумм (текущей и предыдущего блока) у всех блоков в цепочке. При наличии нескольких версий блокчейна, майнер считает валидной ту, которая длиннее, потому что изменить данные в длинной цепочке сложнее, чем в короткой.
Это называется алгоритмом консенсуса.
Все эти алгоритмы могут различаться в зависимости от используемого блокчейна. Однако принцип остаётся неизменным: технология позволяет хранить данные децентрализовано и делает задачу подмены информации крайне сложной (но всё-же возможной, достаточно обладать необходимой вычислительной мощностью).
Блокчейн в системе Интернет Вещей
На рисунке 2 приведена абстрактная конфигурация системы Интернет Вещей.
Рисунок 2. Абстрактная схема системы Интернет Вещей
Сеть предполагает наличие 2-х типов устройств: датчики (отправляют данные) и контроллеры (получают данные и принимают решения) [3]. Для обеспечения взаимодействия этих устройств создаются облачные платформы, выполняющие роль центрального сервера. К ним подключаются устройства пользователей, через которые можно контролировать Вещи в сети.
Важно заметить, что область применения системы достаточно большая. Некоторые решения, например отключение воды в случае обнаружения протечки, требуют незамедлительных действий.
Некоторые датчики могут делать измерения часто и, как следствие, создавать большое количество данных. А теперь попробуем наложить технологию блокчейн на такую систему. Для начала рассмотрим вариант создания собственного блокчейна.
Что в таком случае будет являться майнером? Как правило в роли контроллеров для датчиков выступают микроконтроллеры, такие как ESP8266, ESP32 и STM32 с дополнительными WiFi или Bluetooth модулями. Их вычислительная мощность крайне мала для описанного ранее алгоритма Proof-of-work. К тому же, майнер должен хранить весь блокчейн целиком, постоянно подбирая значение nonce для создания нового блока, оповещая остальных майнеров и проверяя корректность полученных от других узлов цепочек. Существует 2 подхода к решению данной проблемы. Необходимо либо упрощать сложность получения нового блока, либо увеличивать вычислительные способности контроллера.
Первый подход уменьшит сложность атаки на блокчейн, второй увеличит стоимость контроллера. Теоретически возможно сделать майнерами все контроллеры, однако им необходима дополнительная память (эту проблему может решить внешняя SD-карта).
Тогда мы получаем децентрализованную сеть, в которой клиентами являются датчики, а майнерами являются все контроллеры. Конечным устройствам пользователей осталось только подключиться к блокчейну чтобы получить все данные, собираемые с датчиков.
Какие данные необходимо сохранять в блокчейн? Датчик может создавать довольно много событий, на некоторые из них необходимо реагировать очень быстро. И если проблему больших затрат памяти может решить SD-карта, то далеко не каждый майнер способен решать задачу Proof-of-work с достаточной скоростью (речь идёт о миллисекундах). С ростом самого блокчейна возрастает и сложность подбора значения nonce, и, как следствие, увеличивается время создания блока. Очевидно, что данные, требующие незамедлительного принятия решения, не получится хранить в блокчейне. Таким образом, можно выделить 3 возможных подхода к интеграции в систему Интернет Вещей технологии блокчейн:
- Использовать децентрализованный реестр только для хранения данных, полученных с датчиков (в качестве системы логирования). Контроллеры в таком случае получают данные незамедлительно без необходимости просматривать данные в блокчейне. Получать данные в блоке будут только конечные устройства пользователей;
- Хранить в блокчейне все события, создаваемые датчиками. При таком подходе передача любых данных между устройствами происходит только через блокчейн;
- Гибридный подход. Складывается из предыдущих двух. По умолчанию все взаимодействия происходят через блокчейн. Исключения составляют только те устройства, которые должны незамедлительно реагировать на события.
Чтобы выбрать наиболее подходящий подход, рассмотрим основные проблемы систем Интернет Вещей:
- Устаревание прошивок устройств;
- Слабая система аутентификации;
- Небезопасное соединение;
- Риск физического вмешательства;
Первый подход способен решить только проблему устаревания прошивок. При его использовании майнеры не валидируют данные, следовательно безопасность системы всё также находится под угрозой. Второй подход решает все описанные проблемы. Если удастся создать такую сеть, майнеры в ней будут валидировать данные, фальсификация этих данных будет невозможна, при этом физическое вмешательство не сможет вывести из строя сеть, так как существует множество других работающих узлов, которые содержат все необходимые данные (блокчейн у всех одинаковый). Однако этот подход налагает огромное количество ограничений на контроллеры, выступающие в роли майнеров.
Из всего сказанного выше можно сделать вывод – гибридный подход на данный момент представляет наиболее подходящее компромиссное решение. Возможно, использование блокчейна будет оправдано в больших сетях, где сохранность и защита данных являются первостепенной задачей.
Иными словами, использовать блокчейн необходимо по его прямому назначению. Далеко не все системы Интернет Вещей на данный момент имеют проблемы, решением которых является блокчейн. А если такие проблемы и существуют, зачастую они не являются первостепенными.
Основной проблемой при выборе блокчейна для системы Интернет Вещей является алгоритм консенсуса. Он должен соответствовать следующим требованиям:
- Высокая скорость транзакций;
- Простая вычислительная сложность;
- Низкая коммуникационная сложность;
- IoT-ориентированные правила валидации;
- Высокая отказоустойчивость.
Не все алгоритмы соответствуют этим требованиям. Большинство из таких алгоритмов созданы на базе BFT (Byzantine Fault Tolerance). Вот некоторые примеры: PoS, PBFT, DBFT, Tendermint, Algorand. Для внедрения технологии необходимо выбирать блокчейн с одним из таких алгоритмов консенсуса.
До сих пор не решена проблема ограниченности ресурсов инфраструктуры IoT. Ближе всего к нужному результату приблизились инженеры компании IBM. Они придумали концепцию универсальных и региональных блокчейнов. Все сетевые устройства разделяются на:
- Простые peer-to-peer узлы – хранят свой собственный адрес блокчейна и баланс;
- Стандартные peer-to-peer узлы – хранят свои собственные недавние транзакции и лёгкие одноранговые узлы;
- peer-to-peer обмены – создают копии полной цепочки блоков и выполняют валидацию данных.
Идеальная архитектура блокчейна для IoT должна обрабатывать тысячи транзакций в секунду. Решить эту проблему можно использованием параллельных вычислений или специальных протоколов (Plasma, Plasma Cash), позволяющих увеличивать пропускную способность сети.
Преимущества и недостатки
Внедрение блокчейна в систему Интернет Вещей позволяет создать безопасную и отказоустойчивую систему хранения данных. Технология развивается, появляются решения, которые потенциально могли бы быть использованы в такой конфигурации. Такая система может стать первой реализацией концепции Web 3.0.
Однако слияние этих технологий влечёт за собой определённые проблемы. Одна из них – ограниченность ресурсов и, как следствие, более уязвимый блокчейн. Протоколы, о которых было сказано выше, не проверены временем, в отличие от PoW, который не подходит для IoT. Также появляется проблема взаимодействия узлов между собой.
Существующие блокчейны ориентированы в первую очередь на финансовый сектор и могут не подойти для интеграции в систему Интернет Вещей.
Из-за этих проблем на рынке пока нет готовых решений для простой и быстрой интеграции блокчейна в IoT.
Однако, если технологии продолжат развиваться, через несколько лет ситуация может измениться.