Одним из основных направлений деятельности Microsoft становится платформа облачных вычислений Azure. Сегодня Azure занимает второе место на рынке облачных услуг и конкурирует с лидером – Amazon Web Service (AWS). По уровню прорывных технологий, AWS – несомненный лидер отрасли, достаточно упомянуть Lambda. Однако, похоже, Microsoft нашла территорию на рынке, за которую можно конкурировать на равных – это блокчейн.
Проект Blockchain as a Service (BaaS) на основе Эфириума – первый шаг на этом пути. Следующим шагом становится проект Bletchley – универсальная «фабрика смарт-контрактов». Проект получил название по знаменитому Bletchley Park в Англии, где во время Второй Мировой войны располагался криптографический центр, который прославился расшифровкой немецких шифров.
Объединение Azure, BaaS и Bletchley породит экосистему, которая, как надеется Microsoft, получит лидирующую позицию на рынке финансовых транзакций. Чтобы понять, о каких масштабах идет речь, достаточно вспомнить, что мировой IT рынок в 2015 году оценивался в 3,5 триллиона долларов (Gartner), а размер рынка финансовых услуг в 2014 – 13,1 триллиона, в четыре раза больше.
Проект Bletchley состоит из трех основных компонентов:
- Azure Marketplace – торговая площадка готовых смарт-контрактов. Разработка смарт-контрактов – технически сложная и рискованная задача (пример – TheDAO). Пользователи, не желающие создавать с нуля новую систему, могут найти здесь необходимый смарт-контракт, использовать его «как есть», или модифицировать его под конкретный проект.
- Связующее программное обеспечение, разработанное для технологии блокчейна. Это набор вспомогательных сервисов, позволяющих интегрировать смарт-контракты блокчейна в программную среду корпоративных проектов. В качестве примеров можно привести криптографию, машинное обучение, или управление ключами.
- Криптлеты. Согласно определению Microsoft: «Криптлеты – компоненты кода, выполняющиеся вне блокчейна, они могут быть написаны на любом языке. Выполнение кода криптлета производится в доверенном, безопасном контейнере, а коммуникации со смарт-контрактами блокчейна производятся с помощью безопасных шифрованных каналов. Криптлеты используются в смарт-контрактах или системах UTXO в случаях, когда необходима дополнительная функциональность или информация, и подключаются с помощью CryptoDelegate (см. ниже, раздел «Эффективность») или адаптера. Примеры использования криптлетов: большой объем вычислений, который сложно провести в рамках смарт-контракта, или получение данных из внешнего источника.
Первые два компонента представляют собой достаточно отработанную технологию, а криптлеты до недавних пор существовали только в виде общей концепции. Microsoft заполняет этот пробел с новой версией Белой Книги, в которой основное место занимают криптлеты. Их описание демонстрирует, насколько серьезно Microsoft относится к проблемам, связанным со смарт-контрактами.
Microsoft определяет два типа криптлетов: утилиты и контракты, они различаются областями применения.
Криптлеты-утилиты
Утилита – сервис, предоставляющий определенное событие, которое может быть использовано любым смарт-контрактом. Например, криптлет-утилита может публиковать цену закрытия Нью-Йоркской Фондовой биржи на определенные активы, помещая это событие в очередь сообщений. Любой смарт-контракт, которому нужны эти данные, может подписаться на очередь, и получить информацию (далее, в разделе Безопасность и изоляция будет показано, как криптлет-утилита может гарантировать точность данных). На иллюстрации ниже показан принцип работы криптлета-утилиты.
Смарт-контракт запрашивает у криптлета-утилиты текущую цену акций MSFT (Microsoft), BAC (Bank of America) и AU (золото) с периодом обновления 2 часа.
Другие смарт-контракты могут получать цены (как текущие, так и полученные на какой-либо прошлой временной отметке), взятые из непосредственно из очереди сообщений, созданной первым смарт-контрактом.
Криптлеты-контракты
Криптлет-контракт создается для определенной цели. Он может представлять собой фьючерсное соглашение, которое дает возможность купить некоторый актив в будущем. Это может быть даже договор аренды жилья. В общем, смарт-контракт – соглашение между двумя (или более) участниками, и касающееся только их. Следовательно, он должен включать в себя персональные данные участников, их интересы и обязательства.
На схеме из Белой Книги показан смарт-контракт, получающий извещение об оговоренном событии – пороговая стоимость товара, от которой зависит фьючерсный контракт. В контракт встроена функция обратного вызова, которую включает событие.
Криптлет – ускоритель смарт-контрактов
Для широкого внедрения криптлетов в мир блокчейна необходимы более существенные доводы, чем инновационная концепция и репутация производителя. Вот три довода в пользу криптлетов, которые приводит Microsoft.
Удобство
Одно общее свойство смарт-контрактов - это сложные структуры. Задача перевода юридических соглашений в компьютерную форму сложна сама по себе, а кроме того, контракты должны взаимодействовать с другими структурами, не говоря уже об операционной безопасности контракта и всех его участников.
Microsoft предлагает разработчикам комплект средств разработки (SDK). Это платформа, обеспечивающая управление событиями, безопасные коммуникации, шаблоны контрактов, управление парами ключей, и регистрация криптлетов. Другими словами, SDK берет на себя всю рутинную работу, оставляя разработчикам самое главное: логику контракта.
Платформа упрощает работу программистов и дает сильный сетевой эффект – по мере того, как все больше разработчиков получают опыт работы с SDK, платформа становится де-факто стандартом, что в свою очередь, заставляет предприятия включать ее в свои стандарты. Здесь уместно напомнить историю Java Enterprise Edition, и конечно, собственно Framework.NET от корпорации Microsoft.
Эффективность
Ажиотаж вокруг технологии смарт-контрактов часто не учитывает практических вопросов их функционирования. Если представить себе, что в недалеком будущем сотни тысяч самых разных структур будут заключать и сопровождать бизнес-соглашения с помощью смарт-контрактов, то очевидно, что потребуется гигантская вычислительная мощность,
Однако, современная топология сети предполагает, что смарт-контракт исполняется на каждом узле сети. Даже если не учитывать расточительность такого подхода, с увеличением числа смарт-контрактов работа сети существенно замедлится – одни узлы выполнят изменение состояния быстро, другие, обладающие меньшей мощностью, медленнее. На практике это означает невозможность масштабирования сети.
Microsoft предлагает коренное изменение архитектуры смарт-контрактов. Вместо того, чтобы исполнять контракты на каждом узле сети, криптлеты переносят вычислительные процессы на централизованные узлы своей облачной платформы. В результате, на узлах блокчейна остается только начальное и конечное состояние контракта, а нагрузка на блокчейн значительно уменьшается. Структура контрактов изменится: машина состояния остается на блокчейне, и получает извне апдейты данных контракта.
Весь подход с распределенной архитектурой реализован в виде открытого исходного кода, при этом провайдером (исполнителем кода) криптлета может быть кто угодно. Платформа SDK дает разработчикам полную свободу в определении коммуникаций между блокчейном и криптлетом, так что выполнение криптлета может происходить там, где этого хочет создатель контракта: Azure, другой облачный провайдер, или платформа заказчика.
Распределенная архитектура контракта, показана на рисунке:
В данном примере, криптлет находится на платформе Azure. Коммуникации между криптлетом и машиной состояния, находящейся в блокчейне, проходят через «CryptoDelegate», который знает, как и где подключаться и обмениваться информацией с исполняющей частью криптлета.
Конечно, разделение смарт-контрактов на вычислительную часть и текущее состояние идет вразрез с нынешними представлениями о том, как должны строиться и исполняться смарт-контракты, но такая архитектура дает возможность обеспечить контракт нужной мощностью и упростить конфигурацию.
Изоляция и безопасность
Третий довод в пользу предлагаемой платформы – это изолированное выполнение криптлета и безопасность контракта (этот аспект применим ко всем типам криптлетов, не только к криптлет-контрактам). Проблема, с которой смарт-контракты встречаются в реальном мире: как убедиться в том, что данные от которых зависит его выполнение, заслуживают доверия. Это называется «проблема оракула»: есть оракул, который является источником «истины» (к примеру, цена закрытия актива на бирже), насколько велика вероятность того, что оракул настоящий, и дает истинную цену.
Архитектура криптлета частично решает эту задачу с помощью SDK – все коммуникации между смарт-контрактом и внешним источником данных проходят через безопасные криптографические каналы. Однако Bletchley предлагает и более радикальный подход. Это понятие анклава (enclave): криптографически безопасный контейнер, контролируемый доверенной стороной. Анклавы предполагается создавать на основе технологии защиты исходного кода Intel SGX. Защита данных развернута на уровне микропроцессора, программно взломать ее невозможно. Следующая схема демонстрирует анклав и его окружение.
Microsoft считает, что анклавы – оптимальное решение проблемы оракула. Однако, следует отметить, что здесь возникает необходимость доверять Microsoft (или другому провайдеру безопасного окружения). В ответ на это соображение можно сказать, что в случае возникновения убытков из-за нарушения приватности, в случае с Bletchley есть кому предъявить эти убытки, в отличие, например, от безымянного автора контракта.
Microsoft делает серьезную ставку на анклавы и надеется, что они станут общепринятым стандартом программной среды смарт-контрактов. Эти надежды не беспочвенны: Microsoft не только предлагает эту программную среду, определяя набор ключевых требований, но и предоставляет удобный работающий сервис. Вкратце, проект Bletchley можно охарактеризовать как «Windows для смарт-контрактов».
Заключение
Конечно, открытый исходный код позволяет реализовать предложенную архитектуру любому желающему, но практическое выполнение задачи требует высокой квалификации, так что для корпоративных проектов Bletchley представляется перспективным.
Нельзя не заметить, что платформа ориентируется в первую очередь на блокчейн Эфириума, хотя в Белой Книге и говорится об универсальном характере криптлетов. Это согласуется с последними проектами Microsoft на основе блокчейна. При этом, корпорация предпочитает в своих проектах создавать собственные блокчейны на основе технологии Эфириума, а не пользоваться публичным, но желание контролировать все – обычная стратегия Microsoft.
В любом случае, уровень вложений в Bletchley явно демонстрирует намерение Microsoft стать ключевым игроком и бенефициаром революции блокчейна. Если же проект окажется успешным, то никто не мешает использовать все преимущества Bletchley в Dapps на основном блокчейне Эфириума, или в сети Биткойна. Правда, с внедрением в Эфириум протокола Casper и шардинга, довод об эффективности выноса вычислительных мощностей за пределы блокчейна в отдельные криптлеты может потерять актуальность для большинства задач смарт-контрактов.