В данной работе предложены способы реализации и внедрения моделей машинного обучения в блокчейн-системы с учетом особенностей последних. Рассмотрены такие варианты, как подключение сторонних сервисов и реализация моделей непосредственно в самом блокчейне — посредством смарт-контрактов с помощью байткода виртуальной машины.
Ключевые слова: машинное обучение, блокчейн, архитектура вычислительных систем.
Стремительный рост блокчейн-систем и влияния криптовалют на экономику и общество ведут к увеличенному спросу на разнообразные стартапы и проекты, нацеленные на решение обширного спектра проблем и вопросов. Основная цель таких проектов практически одна и та же — перенести преимущества блокчейна и криптовалют в традиционные информационные системы. Среди самых основных преимуществ классически выделяют такие как: информационная безопасность, децентрализация, распределенная обработка данных и другие [1].
Комбинация машинного обучения с блокчейн-системой позволяет расширить задачи, доступные разработчику и бизнесу к реализации. В частности, на основе данных, которые записаны в блокчейн, модель может выполнять, например, прогностические операции, обнаружение паттернов и образов. Модель может быть реализована как в рамках блокчейн-системы посредством смарт-контрактов, так и реализована вне ее, посредством специальных сервисов-оракулов. В данной работе рассмотрены оба способа, а также проанализированы их преимущества и недостатки.
Реализация моделей машинного обучения в смарт-контракте
Блокчейн-системы Ethereum и Hyperledger позволяют разработчику реализовывать необходимую бизнес-логику с помощью смарт-контрактов, для написания исходного кода которых используются C-подобные языки — Solidity, JavaScript.
Для блокчейн-системы Ethereum был разработан и внедрен собственный язык программирования Solidity, компилируемый в байт-код, в последствии выполняемый в виртуальной машине [2]. Изначальная идея смарт-контракта предполагала реализацию различного рода скриптов, контролирующих, например, финансовые операции [3]. Например, посредством смарт-контракта возможна реализация собственной криптовалюты или некоторой денежной единицы, которая затем может применяться, например, в играх. Однако развитие виртуальной машины, добавление новых байт-код операций позволило расширить спектр возможностей смарт-контрактов.
В качестве простейшего примера реализации можно привести примеры однослойного перцептрона и линейной регрессии на базе Ethereum. Фундаментальным ограничением модели является отсутствие работы с числами с плавающей точкой. Для того, чтобы решить эту сложность, необходимо воспользоваться следующим подходом — считать, что в целом числе, например, несколько младших разрядов вещественной частью числа с плавающей точкой. Такой механизм позволит реализовать операции с плавающей точкой, однако будет наблюдаться накопление ошибок, связанных с точностью. В некоторых случаях это может оказаться неприемлемым. Также необходимо предварительное выделение ресурсов, например, на хранение коэффициентов модели. В примере ниже приведен фрагмент кода, реализующего процедуру обучения модели простейшего однослойного персептрона [4].
Реализация смарт-контракта в системе Hyperledger позволяет не только избежать недостатков, связанных с Ethereum и Solidity, но и переиспользовать уже существующие решения. Hyperledger предлагает к использованию такие языки программирования как JavaScript, Go и Java [5]. Готовые модели машинного обучения доступны для многих популярных языков программирования, например, TensorFlow.js [6].
Из преимуществ этого способа можно выделить такие как полная интеграция в блокчейн и легкий доступ к данным, хранящимся в нем, отказоустойчивость, а также наследование всех преимуществ блокчейна, связанных с безопасностью и масштабированием. Однако недостатки перевешивают преимущества. Среди них — сложность разработки и поддержки, недостатки с обработкой чисел с плавающей точкой, медленная скорость работы, выполнение лишних операций.
Реализация моделей машинного обучения посредством стороннего сервиса-оракула
Второй способ реализации моделей машинного обучения призван исправить недостатки первого способа, имеет такие преимущества как быстродействие и масштабируемость. В данном способе модель машинного обучения реализуется и используется на сторонней машине, используя классические инструменты, например Python и TensorFlow.
Сторонние сервисы предоставляют разработчику доступ к специальному «оракулу» — программе, которая способна предоставлять данные внутрь блокчейна и обрабатывать события, происходящие внутри системы. Документация Ethereum предлагает к использованию Chainlink [7], который позволяет организовать аналог REST API, позволяющий изолированной среде блокчейна получить данные извне.
Тем не менее, использование посторонних ресурсов и инструментов добавляет уязвимые участки в разрабатываемую систему. В определенных случаях это может оказаться неприемлемо — например, при работе с чувствительными данными, личными и конфиденциальными данными. В таком случае необходимо сделать выбор между безопасностью, скоростью работы, сложностью поддержки и отказоустойчивостью.
Таким образом, рассмотрены два способа внедрения моделей машинного обучения в блокчейн-систему — прямой реализацией модели в смарт-контракте и подключение модели через сервисы-оракулы. Первый способ имеет среди недостатков медленную скорость выполнения, сложности с реализацией, и относительно невысокую точность и накапливаемую ошибку. Однако есть альтернативы, которые позволяют с большей точностью и скоростью производить вычисления, однако сложности реализации и масштабирования все равно не решены. Второй способ позволяет реализовывать модель любого уровня сложности, однако это накладывает сложности и ограничения при связывании с блокчейн-сетью, хотя в целом способ является более предпочтительным в применении.
Литература:
- Соколова Т. Н., Волошин И. П., Петрунин И. А. Преимущества и недостатки технологии блокчейн // Экономическая безопасность и качество. — 2019. — №. 1 (34).
- Dannen C. Introducing Ethereum and solidity. — Berkeley: Apress, 2017. — Т. 318.
- Осмоловская А. С. Смарт-контракты: функции и применение // Бизнес-образование в экономике знаний. — 2018. — №. 2 (10).
- Вакуленко С., Жихарева А. Практический курс по нейронным сетям // Университет ИТМО. — 2018.
- Androulaki E. et al. Hyperledger fabric: a distributed operating system for permissioned blockchains // Proceedings of the thirteenth EuroSys conference. — 2018. — С. 1–15.
- Smilkov D. et al. Tensorflow. js: Machine learning for the web and beyond // arXiv preprint arXiv:1901.05350. — 2019.
- Kaleem M., Shi W. Demystifying Pythia: A Survey of ChainLink Oracles Usage on Ethereum // arXiv preprint arXiv:2101.06781. — 2021.