Решение MediLedger состоит из следующих трех ключевых компонентов.
Первый это сама система блокчейн: закрытая блокчейн система, которая используется для хранения каталога фармацевтической продукции задействованных в системе производителей, отслеживания препаратов посредством GTIN (Global Trade Item Number) и набором URL-адресов. URL-адреса для GTIN могут использоваться для проверки SGTIN (Serialised Global Trade Item Number), связанного с GTIN [37][38]. Принцип поиска реализован с использованием двух смарт-контрактов, как описано ниже.
Система использует следующие два умных контракта:
CompanyDirectory: Этот умный контракт используется для определения каталога компаний (производителей и дистрибьюторов). Для каждой компании в каталоге хранятся метаданные, такие как:
Идентификаторы компании: компания может иметь несколько идентификаторов, например, префикс GTIN
Сертификат безопасности: сертификат, используемый для аутентификации компании. (Формат X509 / DER)
URL службы поиска: URL-адреса для запроса производителя о состоянии номера GTIN.
GtinDirectory: Этот умный контракт используется для определения каталога GTIN. Для каждого GTIN каталог хранит метаданные, такие как:
Текущий владелец: производитель, которому в данный момент принадлежит
Создатель: производитель, который первоначально создал / зарегистрировал GTIN
URL службы поиска: список всех соответствующих URL, которые будут использоваться для проверки GTIN. Они могут охватывать разных производителей, поскольку номер GTIN мог быть передан другим производителям.
Так же, реализованы две сущности. Сущность клиента: Клиент служит интерфейсом между внутренними системами участников отрасли и блокчейном. Клиенты также могут взаимодействовать друг с другом для запроса статуса SGTIN.
Сущность внутренних систем: это для внутренних систем производителей, таких как SAP и TraceLink. Они хранят конфиденциальную информацию, относящуюся к списку SGTIN, изготовленных производителем, и могут использоваться для проверки конкретного SGTIN.
Процесс верификации отожжённый ниже. Для соблюдения закона дистрибьютор сканирует каждый код матрицы данных (SGTIN, номер лота, срок годности) и использует совместимый клиент для обнаружения и подключения к URL-адресу службы проверки. Этот клиент подключен к разрешенной блокчейне MediLedger и выполняет быстрый поиск, поскольку поддерживает локальную копию своего состояния. Если номер GTIN недоступен в блокчейне MediLedger, клиент пытается подключиться к другой другой поисковой системе стороннего производителя (что приведет к увеличению задержки). Если внешний источник данных недоступен, служба поиска MediLedger может дополнительно поддерживать базу данных сериализации. Если в базе данных указан данный SGTIN, номер лота и срок годности, сервис подтверждает подлинность продукта (см. рис. 4).
Рис. 4. Процесс верификации лекарственного препарата в Mediledger
Источник: https://github.com/chronicled/mediledger/blob/master/examples/3-Gtin-Lookup.md
При осуществлении трансфера лекарственного препарата от одного участника к другому выполняются следующие процессы, рассмотренные в примере с корпорацией XYZ (см. рис. 5).
Только XYZ Corp (то есть компания назначения) может принять перевод. Кроме того, XYZ Corp должна иметь идентификатор конечной точки, указанный ниже.
Успешное выполнение данного алгоритма запускает следующее событие по передаче прав собственности на данную единицу лекарственного препарата (см. рис. 6).
В общем, система Mediledger обладает следующими свойствами:
Использует Parity-клиент (на базе корпоративного Ethereum форка).
Применение алгоритма консенсуса - Proof of Authority.
Мульти-доступ к смарт контрактам.
Осуществляет проверку блоков на достоверность и реализует алгоритм консенсуса.
Осуществляет хранение всей истории сетевых транзакций.
Децентрализованная сеть с участниками, управляющими узлами.
Каждый участник владеет своими конфиденциальными данными.
Только открытые данные и подтверждения транзакций отправляются на блокчейн.
Нет центрального администратора, только сетевой менеджер.
Рис. 5. Процесс одобрения транзакции от поставляющей стороны в Mediledger
Источник: https://github.com/chronicled/mediledger/blob/master/examples/4-Transferring-Gtins.md
Проект Mediledger предоставляет приемлемое решение с точки зрения кодовой реализации и правильного выбора и видения применения алгорима консенсуса. Однако, в рамках интеграции системы в бизнес-процессы отдельной фармацевтической компании отсутствуют какие-либо методы применения.
Рис. 6. Процесс заключения транзакции от поставляющей стороны в Mediledger
Источник: https://github.com/chronicled/mediledger/blob/master/examples/4-Transferring-Gtins.md
В следующех главах будут рассмотрены вопросы по детализации блокчейн структуры (блоков и алгоритма консенсуса), рассмотрены бизнес-процессы фармацевтической компании, которые будут в перспективе интегрированы с системой, а также разработан подход по внедрению данной системы в текущие бизнес-процессы отдельной конкретной компании.
Глава 2. Бизнес-процессы фармацевтической компании и рассмотрение блокчейн методик по отраслевой специфике
2.1 Выбор алгоритма консенсуса при учете специфики фармацевтической отрасли
Как было упомянуто в первой главе, чтобы сформировать блок содержащий набор важной информации, участники децентрализованной сети должны прийти к всеобщему соглашению по поводу того, какие транзакции (если мы, к примеру берем криптовалютную сеть) являются верными и достоверными.
Для такого совместного соглашения в блокчейн-системах используется алгоритм консенсуса, который предназначен для достижения высокого уровня надежности в сети, включающей в себя несколько узлов. Решение проблемы, известной как проблема консенсуса, важно в распределенных вычислениях и системах с несколькими агентами или узлами.
По сути, консенсус алгоритмы предназначены делать две вещи: делать так, чтобы следующий блок в блокчейне был единственной истинной версией происходящего в системе, и удерживать мощных участников сети от атаки на систему и успешного разветвления цепочки. Однако есть также некоторые проблемы с согласованными алгоритмами, с которыми имеют дело разработчики таких систем [39].
Тем не менее, несмотря на наличие таких проблем, консенсус алгоритмы абсолютно необходимы для технологии блокчейн, чтобы полностью реализовать свои возможности. С учетом вышесказанного следует помнить о том, что сегодня существует несколько различных типов консенсусных алгоритмов, поэтому далее будут рассмотрены три наиболее близких к отраслевой интеграции.
В общем и целом, консенсус алгоритмы гарантируют, что следующий блок в блокчейне полностью проверен и защищен. В настоящее время существует несколько видов консенсусных алгоритмов, каждый из которых имеет свои фундаментальные процессы.
Proof of Work. Первый алгоритм является, пожалуй, самым известным и распространенным на данный момент и называется принципом доказательства работы. Доказательством работы является фрагмент данных, который получается в результате решения сложная математической задачи, но который легко проверяется другими пользователями сети, и который удовлетворяет определенным требованиям. Создание фрагмента кода доказательства работы является случайным процессом с низкой вероятностью получения единственно-верного решения, так что в среднем требуется много проб и ошибок, прежде чем будет получено действительное доказательство работы. Биткойн использует систему проверки работоспособности Hashcash [40][41].
Одним из применений этого алгоритма является использование Hashcash в качестве метода предотвращения спама в электронной почте, требующего подтверждения работы с содержанием электронной почты (включая адрес получателя) в каждом письме. «Неспамные» электронные письма будут в состоянии выполнить работу по генерации доказательства (для одного электронного письма не требуется много работы), но у массовых спам-отправителей возникнут трудности с генерированием необходимых доказательств (что потребует огромных вычислительных ресурсов).
В биткойнах для генерации блоков используются доказательства работы Hashcash. Для того чтобы блок был принят участниками сети, майнеры должны найти криптографическое решение, подтверждающее работу, которая охватывает все данные в блоке. Сложность этой работы отрегулирована таким образом, чтобы ограничить скорость, с которой новые блоки могут генерироваться сетью, равной одному блоку каждые 10 минут (если речь идет о биткоине, для других систем данная скорость отличается). Из-за очень низкой вероятности успешного генерирования становится заранее неизвестно, какой рабочий компьютер в сети сможет сгенерировать следующий блок.
Чтобы блок был действительным, он должен хешировать до значения, меньшего, чем текущая заданная системой цель; это означает, что каждый блок указывает какая работа была выполнена, генерируя это. Каждый блок содержит хэш предыдущего блока, таким образом, каждый блок имеет цепочку блоков, которые вместе подразумевают под собой большое количество работы. Изменение блока (что можно сделать только путем создания нового блока, содержащего копию предшественника) требует регенерации всех преемников и повторного выполнения работы, которую они содержат. Это защищает цепь блока от взлома.
Наиболее широко используемая схема проверки работоспособности основана на SHA-256 и была представлена ??как часть Биткойна. Некоторые другие алгоритмы хеширования, которые используются для проверки работоспособности, включают Scrypt, Blake-256, CryptoNight, HEFTY1, Quark, SHA-3, scrypt-jane, scrypt-n и их комбинации.
Если взять, к примеру, биткойн, то его алгоритм консенсуса можно охарактеризовать следующими параметрами:
Новые произошедшие транзакции транслируются на все узлы сети.
Каждый узел (способный формировать и добывать блоки) собирает эти новые транзакции на основе собственного выбора (основанного как правило на размер комиссии транзакции) в блок.
В каждом раунде случайный узел получает возможность транслировать свой блок по всем узлам сети.
Другие узлы сети принимают блок только при условии, что транзакции, включенные в него, являются достоверными и проверенными (проверяются специальным алгоритмом), т.е. проверяют достоверность расходования и подписи.
Узлы выражают свое согласие с блоком путем включения его хеша в следующий блок, который они создают.
В общем и целом, основная суть алгоритма заключается в том, чтобы узлы сети, подтверждающие достоверность транзакций, решали достаточно сложную вычислительную задачу (просчет алгоритма), результат работы которой был бы быстро и легко проверяем другими узлами сети.
Первый участник-узел, который полностью произвел все необходимые вычисления -- получает вознаграждение от блокчейн сети. В системе биткойна таким вознаграждением является определенное количество самих биткойнов. Все узлы соревнуются между собой (постоянно увеличивая мощность вычислительных ресурсов), чтобы в момент формирования нового блока стать тем самым, первым узлом, получившим вознаграждение.
Однако, если рассмотреть данный алгоритм с точки зрения перспективы внедрения в отраслевые бизнес-процессы системы Track&Trace, к примеру, то возникает вопрос неуместности некоторых аспектов алгоритма. Так, в фармацевтической отрасли нет необходимости в майнинге - процессе конкуренции участников сети за нахождение требуемого блока с операциями по передаче прав собственности единиц лекарственных препаратов. В отрасли присутствуют лица, которое заинтересованы в прозрачности движения препаратов. Это, как мы уже говорили, производители, дистрибьютеры и аптечные сети. Для них нелогично бороться за добычу блока с информацией и получение за него награды в виде созданных для сети токенов и в этой системе вообще отсутствует конкуренция. Скорее все участники имеют одну общую цель - прозрачность отрасли. И майнинг, который к тому же подразумевает энергозатраты, совершенно не вписывается в финальную концепцию блокчейн системы, которую мы хотим видеть. Более того, алгоритм PoW, который используется в наиболее популярных криптовалютах и системах Bitcoin и Ethereum, обладает ограниченной скоростью обработки транзакций, а именно скорость транзакции у системы Bitcoin составляет 78 минут, а число транзакций в секунду лежит в диапазоне от 3 до 100. У Ethereum эти показатели равняются 6 минут на транзакцию и число транзакций, обрабатываемых сетью, доходит до 25. (Источник: https://thebcj.ru/2018/06/10/skorost-tranzakcij-kakoj-kriptovalyutoj-perevodit-bystree/). Данные величины крайне малы для процессов производства и мгновенного внесения лекарственных средств в реестр, учитывая производительность линий на заводах.
Однако, на практике существует ряд других алгоритмов по принятию и формированию блока в цепочке. Два наиболее релевантных для фармацевтической отрасли будут рассмотрены далее.
Proof of Stake. PoS имеет много общего с PoW, но также между ними имеются принципиальные отличия. Как и в любом алгоритме консенсуса, основанном на блокчейне, цель по-прежнему заключается в достижении распределенного консенсуса - создании защищенной системы, в которой пользователи заинтересованы в проверке транзакций других людей при сохранении полной прозрачности.